NEWS
Script zum auslesen eines C.M.I von TA UVR1611
-
Hallo Ck83,
ich versuche Deine Frage möglichst genau zu beantworten und hoffe, dass ich nichts vergesse!
Da das Auslesen der C.M.I. bei Dir ja klappt, beschreibe ich hier nur das Senden vom ioBroker an die C.M.I..
1. Meine Modbus-Adapter Version ist ebenfalls 2.0.7

Unbedingt auf die Partner-IP 0.0.0.0 achten! (Ich habe ewig gebraucht, bis ich rausgefunden hatte, dass hier tatsächlich nichts anderes als 0.0.0.0 hingehört. Zumindest in der meiner Adapterversion)
2. Eingangsregister Anlegen. Dabei die Adressen in der ersten Spalte der Reihe nach vergeben!

3. In Objekte sollten jetzt die entsprechenden Input-Register erscheinen:

Die Objekte werden über Node-Red gefüttert. Achtung: Die Objekte kommen vom Node-Red als "Number" NICHT als "String" und das ganze ohne Komma.Hierbei bedeuten die Zahlen auf dem Bild bei meiner Konfiguration gerade folgendes:
1_t-Aussen: 9,00°C
2_HKM2-Pumpe: 1 (Dimensionslos um das ganze später, wie ich am 24.10.2018 beschrieben habe, in einen Booleschen Wert umzuwandeln.)
3_t-Raum-soll: 20,5°C
4. Eingänge an der C.M.I. Achtung: Die IP-Adresse ist die IP vom ioBroker, die Geräte ID ist ebenfalls die gleiche wie in den Verbindugseinstellungen vom ioBroker!
t-Aussen:

Hier lag die Temperatur noch bei 8,9°C :)HKM2-Pumpe:

t-Raum-soll:

