NEWS
Blockly Mehrfachtrigger Lichtsteuerung
-
Wenn ich es richtig verstehe, wird die Variable Licht auf 65 gesetzt wenn entweder Bewegung erkannt wurde oder Anwesenheit im Raum erkannt wurde. Falls alle Bedingungen nicht eintreten wird Licht auf 0 gesetzt.
Falls die Stehleuchte zuvor eingeschaltet war (Wert 65) wird die Stehleuchte mit dem Wert 0 geschaltet (ausgeschaltet).
Was bedeutet "steuere EG_WZ_Steckdose:3.STATE mit nicht nicht Licht"?
Zuvor hatte Licht doch den Wert 0 oder 65. Also Frage ich mich, wie in der Telegram Nachricht, die Prüfung von Licht entweder wahr oder falsch sein kann?
Ich habe noch zwei weitere Bedingungen aus externen Programmen. Soundsystem und TV. Diese können true oder false sein. Je nachdem ob Soundsystem oder TV eingeschalt oder ausgeschaltet sind.
Könnte man das Blockly noch soweit abändern, dass das Licht/die Lichter nur ausgeschaltet sind, wenn beide Variablen Soundsystem und TV FALSE sind? -
@takahara sagte: Was bedeutet "steuere EG_WZ_Steckdose:3.STATE mit nicht nicht Licht"?
"nicht nicht" wandelt eine Zahl != 0 in true und eine 0 in false.
@takahara sagte in Blockly Mehrwachtrigger Lichtsteuerung:
Wert 0 oder 65. Also Frage ich mich, wie in der Telegram Nachricht, die Prüfung von Licht entweder wahr oder falsch sein kann?
Javascript nimmt eine implizite Typwandlung vor: != 0 wird als wahr und 0 wird als falsch gewertet. Falls es verständlicher ist, mache es so:
@takahara sagte in Blockly Mehrwachtrigger Lichtsteuerung:
Lichter nur ausgeschaltet sind, wenn beide Variablen Soundsystem und TV FALSE sind?
Dafür gibt es Datenpunkte?
-
@paul53 : Ja es gibt Datenpunkte. Einer dieser Datenpunkte heißt Lichtszenario_Soundsystem.
Dieser soll TRUE sein, wenn die Stromaufnahme über 80mA liegt und FALSE sein, wenn die Stromaufnahme kleiner 60mA ist. Ich habe aber deine Lösung mit der Hysterese noch nicht zu 100% verstanden. Und wie du das erneute triggern von Lichtszenario_Soundsystem verhinderst.
Meine Idee schaut folgendermaßen aus:
Den Datenpunkte Lichtszenario_Soundsystem, habe ich hier eingesetzt:
-
@takahara sagte: Den Datenpunkte Lichtszenario_Soundsystem, habe ich hier eingesetzt:
Das passt. Ist das ein eigener Datenpunkt oder der eines Adapters?
-
@takahara sagte: Meine Idee schaut folgendermaßen aus:
Dafür benötigt man keine Hysterese, weil das eingeschaltete Soundsystem einen bestimmten Wert nicht unterschreitet. Einfacher:
-
@paul53 : Ein eigens erstellter Datenpunkt.
-
@takahara sagte: Ein eigens erstellter Datenpunkt.
Dann verwende besser Block "aktualisiere" anstelle von "steuere".
-
und ändere den Titel, dann finden andere auch den thread mit der Suche. "Mehrwachtrigger" soll sicher "Mehrfachtrigger" heissen, oder?
-
@reutli: Erledigt. Danke dir!
-
@paul53 : Ich weiß es sehr zu schätzen, dass du dir Zeit für mich nimmst. Und meine Fragen geduldig beantwortest. Nochmals vielen lieben Dank.
In der Falls-Bedingung aktualisiere ich den Wert von ** Lichtszenario_Soundsystem** auf den Wert von Soundsystem. Da diese beiden Werte immer gegenläufig sind, sobald die Falls-Bedingung erfüllt wurde.
Wenn ich jetzt noch den Shelly Switch auf FALSE schalten möchte, wenn ** Lichtszenario_Soundsystem** = FALSE ist, kann ich das in der Falls-Bedingung nicht machen.
Muss ein zusätzliches Programm her?
-
@takahara sagte: Wenn ich jetzt noch den Shelly Switch auf FALSE schalten möchte, wenn ** Lichtszenario_Soundsystem** = FALSE ist,
"Switch" = Shelly
-
@paul53 : Ich bin gerade wieder am testen und habe das Blockly dahin angepasst, dass der Helligkeitswert des Präsenzmelders in der Push-Nachricht mit ausgegeben wird.
Laut Push-Nachricht ist dieser Wert 42.8. Warum wird das Licht bei diesem Helligkeitswert eingeschaltet? Wird die gemessene Helligkeit beim Einschalten der Lampen berücksichtig? Sprich, nur wenn dunkel = TRUE ist, soll das Licht eingeschaltet werden.
Müsste dieser Block:
Dann nicht so umgeschrieben werden? -
@takahara sagte: Dann nicht so umgeschrieben werden?
Das war mein erster Vorschlag, da ich davon ausgegangen bin, dass das Licht bei ausreichender Helligkeit auch bei Bewegung nicht eingeschaltet werden soll. Du hast es danach allerdings anders beschrieben:
Das Licht soll eingeschaltet werden, wenn Bewegung1 oder Bewegung2 oder die Helligkeit unter X% fällt (nur wenn eine Person im Raum ist) getriggert wurden.
-
@paul53: Ich hatte mich nicht eindeutig ausgedrückt. Danke dir.
-
@paul53 : Ich habe noch eine Frage.
Ich setze den Datenpunkt Lichtszenario_TV auf TRUE, wenn der aktuelle Stromverbrauch >0,26A ist. Dieser Stromwert muss ja höher sein, wie die Stromaufnahme im Standby-Betrieb, da ich die Spannungsversorgung um Standby-Betrieb ja über den Shelly abschalten möchte,
Heute Abend ist mir aufgefallen, dass die Spannungszufuhr zu Steckdose über den Shelly unmittelbar wieder ausgeschaltet wird. Da die Stromaufnahme im Standby-Betrieb unter der Schwelle von 0.26A liegt.
Die Schwelle noch weiter zu reduzieren führt nur dazu, dass der Verbraucher nicht mehr ausgeschaltet wird.
Wie könnte ich das Problem noch lösen? Kann man eine Verzögerung einbauen, die das Ausschalten um X-Sekunden / Minuten verzögert und wenn in der Zwischenzeit (während die Verzögerung noch läuft) ein Stromwert gemessen wird, der oberhalb der Schaltschwelle liegt, diese Verzögerung abgebrochen wird?
-
@takahara sagte: die Spannungszufuhr zu Steckdose über den Shelly unmittelbar wieder ausgeschaltet wird.
Beim Einschalten des Shelly? Stromspitze beim Einschalten? Dann versuche mal
-
@paul53 Hallo Paul, ich hätte noch eine weitere Frage zum Blockly und hoffe du magst mir nochmal helfen.
Die drei Trigger sind ja:
- Bewegungserkennung / Nicht-Erkennung Präsenzmelder
- Helligkeit Präsenzmelder
- Bewegungserkennung / Nicht-Erkennung Bewegungsmelder
Wenn die Helligkeit jetzt steigen sollte während das Licht AN ist, ist die Systemvariable dunkel FALSE.
Im nächsten Block (prüfe...) wird die Systemvariable dunkel FALSE sein.
Wie könnte ich die Beleuchtung ausschalten, wenn die Präsenz-/ Bewegungsmelder zwar noch Anwesenheit im Raum feststellen allerdings die Helligkeit so hoch ist, dass ich keine künstliche Beleuchtung mehr benötige?
Was ich damit sagen möchte, ist das Licht auszuschalten, falls es morgens noch in der Dunkelheit aktiviert wurde. Es über den Tag dann aber heller wird, um dann das Licht auszuschalten?Vielen Dank
Takahara
-
@paul53 :
Ich denke, dass ich meine Frage mir beantworten konnte.
Da die Variable dunkel bei Überschreitung der Helligkeit falsch ist. Somit sollte auch die Prüf-Bedingung falsch sein und Licht auf 0 setzen. Was zum Ausschalten der Beleuchtung führt, obwohl noch Präsenz im Raum festgestellt wird.
VG
Takahara -
@paul53: Hallo Paul, in der "setze Licht auf, prüfe-Bedingung wird in diesem Blockly-Script das Licht nur eingeschaltet wenn es dunkel ist und mindestens ein Bewegungsmelder eine Bewegung erkannt hat. Das ist so auch gewollt und funktioniert super.
Ich würde das Blockly-Script nun gerne dahin erweitern, dass weiterhin das Licht an geht wenn nur ein Bewegungsmelder eine Bewegung erkannt hat. Es soll allerdings nur ausgehen, wenn keiner der beiden Bewegungsmelder keine Bewegung mehr erkannt hat.
Wenn ich den ODER Baustein, gegen einen UND Baustein tausche, habe ich zwar das Problem beim Ausschalten gelöst, allerdings handle ich mir damit das Problem ein, dass das Licht nur eingeschaltet wird, wenn beide Bewegungsmelder eine Bewegung erkannt haben.
Hättest du noch eine Idee, wie ich das Problem lösen könnte?
Vielen Dank
Takahara -
@takahara sagte: Es soll allerdings nur ausgehen, wenn keiner der beiden Bewegungsmelder keine Bewegung mehr erkannt hat.
Das macht es durch die ODER-Verknüpfung.
Braucht man eine zusätzliche Ausschaltverzögerung?