NEWS
Blockly Mehrfachtrigger Lichtsteuerung
-
@paul53 Danke für deine schnelle Rückmeldung!
Ich habe den Trigger Baustein als UND Verknüpfung verstanden. Sprich, nur wenn alle vier Objekt ID's gleichzeitig geändert wurden, wird der Baustein auch getriggert?!?!? Oder ist das falsch verstanden?
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.
Die letzte ODER Bedingung (Helligkeit fällt unter X% und eine Person ist im Raum) möchte ich gern einsetzen, dass das Licht eingeschaltet wird, auch wenn keine Bewegung festgestellt wird und eine Person im Raum ist. Zum Beispiel wenn man liest oder ähnlich. Also sich kaum bewegt.
"setzte licht auf" => Ist hier eine Variable, die ich in einem weiteren Programm zum ansteuern des Lichtschalters nehmen muss?
VG
-
@takahara sagte: Trigger Baustein als UND Verknüpfung verstanden.
Der Trigger ist eine Oder-Verknüpfung der Flanken (Wertänderungen).
@takahara sagte in Blockly Mehrwachtrigger Lichtsteuerung:
"setzte licht auf" => Ist hier eine Variable, die ich in einem weiteren Programm zum ansteuern des Lichtschalters nehmen muss?
Ja.
@takahara sagte in Blockly Mehrwachtrigger Lichtsteuerung:
Helligkeit unter X% fällt (nur wenn eine Person im Raum ist)
Also so?
Anmerkung: Wenn die Helligkeit um den Grenzwert schwankt, geht das Licht an und aus.
-
@takahara
Damit schwankende Helligkeit nicht zum ständigen Ein-/Ausschalten des Lichtes führt, muss man eine Hysterese verwenden, wobei der Ausschalt-Grenzwert höher sein muss als die durch das eingeschaltete Licht erzeugte Helligkeit. -
@paul53 : Mega großes Dankeschön schon mal an dieser Stelle.
In der zweiten "falls - mache" Bedingung prüfe ich ja auf den boolschen Wert vom Objekt Licht. Wenn das Licht aus ist, dann schalte das Licht ein.
Mein Zwischenstecker ist ein Dimmaktor und ich kann daher nur auf einen Prozentwert prüfen. Kannst du mir sagen, wie ich das erreichen kann?VG
-
@takahara sagte: Prozentwert prüfen.
-
@paul53 : ich habe jetzt mal versucht das Blockly nachzubauen. Aber folgendes ist mir noch nicht klar.
Ich möchte dass das Licht bei Werten < 15 eingeschaltet wird wenn Bewegung festgestellt wird. Und wenn Helligkeitswerte > 18 gemessen werden, soll das Licht wieder ausgeschaltet werden.
- Was bewirkt die erste Zeile "setze dunkel auf Wert von Objekt ID Illumination < 18"?
- Welche Werte kann die Variable "Licht" annehmen?
- Kann "Licht" auf 100 gesetzt werden und 0?`
- Wie kann ich das Licht wieder ausschalten, wenn
a) keiner der beiden Präsenzmelder keine Bewegung erkannt hat
b) oder die Helligkeit > 18 gemessen wird - Ich würde auch noch gern eine Systemvariable "Lichtszenario" einbauen um ein re-triggern der Beleuchtung bei eingeschaltetem Licht zu verhindern. Anderenfalls wird momentan noch jedes mal das Licht wieder eingeschaltet, wenn eine Bewegung detektiert wurde.
Hab nochmals vielen Dank für deine Hilfe.
-
@takahara sagte: Was bewirkt die erste Zeile "setze dunkel auf Wert von Objekt ID Illumination < 18"?
Setzt den Wert auf false oder true - je nach Helligkeit. Die Variable dunkel bleibt sonst undefined, wenn sich die Helligkeit beim Skriptstart innerhalb der Hysterese befindet.
@takahara sagte in Blockly Mehrwachtrigger Lichtsteuerung:
Welche Werte kann die Variable "Licht" annehmen?
Jeden Wert zwischen 0 und 100. Kann zum Einschalten auch auf 65 gesetzt werden.
@takahara sagte in Blockly Mehrwachtrigger Lichtsteuerung:
ein re-triggern der Beleuchtung bei eingeschaltetem Licht zu verhindern.
Das wird hierdurch verhindert:
-
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.