Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    395

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

Heizungswerte einer UVR1611 via CMI mittels JSON anlegen & refreshen

Scheduled Pinned Locked Moved ioBroker Allgemein
5 Posts 2 Posters 2.5k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    Patxi
    wrote on last edited by
    #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 Reply Last reply
    0
    • P Offline
      P Offline
      Patxi
      wrote on last edited by
      #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 Reply Last reply
      0
      • P Offline
        P Offline
        Patxi
        wrote on last edited by
        #3

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

        1 Reply Last reply
        0
        • paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #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 Reply Last reply
          0
          • P Offline
            P Offline
            Patxi
            wrote on last edited by
            #5

            danke! das scheint zu klappen.

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

            1 Reply Last reply
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            Support us

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

            692

            Online

            32.7k

            Users

            82.5k

            Topics

            1.3m

            Posts
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Login

            • Don't have an account? Register

            • Login or register to search.
            • First post
              Last post
            0
            • Home
            • Recent
            • Tags
            • Unread 0
            • Categories
            • Unreplied
            • Popular
            • GitHub
            • Docu
            • Hilfe