Skript setzt keine Systemvariable

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
papapalangi
Beiträge: 40
Registriert: 05.06.2017, 11:17
Hat sich bedankt: 2 Mal

Skript setzt keine Systemvariable

Beitrag von papapalangi » 05.06.2017, 11:38

Hallo,
ich habe folgendes Problem: ich habe ein Skript erstellt, das den Füllstand meiner Zisterne in Liter umrechnet. Dieser berechnete Wert soll dann in eine Systemvariable geschrieben werden.
Jetzt sehe ich, dass das Programm regelmäßig aufgerufen wird, die Systemvariable wird aber nicht neu beschrieben? Sie sollte doch den selben Zeitstempel wie der Programmaufruf haben?
Das Programm ist im Anhang
hier das Skript selbst:

Code: Alles auswählen

var fs=dom.GetObject("Zisterne_volumen");
var curlevel = dom.GetObject("BidCos-RF.NEQ1012554:1.FILLING_LEVEL").Value();
real hight = 2.30*curlevel;      !Füllhöhe in cm
var liter = 0.001 * (hight * hight * 1.04719755) * ((3 * 112.7) - hight) ;
! Systemvariable schreiben
fs.Variable(liter);
wenn ich es über "Skript testen" ausprobiere läuft es und die Variable "Zisterne_volumen" wird aktualisiert. Meiner Ansicht nach müsste die Systemvariable und das Programm annähernd denselben Zeitstempel haben.
Läuft auf CCU2, installiertes Addin: HQ WebUI
Grüße
Peter
Dateianhänge
Bildschirmfoto 2017-06-05 um 11.34.39.png
Zeitstempel Systemvariable
Bildschirmfoto 2017-06-05 um 11.34.39.png (17.71 KiB) 2229 mal betrachtet
Bildschirmfoto 2017-06-05 um 11.34.18.png
Zeitstempel Programm
Bildschirmfoto 2017-06-05 um 11.23.43.png
Programm zum auslösen des Skripts

chka
Beiträge: 2483
Registriert: 13.02.2012, 20:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 302 Mal
Danksagung erhalten: 116 Mal

Re: Skript setzt keine Systemvariable

Beitrag von chka » 05.06.2017, 11:51

Müsste es nicht

Code: Alles auswählen

dom.GetObject("Zisterne_volumen").State(liter);
heißen?
RaspberryMatic - CuL 868mHz- CuxDemon - PioTek Tracker - Velux mit KLF200 und Somfy Anbindung- io.Broker auf Proxmox NUC6I3SYH i3-6100U RAM: 40Gig Crucial 8GB DDR4 CT2K8G4SFS824A + 32GB DDR4CT32G4SFD8266

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Skript setzt keine Systemvariable

Beitrag von Familienvater » 05.06.2017, 12:00

Hi,

vor allem müsste das Programm, wenn ich WebUI-Logik richtig verstehe, auf Aktualisierung getriggert werden, so würde es nur einmalig beim Durchgang von 0 nach Größer 0 getriggert, und nicht bei jedem Wert, der größer als 0 ist. Und eigentlich müsste es auch bei 0 getriggert werden, also größer oder gleich 0.

Der Familienvater

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

Re: Skript setzt keine Systemvariable

Beitrag von DrTob » 05.06.2017, 12:17

Familienvater hat geschrieben:Hi,

vor allem müsste das Programm, wenn ich WebUI-Logik richtig verstehe, auf Aktualisierung getriggert werden,
Korrekt!

Benutzeravatar
robbi77
Beiträge: 13858
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 182 Mal
Danksagung erhalten: 739 Mal

Re: Skript setzt keine Systemvariable

Beitrag von robbi77 » 05.06.2017, 16:00

Beim Füllstandssensor werden doch die Liter angezeigt.


Gruß
Roberto
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...

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

Re: Skript setzt keine Systemvariable

Beitrag von alchy » 05.06.2017, 19:02

papapalangi hat geschrieben:.
Meiner Ansicht nach müsste die Systemvariable und das Programm annähernd denselben Zeitstempel haben.
Zum Einen sollte zum Beschreiben der Variable .State() benutzt werden um auch eine Änderung des Zeitstempels zu erreichen.
Mit .Variabel() - so wie du es benutzt - wird zwar der Wert eingetragen, aber der Zeitstempel der letzten Änderung wird nicht aktualisiert.

Zum Anderen, und auch das ist hier schon geschrieben worden, musst du dir die Logik von WebUI - Programmen anschauen und ebenso die die Tipps und Tricks für Anfänger.
Links dazu findest du in meiner Signatur. Wann ein Programm ausgelöst wird ist natürlich essenziell für eine aktuelle Systemvariable. :wink:
Daher auch der Tipp, bei Aktualisierung >=0 auszulösen o.ä. Der Sensor meldet alle paar Minuten seinen Füllstand - dies kannst du damit als Trigger für dein Script nehmen.

Und was den Einwurf von robbi77 betrifft, der Sensor hat nur den Datenpunkt .FILLING_LEVEL in , die Klickibunti errechnet zur Anzeige die Literzahl selbst erstmal per Script soweit ich mich erinnere.

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.

papapalangi
Beiträge: 40
Registriert: 05.06.2017, 11:17
Hat sich bedankt: 2 Mal

Re: Skript setzt keine Systemvariable

Beitrag von papapalangi » 06.06.2017, 09:00

Danke für die Antworten. Mit dom.GetObject("Zisterne_volumen").State(liter); funktioniert es jetzt prima. Das mit "Variable" habe ich aus der Anleitung zu Homematic, war mir nicht klar dass es da einen Unterschied zu State gibt.
Das umrechnen mache ich deshalb, da in der Sensorkonfiguration nur eine lineare Umrechnung zwischen Höhe und Füllstand möglich ist. Ich habe aber einen Kugeltank und da sieht die Formel eben etwas komplexer aus.
Das mit dem Triggern ändere ich auch noch.
Nochmals danke für die Hinweise!
Grüße
Peter
Dateianhänge
Bildschirmfoto 2017-06-06 um 08.58.18.png
Einstellmöglichkeiten Füllstandssensor

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“