Ich hoffe Du kannst damit was anfangen! Schreib doch mal, ob es geklappt hat.
@ Marc_St Cooles Schema der Anlage!! 8-) Leider bin ich noch lange nicht soweit, dass ich mich ans "Ausschmücken" machen kann. :(
Ach ja, da fällt mir gerade wieder meine ursprüngliche Frage ein: Kann jemand Logik-Werte zwischen ioBroker und C.M.I hin und her schieben? Wenn ja, wäre ich an einer ausführlichen Beschreibung immer noch brennend interessiert! :D
Grüße Günni
-
@ Marc_St Cooles Schema der Anlage!! 8-) Leider bin ich noch lange nicht soweit, dass ich mich ans "Ausschmücken" machen kann. :(
Ach ja, da fällt mir gerade wieder meine ursprüngliche Frage ein: Kann jemand Logik-Werte zwischen ioBroker und C.M.I hin und her schieben? Wenn ja, wäre ich an einer ausführlichen Beschreibung immer noch brennend interessiert! :D `
Ja, sonst würde ja mein Schema nicht funktionieren. Wenn Du die Analogwerte auslesen kannst, funktioniert das Hin- und Herschieben von Digitalwerten im Grunde genauso. Anbei zwei Screenshots, wie ich Ausgänge oder Funktionen auslese.
8624_bildschirmfoto_2018-11-01_um_17.47.14.png
8624_bildschirmfoto_2018-11-01_um_17.46.17.png -
Ok,
wie man digitale Ausgänge lesen kann sollte dann also geklärt sein. :D (Habe leider gerade keine digitalen Ausgänge definiert, werde ich bei gelegenhiet aber mal testen.)
Aber wie kann man digitale Werte schreiben? :? Das habe ich immer noch nicht hinbekommen.
Grüße Günni
-
Im Grunde spiegelbildlich :D Ich nutze es aber nicht mehr. Denn ich habe gemerkt, dass es via CMI wesentlich einfacher ist, die UVR1611 zu steuern, indem man einfach per HTTP Werte oder Zustände zurückschreibt:````
http://username:passwort@IP-adresse/menupage.cgi?page=0101581E&changeadr=01802036A0&changeto=1Wichtig ist der ModBus m.E. nur für's Pushen der Werte quasi in Echtzeit __zum__ iobroker; das ist wesentlich besser als eine Abfrage via JSON alle 60s oder so. Der Weg zurück in die UVR ist hingegen eher egal. -
Hi Leute,
Grüßen Guenni,
Hatte die Werte, wie von dir schon Super beschrieben hinterlegt, nur wurden diese nie aktualisiert.
Habe Gestern die aktuellen Updates der CMI und des Modbus Adapters durchgeführt, siehe da jetzt wird alles sauber übertragen.
Auch die digitalen Werte zur CMI werden "sauber" übergeben.
filename="nodered.PNG" index="3">~~
filename="IO-Broker Ausgang.PNG" index="2">~~
filename="Belegung.PNG" index="1">~~
filename="Belegung1.PNG" index="0">~~
Danke für euren Input
gruß ck
-
Moin nochmals alle zusammen,
ich habe bei mir jetzt nochmal die Einstellungen von Ck83 probiert (hatte ich beim experimentieren glaube auch schon) und es funzt nicht.
"… Habe Gestern die aktuellen Updates der CMI und des Modbus Adapters durchgeführt, siehe da jetzt wird alles sauber übertragen.
Auch die digitalen Werte zur CMI werden "sauber" übergeben. ..." `
Jetzt frage ich mich, ob es an den Updates bzw. Versionen liegt. Welche nutzt Du jetzt? (ioBroker, Adapter, TA, usw.)
Da es doch schon etwas kühler draussen wird, möchte ich "unsinnige" Updates und Störungen vermeiden. (Frau und Kind wären sicherlich nicht begeistert…..) :evil:
@ Marc_St : Auch Dir vielen Dank! Allerdings wollte ich gerade das "coding" umgehen, da ich eher der dumme Anwender bin und gerade ioBroker für mich eine tolle Plattform darstellt. :mrgreen:
Grüße Günni
-
Hallo zusammen,
ich kämpfe auch schon tagelang mit der Übergabe von digitalen Werten von ioBroker zum C.M.I (analog funktioniert tadellos).
Ich bekomme jeweils einen Wert ohne Timeout), dieser ist aber unabhängig vom Wert ioBroker immer "AUS".
Hat noch irgendjemand einen Tipp? Aus Verzweiflung denke ich schon darüber nach, wie ich aus Analogwerten Digitale machen kann…)
Grüße,
Thomas
-
Hallo allerseits,
Hallo zusammen,
ich kämpfe auch schon tagelang mit der Übergabe von digitalen Werten von ioBroker zum C.M.I (analog funktioniert tadellos).
Ich bekomme jeweils einen Wert ohne Timeout), dieser ist aber unabhängig vom Wert ioBroker immer "AUS".
Hat noch irgendjemand einen Tipp? Aus Verzweiflung denke ich schon darüber nach, wie ich aus Analogwerten Digitale machen kann…)
Grüße,
Thomas `
Ich kämpfe mit dem selben Problem. Habe die Kommunikation zum CMI mittels Modbus-Tool kontrolliert, dort klappt die Übergabe eines Digitalwertes (sowohl Coils als auch Inputs lesen)
Wenn ich nun die Kommunikation auf iobroker lege und in der CMI einen DI einlesen will, kriege ich bei einem Input AlwaysFalse (Ohne TimeOut) und bei einem Coil einen Zahlenwert?
Gibt es mittlerweile eine Lösung?
16721_unbenannt.png
16721_unbenannt2.png
16721_unbenannt3.png -
Hallo Sineos,
vielen Dank für den Tipp mit dem Tool Ananas.
An ihm konnte ich erkennen, dass es nicht am CMI liegt.
In Ananas wird der Modbus Wert des iobrokers auch nicht aktualisiert.
Dies bezieht sich aber nur auf das Input-Register.
Die Holdings und Coils werden aktualisiert!
Ich kann es mir nicht erklären.
Die Werte in den Objekten des Iobroker werden brav aktualisiert und angezeigt.
Ich weiss nicht weiter. `
Hallo,
Mich scheint das selbe Problem zu treffen. Händisch eingetragene Werte in Objects holding oder Input Register werden sofort in der CMI sichtbar.
Zur Idee, ich will Daten vom Kostal Plenticore via MODBUS auslesen (klappt super) und zur CMI übertragen, ebenfalls via MODBUS.
DIe Übertragung der Daten mache ich mit Blockly, und die Daten werden auch super in der Objects Übersicht upgedated. auch im VIS.
Woran könnte es aber liegen, dass ich diese Daten erste im CMI sehe, wenn ich die Instanz MODBUS neu starte.
Verwende Modbus 2.0.9, die CMI läuft mit 1.33.3
Idee?
-
bin neu hier und beschäftige mich mit dem thema seit 14 tagen erst und bekommen leider keine werte aus der cmi in den iobroker per modbus
habe mich an die anleitung gehalten wie weiter vorn beschrieben, habe auch ananas zwischengeschaltet, an der cmi liegts nicht. verwende cmi 1.33.3 und modbus 2.0.9.
kann mir jemand seine funktionierende konfig mal zukommen lassen ? da sich ja im laufe der zeit dieses forums auch einiges verändert hat.
-
Hallo Sineos,
vielen Dank für den Tipp mit dem Tool Ananas.
An ihm konnte ich erkennen, dass es nicht am CMI liegt.
In Ananas wird der Modbus Wert des iobrokers auch nicht aktualisiert.
Dies bezieht sich aber nur auf das Input-Register.
Die Holdings und Coils werden aktualisiert!
Ich kann es mir nicht erklären.
Die Werte in den Objekten des Iobroker werden brav aktualisiert und angezeigt.
Ich weiss nicht weiter. `
Hallo,
Mich scheint das selbe Problem zu treffen. Händisch eingetragene Werte in Objects holding oder Input Register werden sofort in der CMI sichtbar.
Zur Idee, ich will Daten vom Kostal Plenticore via MODBUS auslesen (klappt super) und zur CMI übertragen, ebenfalls via MODBUS.
DIe Übertragung der Daten mache ich mit Blockly, und die Daten werden auch super in der Objects Übersicht upgedated. auch im VIS.
Woran könnte es aber liegen, dass ich diese Daten erste im CMI sehe, wenn ich die Instanz MODBUS neu starte.
Verwende Modbus 2.0.9, die CMI läuft mit 1.33.3
Idee?
@sambaverde said in Script zum auslesen eines C.M.I von TA UVR1611:
Woran könnte es aber liegen, dass ich diese Daten erste im CMI sehe, wenn ich die Instanz MODBUS neu starte.
Verwende Modbus 2.0.9, die CMI läuft mit 1.33.3
Idee?Mit dem gerade aktuellen ioBroker (Modbus 2.09 / js-controller 1.5.7 / Admin 3.6.0) bekomme ich auch keine Register mehr normal ausgelesen. Wird nach dem Neustart des Modbus-Adapters einmal übertragen und dann nie wieder. Es geht aber mit ein bisschen Pfuscherei:
- Meine Werte kommen aus Node Red
- Setzte ich in der ioBroker out Node im Type auf Value werden keine Werte über den Modbus übertragen. In den ioBroker Objekten werden die Werte als Bestätigt = true angezeigt
- Setzte ich in der ioBroker out Node im Type auf Command werden Werte über den Modbus übertragen. In den ioBroker Objekten werden die Werte als Bestätigt = false angezeigt
- Ich glaube es hängt weder an der CMI noch an den letzten Modbus Versionen. Ein Modbus Downgrade auf < 2.x hat nichts gebracht
- Meine Vermutung ist, dass es am js-controller und / oder Admin hängt
-
ioBroker geht von folgendem Konzept aus:
- Ein Befehl oder Wert wird mit "ack (bestätigt) = false" in Richtung eines Gerätes gesendet, beispielsweise "Licht an"
- Das Gerät verarbeitet den Befehl / Wert und bestätigt diesen, beispielsweise, "Ok, Licht ist an"
- ioBroker setzt diesen Befehl / Wert auf bestätigt, "ack = true"
- "ack = true" bedeutet damit auch, dass alles getan ist und keine weiteren Aktionen folgen sollen
Der Node-Red Adapter realisiert dieses Konzept in der ioBroker out Node über die Type Einstellung:
- Value bedeutet "ack = true", d.h. es wird nur ein Status gesetzt, aber keine weiteren Aktionen ==> Der Modbus Adapter überträgt den Wert nicht
- Command bedeutet "ack = false", d.h. es wird erwartet, dass der Befehl / Wert weiter verarbeitet (und ggf. rückgemeldet) wird==> Der Modbus Adapter überträgt den Wert
Für die Übertragung von Messwerten o.ä. über Modbus finde ich persönlich den Ansatz etwas schräg, da der Modbus ja nicht zurückmeldet "oh cool ich hab einen neuen Wert", in Summe macht das aber schon Sinn.
Siehe auch: https://github.com/ioBroker/ioBroker/wiki/Adapter-Development-Documentation#commands-and-statuses
-
Hallo,
Ich habe eine UVR 1611 und will es mit meinem iobroker die Daten auslesen, Da ich keine CMI habe sondern nur einen bootloader(bl-net) weiß ich nicht wie ich die daten auslesen kann.Für Hilfe und iden wäre ich sehr dankbar.
Hallo,
der Thread ist zwar schon was älter, aber vielleicht hilft es ja noch einem.
Ich hatte auch das Problem, dass die Werte an das CMI nur übertragen wurden, wenn ich die modbus-Instanz neu gestartet habe.
Dann habe ich rausgefunden, das der Fehler nur auftritt, wenn man die Variable mit "aktualisiere" beschreibt. Wenn man "steuere" nimmt werden die Werte sofort übertragen.So geht es nicht:

So geht es:

-
Ich kämpfe mit der Verbindung zum CMI ...
Habs genau nach @Sineos gemacht ... bekomm aber keine Verbindung hin. Kann wer was mit den folgenden Log anfangen? bin leider zu wenig Profi das zu verstehen. Einmal mit IP 0.0.0.0 und einmal mit der IP des CMI ...

-
Ich kämpfe mit der Verbindung zum CMI ...
Habs genau nach @Sineos gemacht ... bekomm aber keine Verbindung hin. Kann wer was mit den folgenden Log anfangen? bin leider zu wenig Profi das zu verstehen. Einmal mit IP 0.0.0.0 und einmal mit der IP des CMI ...

-
Ich kämpfe mit der Verbindung zum CMI ...
Habs genau nach @Sineos gemacht ... bekomm aber keine Verbindung hin. Kann wer was mit den folgenden Log anfangen? bin leider zu wenig Profi das zu verstehen. Einmal mit IP 0.0.0.0 und einmal mit der IP des CMI ...

-
Ich kämpfe mit der Verbindung zum CMI ...
Habs genau nach @Sineos gemacht ... bekomm aber keine Verbindung hin. Kann wer was mit den folgenden Log anfangen? bin leider zu wenig Profi das zu verstehen. Einmal mit IP 0.0.0.0 und einmal mit der IP des CMI ...

@peterk34
Hallo peterk34Ich habe genau das gleiche Problem. Auf meinem CMI sehe ich zwischendurch, dass iob eine Verbindung aufbaut und diese auf dem TCP Socket 13 eingetragen wird. Aber eine wirkliche Verbindung habe ich bis jetzt nicht bekommen.
Aus meiner Sicht muss die IP vom CMI sicher eingetragen sein, ansonsten weiss ja iob nicht wohin er die Anfrage machen soll.
Ich frage mich ob jemand der es versteht, da nicht einfach einen Adpater zusammen stellen könnte, ich würde da auch etwas bezahlen dafür. Weil alle meine bisherigen Versuche haben nichts gebracht ausser Frust und viel Zeitverbrauch.
Gruss Andi
UVR16x2 V149
CMI 138.1Edit PS: vielleicht müssen wir auch eine Lösung über den direkten CAN to USB gehen?
-
Hallo zusammen,
da mir das Forum schon so viel geholfen hat, möchte ich mich bedanken und auch ein Script beisteuern.
Villeicht kann es ja jemand mit einer UVR Steuerung von TA (Technische Alternative) gebrauchen.
Das Script ruft per JSON API das CMI ab und legt entsprechend die Datenpunkte an.
Im nächsten Durchlauf werden dann die Datenpunkte mit den Werten gefüllt.
Für meine Anwendung speziell wird noch die verfügbare Wasserspeicher Menge berechnet.
Diesen wird dann in noch zu befüllende Kg für den Holzvergaser umgerechnet und per MQTT
an das Display(ESP Arduino OLED) meines HVS25 gesendet.
Viel Spaß damit.
Edit da hat der Fehlerteufel zugeschlagen, deshalb jetzt Version 0.2 ;)
! ```
`/*******************************************************************************
** Script zum auslesen von 2 UVR1611 über das CMI Interface mit JSON V3 API **
** Die Abfragen erfolgen zeitgesteuert versetzt, das gleichzeitiges Abfragen **
** von mehreren Knoten des CMI nicht möglich ist. Die Datenpunkte werden bei **
** Sciptstart angeleget und dann im weiteren Verlauf mit Werten beschieben. **
** zusätzlich erfolgt noch eine Berechnung der Speicherkapazität der Puffer **
** mit einer Angabe der noch zu heizenden maximalen Holzmenge für den HVS25 **
** Version 0.2 **
** Sven **
********************************************************************************/! var request = require("request");
//username & password for CMI
username = "admin",
password = "admin",
auth = "Basic " + new Buffer(username + ":" + password).toString("base64");
! //URL to CMI Interface, only change IP
var url1 = 'http://192.168.10.201/INCLUDE/api.cgi?jsonnode=1&jsonparam=I,O,Na,Nd';
var url2 = 'http://192.168.10.201/INCLUDE/api.cgi?jsonnode=2&jsonparam=I,O,Na,Nd';
! // JSON with Unit from CMI_JSON_API_V3 https://www.ta.co.at/downloads/datei/17511763-cmi-json-api/
var unitJson = {"0":"","1":"°C","2":"W/m²","3":"l/h","4":"Sek","5":"Min","6":"l/Imp","7":"K","8":"%","10":"kW","11":"kWh","12":"MWh",
"13":"V","14":"mA","15":"Std","16":"Tage","17":"Imp","18":"KΩ","19":"l","20":"km/h","21":"Hz","22":"l/min","23":"bar",
"24":"","25":"km","26":"m","27":"mm","28":"m³","35":"l/d","36":"m/s","37":"m³/min","38":"m³/h","39":"m³/d","40":"mm/min",
"41":"mm/h","42":"mm/d","43":"Aus/Ein","44":"Nein/Ja","46":"°C","50":"€","51":"$","53":"","54":"°","56":"°","57":"Sek",
"58":"","59":"%","60":"Uhr","63":"A","65":"mbar","66":"Pa","67":"ppm"};
! // Hilfsvariablen
var stateanlegen = true;
var state1anlegen = false;
var state2anlegen = false;
var llog = true; // loging ein/aus (true/false)
! // zeitlich die Abfrage wiederhohlen
//jede x minute
schedule("0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * *", function () {
readurl1();
gewicht();
});
//jede y minute
schedule("1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59 * * * *", function () {
readurl2();});
! function readurl1() {
readJson(url1, function(err,json) {
if(!err) {
if (json['Status_code'] ===0){
// console.log('ReadStatus_Knoten 1 '+json['Status']);
setDataObjectsKnoten1(json);} } else { log("Fehler beim Auslesen des Knoten 1 JSON. Keine Daten erhalten.","warn"); log("Errorcode "+json['Status_code'],"warn"); } });}
! function readurl2() {
readJson(url2, function(err,json) {
if(!err) {
if (json['Status_code'] ===0){
// console.log('ReadStatus_Knoten 2 '+json['Status']);
setDataObjectsKnoten2(json);
}
} else {
log("Fehler beim Auslesen des Konten 2 JSON. Keine Daten erhalten.","warn");
log("Errorcode "+json['Status_code'],"warn");
}
});
}
! function gewicht() {
if ((state1anlegen ===true) && (state2anlegen === true)){
stateanlegen = false;
}
if (stateanlegen === false){
//getState("ID auswählen").val;
//Maximales Gewicht in Kg für das Brennholz. Speicherkapazität berechnen. 3x800L Puffer Q=mcdT 8004.182xK
var tank_1=((8004.182)(90-((getState("javascript.0.UVR1611_CMI_Knoten_1.Input_Number12").val/Input_Number12/+getState("javascript.0.UVR1611_CMI_Knoten_1.Input_Number13").val/Input_Number13/+getState("javascript.0.UVR1611_CMI_Knoten_2.Input_Number09").val/Input_Number09/+getState("javascript.0.UVR1611_CMI_Knoten_2.Input_Number10"/Input_Number10/).val)/4))/3600);
var tank_2=((8004.182)(90-((getState("javascript.0.UVR1611_CMI_Knoten_2.Input_Number11").val/Input_Number11/+getState("javascript.0.UVR1611_CMI_Knoten_2.Input_Number12").val/Input_Number12/+getState("javascript.0.UVR1611_CMI_Knoten_2.Input_Number13").val/Input_Number13/+getState("javascript.0.UVR1611_CMI_Knoten_1.Network_Analog_Number01"/Network_Analog_Number01/).val)/4))/3600);
var tank_3=((8004.182)(90-((getState("javascript.0.UVR1611_CMI_Knoten_2.Input_Number14").val/Input_Number14/+getState("javascript.0.UVR1611_CMI_Knoten_2.Input_Number16").val/Input_Number16/+getState("javascript.0.UVR1611_CMI_Knoten_1.Input_Number15").val/Input_Number15/)/3))/3600);
var tank=(((tank_1+tank_2+tank_3)/5)*1.15);
// Daten per MQTT zum HVS25 Display schicken
setState("mqtt.0.HVS25E.HVS25E_Holz"/HVS25E_Holz/,tank.toFixed(2),true);
setState("mqtt.0.HVS25E.HVS25E_Time"/HVS25E/HVS25E_Time/, formatDate(new Date(), "hh:mm"), true);
}
}
! function readJson(url, callback) {
request({
url : url,
headers : {
"Authorization" : auth
}
},
function (error, response, body) {if (body) { result = body.replace(/ /g, '_'); //alle Leerzeichen durch Unterstrich ersetzten var jdata = JSON.parse(result); //Json Array erzeugen callback(null, jdata); } else { log(error, "warn"); callback(error, null); } });}
! function setDataObjectsKnoten1(jsondata){
// console.log(jsondata['Data']['Inputs']['0']['Value']['Value']);
// console.log(jsondata['Data']['Inputs']['0']['Value']['Unit']);if (stateanlegen === true){ // User Variablen anlegen Achtung keine Punkte im Namen verwenden. createState('javascript.0.UVR1611_CMI_Knoten_1.Header.Version', { name: 'Version', type: 'number', unit: '', write: false, read: true }); createState('javascript.0.UVR1611_CMI_Knoten_1.Header.Device', { name: 'Device', type: 'string', unit: '', write: false, read: true }); createState('javascript.0.UVR1611_CMI_Knoten_1.Header.Timestamp', { name: 'Timestamp', type: 'number', unit: '', write: false, read: true }); var i=0; for (i=0; i<=15;i++){ var inputsUnit = unitJson[jsondata['Data']['Inputs'][i]['Value']['Unit']]; var networkAnalogUnit = unitJson[jsondata['Data']['Network_Analog'][i]['Value']['Unit']]; var networkDigitalUnit = unitJson[jsondata['Data']['Network_Digital'][i]['Value']['Unit']]; if (i<9){ createState('javascript.0.UVR1611_CMI_Knoten_1.Input_Number0'+jsondata['Data']['Inputs'][i]['Number'],'', { name: 'Input_Number0'+jsondata['Data']['Inputs'][i]['Number']+'_'+jsondata['Data']['Inputs'][i]['AD'], type: 'number', unit: ''+inputsUnit, write: false, read: true }); createState('javascript.0.UVR1611_CMI_Knoten_1.Network_Analog_Number0'+jsondata['Data']['Network_Analog'][i]['Number'],'', { name: 'Network_Analog_Number0'+jsondata['Data']['Network_Analog'][i]['Number']+'_'+jsondata['Data']['Network_Analog'][i]['AD'], type: 'number', unit: ''+networkAnalogUnit, write: false, read: true }); createState('javascript.0.UVR1611_CMI_Knoten_1.Network_Digital_Number0'+jsondata['Data']['Network_Digital'][i]['Number'],'', { name: 'Network_Digital_Number0'+jsondata['Data']['Network_Digital'][i]['Number']+'_'+jsondata['Data']['Network_Digital'][i]['AD'], type: 'number', unit: ''+networkDigitalUnit, write: false, read: true }); } else{ createState('javascript.0.UVR1611_CMI_Knoten_1.Input_Number'+jsondata['Data']['Inputs'][i]['Number'],'', { name: 'Input_Number'+jsondata['Data']['Inputs'][i]['Number']+'_'+jsondata['Data']['Inputs'][i]['AD'], type: 'number', unit: ''+inputsUnit, write: false, read: true }); createState('javascript.0.UVR1611_CMI_Knoten_1.Network_Analog_Number'+jsondata['Data']['Network_Analog'][i]['Number'],'', { name: 'Network_Analog_Number0'+jsondata['Data']['Network_Analog'][i]['Number']+'_'+jsondata['Data']['Network_Analog'][i]['AD'], type: 'number', unit: ''+networkAnalogUnit, write: false, read: true }); createState('javascript.0.UVR1611_CMI_Knoten_1.Network_Digital_Number'+jsondata['Data']['Network_Digital'][i]['Number'],'', { name: 'Network_Digital_Number0'+jsondata['Data']['Network_Digital'][i]['Number']+'_'+jsondata['Data']['Network_Digital'][i]['AD'], type: 'number', unit: ''+networkDigitalUnit, write: false, read: true }); } } i=0; for (i=0; i<=12;i++){ var outputsUnit = unitJson[jsondata['Data']['Outputs'][i]['Value']['Unit']]; if (i<9){ createState('javascript.0.UVR1611_CMI_Knoten_1.Output_Number0'+jsondata['Data']['Outputs'][i]['Number'],'', { name: 'Output_Number'+jsondata['Data']['Outputs'][i]['Number']+'_'+jsondata['Data']['Outputs'][i]['AD'], type: 'number', unit: ''+outputsUnit, write: false, read: true }); if (jsondata['Data']['Outputs'][i]['AD']==='A'){ createState('javascript.0.UVR1611_CMI_Knoten_1.Output_Number_State0'+jsondata['Data']['Outputs'][i]['Number'],'', { name: 'Output_Number_State'+jsondata['Data']['Outputs'][i]['Number']+'_'+jsondata['Data']['Outputs'][i]['AD'], type: 'number', unit: ''+outputsUnit, write: false, read: true }); } } else{ // set +jsondata['Data']['Outputs'][i]['Value']['Value'], createState('javascript.0.UVR1611_CMI_Knoten_1.Output_Number'+jsondata['Data']['Outputs'][i]['Number'],'', { name: 'Output_Number'+jsondata['Data']['Outputs'][i]['Number']+'_'+jsondata['Data']['Outputs'][i]['AD'], type: 'number', unit: ''+outputsUnit, write: false, read: true }); if (jsondata['Data']['Outputs'][i]['AD']==='A'){ // set +jsondata['Data']['Outputs'][i]['Value']['Value'], createState('javascript.0.UVR1611_CMI_Knoten_1.Output_Number_State'+jsondata['Data']['Outputs'][i]['Number'],'', { name: 'Output_Number_State'+jsondata['Data']['Outputs'][i]['Number']+'_'+jsondata['Data']['Outputs'][i]['AD'], type: 'number', unit: ''+outputsUnit, write: false, read: true }); } } } console.log("Variablen Knoten 1 angelegt"); state1anlegen = true; } else{ //Variablen setstate setState('javascript.0.UVR1611_CMI_Knoten_1.Header.Version',jsondata['Header']['Version']); setState('javascript.0.UVR1611_CMI_Knoten_1.Header.Device',jsondata['Header']['Device']); setState('javascript.0.UVR1611_CMI_Knoten_1.Header.Timestamp',jsondata['Header']['Timestamp']); i=0; for (i=0; i<=15;i++){ if (i<9){ //set jsondata['Data']['Inputs'][i]['Value'],['Value'] setState('javascript.0.UVR1611_CMI_Knoten_1.Input_Number0'+jsondata['Data']['Inputs'][i]['Number'],jsondata['Data']['Inputs'][i]['Value']['Value']); setState('javascript.0.UVR1611_CMI_Knoten_1.Network_Analog_Number0'+jsondata['Data']['Network_Analog'][i]['Number'],jsondata['Data']['Network_Analog'][i]['Value']['Value']); setState('javascript.0.UVR1611_CMI_Knoten_1.Network_Digital_Number0'+jsondata['Data']['Network_Digital'][i]['Number'],jsondata['Data']['Network_Digital'][i]['Value']['Value']); } else{ setState('javascript.0.UVR1611_CMI_Knoten_1.Input_Number'+jsondata['Data']['Inputs'][i]['Number'],jsondata['Data']['Inputs'][i]['Value']['Value']); setState('javascript.0.UVR1611_CMI_Knoten_1.Network_Analog_Number'+jsondata['Data']['Network_Analog'][i]['Number'],jsondata['Data']['Network_Analog'][i]['Value']['Value']); setState('javascript.0.UVR1611_CMI_Knoten_1.Network_Digital_Number'+jsondata['Data']['Network_Digital'][i]['Number'],jsondata['Data']['Network_Digital'][i]['Value']['Value']); } } i=0; for (i=0; i<=12;i++){ if (i<9){ setState('javascript.0.UVR1611_CMI_Knoten_1.Output_Number0'+jsondata['Data']['Outputs'][i]['Number'],jsondata['Data']['Outputs'][i]['Value']['Value']); if (jsondata['Data']['Outputs'][i]['AD']==='A'){ setState('javascript.0.UVR1611_CMI_Knoten_1.Output_Number_State0'+jsondata['Data']['Outputs'][i]['Number'],jsondata['Data']['Outputs'][i]['Value']['State']); } } else{ setState('javascript.0.UVR1611_CMI_Knoten_1.Output_Number'+jsondata['Data']['Outputs'][i]['Number'],jsondata['Data']['Outputs'][i]['Value']['Value']); if (jsondata['Data']['Outputs'][i]['AD']==='A'){ setState('javascript.0.UVR1611_CMI_Knoten_1.Output_Number_State'+jsondata['Data']['Outputs'][i]['Number'],jsondata['Data']['Outputs'][i]['Value']['State']); } //setState('javascript.0.PoolController.ADC'+[i-1], parseFloat(Number(wert).toFixed(2))); } } }}
! function setDataObjectsKnoten2(jsondata){
if (stateanlegen === true){
// User Variablen anlegen Achtung keine Punkte im Namen verwenden.
createState('javascript.0.UVR1611_CMI_Knoten_2.Header.Version', {
name: 'Version',
type: 'number',
unit: '',
write: false,
read: true
});
createState('javascript.0.UVR1611_CMI_Knoten_2.Header.Device', {
name: 'Device',
type: 'string',
unit: '',
write: false,
read: true
});
createState('javascript.0.UVR1611_CMI_Knoten_2.Header.Timestamp', {
name: 'Timestamp',
type: 'number',
unit: '',
write: false,
read: true
});var i=0; for (i=0; i<=15;i++){ var inputsUnit = unitJson[jsondata['Data']['Inputs'][i]['Value']['Unit']]; var networkAnalogUnit = unitJson[jsondata['Data']['Network_Analog'][i]['Value']['Unit']]; var networkDigitalUnit = unitJson[jsondata['Data']['Network_Digital'][i]['Value']['Unit']]; if (i<9){ //set jsondata['Data']['Inputs'][i]['Value'],['Value'] createState('javascript.0.UVR1611_CMI_Knoten_2.Input_Number0'+jsondata['Data']['Inputs'][i]['Number'],'', { name: 'Input_Number0'+jsondata['Data']['Inputs'][i]['Number']+'_'+jsondata['Data']['Inputs'][i]['AD'], type: 'number', unit: ''+inputsUnit, write: false, read: true }); // set jsondata['Data']['Network_Analog'][i]['Value']['Value'] createState('javascript.0.UVR1611_CMI_Knoten_2.Network_Analog_Number0'+jsondata['Data']['Network_Analog'][i]['Number'],'', { name: 'Network_Analog_Number0'+jsondata['Data']['Network_Analog'][i]['Number']+'_'+jsondata['Data']['Network_Analog'][i]['AD'], type: 'number', unit: ''+networkAnalogUnit, write: false, read: true }); //set +jsondata['Data']['Network_Digital'][i]['Value']['Value'] createState('javascript.0.UVR1611_CMI_Knoten_2.Network_Digital_Number0'+jsondata['Data']['Network_Digital'][i]['Number'],'', { name: 'Network_Digital_Number0'+jsondata['Data']['Network_Digital'][i]['Number']+'_'+jsondata['Data']['Network_Digital'][i]['AD'], type: 'number', unit: ''+networkDigitalUnit, write: false, read: true }); } else{ //set jsondata['Data']['Inputs'][i]['Value'],['Value'] createState('javascript.0.UVR1611_CMI_Knoten_2.Input_Number'+jsondata['Data']['Inputs'][i]['Number'],'', { name: 'Input_Number'+jsondata['Data']['Inputs'][i]['Number']+'_'+jsondata['Data']['Inputs'][i]['AD'], type: 'number', unit: ''+inputsUnit, write: false, read: true }); // set jsondata['Data']['Network_Analog'][i]['Value']['Value'] createState('javascript.0.UVR1611_CMI_Knoten_2.Network_Analog_Number'+jsondata['Data']['Network_Analog'][i]['Number'],'', { name: 'Network_Analog_Number0'+jsondata['Data']['Network_Analog'][i]['Number']+'_'+jsondata['Data']['Network_Analog'][i]['AD'], type: 'number', unit: ''+networkAnalogUnit, write: false, read: true }); //set +jsondata['Data']['Network_Digital'][i]['Value']['Value'] createState('javascript.0.UVR1611_CMI_Knoten_2.Network_Digital_Number'+jsondata['Data']['Network_Digital'][i]['Number'],'', { name: 'Network_Digital_Number0'+jsondata['Data']['Network_Digital'][i]['Number']+'_'+jsondata['Data']['Network_Digital'][i]['AD'], type: 'number', unit: ''+networkDigitalUnit, write: false, read: true }); } } i=0; for (i=0; i<=12;i++){ var outputsUnit = unitJson[jsondata['Data']['Outputs'][i]['Value']['Unit']]; if (i<9){ createState('javascript.0.UVR1611_CMI_Knoten_2.Output_Number0'+jsondata['Data']['Outputs'][i]['Number'],'', { name: 'Output_Number'+jsondata['Data']['Outputs'][i]['Number']+'_'+jsondata['Data']['Outputs'][i]['AD'], type: 'number', unit: ''+outputsUnit, write: false, read: true }); if (jsondata['Data']['Outputs'][i]['AD']==='A'){ createState('javascript.0.UVR1611_CMI_Knoten_2.Output_Number_State0'+jsondata['Data']['Outputs'][i]['Number'],'', { name: 'Output_Number_State'+jsondata['Data']['Outputs'][i]['Number']+'_'+jsondata['Data']['Outputs'][i]['AD'], type: 'number', unit: ''+outputsUnit, write: false, read: true }); } } else{ createState('javascript.0.UVR1611_CMI_Knoten_2.Output_Number'+jsondata['Data']['Outputs'][i]['Number'],'', { name: 'Output_Number'+jsondata['Data']['Outputs'][i]['Number']+'_'+jsondata['Data']['Outputs'][i]['AD'], type: 'number', unit: ''+outputsUnit, write: false, read: true }); if (jsondata['Data']['Outputs'][i]['AD']==='A'){ createState('javascript.0.UVR1611_CMI_Knoten_2.Output_Number_State'+jsondata['Data']['Outputs'][i]['Number'],'', { name: 'Output_Number_State'+jsondata['Data']['Outputs'][i]['Number']+'_'+jsondata['Data']['Outputs'][i]['AD'], type: 'number', unit: ''+outputsUnit, write: false, read: true }); } } } console.log("Variablen Knoten 2 angelegt"); state2anlegen = true;}
else{
//Variablen setstate
setState('javascript.0.UVR1611_CMI_Knoten_2.Header.Version',jsondata['Header']['Version']);
setState('javascript.0.UVR1611_CMI_Knoten_2.Header.Device',jsondata['Header']['Device']);
setState('javascript.0.UVR1611_CMI_Knoten_2.Header.Timestamp',jsondata['Header']['Timestamp']);
i=0;
for (i=0; i<=15;i++){
if (i<9){
setState('javascript.0.UVR1611_CMI_Knoten_2.Input_Number0'+jsondata['Data']['Inputs'][i]['Number'],jsondata['Data']['Inputs'][i]['Value']['Value']);
setState('javascript.0.UVR1611_CMI_Knoten_2.Network_Analog_Number0'+jsondata['Data']['Network_Analog'][i]['Number'],jsondata['Data']['Network_Analog'][i]['Value']['Value']);
setState('javascript.0.UVR1611_CMI_Knoten_2.Network_Digital_Number0'+jsondata['Data']['Network_Digital'][i]['Number'],jsondata['Data']['Network_Digital'][i]['Value']['Value']);
}
else{
setState('javascript.0.UVR1611_CMI_Knoten_2.Input_Number'+jsondata['Data']['Inputs'][i]['Number'],jsondata['Data']['Inputs'][i]['Value']['Value']);
setState('javascript.0.UVR1611_CMI_Knoten_2.Network_Analog_Number'+jsondata['Data']['Network_Analog'][i]['Number'],jsondata['Data']['Network_Analog'][i]['Value']['Value']);
setState('javascript.0.UVR1611_CMI_Knoten_2.Network_Digital_Number'+jsondata['Data']['Network_Digital'][i]['Number'],jsondata['Data']['Network_Digital'][i]['Value']['Value']);}
}
i=0;
for (i=0; i<=12;i++){
if (i<9){
setState('javascript.0.UVR1611_CMI_Knoten_2.Output_Number0'+jsondata['Data']['Outputs'][i]['Number'],jsondata['Data']['Outputs'][i]['Value']['Value']);
if (jsondata['Data']['Outputs'][i]['AD']==='A'){
setState('javascript.0.UVR1611_CMI_Knoten_2.Output_Number_State0'+jsondata['Data']['Outputs'][i]['Number'],jsondata['Data']['Outputs'][i]['Value']['State']);
}
}
else{
setState('javascript.0.UVR1611_CMI_Knoten_2.Output_Number'+jsondata['Data']['Outputs'][i]['Number'],jsondata['Data']['Outputs'][i]['Value']['Value']);
if (jsondata['Data']['Outputs'][i]['AD']==='A'){
setState('javascript.0.UVR1611_CMI_Knoten_2.Output_Number_State'+jsondata['Data']['Outputs'][i]['Number'],jsondata['Data']['Outputs'][i]['Value']['State']);
}
//setState('javascript.0.PoolController.ADC'+[i-1], parseFloat(Number(wert).toFixed(2)));
}}
}
}`
4689_objekte_knoten1_2.png
4689_objekte_knoten2_2.png
4689_objekte_knoten2_1.png
4689_objekte_knoten1_1.png [/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]@sven12 Sorry, aber ich bin zu blöd das Script aus dem Betrag rauszukopieren und programmieren kann ich leider gar nicht. Besteht die Möglichkeit, dass du mir das Script irgendwie zur Verfügung stellst oder ich das irgendwo downloaden kann?
Ich versuche schon lange die Werte meiner UVR1611 in den iobroker zu bekommen.
Vielen Dank im Voraus
VG
Max



