NEWS
Mehrere Trigger verarbeiten und Wert setzen
-
@raspido sagte: der Expertenmodus nur verwendet werden sollte, wenn es sein muss.
Um zu schauen, ob es unter "global" ein aktives Skript gibt, sollte der Expertenmodus mal aktiviert werden. Die Zeilennummer 24 der Fehlermeldung deutet daraufhin, dass dies der Fall kein kann.
-
@raspido du kannst oben rechts auch auf den Quellcode umschalten - da kannst du sehen was in Zeile 24 steht (also welcher Befehl genau).
Zudem würde einFalls - Wert
reichen in deiner Abfrage:
da du eh alle per Oder auf True prüfst.ok, ist qatsch da die Lampe sonst nicht wieder ausgeht, ok
-
@bananajoe sagte: da kannst du sehen was in Zeile 24 steht
So umfangreich ist das Skript nicht.
-
Hey Leute,
ich weiß, mein letzter Kontakt hier ist etwas her. Die Arbeit und der Notdienst haben leider nicht wirklich zu gelassen, dass ich mich mit meinem Problem beschäftigen konnte. Ich hoffe, man hilft mir trotzdem dem "Problem" auf die Spur zu kommen.
@paul53 genau, soviele Zeilen hat mein Scipt garnicht. Und im Ordner "global" gibt es kein Script mit dem Namen, was ich für das aktuelle Script verwende. Genauer gesagt, sind dort keine Scripte drin.
@BananaJoe Das Script selbst soll ja garkein Licht schalten, sondern lediglich darauf reagieren, ob eines der 4 Lichter (oder auch Schaltkanäle) an ist oder eben aus.
Daher die etwas "komplizierte" Abfrage in der Logikstruktur.
Mein Plan war folgende 2 Wege:
Sobald ein oder mehrere "Schaltkanäle" High sind, soll der Datenpunkt "Statusanzeige.Kueche.Licht" auf wahr gesetzt werden. Lediglich sobald ALLE 4 "Schaltkanäle" auf LOW sind, soll dieser Datenpunkt auf falsch gesetzt werden. Das ganze soll als "Statusanzeige" dienen, damit man es merkt, wenn noch ein Licht brennt, ohne gleich in den Raum zu gehen.
Ich habe da gerade aber selber nochmal was anderes probiert und wollte euch mein Gedankengang auch mal zu kommen lassen.
Hier ein Screenshot vom Blockly:
Und zusätzlich das Blockly als JavaScript Code(die letzte Kommentarzeile habe ich nur weg gelassen, da diese "unendlich" lang war und Kommentar, wird normal ja "ignoriert" beim Code):
on({id: [].concat(['hm-rpc.1.00259D89A4E48F.10.STATE']).concat(['hm-rpc.1.00259D89A4E48F.18.STATE']).concat(['hm-rpc.1.00259D89A4E48F.14.STATE']).concat(['hm-rpc.1.00259D89A4E48F.12.STATE']), change: "any"}, async function (obj) { if ((getState("hm-rpc.1.00259D89A4E48F.10.STATE").val || getState("hm-rpc.1.00259D89A4E48F.12.STATE").val || getState("hm-rpc.1.00259D89A4E48F.14.STATE").val || getState("hm-rpc.1.00259D89A4E48F.18.STATE").val) == true) { setState("0_userdata.0.Statusanzeigen.Kueche.Licht"/*Statusanzeigen.Kueche.Licht*/, true); } if ((getState("hm-rpc.1.00259D89A4E48F.10.STATE").val && getState("hm-rpc.1.00259D89A4E48F.12.STATE").val && getState("hm-rpc.1.00259D89A4E48F.14.STATE").val && getState("hm-rpc.1.00259D89A4E48F.18.STATE").val) == false) { setState("0_userdata.0.Statusanzeigen.Kueche.Licht"/*Statusanzeigen.Kueche.Licht*/, false); } });
Michael
PS: Und die "Warn" Meldung kommt noch immer wie gewohnt
-
@raspido sagte: Und die "Warn" Meldung kommt noch immer wie gewohnt
Im Tab "Protokolle" findet man weitere Informationen zur Warnung.
Besserer Code:
-
@paul53 Den Baustein "setze licht auf", wo finde ich den? Irgendwie habe ich den bislang nicht gefunden. Klar "Licht" ist der Parameter, den ich definieren muss. Aber an sich das Element finde ich auf den ersten Blick nicht.
Den mein Skript, was ich oben gepostet habe, funktioniert irgendwie garnicht. Also der Datenpunkt "Statusanzeige.Kueche.Licht" wird niemals verändert. Und zumindest der Logik, der ich versuche etwas an zu nehmen, sollte es theoretisch funktionieren.
Michael
-
@raspido sagte in Mehrere Trigger verarbeiten und Wert setzen:
Den Baustein "setze licht auf", wo finde ich den? Irgendwie habe ich den bislang nicht gefunden.
Du musst eine neue Variable anlegen. Die nennst du wie Du willst (in diesem Beispiel
licht
) und findest dann unter Variablen auch den Baustein, um diese Variable zu setzen. -
@haus-automatisierung Danke für den Tipp für das mit dem setze licht auf, aber der Logikbaustein oder, den finde ich so auch nicht. Irgendwie irritiert mich das gerade da ein wenig
Also mein "oder" sieht so aus:
Ich habe es hin bekommen und es läuft. DANKE
Ich wollte euch nun noch die Hardware zeigen, die zum ganzen Projekt gehört. Ist noch ein Prototyp an Platine, aber Platine wird noch in "richtig" gefährtigt bei JLCPCB, aber vorher muss ich mir noch ein passendes Gehäuse besorgen, damit die Platine dort auch vernünftig rein passt. Platine an sich ist fertig, nun kommt es aufs "Format" an und die Montagelöcher.
Einmal das ganze Licht aus und Fenster zu:
Einmal ein oder mehrere Lichter an und Fenster offen:
Je überwachten Zustand ist eine LED. Okay beim ESP-01 sind ohne Umwege "nur" 2 möglich, aber für das Projekt reicht es so an sich eigentlich aus. Soll ja nur als "kleines Modul" dienen, wenn irgendwo ein "Zustand" nicht ist, wie es sein soll. Kann man ja an sich individuell einsetzen. Sobald dieses Modul mit den dazugehörigen LEDs "richtig" montiert ist, kann ich bei Interesse noch ein Foto machen. Wird aber wenig aufällig sein, da lediglich 2 LEDs mit Klarem Körper in der Holzpaneldecke montiert sind. Also die sollen möglichst wenig auffallen, wenn alles okay ist, so der Plan
Hier noch das funktionierende Blockly und zusätzlich das Blockly fürs Fenster:
Ich habe das "Fensterscript" gleich auch mal "optimiert", nachdem Beispiel vom Licht.
Falls der Schaltplan für das Board gewünscht wird, kurze Info, kann ich gerne zeigen. Ist ja nichts wildes dran.
-
@raspido sagte in Mehrere Trigger verarbeiten und Wert setzen:
Also mein "oder" sieht so aus:
mit der rechten Maustaste anklicken und im Popup-Menü "externe Eingänge" wählen (oder "interne Eingänge").
Funktioniert an fast allen Bausteinen -
@bananajoe Habe ich mit etwas üben und "rumspielen" auch raus bekommen. Aber vielen Dank für den Tipp.