Systemvariablen: Werte werden falsch gesetzt

Fehler in Firmware und WebUI & Workarounds

Moderator: Co-Administratoren

vombi
Beiträge: 4
Registriert: 19.10.2014, 18:30

Systemvariablen: Werte werden falsch gesetzt

Beitrag von vombi » 19.10.2014, 19:17

Hallo

Ich habe meine Homematic nun seit etwas mehr als einem halben Jahr im Einsatz und bin alles in allem sehr zufrieden. Vor allem habe ich schon unzählige wertvolle Tipps und Tricks hier aus dem Forum beziehen können. Herzlichen Dank an alle die hier ihre Erfahrungen weitergeben!

Nun bin ich aber auf ein Problem gestossen, das ich bis jetzt nicht lösen konnte.

Zur Erklärung muss ich etwas ausholen: In ein paar Wochen werden bei Terrassentür und -Fensterfront die bestehenden manuellen Lamellenstoren durch elektrische Rollladen ersetzt. Diese möchte ich natürlich in meine Homematic Installation integrieren. Ich habe mir überlegt, bereits jetzt ein WebUI Programm für die Steuerung zu erstellen, damit ich diese noch verfeinern und eventuelle Fehler beseitigen kann, bevor die Rollladen montiert sind und es ernst gilt.

Da ich momentan die Rollladenaktoren ja noch nicht bedienen kann, setze ich einfach anstelle der Aktoren zwei Systemvariablen (Rolladen Tuer und Rolladen Fenster) auf die gewünschten Rollladenstellungen (0%,50%,100%). Zudem lasse ich mir eine Pushnachricht senden, wenn die Systemvariablen bestimmte Werte erreichen, damit ich z.B. beurteilen kann, ob die vorgenommene Aktion zum jeweiligen Zeitpunkt Sinn macht (also zum Beispiel, ob die Rollladen bei der richtigen Dunkelheit runtergefahren würden).

Am ersten Abend, als das Programm aktiviert wurde, waren wir nicht zu Hause und ich habe den ganzen Abend auf die Pushnachricht gewartet, dass die Systemvariablen nun auf 100% gesetzt wurden. Die Nachricht blieb aber aus. Als wir wieder zu Hause waren, habe ich den Zustand der Systemvariablen kontrolliert und diese waren auf 1% gesetzt. Ich habe dann natürlich gedacht, dass ich irgendwo im Programm fehlerhafte Prozentzahlen gesetzt hatte. Dem war aber nicht so (bei allen Befehlen innerhalb des WebUI Programms wurden nur 0%, 50% oder 100% benutzt). Dies hat mich doch einigermassen beunruhigt. Ich änderte dann das Programm so ab, dass die Systemvariable anstelle von 100% auf 99% gesetzt werden soll. Das Ergebnis war ein Wert von 0.99%.

Bei einem Kollegen (auch mit CCU2 und der selben Firmwareversion) haben die gleichen WebUI Befehle einwandfrei funktioniert (Ergebnis also 100%/99%).

Ich habe dann versucht, das Problem durch ein Script zu umgehen, was auch funktoniert (die Variablen werden mit dem Script richtig gesetzt und ich erhalte auch die gewünschten Pushnachrichten).

Trotzdem lässt mir das keine Ruhe, da Systemvariablen setzen doch eine Grundfunktion ist, die man sehr oft benutzt (der Fehler ist sonst aber noch nie aufgetreten). Ich habe mal folgenden Testaufbau gemacht, um das Problem zu veranschaulichen:

2 Testsystemvariablen erstellt:
Systemvariable 1.JPG
Systemvariable 2.JPG
Ein WebUI Programm erstellt, das die beiden Systemvariablen einmal durch ein WebUI Statement und einmal per Script auf 100% setzen soll (bereits die Aktivität wird falsch angezeigt):
Rolladentestprogramm.JPG
Programm laufen lassen, so sieht das Ergebnis aus:
Rolladentestergebnis.JPG
Hat jemand eine Idee, was hier schief läuft? Restart von CCU2 bringt nichts, das Problem bleibt bestehen.

Hier noch ein paar Daten:
CCU2 mit Firmware 2.9.12, CUxD Version 0.66

Sorry für den langen Post und danke für Eure Hilfe.

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Systemvariablen: Werte werden falsch gesetzt

Beitrag von buempi » 19.10.2014, 19:42

Hallo und herzlich willkommen im Forum

Du solltest vielleicht auch noch dein Script einstellen (möglichst zwischen Code-Tags). Übrigens: Bei Rollläden ist 100% = 1.00 = ganz oben; 10% ist 0.10 = fast ganz unten!

Viele Grüsse
Bümpi

tibid
Beiträge: 144
Registriert: 14.03.2014, 19:56
Danksagung erhalten: 1 Mal

Re: Systemvariablen: Werte werden falsch gesetzt

Beitrag von tibid » 19.10.2014, 19:56

Kann Bümpi nur recht geben: Rolladen Oben = 1.00, Rolladen Mitte = 0.5, Rolladen unten = 0.0
Die Variable, welche Du angelegt hast, ist vom Typ Zahl, und hat nichts mit Prozent zu tun. Auch wenn Du als Masseinheit "%" angibst, ändert dies nichts an der Variable, dass diese vom Typ Zahl ist und nicht als Prozent dargestellt wird.
Gruss,
Tibid

Gluehwurm
Beiträge: 12434
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: Systemvariablen: Werte werden falsch gesetzt

Beitrag von Gluehwurm » 19.10.2014, 20:54


vombi
Beiträge: 4
Registriert: 19.10.2014, 18:30

Re: Systemvariablen: Werte werden falsch gesetzt

Beitrag von vombi » 20.10.2014, 18:11

Hallo

Danke für Eure Antworten. Die Rollladenaktoren werde ich dann natürlich mit den korrekten Werten ansteuern, wenn der Rollladen installiert ist.

Dass die Masseinheit % rein optisch ist und keinerlei Einfluss auf die Zahlen hat, ist mir soweit auch klar.

Aber: Wenn ich die Systemvariable im WebUI auf "100" setze, dann erwarte ich als Ergebnis auch "100" und nicht "1", wie es bei mir der Fall ist.
Das ist eigentlich mein Kernproblem. Dies hat mit den Rollladen an sich gar nichts zu tun, sondern ist mir nur beim testen der Rollladensteuerung aufgefallen.

Ich versuche es nochmals darzustellen:
- Wenn ich per WebUI Command die Systemvariable auf "100" setze, ist als Ergebnis der Wert in der Systemvariablen "1"
- Wenn ich dasselbe per Script mache, dann ist der Wert korrekt, nämlich "100"

Ich habe nochmals versucht, das Problem in einem Screenshot zu veranschaulichen:
Testergebnis.jpg
Das Script ist simpel und besteht nur aus einer Zeile (und dieses funktioniert ja auch, damit wird die Script Testvariable wirklich auf "100" gesetzt):

Code: Alles auswählen

dom.GetObject("Rolladen-Test Script").State(100);
Hat jemand eine Idee?

Gruss
Markus

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Systemvariablen: Werte werden falsch gesetzt

Beitrag von DrTob » 20.10.2014, 18:17

Ich würde da mal auf einen Bug tippen. Vielleicht irgendeine Logik, die versucht das % zu interpretieren :/ (wer weiß :))

(damit man %-Variablen die intern als 0-1 gehandhabt haben schön einfach auf xx% setzen kann...)


Auch wenns nur eine Anzeige sein sollte: Besteht das Problem auch mit einer Systemvariable deren Einheit nicht "%" ist?
Zuletzt geändert von DrTob am 20.10.2014, 18:19, insgesamt 1-mal geändert.

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Systemvariablen: Werte werden falsch gesetzt

Beitrag von buempi » 20.10.2014, 18:18

Hallo Markus

Ich habe das bei mir eben mal ausprobiert, und es hat richtig funktioniert. Lösche doch das Programm und die Systemvariable mal und lege dann beides neu an...

Übrigens: Bei der Variable habe ich einen Bereich von 0 bis 100 definiert; auch mit % als Einheit.

Viele Grüsse
Bümpi

Benutzeravatar
PaulchenPanther
Beiträge: 157
Registriert: 13.06.2015, 12:26
Danksagung erhalten: 1 Mal

Re: Systemvariablen: Werte werden falsch gesetzt

Beitrag von PaulchenPanther » 11.10.2015, 16:52

Hallo,
ich muss diesen Thread nochmal aufwärmen.
buempi hat geschrieben:Ich habe das bei mir eben mal ausprobiert, und es hat richtig funktioniert. Lösche doch das Programm und die Systemvariable mal und lege dann beides neu an...Übrigens: Bei der Variable habe ich einen Bereich von 0 bis 100 definiert; auch mit % als Einheit.
leider kann ich dies nicht bestätigen :(
  • neue SysVar angelegt. - Typ="Zahl" | Einheit="%" | Wertebereich min="0" / max="100"
  • neues Programm angelegt

    Code: Alles auswählen

    WENN
       (leer)
    Dann...
       neueSysVar sofort [58.00] %
    
  • Programm gespeichert und zur Sicherheit nochmal ausgeführt
  • in neue SysVar geschaut und es steht statt "58.00 %" wie im Programm vorgegeben lediglich "0.58 %" drin :twisted:
DrTob hat geschrieben:Ich würde da mal auf einen Bug tippen. Vielleicht irgendeine Logik, die versucht das % zu interpretieren :/ (wer weiß )
... und dem kann ich nur beipflichten !
Aus meiner Sicht ist das allerdings ein recht großer Bug seitens eQ-3 !
- hier entstehen nämlich einige Inkonsistenzen

Wenn ich es recht sehe, dann wird eine SysVAr vom Typ "Zahl" intern als Datentyp "FLOAT" angelegt.
Andere HM-Devices verwenden ja auch Prozent-Werte als Datenpunkt, sind da aber IMO vollkommen inkonsistent!
  • bei einem HM-WDS10-TH-O (Funk-Temperatur-/ Feuchtesensor außen) wird die Feuchte z.B. als Typ "INTEGER" mit Einheit "%" mit einer Ganzzahl z.B. von "40" gespeichert.
    In der WebUI wird dann "40 %" ausgegeben.
  • bei einem HM-LC-Dim1L-Pl-3 (Funk-Zwischenstecker-Dimmaktor 1-fach) wird der Dimmwert auch als % angegeben.
    Hier ist der DP LEVEL aber vom Typ "FLOAT" mit einer Range (Wertebereich) von "0.00" bis "1.00" und einer Einheit von "100%"
  • will man ganz einfach den Dimm-Level in Abhängigkeit von der Feuchtigkeit bestimmen, - egal ob sinnvoll oder nicht, dann erleidet man reichlich Schiffbruch :shock:
  • für den Datenpunkt "BRIGHTNESS" eines Bewegungsmelders wird das ganze noch besser, weil dort zwar wieder der Typ "INTEGER" zum Einsatz kommt, der Wertebereich aber bekanntlich von "0" bis "255" geht. - eine direkt und dynamisch geführte Helligkeitssteuerung eines Dimmers ist hier also nur über ein invertierendes CUX-Transform-Device möglich :(
Im Anschluss an mein o.g. Szenario habe ich dann mal in der SysVar die Einheit "%" entfernt und diese abgespeichert.
in meinem noch existierenden Programm steht jetzt

Code: Alles auswählen

Dann...
   neueSysVar sofort [0.58]
Erst mit er Einheit="100%" in der SysVar konnte ich in meinem Fall den richtigen Wert über das Programm in die Variable bringen, was dann aber natürlich an der WebUI eine vollkommen falsche Information zeigt --> "58.00 100%".
- ganz zu schweigen z.B. in irgendwelchen Diagrammen z.B. in CCU-Historian. :!:

Irgendwie ist und bleibt die CCU ein "Bastelsystem" :shock:

PS: wo stellt man eigentlich solch einen Bug und die Aufforderung zum Fixen gegen eQ-3 ein ?
- lesen die hier mit oder muss man da ein separates Ticket bei denen aufmachen und dann ... :cry:
v.G./PP

Gluehwurm
Beiträge: 12434
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: Systemvariablen: Werte werden falsch gesetzt

Beitrag von Gluehwurm » 11.10.2015, 17:29

Die Zahl funktioniert ohne das % einwandfrei. Wenn das % nachträglich als Masseinheit gesetzt wird, ändert sich das Programm automatisch (vorheriger Eintrag 50.00)
Prog_Zahl.JPG
nach dem Entfernen des % wieder die vollautomatische Rück-Anpassung
Prog_Zahl_02.JPG
Es findet also eine "Auswertung" der Einheit statt. Ob das allerdings richtig, so gewollt oder ein Bug ist, keine Ahnung. :wink:

Gruß
Bruno

Benutzeravatar
PaulchenPanther
Beiträge: 157
Registriert: 13.06.2015, 12:26
Danksagung erhalten: 1 Mal

Re: Systemvariablen: Werte werden falsch gesetzt

Beitrag von PaulchenPanther » 11.10.2015, 17:50

Gluehwurm hat geschrieben:Es findet also eine "Auswertung" der Einheit statt. Ob das allerdings richtig, so gewollt oder ein Bug ist, keine Ahnung
es führt jedenfalls definitiv zu "Überraschungen" wenn man z.B. die relative Feuchte (in % und als Wert INTEGER="40") von einem "Feuchtesensor außen" in eine SysVar mit Einheit "%" schreibt, dort aus Wert "40" mal eben Wert "0.40" gemacht wird, und diese SysVar dann wieder ausliest, um sie als Sollwert auf ein anderes Device zu schreiben, welches einen Prozentwert zwischen 0.00 % und 100.00 % erwartet.
- macht hat einen Unterschied ob ich auf 40 oder auf 0,40 stelle :roll:

Einfach nur inkonsistent ...
Das Ding ist schließlich eine Variable und kein Transformer
v.G./PP

Antworten

Zurück zu „HomeMatic - bekannte Bugs“