NEWS
Script Logik Optimierung für Licht Steuerung
-
Hi in die Runde,
ich habe in 2 meiner Blockly Scripten eine fehlende Logik wie das Licht gesteuert werden soll und ich habe aktuell noch keine sinnvolle Lösung wie ich dies lösen kann.
Daher hoffe ich das jemand mir einen guten Rat geben kann.Script/Problem 1: -> ist behoben dank paul53
Im Script steure ich eine Osram/Ledvance Smart+ ZigBee Steckdose im Flur woran eine passive Lichterkette angeschlossen ist.
Diese wird durch den Datenpunkt "Nachtcheck" und "Anwesenheit" getriggert.
Der Datenpunkt "Nachtcheck" wird von einem separaten Blockly Script mit Hilfe der Astro Funktion auf true/false gesetzt.
Der Datenpunkt "Anwesenheit" wird von einem separaten Blockly Script mit Hilfe des unifi Adapters auf true/false gesetzt, sobald eines unserer Smartphone im Netzwerk eingeloggt ist.Da wir nicht wollen das die ganze Nacht das Flurlicht durchbrennt, wird dieses per cron um 23:30 Uhr ausgeschaltet.
Parallel dazu wird das Licht ebenfalls ausgeschaltet sobald wir nicht zuhause sind.Problem: Kommen wir nach 23:30 Uhr nach Hause, geht das Licht an und wird natürlich nicht mehr ausgeschaltet.
Wie kann ich das Problem lösen?
Vielleicht mit einem separaten Datenpunkt der vom cron Teil gesteuert wird?
Blockly export dazu:
Script/Problem 2: -> ist behoben dank paul53
Im 2ten Script steure ich eine Xiaomi Yeelight LED Strip in der Küche die unterhalb der Hängeschränke befestigt ist.
Primär wird die LED Strip als passive Beleuchtung benutzt, sobald man die Küche im dunklen betritt.
Dafür hängt an der Küchedecke ein Xiaomi Bewegungssensor, auf der die LED Strip triggert und sobald nach 2 Minuten keine Bewegung mehr erkannt wird, wird die LED Strip ausgeschaltet.Problem: Der LED Strip hat selbst einen Taster den man zum Ein/Ausschalten benutzen kann.
Diesen würden wir gerne zur Dauerbeleuchtung nutzen, falls man das Licht manuell steuern will.
Leider greift aktuell die 2 Minuten Regel immer rein und schaltet die Strip aus, falls man sich in dem Moment nicht im Blickwinkel des Bewegungssensors aufhält.Wie kann ich das Problem lösen?
Blockly export:
-
@TDCroPower
Problem: Kommen wir nach 23:30 Uhr nach Hause, geht das Licht an und wird natürlich nicht mehr ausgeschaltet.Wie kann ich das Problem lösen?
Vielleicht mit einem separaten Datenpunkt der vom cron Teil gesteuert wird?Warum setzt du den State 2 mal auf Wahr? einmal direkt und einmal nach 5min?
kannst du nicht nach 23:30 bei Heimkommen einfach zeit gesteuert 30min einschalten?Problem: Der LED Strip hat selbst einen Taster den man zum Ein/Ausschalten benutzen kann.
Diesen würden wir gerne zur Dauerbeleuchtung nutzen, falls man das Licht manuell steuern will.
Leider greift aktuell die 2 Minuten Regel immer rein und schaltet die Strip aus, falls man sich in dem Moment nicht im Blickwinkel des Bewegungssensors aufhält.hast du nen State wo du siehst das manuell eingeschaltet wurde? Wenn nicht musst du prüfen ob die Lampe via Skript oder via Taster eingeschaltet wurde und dann unterschiedliche aktionen lostreten!?
-
@Adnim ...
zu 1:
"... Warum setzt du den State 2 mal auf Wahr? einmal direkt und einmal nach 5min?..."
der Osram/Ledvance reagiert manchmal nicht und so fange ich die Kommunikationsprobleme ab, wenn ich einfach nach 5 Minuten erneut versuche ihn auszuschalten."... kannst du nicht nach 23:30 bei Heimkommen einfach zeit gesteuert 30min einschalten?..."
Ich will eigentlich nicht das sich das Licht nach 23:30 Uhr einschaltet.zu 2:
"... hast du nen State wo du siehst das manuell eingeschaltet wurde?..."
Soweit ich das sehe gibt dies nicht in den Objekten...
"... Wenn nicht musst du prüfen ob die Lampe via Skript oder via Taster eingeschaltet wurde und dann unterschiedliche aktionen lostreten!?..."
Genau das ist meine Frage, wie und wo ich das am besten steuere!?
Theoretisch beim einschalten per Script könnte ich einen Datenpunkt setzen, der beim ausschalten abgefragt wird? -
@TDCroPower sagte in Script Logik Optimierung für Licht Steuerung:
"... kannst du nicht nach 23:30 bei Heimkommen einfach zeit gesteuert 30min einschalten?..."
Ich will eigentlich nicht das sich das Licht nach 23:30 Uhr einschaltet.ich meine damit das du prüfst ob es nach 23:30 ist und dann das Licht eine weile bei Heimkommen einschaltest.
Also Licht an + Licht aus zeit verzögert 30min gleichzeitig nach 23:30 dann setzen?oder halt prüfen ob nach 23:30 und dann kein Licht mehr einschalten. oder ich verstehe deine Aufgabenstellung falsch...zu 2:
"... hast du nen State wo du siehst das manuell eingeschaltet wurde?..."
Soweit ich das sehe gibt dies nicht in den Objekten...
"... Wenn nicht musst du prüfen ob die Lampe via Skript oder via Taster eingeschaltet wurde und dann unterschiedliche aktionen lostreten!?..."
Genau das ist meine Frage, wie und wo ich das am besten steuere!?
Theoretisch beim einschalten per Script könnte ich einen Datenpunkt setzen, der beim ausschalten abgefragt wird?ja genau und wenn die Lampe an ist ohne das dein Skript eingeschaltet hat dann ist manuell an, das kannste ja via blocky prüfen.
-
@TDCroPower sagte:
Ich will eigentlich nicht das sich das Licht nach 23:30 Uhr einschaltet.
@TDCroPower sagte in Script Logik Optimierung für Licht Steuerung:
zur Dauerbeleuchtung nutzen, falls man das Licht manuell steuern will.
-
@paul53 danke das sieht gut aus.
zu 1:
ist eingebaut, ich nutze im Astrocheck die "Golden Hour", da mir der Zeitpunkt besser gefällt...
zu 2:
ich komm da gerade nicht ganze dahinter wie ich das in meinem Beispiel einbauen kann.
Wird das zum einschalt oder ausschalt Moment hinzugefügt? -
@TDCroPower sagte:
Wird das zum einschalt oder ausschalt Moment hinzugefügt?
Als falls-Klammer um alles:
falls nicht manuell -
@TDCroPower sagte:
ich nutze im Astrocheck die "Golden Hour", da mir der Zeitpunkt besser gefällt...
Muss dann der Datenpunkt "Nachtcheck" noch zusätzlich ausgewertet werden ?
-
@paul53 ...
"Als falls-Klammer um alles:
falls nicht manuell"- hat noch nicht so recht Klick gemacht, auf was trigger ich denn deine falls Bedingung und welcher "Wert" und "Ursprung" werden dort gesetzt?
- das "setze manuell" finde ich komischerweise in der Objektliste bei Blockly nicht, wo hast du das her?
"Muss dann der Datenpunkt "Nachtcheck" noch zusätzlich ausgewertet werden ?"
- hast Recht, macht dort keinen Sinn mehr und ist entfernt, somit habe ich nur ein UND Operator anstatt die doppel UND Verschachtelung.
-
@TDCroPower sagte:
"Wert" und "Ursprung"
Wert und Ursprung sind Eigenschaften des Trigger-Datenpunktes. Man findet sie unter "Trigger"
@TDCroPower sagte in Script Logik Optimierung für Licht Steuerung:
das "setze manuell" finde ich komischerweise in der Objektliste bei Blockly nicht
manuell ist eine selbst erstellte Variable
-
@paul53 sorry falls ich mich falsch ausgedrückt habe, die Trigger Werte finde ich und nutze ich schon in einigen Scripten.
Suche aber dein "setze "manuell" auf...", das finde ich nirgendwo und erst recht nicht in der Triggerfarbe. -
@TDCroPower sagte:
das finde ich nirgendwo und erst recht nicht in der Triggerfarbe.
Es ist kein Trigger, sondern eine Variable, die leider die gleiche Farbe hat. Man muss erst oben klicken, um eine Variable zu erstellen, bevor man sie verwenden kann.
-
@paul53 danke für den Hinweis, ja die Farbwahl ist wirklich unvorteilhaft um es gut nach vollziehen zu können.
Bleibt nur noch die Frage wie ich das in mein Beispiel implementiere.
Ich habe die Logik leider nicht verstanden, wie ich das gegen meinen Bewegungssensor halten kann.Kannst du mir vielleicht einen weiteren Tipp geben um es besser zu verstehen?
-
@TDCroPower sagte:
nicht verstanden, wie ich das gegen meinen Bewegungssensor halten kann.
Die Variable manuell wird true, wenn das Licht einschaltet (Wert = true) wird, die Quelle für die Wertänderung aber nicht die Javascript-Instanz ist. Mit der Auswertung der Variablen manuell muss das Schalten durch den BWM verhindert werden.
-
@paul53 ich glaube ich habe es jetzt umsetzen können.
Siehst du da vielleicht noch einen Fehler?Zunächst habe ich einen Datenpunkt mit default "false" erstellt...
Und dann deine Trigger Logik vor der BWM Abfrage gesetzt und im Ausschaltzustand die Abfrage auf die "manuell" Funktion hinzugefügt...
-
@TDCroPower sagte:
Siehst du da vielleicht noch einen Fehler?
Ja, der Datenpunkt "Kueche_manuell" ist zu viel. Der Vergleichswert für Ursprung muss der String "system.adapter.javascript.0" sein.
-
@paul53 ah ok, dachte das wäre lediglich ein Platzhalter mit dem Textfeld.
Was macht denn das Textfeld in diesem Moment?Hier noch die aktuelle Version...
-
@TDCroPower sagte:
Was macht denn das Textfeld in diesem Moment?
Das ist der Vergleichswert, der nicht erfüllt sein darf (ungleich). Bau einen Debug-Block mit Ausgabe von Ursprung ein, dann siehst Du es.
-
@paul53 aha, der hat im Ursprung wer ihn gesteuert hat...
Hier habe ich die yeelight 1x über die Objektliste und 1x per Taster geschaltet...
-
@TDCroPower
So kannst Du es vollständig verfolgen: