Änderung SV-Kanalzuordnung zerstört Programme

Fehler in Firmware und WebUI & Workarounds

Moderator: Co-Administratoren

Benutzeravatar
koppenho
Beiträge: 227
Registriert: 27.12.2013, 09:12
Wohnort: Bad Neustadt, Deutschland
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Änderung SV-Kanalzuordnung zerstört Programme

Beitrag von koppenho » 03.10.2018, 18:24

Hallo Leute,

vor einiger Zeit habe ich beobachtet, dass meine WebUI-Programme sich verändert haben. Ich habe lange gebraucht um herauszufinden, was genau schief läuft. Der Fehler existiert vermutlich schon seit mehr als einem Jahr oder viel länger.

Die hier gezeigten Bildschirmausschnitte sind ein einfaches konstruiertes Beispiel um den von mir beobachteten Fehler zu demonstrieren. Mein Ziel war die einfache Nachvollziehbarkeit des Fehlers.
Ausgangssituation
  • Wir befinden uns auf einer nackten CCU2 mit aktueller Firmware 2.35.16. Die Hardware tut (vermutlich) nichts zur Sache, da ich den Fehler auch auf RaspberryMatic gesehen habe. Auf der CCU2 habe ich zuvor einen Werksreset durchgeführt um "fremde" und unerwartete Einflüsse auszuschließen.
  • Die ausgewählte der Logikschicht-Version ist unwichtig. Der Fehler tritt auf mit "Standard", "Legacy" und "Community".
  • Angeschlossen ist ein Funk-Schaltaktor 2-fach (Unterputzmontage).
    Der Aktortyp tut nichts zur Sache - der Fehler lässt sich (vermutlich) mit jedem Aktortyp nachstellen.
    01.Geraete.png
    01.Geraete.png (14.78 KiB) 4847 mal betrachtet
  • Ich legn eine einfache Systemvariable an und ordnet sie einem Aktor zu.
    Der Typ/die Eigenschaften der SV tun nichts zur Sache - der Fehler lässt sich (vermutlich) mit jeder Systemvariablen nachstellen.
    Es ist auch egal, welchem Aktor die SV zugeordnet wird.
    10.SV-Kanalzuordnung.png
    10.SV-Kanalzuordnung.png (14.78 KiB) 4847 mal betrachtet
  • Die Kanalzuordnung kann man in der Gerätedarstellung (Status und Bedienung-->Geräte--><Gerätename>) sofort sehen.
    11.Geraete.png
    11.Geraete.png (16.83 KiB) 4847 mal betrachtet
  • Ich erstellen ein einfaches WebUI-Programm, das etwas mit dieser Systemvariable anstellt. Die Details oder Funktion sind unwichtig.
    13.Programm-neu.png
Änderung der SV Kanalzuordnung
Jetzt wird es interessant...
  • Ich ändere die Kanalzuordnung der Systemvariablen (oder entferne sie falls ich nur einen Aktor habe). Das folgende Bild zeigt die Änderung:
    20.SV-Zuordnung-Aenderung.png
    20.SV-Zuordnung-Aenderung.png (15.31 KiB) 4847 mal betrachtet
  • Überprüft man nun das WebUI-Programm, stellt man fest, dass sich die Logik/Funktion geändert hat. Anstelle des Zugriffs auf den Wert der Systemvariablen werden nun Stati des zuvor verbundenen Aktors verwendet.
    Update 02.06.2019: Erst heute ist mir aufgefallen, dass der nachstehende Screenshot nicht der richtige war, denn er zeigte keinen Fehler! Jetzt ist es der richtige.
    programm-mit-fehler.png
Das ist eindeutig ein Fehler, denn die Logik/Funktion eines WebUI-Programms darf sich nicht ändern durch eine simple Änderung in der Kanalzuordnung einer Systemvariablen. Oder habe ich etwas übersehen?
Zuletzt geändert von koppenho am 02.06.2019, 17:38, insgesamt 2-mal geändert.
--
Andreas
--------------------------------------------
Hauptwohnung: RaspberryMatic mit 320 Kanäle in 110 Geräten und 140 CUxD-Kanäle in 33 CUxD-Geräten
Zweitwohnung: CCU2 mit 18 Kanäle in 8 Geräten und 14 CUxD-Kanäle in 4 CUxD-Geräten
--------------------------------------------

firefox_i
Beiträge: 220
Registriert: 04.10.2018, 19:07
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: Änderung SV-Kanalzuordnung zerstört Programme

Beitrag von firefox_i » 22.10.2018, 09:27

Hallo,
was wäre denn Deine Erwartung?
In den Screenshots der WEBUI Programme ändert sich ja auch nur ein "falsch" in ein "wahr" im DANN Pfad.

Ich dachte, dass eine SV die eine Kanalzuordnung hat, lediglich unter diesem Kanal dargesteltl wird, aber sonst mit dem Kanal erstmal nix zu tun hat.

Und dann würde das was da passiert ja auch korrekt sein oder hab ich Dich da falsch verstanden?



S.
Gruß Sven

Produktivsytem mit CCU3 (Raspberrymatic) , knapp 80 Geräte, Visu per HPCL; Automatisierung einer Praxis bzgl. Überwachung, Heizung usw.
Experimentalsystem mit CCU3 (Raspberrymatic) , ca. 40 Komponenten

Hardwareentwickler und bisschen Ahnung von Programmierung.

NickHM
Beiträge: 3723
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 64 Mal
Danksagung erhalten: 117 Mal

Re: Änderung SV-Kanalzuordnung zerstört Programme

Beitrag von NickHM » 22.10.2018, 09:58

Guten Morgen

also wenn Du erwartest, dass es richtig funktioniert, müsste im zweiten Screenshot sicher schon mal Kanal "2" stehen, dem die SysVar jetzt zugeordnet ist. Das ist ja auch nicht der Fall.

So wie ich das sehe, Verschiebst Du die Bindung der SysVar von einem Kanal zu einem anderen. Damit ist die in dem ersten Programm verknüpfte SysVar für das System ein fach weg.
So wie bei einem gelöschten Gerät, sollte die ganze Zeile weg sein. Oder eben der richtige Bezug zur verschobenen SysVar.

Eine solche Änderung aller WebUi Programme in denen die SysVar benutzt wird , halte ich für rel. komplex.

Aber vielleicht ist es einfach nur ein Darstellungsfehler in der WebUi.

Das mit dem wahr / falsch könnte daraus resultieren, dass bei einem Neueintrag eines Kanals in einProgramm immer ein default Wert eingetragen wird. Aber laut Darstellung wird der Kanal ja gar nicht von 1 -> 2 geändert.

Schreib eine mail an eq-3.

firefox_i
Beiträge: 220
Registriert: 04.10.2018, 19:07
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: Änderung SV-Kanalzuordnung zerstört Programme

Beitrag von firefox_i » 22.10.2018, 10:22

Hallo,
also ich verstehe die Kanalzuordnung so, dass es sich lediglich um eine organisatorische Zuordnung zu einem Kanal handelt.
Letztenendes wird diese SV dann innerhalb des Gerätes zu dem der zugeordnete Kanal gehört angezeigt.
Und meinem Verständnis nach war es dann auch schon.
Die Systemvariable bekommt keine Funktionalität automatisch eingehaucht.....

Die Funktionalität über die diese SV dann geändert wird hat mit dem zugeordneten Kanal erstmal nichts zu tun.
Deshalb bin ich mir auch nahezu sicher, dass ein "umhängen" der Kanalzuordnung an dem WEBUI Programm der SV nichts verändern soll.
Das einzige was ich tatsächlich als "das sollte so nocht sein" ist, dass scheinbar durch das Ändern des zugeordneten Kanals ein "wahr" in ein "falsch" geädnert wird.
Aber das ist echt das einzige was ich an diesem Thema bedenkenswert finde.

S.
Gruß Sven

Produktivsytem mit CCU3 (Raspberrymatic) , knapp 80 Geräte, Visu per HPCL; Automatisierung einer Praxis bzgl. Überwachung, Heizung usw.
Experimentalsystem mit CCU3 (Raspberrymatic) , ca. 40 Komponenten

Hardwareentwickler und bisschen Ahnung von Programmierung.

Benutzeravatar
koppenho
Beiträge: 227
Registriert: 27.12.2013, 09:12
Wohnort: Bad Neustadt, Deutschland
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: Änderung SV-Kanalzuordnung zerstört Programme

Beitrag von koppenho » 02.06.2019, 17:15

koppenho hat geschrieben:
03.10.2018, 18:24
Überprüft man nun das WebUI-Programm, stellt man fest, dass sich die Logik/Funktion geändert hat. Anstelle des Zugriffs auf den Wert der Systemvariablen werden nun Stati des zuvor verbundenen Aktors verwendet.
Erst heute ist mir aufgefallen, dass der finale Screenshot nicht der richtige war, denn er zeigte keinen Fehler!

Blöde Verwechslung!

Kein Wunder, dass meine Fehlerbeschreibung so wenig Beachtung fand bzw. mein Artikel nicht richtig verstanden wurde.
Ich habe den Screenshot im ursprünglichen Artikel korrigiert.
--
Andreas
--------------------------------------------
Hauptwohnung: RaspberryMatic mit 320 Kanäle in 110 Geräten und 140 CUxD-Kanäle in 33 CUxD-Geräten
Zweitwohnung: CCU2 mit 18 Kanäle in 8 Geräten und 14 CUxD-Kanäle in 4 CUxD-Geräten
--------------------------------------------

Benutzeravatar
koppenho
Beiträge: 227
Registriert: 27.12.2013, 09:12
Wohnort: Bad Neustadt, Deutschland
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: Änderung SV-Kanalzuordnung zerstört Programme

Beitrag von koppenho » 02.06.2019, 17:57

Das Thema wird seit heute auch hier diskutiert:
viewtopic.php?f=31&t=50077&p=511859#p511857
--
Andreas
--------------------------------------------
Hauptwohnung: RaspberryMatic mit 320 Kanäle in 110 Geräten und 140 CUxD-Kanäle in 33 CUxD-Geräten
Zweitwohnung: CCU2 mit 18 Kanäle in 8 Geräten und 14 CUxD-Kanäle in 4 CUxD-Geräten
--------------------------------------------

Benutzeravatar
jmaus
Beiträge: 9805
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 457 Mal
Danksagung erhalten: 1848 Mal
Kontaktdaten:

Re: Änderung SV-Kanalzuordnung zerstört Programme

Beitrag von jmaus » 05.06.2019, 11:14

koppenho hat geschrieben:
03.10.2018, 18:24
Das ist eindeutig ein Fehler, denn die Logik/Funktion eines WebUI-Programms darf sich nicht ändern durch eine simple Änderung in der Kanalzuordnung einer Systemvariablen. Oder habe ich etwas übersehen?
Also ich hoffe erst einmal du liest hier noch mit. Ich hab mir das nun selbst einmal angeschaut und kann bestätigen das dies in der Tat ein Fehler bzw. unschöne Sache der WebUI ist. Die Frage ist doch aber wie genau sollte solch eine nachträgliche Kanalzuordnungsänderung dann eine Anpassung des WebUI Programmes in der es Verwendung findet abgeändert werden? Auf was sollte denn das WebUI Programm nach solch einer Anpassung deiner Meinung nach abgeändert werden?

Natürlich könnte man in dem von dir gezeigten Fall einfach dann direkt die Systemvariable abfragen lassen. Aber was sollte beim löschen der Kanalzuordnung passieren? In dem Fall müsste es ja eine Logik geben die alle WebUI Programme durchsucht und schau ob es irgendwo conditions gibt die diese Kanalzuordnung verwendet und was soll dann passieren?!? Es ist nämlich AFAIR nicht ganz so einfach/geradlinig was denn dann passieren soll je nachdem wie die Kanalzuordnung geändert/gelöscht wird...
RaspberryMatic 3.73.9.20240130 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
koppenho
Beiträge: 227
Registriert: 27.12.2013, 09:12
Wohnort: Bad Neustadt, Deutschland
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: Änderung SV-Kanalzuordnung zerstört Programme

Beitrag von koppenho » 05.06.2019, 19:35

jmaus hat geschrieben:
05.06.2019, 11:14
Ich hab mir das nun selbst einmal angeschaut und kann bestätigen das dies in der Tat ein Fehler bzw. unschöne Sache der WebUI ist. Die Frage ist doch aber wie genau sollte solch eine nachträgliche Kanalzuordnungsänderung dann eine Anpassung des WebUI Programmes in der es Verwendung findet abgeändert werden? Auf was sollte denn das WebUI Programm nach solch einer Anpassung deiner Meinung nach abgeändert werden?
Danke fürs Prüfen und Bestätigen.

