Die Logik von WebUI - Programmen

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Roli01
Beiträge: 102
Registriert: 06.04.2008, 23:56
Wohnort: nähe Krems/Donau
Danksagung erhalten: 3 Mal

Re: Die Logik von WebUI - Programmen

Beitrag von Roli01 » 09.09.2019, 18:54

Hi @ all!

Bin nun auch wieder schlauer geworden nachdem ich mich nun schon Wochenlang mit einem Programm herumquäle und schon lange die Zeitsteuerung in Verdacht hatte bin ich nun dem Problem auf die schliche gekommen.
Und zwar habe ich für meine Wärmepumpe schon länger ein Programm um sie zu deaktivieren! (Spart die Umwälzpumpenenergie)
Das hat auch immer gut funktioniert.
Ich wollte dann nur zu den Unterschiedlichen Jahreszeiten unterschiedliche Aktionen haben.
Dazu habe ich mir eine Systemvariable vom Typ Logik angelegt mit Sommer und Winter. Und diese wurde mit einen Zeitprogramm im April und im September geändert.
Und hier hat sich mein grober Fehler eingeschlichen.
Das Programm hat denke ich jetzt immer im ersten absatz gewartet bis "Winter" eintrifft was aber erst am 20 Septermber erfüllt ist und hat alles nachfolgende nicht ausgeführt !!

Jetzt habe ich die Systemvariable vom Typ Logik auf Werteliste geändert und siehe da es funktioniert!
Vielleicht kann ich mit meiner Erkenntiss hier einigen helfen.

Die einzige frage die sich mir nur stellt.

It's a Bug or it's a feature????

Also: Systemvariable Typ Logik muss erfüllt sein damit ein Programm weiterarbeitet?
Systemvariable Typ Werteliste muss nicht erfüllt sein damit ein Programm weiterarbeitet?

Oder sehe ich das falsch?
Dateianhänge
Wärmepumpe Stop Prg.png
492 Kanäle in 92 Geräten und 37 CUxD-Kanäle in 4 CUxD-Geräten:

Ampheus
Beiträge: 2
Registriert: 21.02.2020, 20:59

Re: Die Logik von WebUI - Programmen

Beitrag von Ampheus » 21.02.2020, 22:11

Hallo zusammen,

ich habe gerade ein recht merkwüdiges Verhalten der "nur prüfen" Funktion festgestellt, die das Programm trotzdem zu triggern scheint. Aber vielleicht habe ich einen Denkfehler. Es geht um die Steuerung einer Schaltsteckdose, welche eine Zisternenpumpe einschaltet bei Wasseranforderung, aber nur wenn genügend Wasser in der Zisterne vorhanden ist.

Die Logik ist wie folgt:
gehtnicht.jpg
Sobald die Variable Gardena einschaltet (getriggert vom manuellen Einschalten einer anderen Schaltsteckdose wo die Waschmaschine und Trockner dran hängen):
gardene.jpg
bekomme ich regelmäßig alle 3 Minuten eine Pushnachricht. D.h. der erste Zweig wird offensichtlich ausgeführt. Da die Variable Waschen konstant bleibt (per logging geprüft) und auch die anderen 3 Variablen in dem Logikblock darunter ihren Zustand nicht ändern (per Logging geprüft und auch nicht erwartet), bleibt nur die Alarmvariable als Auslöser. Diese ändert sich nicht und steht auch auf "nur prüfen" , sie loggt aber regelmäßig alle 3 Minuten den selben Zustand:
Alarmvariable_log.jpg
Nun muss man wissen, dass ich mir den Wasserstand von einem Füllstandsmesser der Zisterne, welcher einen 0-5V Analogausgang hat, mit folgendem "Trick" über einen Temperatursensor hole

https://www.stall.biz/project/einfache- ... logeingang

Dieser sendet ca. alle 3 Minuten einen neuen Wert, welcher dann mit 2 Macros (genau wie im Link) in einen Wasserstand umgerechnet werden. Bei jedem Empfang wird die Alarm-Variable dann genäß des des Wasserstandes (mit Hysterese) aktualisiert:
zisterne.jpg
Da die analogen Werte etwas schwanken, wird faktisch mit jedem Messwert ein neuer Wasserstand berechnet und damit auch jedes mal neu die Alarm-Variable auf "genug Wasser" gesetzt. Das erklärt das Logging. Die Alarmvariable ändert sich inhaltlich nicht, aber offenbar triggert das irgendwie den ersten Zweig im obigen Programm, jedesmal wenn die Variable neu geschrieben wird, obwohl sie auf "nur prüfen" steht. Das zeigt zumindest das Log:
log_waschen.jpg
Sehr komisch. Auf jeden Fall, wenn ich die Abfrage der Alarmvariable auf "bei Änderung" stelle
geht.jpg
dann hören die Benachrichtigungen sofort auf und es bleibt nur das Loggen der Alarmvariable. Irgendwie komisch.
Ich dachte, dass "nur prüfen" nie aktiv das Programm triggern kann, egal was mit der "nur prüfen" Variable passiert. Hier tut es das aber offensichtlich. Hat das schon mal jemand in ähnlicher Weise festgestellt?Oder habe ich da irgend etwas überlesen oder falsch verstanden?
Alle beteiligten Variablen sind übrigens vom Type Logikwert.

