NEWS
Script zum auslesen eines C.M.I von TA UVR1611
-
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 -
@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@max-meyer-0
In einem 6 Jahre alten Thread wirst Du von einem User der seit 5 Jahren nicht mehr aktiv war wohl kaum Hilfe erwarten dürfen. -
@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@max-meyer-0
Hi,bitte etwas mehr Info zur Hardware und was Du machen möchtest.
Hast Du Zugriff auf das Programm der UVR oder ist das durch den Ersteller geschützt?
Wenn Zugriff: dann ist ein möglicher Weg von der UVR über Canbus ans CMI und über CMI Modbus an Iobroker Modbus. Dazu gibt es ein paar threads hier im Forum.
VG
Ulli -
@max-meyer-0
Hi,bitte etwas mehr Info zur Hardware und was Du machen möchtest.
Hast Du Zugriff auf das Programm der UVR oder ist das durch den Ersteller geschützt?
Wenn Zugriff: dann ist ein möglicher Weg von der UVR über Canbus ans CMI und über CMI Modbus an Iobroker Modbus. Dazu gibt es ein paar threads hier im Forum.
VG
Ulli@ullij Hi, die modbus Anbindung habe ich schon laufen aber die UVR1611 kann nur 16 Werte an den CAN Bus (und dann per CMI wieder an modbus weiter) ausgeben und die Werte die über das Netzwerk eingehen (z.B. Raumtemperatursensor am DL Bus) können gar nicht wieder ausgegeben werden.
Ich habe aber dies gefunden https://forum.iobroker.net/topic/11219/heizungswerte-einer-uvr1611-via-cmi-mittels-json-anlegen-refreshen und das scheint zu gehen. Zumindest wurden Objekte angelegt und plausible Werte sind auch drin.
Trotzdem vielen Dank an Euch.
VG
Max -
@ullij Hi, die modbus Anbindung habe ich schon laufen aber die UVR1611 kann nur 16 Werte an den CAN Bus (und dann per CMI wieder an modbus weiter) ausgeben und die Werte die über das Netzwerk eingehen (z.B. Raumtemperatursensor am DL Bus) können gar nicht wieder ausgegeben werden.
Ich habe aber dies gefunden https://forum.iobroker.net/topic/11219/heizungswerte-einer-uvr1611-via-cmi-mittels-json-anlegen-refreshen und das scheint zu gehen. Zumindest wurden Objekte angelegt und plausible Werte sind auch drin.
Trotzdem vielen Dank an Euch.
VG
Max@max-meyer-0
Hallo zusammenIch habe bei mir rasch nachgeschaut und leider gesehen, dass ich mein uraltes Skript für meine UVR16x2 nicht mehr direkt verfügbar habe, weil ich beim letzten Hardwareversagen alles auf Modbus gewechselt habe. Müsste mal im Datenarchiv nachschauen ob ich noch was finde, da hatte mir ein sehr kluger Kollege der SW-Entwickler ist ein JS-Skript gemacht, der Punkt für Punkt ausliest und dann in die Tabelle schreibt. Aber bei mir hatte das eben auch nur für die Temperaturen wirklich zuverläsig.
Bei Modbus ist das ein grosser Aufwand auf dem CMI, weil das eben quasi ein eigener Server ist, der nicht mal über das TAPS konfiguriert werden kann.So als Idee (ich habe aber keine Ahnung von CAN), vieleicht könnte man ja so ein "USB-to-CAN" Interface zusätzlich ins TA-CAN-Netzwerk einbinden und die TAPS entsprechend mit dem zusätzlichen Teilnehmer erweitern? Aber fragt mich ja nicht ob und wie es gehen soll, und wie viele Daten so übertragen werden könnte.
Im Iobroker gibt es da einen CAN Adapter
CAN-Adapter
bedingt aber scheinbar Linux als OS. -
@max-meyer-0
Hallo zusammenIch habe bei mir rasch nachgeschaut und leider gesehen, dass ich mein uraltes Skript für meine UVR16x2 nicht mehr direkt verfügbar habe, weil ich beim letzten Hardwareversagen alles auf Modbus gewechselt habe. Müsste mal im Datenarchiv nachschauen ob ich noch was finde, da hatte mir ein sehr kluger Kollege der SW-Entwickler ist ein JS-Skript gemacht, der Punkt für Punkt ausliest und dann in die Tabelle schreibt. Aber bei mir hatte das eben auch nur für die Temperaturen wirklich zuverläsig.
Bei Modbus ist das ein grosser Aufwand auf dem CMI, weil das eben quasi ein eigener Server ist, der nicht mal über das TAPS konfiguriert werden kann.So als Idee (ich habe aber keine Ahnung von CAN), vieleicht könnte man ja so ein "USB-to-CAN" Interface zusätzlich ins TA-CAN-Netzwerk einbinden und die TAPS entsprechend mit dem zusätzlichen Teilnehmer erweitern? Aber fragt mich ja nicht ob und wie es gehen soll, und wie viele Daten so übertragen werden könnte.
Im Iobroker gibt es da einen CAN Adapter
CAN-Adapter
bedingt aber scheinbar Linux als OS.@andibr
Moin, in Richtung CAN habe ich auch schon überlegt aber die UVR1611 kann nur 16 Werte per CAN übertragen. Das hilft mir nicht weiter.
Das hier wäre ideal gewesen https://espeasy.readthedocs.io/en/latest/Plugin/P092.html#p092-page aber leider habe ich das noch nicht zum laufen bekommen. Da wären alle Werte drin gewesen und wären einfach per MQTT zum iobroker gesendet worden.
Aktuell nehme ich dies für die Eingänge https://forum.iobroker.net/topic/11219/heizungswerte-einer-uvr1611-via-cmi-mittels-json-anlegen-refreshen und versuche mal mir den Rest über Modbus zu holen. Dann habe ich ja schon 32 Werte.
VG
Max -
@andibr
Moin, in Richtung CAN habe ich auch schon überlegt aber die UVR1611 kann nur 16 Werte per CAN übertragen. Das hilft mir nicht weiter.
Das hier wäre ideal gewesen https://espeasy.readthedocs.io/en/latest/Plugin/P092.html#p092-page aber leider habe ich das noch nicht zum laufen bekommen. Da wären alle Werte drin gewesen und wären einfach per MQTT zum iobroker gesendet worden.
Aktuell nehme ich dies für die Eingänge https://forum.iobroker.net/topic/11219/heizungswerte-einer-uvr1611-via-cmi-mittels-json-anlegen-refreshen und versuche mal mir den Rest über Modbus zu holen. Dann habe ich ja schon 32 Werte.
VG
Max@max-meyer-0
Ich verstehe noch nicht ganz was du mir den 16 Werten meinst. Ist das die Datenbreite von der UVR1611 zum CMI?Also bei mir hat das CMI (V1.42.1 - B1.06 - H4.00) beim CAN-Eingang 64 Werte beim Analog und 64 Werte beim Digital. Da ich bei mir keinen Zugriff auf die UVR bekomme (mein Heizungs-Mensch hat Angst vor mir), kann ich dir nicht nach schauen was die UVR16x2 wirklich kann.
Den DL-Bus kenne ich gar nicht, weil es ja eben auch ein AT-spezifische System ist. Aber mein CMI kann da auch als Eingnag jeweils 32 Werte einlesen und dann vermutlich auf den Modbus umlegen.
-
@max-meyer-0
Ich verstehe noch nicht ganz was du mir den 16 Werten meinst. Ist das die Datenbreite von der UVR1611 zum CMI?Also bei mir hat das CMI (V1.42.1 - B1.06 - H4.00) beim CAN-Eingang 64 Werte beim Analog und 64 Werte beim Digital. Da ich bei mir keinen Zugriff auf die UVR bekomme (mein Heizungs-Mensch hat Angst vor mir), kann ich dir nicht nach schauen was die UVR16x2 wirklich kann.
Den DL-Bus kenne ich gar nicht, weil es ja eben auch ein AT-spezifische System ist. Aber mein CMI kann da auch als Eingnag jeweils 32 Werte einlesen und dann vermutlich auf den Modbus umlegen.
@andibr
Die UVR1611 kann nur 16 analoge und 16 digitale Werte auf den CAN oder DL Bus ausgeben. Das reicht nicht, ich hätte gerne z.B. auch die Werte der Wärmemengenzähler oder PWM Ausgänge. Selbstverständlich könnte ich eine UVR16x2 dafür nehmen aber mir widerstrebt es 500€ auszugeben um ein paar Werte in den iobroker zu bekommen. Deshalb versuche ich eine kostengünstige Lösung zu finden. Wenn das mit dem ESP32 geklappt hätte wäre das ja schon fertig.
VG
Max -
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.
-
@magi
Habe einen ioBroker Adapter für den BL-NET geschrieben und zum Test angeboten. Würde mich freuen, wenn er bei Dir auch klappt. VG - Klaus.
—> https://forum.iobroker.net/topic/78225/test-adapter-ta-blnet-npm-latest@weberk Eine Frage zum CMI, vielleicht kannst Du mir helfen. Ich versuche gerade die Daten über Modbus zu versenden, leider habe ich das Phänomen, dass bei "aktueller Wert" immer 0 steht. Mein Gefühl sagt mir, dass der MODBUS irgendwie nicht funktioniert ... hast Du eine Idee wie Du vorgehen würdest, um gezielte Fehlersuche / Debugging zu betreiben? Danke Dir und lieben Gruß, Peter
-
@weberk Eine Frage zum CMI, vielleicht kannst Du mir helfen. Ich versuche gerade die Daten über Modbus zu versenden, leider habe ich das Phänomen, dass bei "aktueller Wert" immer 0 steht. Mein Gefühl sagt mir, dass der MODBUS irgendwie nicht funktioniert ... hast Du eine Idee wie Du vorgehen würdest, um gezielte Fehlersuche / Debugging zu betreiben? Danke Dir und lieben Gruß, Peter
@peterwy1 hab mit Modbus keine Erfahrung.
Meinen Adapter hab ich aber so angepasst, dass er auch die in Tapps konfigurierten Logging-Daten via CMI aus jedem CAN-Bus-Teilnehmer ausliest. Verwendet Port 80 und die dort verfügbaren JSON-Daten. Würde mich freuen, wenn du als Tester einsteigen könntest. -
@weberk Eine Frage zum CMI, vielleicht kannst Du mir helfen. Ich versuche gerade die Daten über Modbus zu versenden, leider habe ich das Phänomen, dass bei "aktueller Wert" immer 0 steht. Mein Gefühl sagt mir, dass der MODBUS irgendwie nicht funktioniert ... hast Du eine Idee wie Du vorgehen würdest, um gezielte Fehlersuche / Debugging zu betreiben? Danke Dir und lieben Gruß, Peter
@peterwy1 sagte in Script zum auslesen eines C.M.I von TA UVR1611:
Ich versuche gerade die Daten über Modbus zu versenden, leider habe ich das Phänomen, dass bei "aktueller Wert" immer 0 steht. Mein Gefühl sagt mir, dass der MODBUS irgendwie nicht funktioniert .
was ist denn wie konfiguriert?
Der Adapter funktioniert normalerweise oder meinst du Modbus am Gerät?
Dabei kann ich dir nicht helfen, da ich das Gerät nicht kenne. -
@weberk Eine Frage zum CMI, vielleicht kannst Du mir helfen. Ich versuche gerade die Daten über Modbus zu versenden, leider habe ich das Phänomen, dass bei "aktueller Wert" immer 0 steht. Mein Gefühl sagt mir, dass der MODBUS irgendwie nicht funktioniert ... hast Du eine Idee wie Du vorgehen würdest, um gezielte Fehlersuche / Debugging zu betreiben? Danke Dir und lieben Gruß, Peter
@peterwy1 sagte in Script zum auslesen eines C.M.I von TA UVR1611:
@weberk ....Mein Gefühl sagt mir, dass der MODBUS irgendwie nicht funktioniert ... hast Du eine Idee wie Du vorgehen würdest, um gezielte Fehlersuche / Debugging zu betreiben?
vielleicht von vorne bis hinten schrittweise die Einstellungen kontrollieren?
https://forum.iobroker.net/topic/50981/iobroker-modbus-zu-cmi-von-technische-alternative/44
https://forum.iobroker.net/topic/50981/iobroker-modbus-zu-cmi-von-technische-alternative/43Die Modbus Einrichtung auf dem CMI ist leider etwas umständlich, läuft bei mir so aber seit 4 Jahren sehr stabil
-
@peterwy1 sagte in Script zum auslesen eines C.M.I von TA UVR1611:
@weberk ....Mein Gefühl sagt mir, dass der MODBUS irgendwie nicht funktioniert ... hast Du eine Idee wie Du vorgehen würdest, um gezielte Fehlersuche / Debugging zu betreiben?
vielleicht von vorne bis hinten schrittweise die Einstellungen kontrollieren?
https://forum.iobroker.net/topic/50981/iobroker-modbus-zu-cmi-von-technische-alternative/44
https://forum.iobroker.net/topic/50981/iobroker-modbus-zu-cmi-von-technische-alternative/43Die Modbus Einrichtung auf dem CMI ist leider etwas umständlich, läuft bei mir so aber seit 4 Jahren sehr stabil
@UlliJ @weberk @Homoran
Danke Euch erst einmal für das ultraschnelle Feedback. Ich werde Die Beschreibung von @UlliJ jetzt einmal in Ruhe durchgehen.Den Adapter kann ich leider nicht ausprobieren, da ich hier im Forum "fremdgegangen" bin. Ich habe mich vor einiger Zeit für Home Assistant entschieden, aber in Bezug auf das CMI hatte ich das Gefühl hier gerade eine bessere Antwort zu bekommen ...
Danke Euch und ich melde mich zurück, sobald ich den Fehler gefunden habe, damit auch andere eventuell etwas davon haben. Ist irgendwie sehr komisch, dass ausgerechnet nur beim MODBUS die Ausgänge direkt im CMI immer 0 anzeigen ... CoE funktioniert wie gesagt diesbzgl. ohne Probleme, allerdings hier nicht die Schnittstelle zum Home Assistant ... und die 64 Kanäle des KNX Moduls reichen mir leider aktuell nicht.
Lieben Gruß
Peter