Erwartet habe ich, dass Systemvariablen und Kanäle als eigenständige Objekte existieren, die sich durch eine SV-Kanal-Bindung miteinander verknüpfen lassen. Ferner habe ich angenommen, dass diese Bindung nur die Darstellung in der WebUI beeinflusst. Addons wie z.B. XMP-API oder Apps wie TinyMatic (früher: HomeDroid) unterstützen diese Annahme, da sie Kanalbindungen ignorieren bzw. (lange ignoriert) haben. Ebenso reicht einem "dom.GetObject()" die Angabe des SV-Namens ohne Angabe eines Kanals, an dem die SV gebunden ist.

Wenn also SV und Kanäle auch in der WebUI unabhängig voneinander existieren würden und nur durch eine Referenz verknüpft sind, sollte sich diese Referenz beliebig von einen Kanal auf einen anderen ändern oder entfernen lassen, ohne irgendwelche Konsistenzprobleme. Eine solche Änderung wäre dann rein kosmetischer Natur in der WebUI-Darstellung.

Aus dieser Diskussion habe ich mit Überraschung erfahren, dass die WebUI Conditions für SVs mit Kanalbindung intern offenbar anders kodiert als für SVs ohne Bindung. Gibt es dafür einen zwingenden Grund? Eine WebUI-Bedingungen braucht nach der Kodierung (WebUI-Darstellung übersetzt in interne Darstellung) von einer Kanalbindung nichts mehr wissen, denn sie muss funktionieren für SVs mit und ohne Kanalbindung gleichermaßen. Das geht mit "dom.GetObject()" ja auch. Da scheint eine Komplexität in das System gekommen zu sein, die nicht notwendig ist. Diese Komplexität behindert nun eine einfache Änderung/Löschung der Kanalbindung.

Anwendungsbeispiel: In meiner Gartenbewässerung verwende ich einen HM-LC-Sw1-Pl-2 zum Schalten des Hauptventils für den Frischwasserzulauf. Den Aktor möchte ich ersetzen durch einen Kanal von HM-LC-Sw4-WM. Das Problem ist, dass dem Kanal sechs SVs zugeordnet hat und diese an 12 Stellen in verschiedenen WebUI-Programmen verwendet werden. Wenn ich einfach nur die Kanalbindung von einem Kanal auf einen anderen Umschalten könnte, würde mir das Arbeit ersparen. So muss ich Verwendung dieser SVs an 12 Stellen ändern. Ich hoffe, ich habe mich nicht verzählt.
<offtopic>Ich bin nur froh, dass ich inzwischen RaspberryMatic einsetze. Eine solche Änderungsaktion mit der alten CCU2 hätte Ewigkeiten gedauert.</offtopic>
jmaus hat geschrieben:
05.06.2019, 11:14
Natürlich könnte man in dem von dir gezeigten Fall einfach dann direkt die Systemvariable abfragen lassen. Aber was sollte beim löschen der Kanalzuordnung passieren?
Wenn die Programme, bzw. die Kodierung der WebUI-Konditionen eine Kanalzuordnung ignorieren, würde nichts passieren. Nach dem Löschen einer Kanalzuordnung sollte es in der WebUI so aussehen, als ob es nie eine Zuordnung gegeben hätte. Eine WebUI-Programm sollte dann eine einfache SV referenzieren.
jmaus hat geschrieben:
05.06.2019, 11:14
In dem Fall müsste es ja eine Logik geben die alle WebUI Programme durchsucht und schau ob es irgendwo conditions gibt die diese Kanalzuordnung verwendet und was soll dann passieren?!? Es ist nämlich AFAIR nicht ganz so einfach/geradlinig was denn dann passieren soll je nachdem wie die Kanalzuordnung geändert/gelöscht wird...
Tja, wenn eine Kanalbindung nur eine alternative Darstellung wäre und die WebUI die Kanalbindung intern ignorieren würde, hätten wir das Problem nicht.
Selbst wenn man das nicht korrigieren will, dann sollte zumindest die Änderung/Löschung einer Kanalzuordnung unterbunden werden, falls eine Änderung/Löschung zu Inkonsistenzen führen würde.

Das Thema hat, wie es mir scheint, einen Design-Fehler der WebUI zutage gefördert.
--
Andreas
--------------------------------------------
Hauptwohnung: RaspberryMatic mit 320 Kanäle in 110 Geräten und 140 CUxD-Kanäle in 33 CUxD-Geräten
Zweitwohnung: CCU2 mit 18 Kanäle in 8 Geräten und 14 CUxD-Kanäle in 4 CUxD-Geräten
--------------------------------------------

Benutzeravatar
koppenho
Beiträge: 227
Registriert: 27.12.2013, 09:12
Wohnort: Bad Neustadt, Deutschland
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: Änderung SV-Kanalzuordnung zerstört Programme

Beitrag von koppenho » 05.06.2019, 21:24

jmaus hat geschrieben:
05.06.2019, 11:14
koppenho hat geschrieben:
03.10.2018, 18:24
Das ist eindeutig ein Fehler, denn die Logik/Funktion eines WebUI-Programms darf sich nicht ändern durch eine simple Änderung in der Kanalzuordnung einer Systemvariablen.
Ich hab mir das nun selbst einmal angeschaut und kann bestätigen das dies in der Tat ein Fehler bzw. unschöne Sache der WebUI ist. Die Frage ist doch aber wie genau sollte solch eine nachträgliche Kanalzuordnungsänderung dann eine Anpassung des WebUI Programmes in der es Verwendung findet abgeändert werden? Auf was sollte denn das WebUI Programm nach solch einer Anpassung deiner Meinung nach abgeändert werden?
Über die Frage habe ich nochmal nachgedacht und eine einfache Antwort gefunden, basierend auf meiner Aussage:
Die Logik/Funktion eines WebUI-Programms darf sich nicht ändern durch eine simple Änderung der Kanalzuordnung einer Systemvariablen.
Ein WebUI-Programm, in dem eine SV verwendet wird, arbeitet mit Werten einer SV. Auf diesen Wert wird zugegriffen entweder direkt über den SV-Namen/-Id oder indirekt über ein Gerät und dessen SV-Kanalbindung, also letztendlich auch über den SV-Namen/-Id.
Programmtechnisch kann man das gleich behandeln.

Mit anderen Worten: wenn die Kanalbindung geändert/gelöscht/eingerichtet wird, dann solle man das zwar in der WebUI-Darstellung sehen, aber keinesfalls sollte sich die Programmkodierung ändern.
Warum auch?
Bei der Programmausführung geht es nur um den Wert der SV. Und dieser Wert steht noch immer an derselben Stelle in der Datenbank.
--
Andreas
--------------------------------------------
Hauptwohnung: RaspberryMatic mit 320 Kanäle in 110 Geräten und 140 CUxD-Kanäle in 33 CUxD-Geräten
Zweitwohnung: CCU2 mit 18 Kanäle in 8 Geräten und 14 CUxD-Kanäle in 4 CUxD-Geräten
--------------------------------------------

Hypnos
Beiträge: 460
Registriert: 06.01.2018, 12:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 57 Mal
Danksagung erhalten: 39 Mal

Re: Änderung SV-Kanalzuordnung zerstört Programme

Beitrag von Hypnos » 06.06.2019, 08:48

koppenho hat geschrieben:
05.06.2019, 19:35
jmaus hat geschrieben:
05.06.2019, 11:14
Natürlich könnte man in dem von dir gezeigten Fall einfach dann direkt die Systemvariable abfragen lassen. Aber was sollte beim löschen der Kanalzuordnung passieren?
Wenn die Programme, bzw. die Kodierung der WebUI-Konditionen eine Kanalzuordnung ignorieren, würde nichts passieren. Nach dem Löschen einer Kanalzuordnung sollte es in der WebUI so aussehen, als ob es nie eine Zuordnung gegeben hätte. Eine WebUI-Programm sollte dann eine einfache SV referenzieren.
Das sit aber auch gefährlich. Wenn ich eine Systemvariable lösche und deren Bedingung und Logik damit automatisch aus allen Programmen entfernt wird, ändert sich ja damit die Logik der Programme. Da sollte zumindest eine auffällige Warnung angezeigt werden.

Die Sichere Variante wäre es einfach das Löschen zu verbieten, solange eine Systemvariable noch in einem Programm enthalten ist.

Antworten

Zurück zu „HomeMatic - bekannte Bugs“