Man könnte jetzt vermutlich die Alarmvariable in Abhängigkeit ihres eigenen Zustandes nur dann schreiben wenn sich wirklich etwas ändert, um das Phänomen zu unterdrücken, aber komisch ist es schon und ein etwas komische gefühl stellt sich ein, was denn sonst noch so an anderer "nur prüfen" Logik ungewollt reagieren könnte......

Gruß
Thomas.

Benutzeravatar
Sammy
Beiträge: 9172
Registriert: 09.09.2008, 20:47
Hat sich bedankt: 15 Mal
Danksagung erhalten: 174 Mal

Re: Die Logik von WebUI - Programmen

Beitrag von Sammy » 22.02.2020, 09:52

Hallo Thomas,
Mir sind mehrere Sachen aufgefallen.
Im oberen Programm hast Du im oberen Bereich zwar ein nur prüfen, im unteren Abschnitt aber ein auf Änderung der Alarmvariablen. Daduch kann also sehr wohl der obere Teil bei Änderung der Variablen ausgeführt werden. Ist Dir die Abarbeitungslogik nicht klar?
Eine Änderung selbst kann ich als Ursache allerdings nicht wirklich erkennen.
Ist die Alarmvariable denn wirklich vom Typ Logik oder ist eine der Variablen evtl. vom Typ Alarm?
Hast Du nach Erstellung der Programme evtl. noch irgendwas an den Variablendefinitionen geändert?
Danb solltest Du die Programme löschen und nochmal neu anlegen. Dies könnte auch die Lösung für ansonsten unerklärliches Verhalten sein. Schon gemacht?
Im Niedigwasser-Programm triggerst Du unten übrigens korrekt auf Änderung, oben jedoch auf Aktualisierung. Das sollte ebenfalls auf Änderung. Oder aus welchem Grund verwendest Du dort Aktualisierung?

Gruß Sammy
Links: CCU-Logik, Tipps für Anfänger, WebUI-Doku, Expertenparameter, virtuelle Aktorkanäle
Inventur vom 22.01.14: 516 Kanäle in 165 Geräten, 132 Programme, 270 Direkte Verknüpfungen
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

Ampheus
Beiträge: 2
Registriert: 21.02.2020, 20:59

Re: Die Logik von WebUI - Programmen

Beitrag von Ampheus » 22.02.2020, 21:25

Hallo Sammy,

Danke für die schnelle Antwort. Da hatte ich Tomaten auf den Augen. Vollkommen richtig. Eine Variable muss im ganzen Programm konsequent auf nur prüfen stehen, ansonsten würde die Änderung das Programm vom oben triggern, egal wo die Variable auf Änderung geprüft wird. Ich habe jetzt das ganze System mal neu gebootet. Seit dem scheint der Effekt verschwunden zu sein und die Variable loggt auch nicht mehr alle 3 Minuten. Also mal wieder das gute alte "jeder Boot tut gut" :D . Im zweiten Programm hast Du natürlich auch Recht, muss auf Änderung stehen. Da hatte ich erst eine andere Logik und dann beim Umbau vergessen es zu ändern.

Viele Grüße
Thomas.

Pihero
Beiträge: 238
Registriert: 02.08.2019, 21:24
Wohnort: Pforzheim
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Die Logik von WebUI - Programmen

Beitrag von Pihero » 25.05.2020, 21:04

Ich habe da auch noch ein etwas allgemeineres Thema...

Hardware: CCU3, hauptsächlich homemtic ip wired Komponenten + einige Funk

Ich habe nun ein gutes halbes Jahr an meiner CCU gearbeitet und natürlich immer neue Funktionen etc. integriert.
Nachdem mir die Übersicht abhanden gekommen ist habe ich mir die Mühe gemacht und meine Programme umbenannt und dabei folgende Ordnung verwendet:
z.B.
000 - Systemprogramme

010 - Anwesenheit
020 - Servicemeldungen (push)
030 - Historian (offline)

200 - Beschattung

211 - Beschattungsprogram Nr.1 Schlafzimmer
212 - Beschattungsprogram Nr.2 Schlafzimmer
221 - Beschattungsprogramm Nr.1 Bad
231 - Beschattungsprogramm Nr.1 Kinderzimmer
241 - Beschattungsprogramm Nr.1 Wohnzimmer
251 - Beschattungsprogramm Nr.1 Küche

konkretes Benennungsbeispiel: 221_1R2 - Bad Lüften

Soo...seit diesem Aufwand habe ich ... nennen wir es "Auffälligkeiten"...

