Variablen von IOBroker in CCU 3 schreiben

Moderator: Co-Administratoren

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

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von dtp » 07.01.2019, 12:31

Kelthizar hat geschrieben:
07.01.2019, 11:47
Als Anzeige in Mediola.
Es gibt da ja seit einiger Zeit das sehr günstige Mediola ioBroker-Plugin für einen Euro. Das könnte was für dich sein. Da würde ich dann wirklich nicht den Umweg über die CCU3 gehen.

Vielleicht schaust du dich ergänzend noch mal im ioBroker-Forum um.

Gruß,

Thorsten
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, 21:33

Wie kann ich denn das selbe als Java Skript umsetzen und in eine neue Variable schreiben?

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

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von Kelthizar » 07.01.2019, 22:45

Black hat geschrieben:
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;

Kannst du das nochmal genauer erklären? Ich möchte ja die Variable 'mqtt.0.servicelocation.XYZ.realtime' im IOBroker (Javascript) auslesen. Dann nur die Zahl hinter ""totalImportEnergy":" ausschneiden und in eine neue Variable Namens "'mqtt.0.servicelocation.XYZ.Smappee_Gesamtverbrauch' schreiben. Wie kriege ich das am Einfachsten hin?

Danke für eure Hilfe.

Benutzeravatar
Black
Beiträge: 5480
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: Variablen von IOBroker in CCU 3 schreiben

Beitrag von Black » 07.01.2019, 22:52

Code: Alles auswählen

var s=getState ("mqtt.0.servicelocation.XYZ.realtime");
log (s);
var obj= JSON.parse (s);

var energie= obj.totalImportEnergy;
log (energie);
setState ("mqtt.0.servicelocation.XYZ.realtime",energie);

Theoretisch sollte das der ansatz sein...
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

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

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von Kelthizar » 07.01.2019, 23:12

Black hat geschrieben:
07.01.2019, 22:52

Code: Alles auswählen

var s=getState ("mqtt.0.servicelocation.XYZ.realtime");
log (s);
var obj= JSON.parse (s);

var energie= obj.totalImportEnergy;
log (energie);
setState ("mqtt.0.servicelocation.XYZ.realtime",energie);

Theoretisch sollte das der ansatz sein...

Leider ohne Erfolg :

7.1.2019, 23:11:14.453 [info ]: javascript.0 Stop script script.js.Smappee
7.1.2019, 23:11:14.463 [info ]: javascript.0 Start javascript script.js.Smappee
7.1.2019, 23:11:14.463 [info ]: javascript.0 script.js.Smappee: [object Object]
7.1.2019, 23:11:14.463 [error]: javascript.0 script.js.Smappee: undefined:1
7.1.2019, 23:11:14.463 [error]: javascript.0 at script.js.Smappee:3:15

Benutzeravatar
Black
Beiträge: 5480
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: Variablen von IOBroker in CCU 3 schreiben

Beitrag von Black » 07.01.2019, 23:16

das er in s nicht den string anzeigt heisst, die ID der variablen ist schon mal falsch.

da ich dein system nicht kenne: da musst du schon die richtige ID einsetzen vonder Variablen,die da geparsed werden soll.... :wink:

wenn er s schon net ausliest, wird das darauffolgende json parse auch ins leere rennen (was es ja auch tut)
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

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

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von Kelthizar » 07.01.2019, 23:35

Variable ist definitiv korrekt, bin eben noch mal mit Copy/Paste alles durchgegangen... :cry:

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von paul53 » 07.01.2019, 23:42

Code: Alles auswählen

var s = getState("mqtt.0.servicelocation.XYZ.realtime").val;
var obj = JSON.parse(s);
var energie = parseFloat(obj.totalImportEnergy); // parseFloat nicht erforderlich, wenn der Wert als Zahl (nicht String) vorliegt
setState('hm-rega.0.1234', energie); // ID für SV vom Typ "Zahl" anpassen !
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Benutzeravatar
Black
Beiträge: 5480
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: Variablen von IOBroker in CCU 3 schreiben

Beitrag von Black » 08.01.2019, 06:23

Jo... .val es war spät
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

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

Re: Variablen von IOBroker in CCU 3 schreiben

Beitrag von Kelthizar » 08.01.2019, 11:33

paul53 hat geschrieben:
07.01.2019, 23:42

Code: Alles auswählen

var s = getState("mqtt.0.servicelocation.XYZ.realtime").val;
var obj = JSON.parse(s);
var energie = parseFloat(obj.totalImportEnergy); // parseFloat nicht erforderlich, wenn der Wert als Zahl (nicht String) vorliegt
setState('hm-rega.0.1234', energie); // ID für SV vom Typ "Zahl" anpassen !
Super das war es, jetzt klappt es. Allerdings führt er den Befehl nur 1 mal aus (wenn ich ein Zeitintervall von 5 Sekunden einstelle kommt im Log ein Fehler: javascript.0 script.js compile failed: at script.js.Smappee:1").
Oben bei dem aktualisieren Symbol steht dann Instanz ist deaktiviert. Woran kann das liegen?

Antworten

Zurück zu „Sonstige Steuerungen und Visualisierungen“