NEWS
[gelöst]Blockly Licht und Toröffnung
-
Hallo zusammen,
ich bin ein Neuling was iobroker und Blockly angeht. Genau genommen beschäftige ich mich erst seit Mai 2021 mit der ganzen Smarthome Geschichte und habe auch schon einige Hilfe hier im Forum erlesen können.
Nun habe ich aber ein Funktionsproblem im Blockly, wo ich schon gute 2 Wochen Recherchiere und rum baue. Leider ohne nennenswerten Erfolg.
Zur Ausgangssituation:
Ich habe ein Tor, welches per Meross Garagen Door opener gesteuert wird. Funktioniert ohne Probleme, auch mit Statusanzeige.
Zusätzlich habe ich eine Hofbeleuchtung, die nur am Freitag und Samstag bei Sonnenuntergang eingeschalten wird und um 23:00 wieder Aus geht per seperaten Blockly.
Die Hofbeleuchtung wird auch mit eingeschaltet, wenn das Tor nach Sonnenuntergang geöffnet wird.
Nun zum eigentlichen Problem.
Der Meross Toröffner hat ja ein Magnetschalter, um den Zustand des Tores zu bestimmen. Dieser Datenpunkt ist im iobroker auch vorhanden, wird aber nur in Richtung false gesteuert. Also habe ich im Blockly gesagt, setze den Datenpunkt auf true, wenn das Tor geöffnet wird. Dazu habe ich eine Verzögerung gesetzt, um sicher zu sein das der Schalter getrennt ist. Beim Schließen des Tores, wird dieser Wert auch vom Meross wieder auf false gesetzt. Wenn ich nun zusätzlich einbaue, das das Licht wieder aus geht bei geschlossenem Tor, also wenn der Wert des Magnetschalters auf false wechselt, bleibt das Licht an!
Dazu habe ich auch versucht zu berücksichtigen, wenn der State vom Magnetschalter am Freitag und Samstag zwischen Sonnenuntergang und 21:50 mit false gesetzt wird, soll das Licht nicht ausgeschalten werden. Ich denke es wird nur ein kleiner Denkfehler in meinem Blockly sein, aber ich komme auch mit Google, leider nicht auf den Fehler. Vielleicht könnt ihr mir da weiterhelfen?
Vielen Dank
-
Hi , du verlierst dich im eigenen Programm, versuche das sauberer zu gestalten.
Im Prinzip arbeitest du mit Zustand Tor und Zeit. Würde mit Blöcken und Variablen arbeiten.
Zeit : wenn Freitag und Samstag zwischen Sonnenuntergang und 21:50 ist setzte Var Zeit auf 1
wenn Freitag und Samstag zwischen Sonnenuntergang und 21:50 nicht ist setzte Var Zeit auf 0
Tor: wenn Tor ist auf setze Var Tor auf 1
wenn Tor ist zu setze Var Tor auf 0Dann ist dein Hauptprogramm:
wenn Var Zeit ist 1 ( triff zu ) und Var Tor ist 1 ( offen ) steuere Licht an
wenn Var Zeit ist 0 ( tritt nicht zu ) und Var Tor ist 0 ( zu ) steuere Licht ausdu schreibst: setze den Datenpunkt auf true, wenn das Tor geöffnet wird
woher kommt die Annahme das das Tor auf ist wenn nur bekannt ist Zu bei false ? -
@ralla66
Das klingt gut. Bis jetzt habe ich ungern mit Var gearbeitet, weil man da im Hintergrund nicht sieht ob sich was ändert wenn die Bedingung passt. Ich werde das mal so aufbauen. Wenn ich das umgesetzt habe, kann ich ja nochmal Feedback geben. Erstmal vielen Dank -
sehen kannst du das schon dafür gibt es ja den debug Node oder du schreibst den Wert der Var in einen DP.
Werden Programme größer bleibt dies halt Übersichtlicher wenn man mit Blöcken wie zB Zeit arbeitet.
Der Vorteil liegt ja dann auch bei Änderungen vor.
Setze mehr Kommentare ein, nach einem halben Jahr weißt nicht mehr was du da programmiert hast.
Ist für die Hilfe auch von Vorteil.
Nur Mut mit Variablen. -
du schreibst: setze den Datenpunkt auf true, wenn das Tor geöffnet wird
woher kommt die Annahme das das Tor auf ist wenn nur bekannt ist Zu bei false ?Natürlich kann ich mir nicht 100% sicher sein, das das Tor auch wirklich aufgegangen ist, weil ich die Datenpunkte ja selbst setze. Leider habe ich aber keine andere Zustandsanzeige. Oder kann man noch eine Art Sicherheit einbauen?
-
@redtigerone Mal eine blöde Frage - warum setzt Du das überhaupt selbst auf true.
Wenn dieses Meross richtig funktioniert setzt dieses nur auf false wenn das Tor geschlossen wird.
Dann prüfe eben nur auf Aktualisierung und nicht auf Änderung.Sprich jedesmal wenn das Teil wieder mit false aktualisiert wird getriggert. Später kannst Du dann das filtern mit Astrofunktionen etc.
Aber halte es einfach wie möglich, um so weniger Fehler. -
Das ist eine gute Frage. Mein Denken dabei war, das nur eine Aktuallisierung regestriert wird, wenn sich der Zustand ändert.
Allerdings müsste ich das mal testen, ob bei erneutem State false auch was passiert. Danke für den Tipp, probiere ich mal aus. -
@redtigerone Nein bei Aktualisierung - siehst Du einen neuen Zeitstempel im Objekt - das hat mit dem Wert an sich nichts zu tun.
Du siehst ja auch die Zeitstempel, wenn Du in der Objekteansicht auf die "1" drückst.
Das was ich natürlich nicht weiß ob Dein Tor auch den Datenpunkt aktualisiert - wenn es nicht gerade geschlossen wird. Aber vielleicht tut es das ja nicht - wenn es nur false sendet. Aber deshalb kannst das ja am Zeitstempel überprüfen.
-
@redtigerone
letzt endlich bleibt nur der Zustand false.
Bau da ein ESP ein für 5 Euro. Zumindest hast du dann den Zustand nicht zu. -
ich habe es jetzt mal getestet, leider wird der Datenpunkt einmal aktualisiert, wenn das Tor öffnet und nochmals wenn das Tor geschlossen wird. Ich bastel mir da mal was, mal schauen ob es funzt.
-
@redtigerone Na dann kommst aber mit Deinem "true" setzen erst recht durcheinander. Dann würde es sich anbieten - hier lieber noch zusätzlich einen Kontaktsensor zu verbauen und den Trigger lediglich dazu zu verwenden, dass das Tor bedient wurde, egal was Du mit dieser Info dann machst.
Allerdings hast Du mit dem auf true setzen dann doch eine zusätzliche Information, indem Du mit dem false - dann ermitteln kannst, dass solange der Datenpunkt auf true ist, das Tor in Bewegung ist.
Das kann man ja ggf. für Warnungen oder ggf. Anzeigen nutzen. -
@redtigerone sagte: Ich denke es wird nur ein kleiner Denkfehler in meinem Blockly sein
Du vergleichst den String "Objekt ID" mit wahr bzw. falsch. Das kann nicht funktionieren.
-
@paul53
Jetzt wo du es sagst sehe ich es auch. Da müsste Wert ausgewählt werden. -
Jetzt habe ich die Zeit gefunden das mal umzubauen.
Eigentlich ist es recht einfach mit den Variablen.
Habe es jetzt so gebaut, das die Var Zeit Wahr sein muss, wenn die Beleuchtung mit schalten soll.
Funktioniert auf Anhieb. Danke für den Tip.
Die Sache mit dem Sensor muss ich mir nochmal überlegen.Hier nochmal mein funktionierendes Script.