Homematic Script: Operator ">" liefert unerwartetes Ergebnis

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
CremeFlash
Beiträge: 13
Registriert: 02.01.2021, 10:54
System: CCU und Access Point
Hat sich bedankt: 7 Mal

Homematic Script: Operator ">" liefert unerwartetes Ergebnis

Beitrag von CremeFlash » 01.09.2021, 09:48

Liebe Forengemeinde,

ich habe mich gestern an mein erstes, einfaches Skript gewagt. An dieser Stelle besten Dank an die Beteiligten dieses Beitrags, der mir sehr geholfen hat (insbesondere DJDieter): viewtopic.php?f=26&t=45178&hilit=HmIP+SWO+B.

Die Idee ist über eine Tabletvisualisierung eine Lüftungsempfehlung pro Stockwerk zu geben (im Forum zum Teil ja bereits viel diskutiert):
- Ich berechne mir für jeden Raum mittels Sensordaten der HmIP-BWTH eine absolute Feuchte in g/m³
- Ich bestimme für jedes Stockwerk die maximale relative und absolute Feuchte (wir Lüften nicht einzelne Zimmer, sondern die ganze Etage)
- Für jedes Stockwerk wird geprüft, ob die relative Feuchtigkeit über 60 % liegt (notwendige Bedingungen fürs Lüften) erfolgt dann der Abgleich der absoluten Feuchte Innen vs. Außen (hinreichende Bedingung fürs Lüften) und es wird eine Lüftungsempfehlung gegeben
- Rote Lampe (Status der Systemvariablen: -1): Lüften notwendig und sinnvoll (rH > 60 %, außen trockener als innen)
- Gelbe Lampe (Status: 0): Lüften notwendig, aber nicht sinnvoll (rH > 60%, aber außen absolute Feuchte höher als Innen)
- Grüne Lampe (Status: 1): Alles dufte

Der für mich nicht nachvollziehbaren Skriptteil (exemplarisch für das Dachgeschoss) ist hier dargestellt:
Lüften.png
Initial gebe ich den Variablen den Wert -5, um direkt zu sehen, wenn die Schleifen nicht funktionieren.

Die Werte für die Feuchtigkeit passen: Die Beladung der Luft ist im Außenbereich geringer als im Innenbereich, die relative Feuchte im Haus aber größer als 60 %. Ich hätte jetzt erwartet, dass mir die verschachtelte If-Schleife den Status auf -1 setzt (Lüften!). Tatsächlich wird der Status aber zu 0 geschrieben (Lüften notwendig, aber nicht sinnvoll). Probehalber habe ich die Operatoren in der ersten und zweiten if-Schleife umgedreht, dann setzt mir das Skript den Status der Systemvariablen auf -1. Es ist also nicht so, dass mir aufgrund falscher Syntax (es gibt auch keine Fehlermeldung) die Abfrage immer in die erste If-Schleife läuft.

Findet ihr den Fehler?

Viele Grüße

Stefan
-------
Derzeit am Funken:
- CCU3 mit RaspberryMatic, 3 x HmIP-HAP
- 10 x BSM, 26 x BDT, 2 x WRC6, 1 x BRC2
- 11 x BWTH
- 3 x BBl, 4 x FBL, 5 x BROLL
- 2 x SPI, 3 x SMI, 1 x SMO
- 1 x SWO-B, 1 x Sen-Wa-Od, 1 x SLO
- 1 x PS

MichaelN
Beiträge: 9650
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Homematic Script: Operator ">" liefert unerwartetes Ergebnis

Beitrag von MichaelN » 01.09.2021, 10:15

1. Skripte bitte in Code Tags posten, nichts als Screenshot. So kann man nichts testen. Oder sollen wir das abtippen? Und bitte entweder das ganze Skript oder zumindest einen lauffähigen Teil, der als Testfall dient.

2. Systemvariablen würde ich sauber als Systemvariable referenzieren (siehe Signatur). Aber Du hast bestimmt sichergestellt, daß die Variablennamen nicht identisch mit anderen Objekten sind.

3. Sicherstellen das Du auch tatsächlich Zahlenwerte miteinander vergleichst. Vergleichst Du "62" mit 60 kommt das was anderes raus, als bei 62 und 60.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“