NEWS
Blockly ganze Aufzählung prüfen
-
@timmss sagte: Also praktisch so:
Nein, so:
In der ID ist "enum.functions.FensterStatusFirma" genau so geschrieben?
-
Das macht mehr Sinn ja
Ja, die ID heißt genauso.
Eine Frage noch zum Verständnis, in JavaScript ist es besser nicht auf true zu prüfen, deswegen auch das Weglassen von dem Vergleich = wahr?
-
@timmss sagte: Weglassen von dem Vergleich = wahr?
Das Ergebnis eines jeden Vergleichs ist true oder false. Deshalb ist ein Vergleich mit wahr sinnlos.
-
Dann wäre da noch eine Sache in dem Raum-Skript. Hier wird jedes Fenster und die Tür geprüft und es gibt folgende 3 Anwendungsfälle:
- Fenster zu und Tür zu
- Fenster zu und Tür auf
- Fenster auf
Bisher sieht meine damalige Erstlösung so aus:
Ich denke hier kann man viel mit privaten Variablen arbeiten und auch die letzte Bedigung kann durch ein einfaches sonst ersetzt werden.
Wie würdet ihr das lösen?
-
@timmss sagte: Wie würdet ihr das lösen?
Z.B. so:
3 Anwendungsfälle:
- Fenster zu und Tür zu
- Fenster zu und Tür auf
- Fenster auf
Bei nur 4 Fenstern kann man an Stelle der Schleife auch eine Oder-Verknüpfung der Werte verwenden.
-
Vielen Dank für den Lösungsvorschlag!
Ich hätte vorher vielleicht meine Variablen näher erklären sollen:- Fenster zu und Tür zu sollen FensterStatus auf false setzen und KontaktAuf auf false setzen
- Fenster zu und Tür auf sollen FensterStatus auf false setzen und KontaktAuf auf true setzen
- Fenster auf sollen FensterStatus auf true setzen und KontaktAuf auf true setzen
Da wäre ein Problem mit dem zweiten Trigger Block, denn hier können die Fenster den Trigger nicht triggern.
Ich habe es so gebaut:
Und es funktioniert eigentlich, jedoch bekomme ich warn debug outputs
-
Nachtrag:
Ich habe jetzt eine perfekt funktionierende Lösung:
Der Fehler mit den gelben warn-debugs kam davon, dass die States von Homematic-IP Sensoren vom Typ number sind.
Ich musste diese also im Skript konvertieren zu Logikwerten, um diese dann den Boolean-Variablen zu übergeben.Danke für eure Lösungen!
-
@timmss sagte: eine perfekt funktionierende Lösung
Die Lösung funktioniert nur manchmal, da "steuere FensterStatusEntwicklung" asynchron ausgeführt wird und meist noch nicht fertig ist, wenn der DP gleich wieder eingelesen wird. Verwende besser eine Variable:
-
Macht Sinn ja.
Würde hier nicht auch 'aktualisiere' besser sein statt 'steuere', da FensterStatusEntwicklung ein eigener Datenpunkt ist und kein Aktor?
-
@timmss sagte: 'aktualisiere' besser sein statt 'steuere', da FensterStatusEntwicklung ein eigener Datenpunkt ist
Ja, bei eigenen Datenpunkten nimmt man "aktualisiere".
EDIT: Es hätte sein können, dass es sich um SV der CCU handelt. Dann müsste man "steuere" verwenden.
-
Versteh ich, vielen Dank!