Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. ETA Modul/Adapter

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    ETA Modul/Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      catnipper last edited by

      Hallo zusammen,

      Ich habe mir ein Skript gebaut welches XML einer ETA ausliest und speichert…

      Das eigentlich nicht standardisierte daran ist, dass bei der ETA im XML ein Namespace verwendet wird der bei XPATH Abfragen berücksichtigen werden muss. Aus diesem Grund kann konnte ich nicht so einfach drauflos parsen...

      Ich hätte noch weitere Ideen die ich einbringen könnte - würde mich aber grundsätzlich freuen falls jemand Lust hat das Skript weiter zu abstrahieren und als Adapter umzusetzen? Ich befürchte schlicht mir fehlt die Zeit dazu diesen dann auch ordentlich zu pflegen…

      Aber hier zumindest mal das Skript 🙂

      var http = require('http');
      var xpath = require('xpath');
      var dom = require('xmldom').DOMParser;
      
      var etaIP = 'http://192.168.178.xx:8080/user/var';
      
      	// 1\. URI => URI muss ggf. je nach Platine individuell ausgelesen werden (siehe http://192.168.178.xx:8080/user/menu)
      	// 2\. Object
      	// 3\. read
      	// 4\. write
      	// 5\. name
      	// 6\. type
      	// 7\. unit
      	// 8\. role
      var etaVars = [
      	["/120/10251/0/0/12242", "eta.temperatur.PUFFER_OBEN", true, false, "Puffer oben", "number", "°C", "value.temperature"],
      	["/120/10251/0/0/12244", "eta.temperatur.PUFFER_UNTEN", true, false, "Puffer unten", "number", "°C", "value.temperature"],
      ];
      
      etaVars.forEach(function(etaVar){
          createState(etaVar[1], 0, {
              read:  etaVar[2],
              write: etaVar[3],
              name:  etaVar[4],
              type:  etaVar[5],
              unit:  etaVar[6],
              role:  etaVar[7]
          });
      });
      
      schedule("*/10 * * * * *", function () {
          pollETA();
      });
      
      pollETA();
      
      function pollETA() {
          // console.log("** Polling ETA Variables");
      	etaVars.forEach(function(etaVar){
      		http.get(etaIP + etaVar[0], function (http_res) {
      
      			// initialize the container for our data
      			var data = "";
      
      			// this event fires many times, each time collecting another piece of the response
      			http_res.on("data", function (chunk) {
      				// append this chunk to our growing `data` var
      				data += chunk;
      				// console.log("** ETA chunk: " + chunk);
      			});
      
      			// this event fires *one* time, after all the `data` events/chunks have been gathered
      			http_res.on("end", function () {
      				// console.log("** ETA data: " + data);
      
      				try {
      					var doc = new dom().parseFromString(data);
      					var select = xpath.useNamespaces({"eta": "http://www.eta.co.at/rest/v1"});
      
      					var state = (select('//eta:value/@strValue', doc)[0].nodeValue);
      					// console.log("** ETA state: " + state);
      
      					setState(etaVar[1], state);
      				}
      				catch (e) {
      					log("ETA: Cannot set data "+ etaVar[2] +":" + e, 'error');
      				}
      			});
      		});
      	});
      }
      
      1 Reply Last reply Reply Quote 0
      • C
        catnipper last edited by

        ETA Heizungsanlage (Pellets~)

        Sorry - Sollte man vielleicht noch mitteilen 😉

        1 Reply Last reply Reply Quote 0
        • S
          Sodalle last edited by

          Servus catnipper,

          Ich habe einen PU15 und bin schon seit längerem drann die Daten irgendwie zu bekommen, schaffe es leider nicht da mir die Zeit und auch das Wissen dazu fehlt dies so umzusetzen. Einen Adapter fände ich Klasse und werde dein Script mal testen.

          Danke dir schon mal dafür

          Grüßle

          Sodalle

          1 Reply Last reply Reply Quote 0
          • C
            catnipper last edited by

            FYI: viewtopic.php?f=24&t=21088

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            938
            Online

            31.6k
            Users

            79.4k
            Topics

            1.3m
            Posts

            2
            4
            773
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo