Variablen von IOBroker in CCU 3 schreiben

Moderator: Co-Administratoren

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von dtp » 07.01.2019, 11:05

Mal so auf die Schnelle "hingerotzt". Daher kann es sein, dass die Indizes nicht korrekt passen.

Teste mal bitte das folgende Skript:

Code: Alles auswählen

string svSmappee = "Smappee auslesen Test";
string svGas = "Gasverbrauch";

string Smappee = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svSmappee)).Value();
WriteLine(Smappee);
Smappee = Smappee.Substr(Smappee.Find("totalImportEnergy")+19, Smappee.Length()-1);
WriteLine(Smappee);
Smappee = Smappee.Substr(0, Smappee.Find(",")-1);
WriteLine(Smappee);

!(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svGas)).State(Smappee);
Sollte der dritte Wert passen, dann kannst du das Ausrufezeichen vor der letzten Zeile entfernen, um die Systemvariable "Gasverbrauch" entsprechend zu befüllen.

Meiner Meinung nach wäre es aber geschickter, die Systemvariable gleich vom ioBroker aus mit dem korrekten Wert zu befüllen. Dazu bedürfte es dann eines kleinen Javaskripts, das die obige Selektion übernimmt.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Kelthizar
Beiträge: 43
Registriert: 16.12.2018, 10:12

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von Kelthizar » 07.01.2019, 11:22

dtp hat geschrieben:
07.01.2019, 11:05
Mal so auf die Schnelle "hingerotzt". Daher kann es sein, dass die Indizes nicht korrekt passen.

Teste mal bitte das folgende Skript:

Code: Alles auswählen

string svSmappee = "Smappee auslesen Test";
string svGas = "Gasverbrauch";

string Smappee = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svSmappee)).Value();
WriteLine(Smappee);
Smappee = Smappee.Substr(Smappee.Find("totalImportEnergy")+19, Smappee.Length()-1);
WriteLine(Smappee);
Smappee = Smappee.Substr(0, Smappee.Find(",")-1);
WriteLine(Smappee);

!(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svGas)).State(Smappee);
Sollte der dritte Wert passen, dann kannst du das Ausrufezeichen vor der letzten Zeile entfernen, um die Systemvariable "Gasverbrauch" entsprechend zu befüllen.

Meiner Meinung nach wäre es aber geschickter, die Systemvariable gleich vom ioBroker aus mit dem korrekten Wert zu befüllen. Dazu bedürfte es dann eines kleinen Javaskripts, das die obige Selektion übernimmt.
Dank dir schonmal, denke auch das es besser wäre, das im IOBroker zu machen, ich kann aber leider absolut keine Javaskripte programmieren...Kannst du das?

manfredh
Beiträge: 4155
Registriert: 09.09.2012, 10:41
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 78 Mal
Danksagung erhalten: 301 Mal

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von manfredh » 07.01.2019, 11:25

Mit Blockly sollte das auch ohne Programmierkenntnisse und mit ein wenig Einarbeitung locker möglich sein. Ist nicht viel komplizierter, als WebUi-Programme.
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.

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

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von Black » 07.01.2019, 11:32

das sieht doch aus wie ein sauberer JSOn string.

das lässt sich in javascript doch recht simple beherrschen:

Code: Alles auswählen

var s= '{"totalPower":333,"totalReactivePower":647,"totalExportEnergy":0,"totalImportEnergy":83636206,"monitorStatus":0,"utcTimeStamp":1546849844934,"channelPowers":[{"ctInput":0,"power":172,"exportEnergy":0,"importEnergy":42888864,"phaseId":2,"current":15},{"ctInput":1,"power":95,"exportEnergy":0,"importEnergy":16489433,"phaseId":1,"current":7},{"ctInput":2,"power":65,"exportEnergy":0,"importEnergy":24257104,"phaseId":0,"current":9}],"voltages":[{"voltage":235,"phaseId":0}]}';

var obj= JSON.parse (s);

// zugriff kriegste dann über:
var energie= obj.totalImportEnergy;

Da braucht man nix mehr mit stringszerteilen und so.

Quellen:
IObroker Javascript Adapter
https://wiki.selfhtml.org/wiki/JSON/parse

XML oder JSON zerlegen mache ich nie auf einer CCU.

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

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von dtp » 07.01.2019, 11:33

Eigentlich braucht man dafür weder ein Javaskript noch Blockly, denn das kann auch der Parser-Adapter des ioBroker.

Was liefert denn das HM-Skript als Output? Nur mal so aus Neugierde. 8)
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Kelthizar
Beiträge: 43
Registriert: 16.12.2018, 10:12

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von Kelthizar » 07.01.2019, 11:36

dtp hat geschrieben:
07.01.2019, 11:33
Eigentlich braucht man dafür weder ein Javaskript noch Blockly, denn das kann auch der Parser-Adapter des ioBroker.

Was liefert denn das HM-Skript als Output? Nur mal so aus Neugierde. 8)
8363620
Eine Zahl fehlt :lol:

Diese wird aber nicht in die Systemvariable "Gesamtverbrauch" geschrieben, oder?

P.S.: Können wir vielleicht hier weiter machen? Weil eigentlich mein "Problem" noch viel größer ist... :oops:
viewtopic.php?f=43&t=42265&p=482878#p482878

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von dtp » 07.01.2019, 11:40

Nun sollte es passen. Damit wird dann auch die Systemvariable "Gasverbrauch" (wenn die "Gesamtverbrauch" heißt, bitte entsprechend im Skript ändern) befüllt.

Code: Alles auswählen

string svSmappee = "Smappee auslesen Test";
string svGas = "Gasverbrauch";

string Smappee = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svSmappee)).Value();
Smappee = Smappee.Substr(Smappee.Find("totalImportEnergy")+19, Smappee.Length()-1);
Smappee = Smappee.Substr(0, Smappee.Find(","));

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svGas)).State(Smappee);
Brauchst du den Wert als Integer, dann am besten in der letzten Zeile des Skripts "Smappee" durch "Smappee.ToInteger()" ersetzen.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Kelthizar
Beiträge: 43
Registriert: 16.12.2018, 10:12

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von Kelthizar » 07.01.2019, 11:44

dtp hat geschrieben:
07.01.2019, 11:40
Nun sollte es passen. Damit wird dann auch die Systemvariable "Gasverbrauch" (wenn die "Gesamtverbrauch" heißt, bitte entsprechend im Skript ändern) befüllt.

Code: Alles auswählen

string svSmappee = "Smappee auslesen Test";
string svGas = "Gasverbrauch";

string Smappee = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svSmappee)).Value();
Smappee = Smappee.Substr(Smappee.Find("totalImportEnergy")+19, Smappee.Length()-1);
Smappee = Smappee.Substr(0, Smappee.Find(","));

(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svGas)).State(Smappee);
Brauchst du den Wert als Integer, dann am besten in der letzten Zeile des Skripts "Smappee" durch "Smappee.ToInteger()" ersetzen.
Das hat geklappt, danke...
Aber wie gesagt, eigentlich ist mein "Problem" noch größer...:
viewtopic.php?f=43&t=42265&p=482878#p482878

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von dtp » 07.01.2019, 11:45

Ergänzende Frage. Wozu brauchst du die Werte in der CCU3? Nur zum Anzeigen? Dann würde ich das besser alles im ioBroker machen. Das ist die definitiv bessere Plattform dafür.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Kelthizar
Beiträge: 43
Registriert: 16.12.2018, 10:12

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von Kelthizar » 07.01.2019, 11:47

dtp hat geschrieben:
07.01.2019, 11:45
Ergänzende Frage. Wozu brauchst du die Werte in der CCU3? Nur zum Anzeigen? Dann würde ich das besser alles im ioBroker machen. Das ist die definitiv bessere Plattform dafür.
Als Anzeige in Mediola. Bin wie gesagt noch absoluter Neuling im Thema CCU und IOBroker.
Genau das selbe wie hier (nur ohne Gas):

Bild
Bild: Nutzer @prinzeisenherz1

Antworten

Zurück zu „Sonstige Steuerungen und Visualisierungen“