Bösartige kleine Ungenauigkeiten der WebUI.... oder versteckte Fehlerquellen bei Programmen

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
Benutzeravatar
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Bösartige kleine Ungenauigkeiten der WebUI.... oder versteckte Fehlerquellen bei Programmen

Beitrag von Black » 03.02.2019, 20:08

Wenn man ein bisschen tiefer in den Objekten der Programme gräbt, stösst man immer wieder an manche ich nenns mal merkwürde Inkonsistenzen, die vllt auch die Ursache des einen oder anderen nicht so funktionierenden Programmes sind.

Kleines Beispiel:
ein WebUI Programm hat die Abfrage:
Wenn Systemzustand IntegerVariable von 0 bis kleiner 10 bei Änderung.
so findet sich, wenn man sich mal die Singlecondition anschaut dort ein
ConditionType = 6 (von .. bis kleine ...)
und die RightVals jeweils ivt_Integer 0 und ivt_Integer 10

soweit schön
lege ich eine zweite Bedingung an
Wenn Systemzustand BooleanVariable bei False bei Änderung.
so findet sich, wenn man sich mal die Singlecondition anschaut dort ein
ConditionType = 1 (bei)
und die RightVals jeweils ivt_binary false und ivt_binary false

ändere ich nun die obere Bedinung, die vorher Integer war auf eine Boolean,
so passen sich zwar die beinen Rightvals an, ber nicht der Conditiontype.
der bleibt weiterhin beoi 6 (von... bis kleiner )...

Richtig Spassig wird es nun
ich lege eine Bedingung an: systemvariable typ float
schreibe wieder eine Bedingung:
Wenn Systemzustand zzz von 1 bis 20 bei Änderung.
soweit alles gut
nun änder ich den Typ der systemvariablen von float in boolean
gehe in der WebUi wieder ins program:
in der WebUI wird auch schön angezeigt:
Wenn Systemvariable zzz bei False bei Änderung.
ich denke, alles nett , speicher dieses und gucke mir nun mal die SingleCondition an:
der Typ ist immer noch 6, wie oben auch... aber

die rightval stehen immer noch auf ivt_float 1 und ivt_float 20
die Bedingung kann

in den destination beim wenn steht:
screibe ins Syslog: Wenn Teil ausgeführt

in den destination bei sonst steht:
screibe ins Syslog: SonstTeil ausgeführt

Nun trigger ich diese Boolean Variable zzz .. true, false, true, false...

es kam noch einmal der Eintrag
Feb 3 19:59:44 homematic-ccu2 daemon.info cuxd[543]: CUX2801001:1 Sonst teil
danach triggerte das programm nicht mehr, auch keine fehler im syslog

unter status und bedieung kann ich aber sehen, dass das programm geriggert wird der Zeitstempel ändert sich.
aber es tritt oben kein wechsel von false nach true mehr auf bzw von true nach false...

Black

Das harmlos und richtig aussehende Programm:
Unbenannt-1.jpg

Die nicht richtig aussehende SingleCondition:
SDERR.jpg
Zuletzt geändert von Black am 04.02.2019, 09:00, insgesamt 1-mal geändert.
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

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

Re: Kleine Ungenauigkeiten der WebUI.... oder versteckte Fehlerquellen bei Programmen

Beitrag von Xel66 » 03.02.2019, 20:21

Black hat geschrieben:
03.02.2019, 20:08
...ändere ich nun die obere Bedinung, die vorher Integer war auf eine Boolean,
...nun änder ich den Typ der systemvariablen von float in boolean
Ich nehme für mich daraus mit, dass Systemvariablen nie nicht im Typ geändert werden sollten, sondern besser bei Umwidmungen gelöscht und neu angelegt werden sollten, um dieses Problem zu umgehen. Habe ich in der Vergangenheit sowieso so gehandhabt und vielleicht aus diesem Grund vermeintlich noch nie Probleme damit gehabt. Aber danke für die Analyse.

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

Benutzeravatar
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Kleine Ungenauigkeiten der WebUI.... oder versteckte Fehlerquellen bei Programmen

Beitrag von Black » 03.02.2019, 20:47

Aber ein erster Test brachte da auch etwas gutes:

ein kleines programm, welches die Eigenschaften der SingleConditon in ihren Methoden für eine Bool Variable wieder richtig beschrieb.
SDERR4.jpg
sah so aus anschliessend, wie eine SC für eine Bool Variable aussieht, wenn man sie flammneu anlegt.
SDERR5.jpg
führte dann wirklich wieder dazu, dass wnn ich die Systemvariable zzz wieder abwechselnd mit true, false, true, false gesteuert habe,
dass das programm wieder arbeitet.

Code: Alles auswählen

Feb  3 20:28:11 homematic-ccu2 daemon.info cuxd[543]: CUX2801001:1 Wenn teil
Feb  3 20:28:26 homematic-ccu2 daemon.info cuxd[543]: CUX2801001:1 Sonst teil
Es scheint also so zu sein, dass man durch einen Plausibilitätstest und gegenfalls ändern der Eigenschaften der SC bzw evl auch einer SD, die Programme wieder ordnungsgemäß zum funktionieren zu bekommen sind.

Mal schauen, aber sieht interessant aus.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

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

Re: Kleine Ungenauigkeiten der WebUI.... oder versteckte Fehlerquellen bei Programmen

Beitrag von alchy » 03.02.2019, 21:20

Prima. Dann bist du auch nicht mehr weit davon entfernt raus zu finden, warum z.B. ein Stringvergleich an erster/einziger Stelle eines Programms nicht funktioniert.
Tipp: Schau dir mal den ConditionTyp und dessen Änderung beim Abspeichern eines Programms an. :wink:

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.

Benutzeravatar
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Kleine Ungenauigkeiten der WebUI.... oder versteckte Fehlerquellen bei Programmen

Beitrag von Black » 03.02.2019, 21:50

interessant..

da hättest aber auch gleich sagen können, das wenn man ein programm in der web ui anlegt mit string vergleich bei auf änderung ist Standartmäßig die ConditionType erstmal 1 (bei) , das beim Abspeichern des Programmes blöderweise diese auf 6 (bis kleiner) geändert wird und damit die condition im Fall einer Triggerung wohl eher nicht wahr werden wird.

ein gleicher versuch mit aufgezwungenem ConditionType =5 (Gleich) führt aber zu reproduzierbaren Triggerverhalten.

Code: Alles auswählen

Feb  3 21:47:10 homematic-ccu2 daemon.info cuxd[543]: CUX2801001:1 Sonst teil STRING
Feb  3 21:48:00 homematic-ccu2 daemon.info cuxd[543]: CUX2801001:1 Wenn teil STRING
Ist also ein Fall für Jens.....

Wobei ich noch nirgends die Causal Folge gelesen habe, nur immer: das geht nicht

Black

Immerhin scheint ein Programm, dessen Conditiontype via des SDV auf 5 geändert wurde, diesen wert zu behalten, auch wenn es mehrfach geöffnet und wieder gespeichert wurde.. Zumindest ein Lösungsansatz (wobei die 1 (bei) es wahrscheinlich auch tun würde, müsst ich mal testen)
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

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

Re: Bösartige kleine Ungenauigkeiten der WebUI.... oder versteckte Fehlerquellen bei Programmen

Beitrag von alchy » 04.02.2019, 15:37

Was mit dem ConditionTypen beim Speichern von Programmen passiert, habe ich schon irgendwo erwähnt und auch ein Ticket bei EQ-3 erstellt.
Bin ja schon vor langer Zeit darüber gestolpert und bei der Arbeit an equalthan wieder.

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.

Antworten

Zurück zu „HomeMatic allgemein“