Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Heizungswerte einer UVR1611 via CMI mittels JSON anlegen & refreshen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Heizungswerte einer UVR1611 via CMI mittels JSON anlegen & refreshen

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
5 Beiträge 2 Kommentatoren 2.4k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    Patxi
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich bin noch kompletter ioBroker Anfänger und in Java-Script nicht wirklich zu viel bewandert.

    Was ich bis jetzt aus Foren Beiträgen gelesen habe, vermute ich aber, dass es zum Auslesen der Heizungswerte meiner UVR1611 (mittels CMI V1.28.1) nicht dumm wäre.

    Die meisten älteren Versuche die UVR Daten zu bekommen gehen über das parsen der Webschnittstelle. Seit letztem Jahr aber kann man aber problemlos ein JSON formatiertes Ergebnis via http request bekommen. Ein request für "Eingänge - In", einen für "Ausgänge - Out" & Network analog/digital "Na,Nd"

    Beschreibung von der Technischen Alternative:

    https://www.ta.co.at/downloads/datei/17 … -json-api/

    Beispiel request: In, Out, Network anlog & digital

    http://user:password@192.168.31.99/INCL ... =I,O,Na,Nd

    Ergebnis:

    {
      "Header": {
        "Version": 3,
        "Device": "80",
        "Timestamp": 1519813410
      },
      "Data": {
        "Inputs": [
          {
            "Number": 1,
            "AD": "A",
            "Value": {
              "Value": 51.2,
              "Unit": "1"
            }
          },
          {
            "Number": 2,
            "AD": "A",
            "Value": {
              "Value": 48.5,
              "Unit": "1"
            }
          },
          {
            "Number": 3,
            "AD": "A",
            "Value": {
              "Value": -12.3,
              "Unit": "1"
            }
          },
          {
            "Number": 4,
            "AD": "A",
            "Value": {
              "Value": 26.9,
              "Unit": "1"
            }
          },
          {
            "Number": 5,
            "AD": "A",
            "Value": {
              "Value": 32.1,
              "Unit": "1"
            }
          },
          {
            "Number": 6,
            "AD": "A",
            "Value": {
              "Value": 32.5,
              "Unit": "1"
            }
          },
          {
            "Number": 7,
            "AD": "A",
            "Value": {
              "Value": 34.8,
              "Unit": "1"
            }
          },
          {
            "Number": 8,
            "AD": "A",
            "Value": {
              "Value": 57.3,
              "Unit": "1"
            }
          },
          {
            "Number": 9,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 10,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 11,
            "AD": "A",
            "Value": {
              "Value": 28.6,
              "Unit": "1"
            }
          },
          {
            "Number": 12,
            "AD": "A",
            "Value": {
              "Value": 17.3,
              "Unit": "1"
            }
          },
          {
            "Number": 13,
            "AD": "A",
            "Value": {
              "Value": 15.2,
              "Unit": "1"
            }
          },
          {
            "Number": 14,
            "AD": "A",
            "Value": {
              "Value": 62.8,
              "Unit": "1"
            }
          },
          {
            "Number": 15,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 16,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          }
        ],
        "Outputs": [
          {
            "Number": 1,
            "AD": "A",
            "Value": {
              "State": 1,
              "Value": 30,
              "Unit": "0"
            }
          },
          {
            "Number": 2,
            "AD": "A",
            "Value": {
              "State": 1,
              "Value": 30,
              "Unit": "0"
            }
          },
          {
            "Number": 3,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 4,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 5,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 6,
            "AD": "A",
            "Value": {
              "State": 0,
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 7,
            "AD": "A",
            "Value": {
              "State": 0,
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 8,
            "AD": "D",
            "Value": {
              "Value": 1,
              "Unit": "0"
            }
          },
          {
            "Number": 9,
            "AD": "D",
            "Value": {
              "Value": 1,
              "Unit": "0"
            }
          },
          {
            "Number": 10,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 11,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 12,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 13,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          }
        ],
        "Network Analog": [
          {
            "Number": 1,
            "AD": "A",
            "Value": {
              "Value": 37,
              "Unit": "1"
            }
          },
          {
            "Number": 2,
            "AD": "A",
            "Value": {
              "Value": 26.7,
              "Unit": "1"
            }
          },
          {
            "Number": 3,
            "AD": "A",
            "Value": {
              "Value": 1601,
              "Unit": "3"
            }
          },
          {
            "Number": 4,
            "AD": "A",
            "Value": {
              "Value": 46.6,
              "Unit": "1"
            }
          },
          {
            "Number": 5,
            "AD": "A",
            "Value": {
              "Value": 38.5,
              "Unit": "1"
            }
          },
          {
            "Number": 6,
            "AD": "A",
            "Value": {
              "Value": 0,
              "Unit": "3"
            }
          },
          {
            "Number": 7,
            "AD": "A",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 8,
            "AD": "A",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 9,
            "AD": "A",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 10,
            "AD": "A",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 11,
            "AD": "A",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 12,
            "AD": "A",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 13,
            "AD": "A",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 14,
            "AD": "A",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 15,
            "AD": "A",
            "Value": {
              "Value": 0,
              "Unit": "0"
            }
          },
          {
            "Number": 16,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          }
        ],
        "Network Digital": [
          {
            "Number": 1,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 2,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 3,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 4,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 5,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 6,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 7,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 8,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 9,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 10,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 11,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 12,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 13,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 14,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 15,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          },
          {
            "Number": 16,
            "AD": "D",
            "Value": {
              "Value": 0,
              "Unit": "43"
            }
          }
        ]
      },
      "Status": "OK",
      "Status code": 0
    }
    
    

    Unit 0 = keine Einheit / digital

    Unit 1 = °C

    Unit 3 = l/h (Durchfluss)

    Unit 43 = ?

    Wisst ihr ob schon jemand dafür was geschrieben hat (Adapter oder Skript)?

    Wie parse ich das am einfachsten und lege irgendwo im ioBroker diese Sensorik an?

    Danke für Infos oder etwas Hilfe!

    Patxi

    1 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      Patxi
      schrieb am zuletzt editiert von
      #2

      Jetzt bin ich schon etwas weiter.

      Allerdings habe ich noch Probleme mit den Boolean/State Kanälen.

      Im JSON sind es 0 Werte und wie bekomme ich das im Java Script gescheit hin, daß sie auf true/false gesetzt werden?

      var urlCMI = 'http://user:password@192.168.31.99/INCLUDE/api.cgi?jsonnode=1&jsonparam=I'; //,O,Na,Nd
      
      var forecreation    = false;    // Default: false. true: Datenpunkte werden überschrieben (wenn z.B. Bezeichnungen geändert wurden)
      var request = require("request");
      var myJson = {};
      
      var path = "UVR1611.";
      var pathIn = "Inputs.";
      //var pathOut = "Outputs.";
      //var pathNa = "Network Analog.";
      //var pathNd = "Network Digital.";
      
      var idIn01        = path + pathIn + "In01_A";
      var idIn02        = path + pathIn + "In02_A";
      var idIn03        = path + pathIn + "In03_A";
      var idIn04        = path + pathIn + "In04_A";
      var idIn05        = path + pathIn + "In05_A";
      var idIn06        = path + pathIn + "In06_A";
      var idIn07        = path + pathIn + "In07_A";
      var idIn08        = path + pathIn + "In08_A";
      var idIn09        = path + pathIn + "In09_D";
      var idIn10        = path + pathIn + "In10_D";
      var idIn11        = path + pathIn + "In11_A";
      var idIn12        = path + pathIn + "In12_A";
      var idIn13        = path + pathIn + "In13_A";
      var idIn14        = path + pathIn + "In14_A";
      //var idIn15        = path + pathIn + "In15_D";
      var idIn16        = path + pathIn + "In16_D";
      
      createState(idIn01, 0, forecreation, { name: 'T Solar Kollektor 1',   desc: 'Solar Kollektor T1',       type: 'number', role: 'value.temperature', unit: '°C'});
      createState(idIn02, 0, forecreation, { name: 'T Solar Kollektor 2',   desc: 'Solar Kollektor T2',       type: 'number', role: 'value.temperature', unit: '°C'});
      createState(idIn03, 0, forecreation, { name: 'T Aussen',              desc: 'Aussen-Temperatur',        type: 'number', role: 'value.temperature', unit: '°C'});
      createState(idIn04, 0, forecreation, { name: 'T Speicher unten',      desc: 'Puffer-Temperatur unten',  type: 'number', role: 'value.temperature', unit: '°C'});
      createState(idIn05, 0, forecreation, { name: 'T Speicher unten/mitte',desc: 'Puffer-Temperatur mitte 1',type: 'number', role: 'value.temperature', unit: '°C'});
      createState(idIn06, 0, forecreation, { name: 'T Speicher mitte',      desc: 'Puffer-Temperatur mitte 2',type: 'number', role: 'value.temperature', unit: '°C'});
      createState(idIn07, 0, forecreation, { name: 'T Speicher mitte/oben', desc: 'Puffer-Temperatur mitte 3',type: 'number', role: 'value.temperature', unit: '°C'});
      createState(idIn08, 0, forecreation, { name: 'T Speicher oben',       desc: 'Puffer-Temperatur oben',   type: 'number', role: 'value.temperature', unit: '°C'});
      createState(idIn09, 0, forecreation, { name: 'Heizkreis 2',           desc: 'Heizkreis 2',              type: 'boolean',role: 'switch', def: false});
      createState(idIn10, 0, forecreation, { name: 'Freigabe Elektr',       desc: 'Freigabe Elektr',          type: 'boolean',role: 'switch', def: false});
      createState(idIn11, 0, forecreation, { name: 'T Ruecklauf WW',        desc: 'Warmwasser Ruecklauf T',   type: 'number', role: 'value.temperature', unit: '°C'});
      createState(idIn12, 0, forecreation, { name: 'T Heizkreis VL 1',      desc: 'Heizkreis-Temperatur VL1', type: 'number', role: 'value.temperature', unit: '°C'});
      createState(idIn13, 0, forecreation, { name: 'T Heizraum',            desc: 'Heizraum-Temperatur',      type: 'number', role: 'value.temperature', unit: '°C'});
      createState(idIn14, 0, forecreation, { name: 'T Holzkessel VL',       desc: 'Holzkessel-Temperatur VL', type: 'number', role: 'value.temperature', unit: '°C'});
      //createState(idIn15,0, forecreation, { name: 'T Speicher oben',       desc: 'Puffer-Temperatur oben',   type: 'number', role: 'value.temperature', unit: '°C'});
      createState(idIn16, 0, forecreation, { name: 'Stroemungs-Schalter',   desc: 'Stroemungs-Schalter',      type: 'boolean',role: 'switch', def: false});
      
      function parseJson(text) {
          if (text === "") return {};
          try {
              json = JSON.parse(text);
          } catch (ex) {
              json = {};
          }
          if(!json) json = {};
          return json;
      }
      
      function readJson(url, callback) {
          request(url, function (err, state, body){
              if (body) {
                  var json = parseJson(body);
                  callback(null, json);
              } else {
                  var error = "(" + err + ") ERROR request from: " + url;
                  log(error, "warn");
                  callback(error, null);
              }
          });
      }
      
      function main() {
          readJson(urlCMI, function(err,json) {
              if(!err) {
                  myJson = json;
                  log("Version: "                   + myJson.Header.Version,"info");
                  log("Device: "                    + myJson.Header.Device,"info");
                  log("In01: "                      + myJson.Data.Inputs[0].Value.Value,"info");
                  log("In02: "                      + myJson.Data.Inputs[1].Value.Value,"info");
                  log("In03: "                      + myJson.Data.Inputs[2].Value.Value,"info");
                  log("In04: "                      + myJson.Data.Inputs[3].Value.Value,"info");
                  log("In05: "                      + myJson.Data.Inputs[4].Value.Value,"info");
                  log("In06: "                      + myJson.Data.Inputs[5].Value.Value,"info");
                  log("In07: "                      + myJson.Data.Inputs[6].Value.Value,"info");
                  log("In08: "                      + myJson.Data.Inputs[7].Value.Value,"info");
                  log("In09: "                      + myJson.Data.Inputs[8].Value.Value,"info");
                  log("In10: "                      + myJson.Data.Inputs[9].Value.Value,"info");
                  log("In11: "                      + myJson.Data.Inputs[10].Value.Value,"info");
                  log("In12: "                      + myJson.Data.Inputs[11].Value.Value,"info");
                  log("In13: "                      + myJson.Data.Inputs[12].Value.Value,"info");
                  log("In14: "                      + myJson.Data.Inputs[13].Value.Value,"info");
                  //log("In15: "                      + myJson.Data.Inputs[14].Value.Value,"info");
                  log("In16: "                      + myJson.Data.Inputs[15].Value.Value,"info");
                  setState(idIn01         ,parseFloat(myJson.Data.Inputs[0].Value.Value));
                  setState(idIn02         ,parseFloat(myJson.Data.Inputs[1].Value.Value));
                  setState(idIn03         ,parseFloat(myJson.Data.Inputs[2].Value.Value));
                  setState(idIn04         ,parseFloat(myJson.Data.Inputs[3].Value.Value));
                  setState(idIn05         ,parseFloat(myJson.Data.Inputs[4].Value.Value));
                  setState(idIn06         ,parseFloat(myJson.Data.Inputs[5].Value.Value));
                  setState(idIn07         ,parseFloat(myJson.Data.Inputs[6].Value.Value));
                  setState(idIn08         ,parseFloat(myJson.Data.Inputs[7].Value.Value));
                  setState(idIn09         ,!!parseInt(myJson.Data.Inputs[8].Value.Value));
                  setState(idIn10         ,!!parseInt(myJson.Data.Inputs[9].Value.Value));
                  setState(idIn11         ,parseFloat(myJson.Data.Inputs[10].Value.Value));
                  setState(idIn12         ,parseFloat(myJson.Data.Inputs[11].Value.Value));
                  setState(idIn13         ,parseFloat(myJson.Data.Inputs[12].Value.Value));
                  setState(idIn14         ,parseFloat(myJson.Data.Inputs[13].Value.Value));
      //            setState(idIn15         ,!!parseInt(myJson.Data.Inputs[14].Value.Value));
                  setState(idIn16         ,!!parseInt(myJson.Data.Inputs[15].Value.Value));
      
              } else {
                  log("Error reading JSON from CMI-UVR1611\. No data!","warn");
                  myJson = {};
              }
          });
      }
      
      schedule("*/5 * * * *", function () {   // poll every 5 minutes
          main();
      });
      
      // poll values at startup
      setTimeout(main,2000);
      
      

      –---

      Ich vermute dass doch einige Leute die UVR1611 und CMI haben dürften und genau dieses auch brauchen könnten.

      Ich wundere mich warum ich noch nichts diesbzgl. gefunden habe.

      Eingreifen in die Steuerung der UVR funktioniert ja einscheinend auch durch einen http request (falls man von ioBroker was auslösen will).

      Für jede Hilfe bin ich dankbar!

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        Patxi
        schrieb am zuletzt editiert von
        #3

        wie geht man mit den Boolean Werten um und wie kann man das Script noch besser gestalten?

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @Patxi:

          wie geht man mit den Boolean Werten um `
          Versuche es mal mit

                      setState(idIn09         ,!!parseInt(myJson.Data.Inputs[8].Value.Value));
          
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            Patxi
            schrieb am zuletzt editiert von
            #5

            danke! das scheint zu klappen.

            Ich habe das o.g. Skript gleich mal angepasst.

            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate
            FAQ Cloud / IOT
            HowTo: Node.js-Update
            HowTo: Backup/Restore
            Downloads
            BLOG

            884

            Online

            32.4k

            Benutzer

            81.5k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Anmelden

            • Du hast noch kein Konto? Registrieren

            • Anmelden oder registrieren, um zu suchen
            • Erster Beitrag
              Letzter Beitrag
            0
            • Home
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe