Fehler im Programmablauf

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

thfrank
Beiträge: 248
Registriert: 16.05.2020, 12:54
System: CCU
Hat sich bedankt: 48 Mal
Danksagung erhalten: 1 Mal

Fehler im Programmablauf

Beitrag von thfrank » 28.06.2021, 20:29

Habe u.a. Programm zur Markisensteuerung geschrieben.

Zur Erklärung:

Gerät Temp_Sonne-Schatten: Temperaturdifferenz(sensor)
SY Sonne Südseite: soll in diesen Programm ein- und ausgeschaltet werden und schaltet wiederum die Markise

Probleme / Fragen

- Zunächst fällt mir auf, dass gemäß Zeitstempel das Programm alle 2-3 Minuten ausgelöst wird. Wieso, wenn sich die Bedingungen im WENN oder SONST, WENN nicht (ständig) ändern?
- Die SV wird korrekt auf "Sonne scheint" geschaltet (Bedingung WENN erfüllt), was aber nicht funktioniert, ist der SONST, WENN - Teil, d.h. die Variable wird nie auf "scheint nicht" zurückgeschaltet, obwohl mindestens eine der Bedingungen erfüllt sind (und die im WENN zu diesem Zeitpunkt nicht)

Bin gespannt, wo der Fehler liegt...

Thomas
Dateianhänge
Unbenannt.JPG

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

Re: Fehler im Programmablauf

Beitrag von MichaelN » 28.06.2021, 20:47

Wird das Programm getriggert oder ausgeführt?
warscheinlich nur getriggert. Das kann trotz "bei Änderung" bei jeder Aktualisierung passieren.

Unter anderem wegen dieser Flaws habe ich mittlerweile alle Programme auftrennt. Es gibt mehrere Programme zur Sonnen Erkennung und andere zur Schatten Erkennung.

Manchmal ist es sinnlos verstehen zu wollen, warum etwas nicht wie erwartet funktioniert.
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 +++

Xel66
Beiträge: 14149
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Fehler im Programmablauf

Beitrag von Xel66 » 29.06.2021, 00:25

Die Prüfung auf "bei Änderung" scheint ein Bestandteil der Bedingungsprüfung des Programms zu sein (vermutlich durch Vergleich mit .LastValue()) und nicht im Vorfeld erledigt zu werden. Somit ist die Aktualisierung des Zeitstempels plausibel, denn er wird auch aktualisiert, wenn kein DANN oder SONST durchlaufen wird.

So ein für den Beobachter überraschendes Verhalten kommt auch zustande, wenn mit gleichen Triggern (trotz unterschiedlicher Grenzwerte) gegensätzliche Befehle ausgelöst werden. Das Verhalten kann etwas entschärft werden, wenn solche gegensätzliche Aktionen in getrennte Programme aufgeteilt werden.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Fehler im Programmablauf

Beitrag von dtp » 29.06.2021, 08:03

Das Programm wird praktisch immer getriggert, wenn sich deine Temperaturdifferenz bei mehr als 22 °C Außentemperatur über 10 °C erhöht und wenn sie unabhängig von der Außentemperatur unter 8 °C fällt. Zudem wird es getriggert, wenn die Außentemperatur bei einer Temperaturdifferenz von mehr als 10 °C über 22 °C steigt oder wenn sie unabhängig von der Temperaturdifferenz unter 21 °C sinkt. Insbesondere die Temperaturdifferenz kann sich da schon alle paar Minuten ändern, wenn es warm draußen ist. Eventuell musst du die Hysterese vergrößern.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Xel66
Beiträge: 14149
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Fehler im Programmablauf

Beitrag von Xel66 » 29.06.2021, 09:58

Ein vergrößern der Hysterese wird nicht viel bringen, denn die Grenzwerte sind so angelegt, dass immer irgendein Bein der Prüfung ein WAHR ergibt. Und da die Prüfung auf die Grenzwerte im Programm erfolgt, wird zumindest die Bedingungsprüfung zyklisch mit der Aktualisierung der Sensordaten gestartet. Ich stelle bei mir mit einer ähnlichen Programmierung (aber etwas umfangreicher) einen Beschattungsbedarf fest. Meine Programme haben derzeit einen Zeitstempel des gestrigen Tages. Ich habe allerdings für das Setzen und das Rücksetzen getrennte Programme.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

thfrank
Beiträge: 248
Registriert: 16.05.2020, 12:54
System: CCU
Hat sich bedankt: 48 Mal
Danksagung erhalten: 1 Mal

Re: Fehler im Programmablauf

Beitrag von thfrank » 29.06.2021, 10:18

Das mit dem Triggern kann ich noch nachvollziehen. Allerdings verstehe ich nicht, warum der SONST, WENN - Teil offenbar nie ausgeführt wird.

Gestern war es z.B. so, dass gegen 18 Uhr die Temperaturdifferenz (dauerhaft) unter 8 Grad gegangen ist, die Temperatur (auch noch über eine ziemlich lange Zeit) über 21 Grad blieb. Damit wäre (zumindest nach meiner Logik) der WENN - Teil falsch und der SONST, WENN - Teil wahr.

Macht es Sinn, die Häkchen bei den Retriggern rauszunehmen?

Ansonsten werden es dann wohl tatsächlich zwei Programme. Ich hatte hier im Forum (soweit ich mich erinnere) aber mal ein ähnlich aufgebautes Programm gesehen, allerdings jeweils ohne Prüfung der absoluten Temperatur, da hat es anscheinend auch mit SONST, WENN funktioniert. Finde es leider nicht mehr.

Thomas

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Fehler im Programmablauf

Beitrag von dtp » 29.06.2021, 11:20

thfrank hat geschrieben:
29.06.2021, 10:18
Gestern war es z.B. so, dass gegen 18 Uhr die Temperaturdifferenz (dauerhaft) unter 8 Grad gegangen ist, die Temperatur (auch noch über eine ziemlich lange Zeit) über 21 Grad blieb. Damit wäre (zumindest nach meiner Logik) der WENN - Teil falsch und der SONST, WENN - Teil wahr.
Aber nur für den Moment, wo entweder die Temperaturdifferenz unter 8 °C oder die Außentemperatur unter 21 °C sinkt. Wenn du hier "bei Änderung auslösen" als Trigger wählst, passiert nur was, wenn die entsprechenden Schwellwerte unterschritten werden. Wenn sich dagegen die Werte unterhalb von 8 °C bzw. 21 °C verändern, löst das Programm nicht aus.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

thfrank
Beiträge: 248
Registriert: 16.05.2020, 12:54
System: CCU
Hat sich bedankt: 48 Mal
Danksagung erhalten: 1 Mal

Re: Fehler im Programmablauf

Beitrag von thfrank » 29.06.2021, 11:44

dtp hat geschrieben:
29.06.2021, 11:20
Aber nur für den Moment, wo entweder die Temperaturdifferenz unter 8 °C oder die Außentemperatur unter 21 °C sinkt. Wenn du hier "bei Änderung auslösen" als Trigger wählst, passiert nur was, wenn die entsprechenden Schwellwerte unterschritten werden. Wenn sich dagegen die Werte unterhalb von 8 °C bzw. 21 °C verändern, löst das Programm nicht aus.
ja, das ist ja auch so beabsichtigt.

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Fehler im Programmablauf

Beitrag von dtp » 29.06.2021, 11:59

Du kannst in der Tat mal den Haken für das Retriggern entfernen. Evtl. wird zwischenzeitlich (immerhin sind es 20 Minuten) die Wenn-Bedingung erfüllt, so dass der Sonst-Wenn-Zweit nicht ausgelöst wird. Das Skript müsste allerdings entsprechend ausgelöst werden, wobei ja nicht klar ist, was da eigentlich drin steht.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

thfrank
Beiträge: 248
Registriert: 16.05.2020, 12:54
System: CCU
Hat sich bedankt: 48 Mal
Danksagung erhalten: 1 Mal

Re: Fehler im Programmablauf

Beitrag von thfrank » 29.06.2021, 12:06

dtp hat geschrieben:
29.06.2021, 11:59
Das Skript müsste allerdings entsprechend ausgelöst werden, wobei ja nicht klar ist, was da eigentlich drin steht.
gibt die Triggervariable aus (wird aber auch nicht gestartet)

Antworten

Zurück zu „HomeMatic allgemein“