Grundsätzliches Problem ioBroker.

  • Hallo zusammen,

    ich habe mich während den Feiertagen ein wenig an ioBroker versucht. Bei diesem Fall habe ich Probleme:

    Situation im WZ:

    -Esstischlampe

    -WZ-Lampe (heißt hier Stubenlicht)

    -Seitenlicht (dunkle LED zum Fernsehen in der Seite verbaut)

    -Philips Hue Lampe in Stehlampe.

    Folgendes habe ich vor:

    Wenn Seitenlicht eingeschaltet wird, sollen die Esstischlampe und die Wohnzimmerlampe ausgeschaltet werden. Zusätzlich die Hue ein und auf 40% gestellt werden.

    Das funktioniert soweit auch schon. Wenn jetzt allerdings jemand am Esstisch was machen will und dazu das Licht einschaltet, wird dieses nach ein paar Minuten wieder ausgeschaltet. Ist ja auch logisch, weil es ja in dem Script so steht. Kann mir jemand helfen, wie man das besser machen kann?


  • Könntest du mir das bitte noch etwas genauer erklären?

    So hab ich es jetzt gemacht, aber so meintest du das sicher nicht...

    So macht es ja keinen Sinn und funktioniert auch nicht.

  • Doch genau so, nur auf Wert umstellen, wobei so könnte das auch funktionieren, da sich das immer auf den Trigger bezieht.

    Aber wenn Du schreibst, dass es nicht funktioniert, dann bitte mal das was bei "falls" steht auf "Wert" ändern.

    Wenn DU auch nur auf ein Objekt triggern willst, reicht der "normale" Trigger Block aus.

    Übrigens, hätte Dein erstes Blockly dieses Fehlverhalten eigentlich nicht haben dürfen, das alles was im Trigger drin steht auch nur geändert wird, wenn das was den Trigger auslöst eine Änderung hat. Steht die getriggerte Lampe also immer auf true, dann wird sich am Rest nichts ändern, selbst wenn einer eine Lampe ein oder ausschaltet.

    Das Blockly wird nur abgearbeitet, wenn es gestartet wird, oder neben der Trigger kommt. Hast da zufällig den IOBroker oder das Script neugetartet?

  • Übrigens, hätte Dein erstes Blockly dieses Fehlverhalten eigentlich nicht haben dürfen, das alles was im Trigger drin steht auch nur geändert wird, wenn das was den Trigger auslöst eine Änderung hat. Steht die getriggerte Lampe also immer auf true, dann wird sich am Rest nichts ändern, selbst wenn einer eine Lampe ein oder ausschaltet.

    Das Blockly wird nur abgearbeitet, wenn es gestartet wird, oder neben der Trigger kommt. Hast da zufällig den IOBroker oder das Script neugestartet?

    Hatte vorhin ein Script versucht, dass Alexa etwas sagt, wenn jemand das Licht einschaltet. Hier war das selbe Phänomen, dass sie das auch nochmal sagt, obwohl das Licht noch an ist. Habe während dessen nicht gemacht...

    Auch gerade nochmal mit dem Licht probiert. nach kurzer Zeit geht das zugeschaltete Licht wieder aus...

  • Habe gerade gesehen, dass eine gelbe Meldung kommt, wenn das Licht geschaltet wird:

    "11:38:37.131warnjavascript.0 at Object.<anonymous> (script.js.Fernsehlicht_an1:8:5)"

  • wenn das Objekt dem aus dem Trigger entspricht, sollte da wie oben schon geschrieben "Wert" eingetragen werden. Dann ist es völlig überflüssig noch mal auf "= wahr" zu prüfen, da das die Grundfunktion des Falls Block ist.

    So lange das nicht umgesetzt wird ist es unnötig hier weiter Fehler zu suchen.

  • Ich bin auf dem Gebiet komplett neu und arbeite mich gerade ein. Da möge es man mir nachsehen, dass ich eure "professionellen" Anweisungen nicht fehlerfrei umsetzen kann (weil ich sie einfach nicht verstehe).

    Mit der Darstellung von Premo hab ich's jetzt verstanden und umgesetzt. Danke dafür.

  • ja aber genau die ist nicht optimal.

    Oben hast das schon richig gemacht, nur eben nicht Objekt auswählen sondern Wert, zumindest weiß ich 100%, dass das ohne Lufzeitprobleme funktioniert und die eleganteste und kürzeste Lösung dafür ist.

    Viele Wege führen zum Ziel, nur wenn man sich die umständlichen angewöhnt, wird es später nicht einfacher;)

  • Einstein67

    nein eben nicht weil der Block genau das als Grundfunktion drin hat und das sogar im Poup steht wenn man mit der Maus drüber fährt. Es wird immer auf "wahr" geprüft und nur wenn die Bedingung eben nicht wahr sein soll, muss das angegeben werden, oder eben so umgestellt, dass es eben wieder wahr ist.

    basti535

    Ja so funktioniert es, nur ist die bessere Lösung eben die Falls auch mit dem Wert des Triggers direkt über den Block "Wert" aus den den Trigger Blöcken eben die bessere Wahl. Du hattes das oben schon gepostet nur nicht den richtigen Block erwischt, was auch so in der Antwort darauf drin steht.

    Wenn man das so macht wie Du das jetzt hast, gibts ein relevanten Unterschied, hier muss der Triggerwert erst noch mal eingelesen werden, obwohl es die selbe ID ist auf die eh getriggert wird und es gibt Fälle da hazt das zeitlich nicht 100% hin. Wird hingegen auf "Wert" getriggert, kennt das System diesen auch, da beim Triggern schon eingelesen. Eigentlich sehr einfach zu verstehen.

  • Ja das spart einiges und alleine schon beim Erstellen des Blockly viel Zeit. Bin da glücklicherweise gleich zu Beginn drüber gestolpert, weil die Doku zu Blockly doch recht holprig ist und mir auffiel, dass bei jedem Block ein Poup aufspringt, wenn man drüber fährt. Bei den meisten Blöcken macht einem das auch nicht schlauer, beim "falls" Block allerdings schon.

    Ähnlich verhält es sich mit der Variante "Wert" als ID für den Falls Block. Da hatte ich mal ne allgemeine Frage dazu und die Erklärung war einfach, dass sich das eben auf die ID im Trigger bezieht und auch wesentlich einfacher und schneller im Blockly eingebaut ist, als jedes mal noch den Pfad neu angeben zu müssen. Der Timing-Vorteil kommt dann eben noch obendrauf.

    Wenn ich dann sehe, was andere alles mit Blockly anstellen, dann merke ich aber auch immer schnell, dass ich doch noch recht weit am Anfang stehe. Wobei für einfache bis mittel komplexe Scripte reicht das alle mal und ist wenn man in der Lage, eine Logik im Kopf durch zuspielen recht einfach ist. Da hilft es einfach schon laut mal auf zu sagen was man will und genau die Blöcke in der Reihenfolge zusammen zu klicken. Das ist meist schon 80% der Miete;)

  • So hab ich's jetzt nach einigem hin und her. Funktionieren tut es auch. Allerdings bekommen ich bei jedesmal "Seitenlicht" schalten eine Warnung. Woran liegt das?