Programme die funktioniert haben funktionieren teilweise nicht mehr.
Falls mir das aufgefallen ist habe ich zum Beispiel eine Systemvariable aus dem Programm gelöscht und anschließend wieder eingefügt oder das Programm einmal per Hand ausgeführt.

Zusätzlich habe ich eine Frage zum Tipp ein Programm zu löschen und dann nochmal neu zu erstellen:
Das Programm bekommt nach der Neuerstellung von mir den identischen Namen - ist das ein Problem?
Ich habe zum Beispiel festgestellt das dieses Programm dann nicht beim ersten Speichern ausgeführt wird, zumindest laut "Status und Bedienung".

Da mein Vertrauen in das System rückläufig ist würde mir eine schnelle Antwort sehr helfen :) ich hoffe ich habe alles ausreichend erklärt...

Danke vorab und Gruß, Philipp

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: Die Logik von WebUI - Programmen

Beitrag von alchy » 25.05.2020, 21:22

Da war mal was mit Zahlen am Anfang von Objektnamen. Das Stand sogar mal offiziell in irgendeiner Anleitung. :?
Ob das etwa immer noch gilt, kann ich aber nicht sagen.

Massenhaftes Arbeiten an den Strukturen sollte immer mal wieder auch manifestiert werden.
Soll heißen: dabei zwischendurch mal von der Klickibunti abmelden um die Regadom zu speichern, kann nicht schaden.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Pihero
Beiträge: 238
Registriert: 02.08.2019, 21:24
Wohnort: Pforzheim
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Die Logik von WebUI - Programmen

Beitrag von Pihero » 05.06.2020, 10:04

Hallo,

Ich habe beim EQ3 Support nachgefragt...
„ Zahlen führen in Programmnamen zu keinen uns bekannten Problemen. Wichtig hierbei ist nur, dass Sie keine Programme als Vorlage verwenden. Hierbei kann es zu unerwünschten Verhalten der Programme kommen.“

Das mit den Vorlagen habe ich dann nochmal nachgefragt ob damit speichern als neues Programm gemeint ist...
„ Die Funktion "Einstellung als neues Programm speiechern" kann zu Fehlern in der ID Vergabe führen. Daher benutzen Sie dies bitte nicht.“

Das war mir nicht bewusst! Und ich finde diese Funktion eigentlich ziemlich hilfreich

Gruß, Philipp

Benutzeravatar
blackhole
Beiträge: 3718
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 586 Mal

Re: Die Logik von WebUI - Programmen

Beitrag von blackhole » 05.06.2020, 10:39

Pihero hat geschrieben:
05.06.2020, 10:04
Das war mir nicht bewusst! Und ich finde diese Funktion eigentlich ziemlich hilfreich
Meine Vermutung ist, dass ein sauberer Umgang mit der bekanntlich "empfindlichen" WebUI das A und O bei solchen Geschichten ist.
Supporter wissen natürlich, dass dies von Usern nur selten beachtet wird und raten deshalb pauschal davon ab.
Auch hier im Forum wird seit Jahren ständig gepredigt diese Funktion besser nicht zu nutzen, vermutlich aus den gleichen Gründen.

Ich selbst nutze diese Funktion seit vielen Jahren oft, gerne und immer wieder, ohne dass ich je Probleme festgestellt hätte.

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Die Logik von WebUI - Programmen

Beitrag von jp112sdl » 05.06.2020, 11:20

Pihero hat geschrieben:
05.06.2020, 10:04
„ Die Funktion "Einstellung als neues Programm speiechern" kann zu Fehlern in der ID Vergabe führen. Daher benutzen Sie dies bitte nicht.“
Ich denke mal, eQ-3 meint solche Konstellationen?
Bildschirmfoto 2020-06-05 um 11.18.47.png

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Matsch
Beiträge: 5359
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 113 Mal
Danksagung erhalten: 722 Mal

Re: Die Logik von WebUI - Programmen

Beitrag von Matsch » 05.06.2020, 11:47

blackhole hat geschrieben:
05.06.2020, 10:39
Meine Vermutung ist, dass ein sauberer Umgang mit der bekanntlich "empfindlichen" WebUI das A und O bei solchen Geschichten ist.
Der Begriff bereitet mir im Zusammenhang mit der CCU Bauchschmerzen.
Damit ist eher nicht das Einhalten von allgemeingültigen Programmierregeln gemeint (daran hält sich die CCU ja ohnehin nicht), sondern doch eher, dass man sich so verhalten soll, dass man all die Störanfälligkeiten und Unzulänglichkeiten der Firmware umschifft.
Dazu muß man aber schon mal weit eingedrungen sein und alle bösen Klippen auch kennen.

Natürlich ist es paradox, wenn es nach wie vor die Kopierfunktion gibt (die wichtig ist!) und der Hersteller selbst von der Nutzung wegen Fehleranfälligkeit abrät :shock: Was ist mit Bug-Fixing?

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“