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. Entwicklung
  4. [Projekt] ETA Heizung

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    516

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

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

[Projekt] ETA Heizung

Geplant Angeheftet Gesperrt Verschoben Entwicklung
88 Beiträge 30 Kommentatoren 19.9k Aufrufe 22 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.
  • T Offline
    T Offline
    tcfigge
    schrieb am zuletzt editiert von
    #46

    Hallo,
    ich benutze schon einige Zeit das Script...
    Läuft sehr gut!
    Seit ich gestern den Javascript Adapter upgedatet habe, bekomme ich folgende Fehlermeldung:

    5.10.2022, 18:55:43.852	[info ]: javascript.1 (22832) Stop script script.js.common.Blockly.Diverse.ETA
    5.10.2022, 18:55:43.864	[info ]: javascript.0 (14977) Stop script script.js.common.Blockly.Diverse.ETA
    5.10.2022, 18:55:43.920	[info ]: javascript.0 (14977) Start javascript script.js.common.Blockly.Diverse.ETA
    5.10.2022, 18:55:44.060	[error]: javascript.0 (14977) script.js.common.Blockly.Diverse.ETA: Error: Cannot find module 'xpath'
    5.10.2022, 18:55:44.061	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:2:13
    5.10.2022, 18:55:44.062	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:124:3
    5.10.2022, 18:55:44.089	[error]: javascript.0 (14977) script.js.common.Blockly.Diverse.ETA: Error: Cannot find module 'xmldom'
    5.10.2022, 18:55:44.090	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:3:11
    5.10.2022, 18:55:44.091	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:124:3
    5.10.2022, 18:55:44.119	[info ]: javascript.0 (14977) script.js.common.Blockly.Diverse.ETA: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
    5.10.2022, 18:55:44.122	[error]: javascript.0 (14977) script.js.common.Blockly.Diverse.ETA: TypeError: Cannot read properties of undefined (reading 'DOMParser')
    5.10.2022, 18:55:44.122	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:3:28
    5.10.2022, 18:55:44.122	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:124:3
    

    Hat jemand eine Idee und kann mir helfen?

    T J 2 Antworten Letzte Antwort
    0
    • T tcfigge

      Hallo,
      ich benutze schon einige Zeit das Script...
      Läuft sehr gut!
      Seit ich gestern den Javascript Adapter upgedatet habe, bekomme ich folgende Fehlermeldung:

      5.10.2022, 18:55:43.852	[info ]: javascript.1 (22832) Stop script script.js.common.Blockly.Diverse.ETA
      5.10.2022, 18:55:43.864	[info ]: javascript.0 (14977) Stop script script.js.common.Blockly.Diverse.ETA
      5.10.2022, 18:55:43.920	[info ]: javascript.0 (14977) Start javascript script.js.common.Blockly.Diverse.ETA
      5.10.2022, 18:55:44.060	[error]: javascript.0 (14977) script.js.common.Blockly.Diverse.ETA: Error: Cannot find module 'xpath'
      5.10.2022, 18:55:44.061	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:2:13
      5.10.2022, 18:55:44.062	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:124:3
      5.10.2022, 18:55:44.089	[error]: javascript.0 (14977) script.js.common.Blockly.Diverse.ETA: Error: Cannot find module 'xmldom'
      5.10.2022, 18:55:44.090	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:3:11
      5.10.2022, 18:55:44.091	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:124:3
      5.10.2022, 18:55:44.119	[info ]: javascript.0 (14977) script.js.common.Blockly.Diverse.ETA: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
      5.10.2022, 18:55:44.122	[error]: javascript.0 (14977) script.js.common.Blockly.Diverse.ETA: TypeError: Cannot read properties of undefined (reading 'DOMParser')
      5.10.2022, 18:55:44.122	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:3:28
      5.10.2022, 18:55:44.122	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:124:3
      

      Hat jemand eine Idee und kann mir helfen?

      T Offline
      T Offline
      tcfigge
      schrieb am zuletzt editiert von
      #47

      @tcfigge Nach Downgrade auf Javascriptadapter 6.0 läuft es erstmal wieder... ?!?!?

      frischF 1 Antwort Letzte Antwort
      0
      • H Herry

        @catnipper
        ich habe mich an deinen Adapter versucht und nach ein paar Änderungen läuft er sehr gut. Trotzdem sind noch ein paar "undefinierbare" Fehler vorhanden, was aber komischerweise nicht am Ergebnis zur Erzeugung der Daten beiträgt.
        Ich denke auch, das hat mit dem jeweiligen System und dessen Software zu tun.
        Bei mir läuft das ganze auf einem Raspberry 4, 4 GB Ram problemlos und schnell.

        ETA_VIS.jpg

        Realisiert habe ich das über ioBroker und Vis. Die Darstellung ist sehr einfach gehalten, da der Monitor im Hausgang hängt und für jeden verständlich sein soll.
        Hier noch die Anpassungen am Script:

        Script.jpg

        Zur Visualisierung läuft auf dem Raspberry auch noch Magic Mirror 2 und das sieht dann so aus:

        MM-Display_cplt.jpg

        Vielen Dank für deine großartige Arbeit mit dem Adapter !

        T Offline
        T Offline
        tcfigge
        schrieb am zuletzt editiert von
        #48

        @herry
        Hi!
        Super Vis!!!!
        Würdest Du die zur Verfügung stellen?
        Danke!

        1 Antwort Letzte Antwort
        0
        • T tcfigge

          Hallo,
          ich benutze schon einige Zeit das Script...
          Läuft sehr gut!
          Seit ich gestern den Javascript Adapter upgedatet habe, bekomme ich folgende Fehlermeldung:

          5.10.2022, 18:55:43.852	[info ]: javascript.1 (22832) Stop script script.js.common.Blockly.Diverse.ETA
          5.10.2022, 18:55:43.864	[info ]: javascript.0 (14977) Stop script script.js.common.Blockly.Diverse.ETA
          5.10.2022, 18:55:43.920	[info ]: javascript.0 (14977) Start javascript script.js.common.Blockly.Diverse.ETA
          5.10.2022, 18:55:44.060	[error]: javascript.0 (14977) script.js.common.Blockly.Diverse.ETA: Error: Cannot find module 'xpath'
          5.10.2022, 18:55:44.061	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:2:13
          5.10.2022, 18:55:44.062	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:124:3
          5.10.2022, 18:55:44.089	[error]: javascript.0 (14977) script.js.common.Blockly.Diverse.ETA: Error: Cannot find module 'xmldom'
          5.10.2022, 18:55:44.090	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:3:11
          5.10.2022, 18:55:44.091	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:124:3
          5.10.2022, 18:55:44.119	[info ]: javascript.0 (14977) script.js.common.Blockly.Diverse.ETA: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
          5.10.2022, 18:55:44.122	[error]: javascript.0 (14977) script.js.common.Blockly.Diverse.ETA: TypeError: Cannot read properties of undefined (reading 'DOMParser')
          5.10.2022, 18:55:44.122	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:3:28
          5.10.2022, 18:55:44.122	[error]: javascript.0 (14977)     at script.js.common.Blockly.Diverse.ETA:124:3
          

          Hat jemand eine Idee und kann mir helfen?

          J Offline
          J Offline
          JoschiP
          schrieb am zuletzt editiert von
          #49

          Hallo, ich habe das gleiche Problem. Hab am Wochenende mal wieder ein paar Aktualisierungen durchgeführt.
          Seit dem funktioniert das ETA Script bei mir auch nicht mehr. Scheinbar wurde das Module XMLDOM aus node.js entfernt.
          Kennt jemand eine alternative?
          Leider hat das Downgrade auf Javascript Version 6.0 bei mir nicht geholfen
          Danke

          1 Antwort Letzte Antwort
          0
          • H Herry

            @catnipper
            ich habe mich an deinen Adapter versucht und nach ein paar Änderungen läuft er sehr gut. Trotzdem sind noch ein paar "undefinierbare" Fehler vorhanden, was aber komischerweise nicht am Ergebnis zur Erzeugung der Daten beiträgt.
            Ich denke auch, das hat mit dem jeweiligen System und dessen Software zu tun.
            Bei mir läuft das ganze auf einem Raspberry 4, 4 GB Ram problemlos und schnell.

            ETA_VIS.jpg

            Realisiert habe ich das über ioBroker und Vis. Die Darstellung ist sehr einfach gehalten, da der Monitor im Hausgang hängt und für jeden verständlich sein soll.
            Hier noch die Anpassungen am Script:

            Script.jpg

            Zur Visualisierung läuft auf dem Raspberry auch noch Magic Mirror 2 und das sieht dann so aus:

            MM-Display_cplt.jpg

            Vielen Dank für deine großartige Arbeit mit dem Adapter !

            frischF Offline
            frischF Offline
            frisch
            schrieb am zuletzt editiert von
            #50

            @herry HI! Geniale VIS könnte man die bekommen? LG Friedrich

            1 Antwort Letzte Antwort
            0
            • G gmbh07

              @rille06 Hallo, ich habe da mit dem Modus Adapter versucht komme aber nicht weiter, hast du vielleicht eine kleine Übersicht deiner Einstellungen? Es springt bei mir immer wie auf denn Fotos hin und her und ich habe keine Werte.
              Bildschirmfoto 2022-08-02 um 11.06.51.png Bildschirmfoto 2022-08-02 um 11.06.45.png

              K Offline
              K Offline
              Kapsville
              schrieb am zuletzt editiert von
              #51

              @gmbh07 said in [Projekt] ETA Heizung:

              @rille06 Hallo, ich habe da mit dem Modus Adapter versucht komme aber nicht weiter, hast du vielleicht eine kleine Übersicht deiner Einstellungen? Es springt bei mir immer wie auf denn Fotos hin und her und ich habe keine Werte.
              Bildschirmfoto 2022-08-02 um 11.06.51.png Bildschirmfoto 2022-08-02 um 11.06.45.png

              Habe auch dieses Problem. @gmbh07 konntest du das Problem in der Zwischenzeit lösen?

              frischF R 2 Antworten Letzte Antwort
              0
              • A amandus99

                @smarttux
                Mach es über ein Skript. Das funktioniert wunderbar über den iobroker. Kannst damit auch steuernd eingreifen wenn du unbedingt magst

                S Offline
                S Offline
                solar-robert
                schrieb am zuletzt editiert von
                #52

                @amandus99 said in [Projekt] ETA Heizung:

                @smarttux
                Mach es über ein Skript. Das funktioniert wunderbar über den iobroker. Kannst damit auch steuernd eingreifen wenn du unbedingt magst

                Könntest du bitte dein funktionierendes Skript teilen?
                Ich bin leider auf noch einen grünen Zweig gekommen, wie ich die Anlage über den ioBroker schalten kann.
                Also beispielsweise Pumpe/Kessel aus oder VL-Temperatur-Erhöhung.

                A 1 Antwort Letzte Antwort
                0
                • S solar-robert

                  @amandus99 said in [Projekt] ETA Heizung:

                  @smarttux
                  Mach es über ein Skript. Das funktioniert wunderbar über den iobroker. Kannst damit auch steuernd eingreifen wenn du unbedingt magst

                  Könntest du bitte dein funktionierendes Skript teilen?
                  Ich bin leider auf noch einen grünen Zweig gekommen, wie ich die Anlage über den ioBroker schalten kann.
                  Also beispielsweise Pumpe/Kessel aus oder VL-Temperatur-Erhöhung.

                  A Offline
                  A Offline
                  amandus99
                  schrieb am zuletzt editiert von
                  #53

                  @solar-robert

                  klar schau es dir an, habe zB einen Datenpunkt mit dem ich die Zirkulation vom FWM an und ausschalten kann

                  var http = require('http');
                  var xpath = require('xpath');
                  var dom = require('xmldom').DOMParser;
                  
                  var etaIP = 'http://192.168.10.82:8080/user/var';
                  
                  	// 1. URI
                  	// 2. iobroker Object
                  	// 3. read
                  	// 4. write
                  	// 5. name
                  	// 6. type
                  	// 7. unit
                  	// 8. role
                  	// 9. CCU variable (optional)
                  var etaVars = [
                  	 ["/120/10601/0/11327/0",		"eta.Puffer.oben",				    true, false, "Puffer oben",						"string",	"°C",		"value.temperature",    ""]
                      ,["/120/10601/0/11328/0",		"eta.Puffer.mitte",				    true, false, "Puffer mitte",					"string",	"°C",		"value.temperature",    ""]
                      ,["/120/10601/0/11329/0",		"eta.Puffer.unten",				    true, false, "Puffer unten",					"string",	"°C",		"value.temperature",    ""]
                      ,["/120/10601/0/0/12528",		"eta.Puffer.ladezustand",		    true, false, "Puffer Ladezustand",				"number",	"%",		"state",    ""] 
                      
                      ,["/120/10101/0/11125/2120",	"eta.HK.vorlauf",		            true, false, "Heizkreis Vorlauf Soll Temp",		"number",	"°C",		"value.temperature",    ""] 
                      ,["/120/10101/0/11125/2121",	"eta.HK.vorlaufIst",		        true, false, "Heizkreis Vorlauf Ist Temp",		"number",	"°C",		"value.temperature",    ""] 
                     
                    
                      ,["/40/10021/0/0/12153",		"eta.kessel.vollast",			    true, false, "Kessel Vollaststunden",			"string",	"",		    "state",                ""]
                  	,["/40/10021/0/0/12016",		"eta.kessel.verbrauch",			    true, false, "Kessel Gesmtverbrauch",			"number",	"kg",		"state",                ""]
                  	,["/40/10021/0/0/12013",		"eta.kessel.aschebox",			    true, false, "Kessel Verbrauch seit Aschebox",	"number",	"kg",		"state",                ""]
                  	,["/40/10021/0/0/12180",		"eta.kessel.druck",				    true, false, "Kessel Druck",					"number",	"bar",		"state",                ""]
                  	,["/40/10021/0/0/12001",		"eta.kessel.soll",				    true, false, "Kessel Soll",						"number",	"°C",		"state",                ""]
                  	,["/40/10021/0/0/12161",		"eta.kessel.ist",				    true, false, "Kessel Ist",						"number",	"°C",		"state",                ""]
                  	,["/40/10021/0/0/12162",		"eta.kessel.abgasgtemp",		    true, false, "Kessel Abgastemperatur",			"number",	"°C",	    "state",                ""]
                  	,["/40/10021/0/0/12165",		"eta.kessel.abgasgeblaese",		    true, false, "Kessel Abgasgebläse",				"number",	"U/min",	"state",                ""]
                  	,["/40/10021/0/0/12164",		"eta.kessel.restsauerstoff",	    true, false, "Kessel Restsauerstoff",			"number",	"%",		"state",                ""]
                  	,["/40/10021/0/0/12080",		"eta.kessel.zustand",			    true, false, "Kessel Zustand",					"string",	"",			"state",                ""]
                      ,["/40/10021/0/0/12077",		"eta.kessel.angeforderteLeistung",	true, false, "Kessel angeforderte Leistung",	"number",	"kW",		"state",                ""]
                  	
                  	,["/40/10201/0/0/12015",		"eta.lager.silo",				    true, false, "Pellets Silo",					"number",	"kg",		"state",                ""]
                  	,["/40/10021/0/0/12011",		"eta.lager.tag",				    true, false, "Pellets Tagesbehälter",			"number",	"kg",		"state",                ""]
                  	,["/120/10601/0/0/12197",		"eta.system.aussentemperatur",	    true, false, "Aussentemperatur",				"number",	"°C",		"state",                ""]
                  
                      ,["/79/10531/0/11137/2001",		"eta.FWM.Zirkulation",	            true, false, "Anforderung Zirkulation",			"string",	"",		    "state",                ""]
                      
                      ,["/120/10101/0/11125/2001",	"eta.FBH.HKmischerAnforderung",	    true, false, "Anforderung Heizkreismischer",	"string",	"",		    "state",                ""]
                      ,["/120/10101/0/11125/2120",	"eta.FBH.HKmischerSoll",	        true, false, "Soll Temp Heizkreismischer",	    "number",	"°C",		"value.temperature",    ""]
                      ,["/120/10101/0/11125/2121",	"eta.FBH.HKmischerIst",	            true, false, "Ist Temp Heizkreismischer",	    "number",	"°C",		"value.temperature",    ""]
                      ,["/120/10101/0/11125/2002",	"eta.FBH.HKmischerZustand",	        true, false, "Zustand Heizkreismischer",	    "string",	"",		    "state",                ""]
                      ,["/120/10101/0/11125/2127",	"eta.FBH.HKmischerPosition",	    true, false, "Position Heizkreismischer",	    "number",	"%",	    "value.percent",        ""]
                      ,["/120/10101/0/11125/2124",	"eta.FBH.Laufzeit",	                true, false, "Laufzeit Heizkreismischer",	    "number",	"s",		"",           ""]
                      ,["/120/10101/0/11125/0",	    "eta.FBH.HKpumpeAusgang",	        true, false, "Heizkreispumpe Ausgang",	        "number",	"°C",		"value.temperature",    ""]
                      ,["/120/10101/0/11125/2001",	"eta.FBH.HKpumpeAnforderung",       true, false, "Heizkreispumpe Anforderung",      "string",	"",		    "state",                ""]
                      
                      
                  ///79/10531/12175/0/1109 Alternative
                      
                  ];
                  
                  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("*/5 * * * *", function () {
                      pollETA();
                  });
                  schedule("0 0 * * *", function () {
                      checkLager();
                  });
                  
                  pollETA();
                  
                  
                  //var lagerAlt = getState('javascript.0.eta.lager.silo').val;
                  //deleteState("javascript.0.eta.lager.verbrauch");
                  
                  //createState("javascript.0.eta.lager.verbrauch",0,{name:'Lager Tagesverbrauch', type: 'number', unit: 'kg', role:'state'});
                  //createState("javascript.0.eta.lager.alt",LagerAlt,{name:'Lager TempAlt', type: 'number', unit: 'kg', role:'state'});
                  //createState("javascript.0.eta.lager.Resttage",-1,{name:'Lager Anzahl Tage', type: 'number', unit: 'days', role:'state'});
                  //createState("javascript.0.eta.lager.letzterTag",-1,{name:'Lager Letzter Tag mit Pellets', type: 'string', unit: '', role:'state'});
                  
                  //setState("javascript.0.eta.lager.alt", LagerAlt, true/*ack*/);
                  //var LagerNeu = checkLager(LagerAlt);
                  //checkLager();
                  
                  
                  function debugOutput(){
                      var akt = getState('javascript.0.eta.lager.silo').val;
                      var verbrauch = getState("javascript.0.eta.lager.verbrauch").val;
                      var restTage = 0;
                      restTage = Math.round(akt/verbrauch)
                  
                      log("## Aktuelle Verbrauswerte ##");
                      log("----------------------------");
                      log("Lager akt: " + akt);
                      log("Lager verbrauch: " + verbrauch);
                      var ungerundet = akt/verbrauch;
                      log("ungerundet: " +ungerundet);
                      log("restTage " + restTage);
                      var someDate = new Date();
                  
                      var numberOfDaysToAdd = restTage;
                      someDate.setDate(someDate.getDate() + numberOfDaysToAdd); 
                      var endOfPellets = formatDate(someDate, "DD.MM.YYYY");
                      log("endofPellets: " + endOfPellets);
                  
                      setState("javascript.0.eta.lager.letzterTag", endOfPellets, true);
                      setState("javascript.0.eta.lager.Resttage", restTage, true);
                  }
                  
                  //debugOutput();
                  
                  
                  
                  function checkLager(){
                      var lagerAlt = getState('javascript.0.eta.lager.alt').val;
                      //var LagerAlt = getState('javascript.0.eta.lager.silo').val;
                      var akt = getState('javascript.0.eta.lager.silo').val;
                      log("** Aktuelle Verbrauswerte **");
                      log("----------------------------");
                      log("Lager alt: " + lagerAlt);
                      log("Lager aktuell: " + akt);
                      var verbrauch = lagerAlt - akt;
                      //var verbrauch = getState("javascript.0.eta.lager.verbrauch").val;
                  
                      // edit back after debug
                      setState("javascript.0.eta.lager.verbrauch", verbrauch, true/*ack*/);
                      setState("javascript.0.eta.lager.alt", akt, true/*ack*/);
                      
                      log("Verbrauch: " + verbrauch);
                      
                     
                      
                      var restTage = 0;
                      restTage = Math.round(akt/verbrauch);
                      var ungerundet = akt/verbrauch;
                      var someDate = new Date();
                      var numberOfDaysToAdd = restTage;
                      someDate.setDate(someDate.getDate() + numberOfDaysToAdd); 
                      var endOfPellets = formatDate(someDate, "DD.MM.YYYY");
                      setState("javascript.0.eta.lager.letzterTag", endOfPellets, true);
                      setState("javascript.0.eta.lager.Resttage", restTage, true);
                      
                      log("end of pellets" + endOfPellets);
                      
                      lagerAlt = akt;
                      
                  }
                  
                  //checkLager();
                  
                  function pollETA() {
                      // 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;
                  				// log("** ETA chunk: " + chunk);
                  			});
                  
                  			// this event fires *one* time, after all the `data` events/chunks have been gathered
                  			http_res.on("end", function () {
                  				// log("** ETA data: " + data);
                  
                  				try {
                  					var doc = new dom().parseFromString(data);
                  					var select = xpath.useNamespaces({"eta": "http://www.eta.co.at/rest/v1"});
                  
                  					var strValue    = (select('//eta:value/@strValue',    doc)[0].nodeValue);
                  					var text        = (select('//eta:value/text()',       doc)[0].nodeValue);
                  					var scaleFactor = (select('//eta:value/@scaleFactor', doc)[0].nodeValue);
                  					var unit        = (select('//eta:value/@unit',        doc)[0].nodeValue);
                                      var value       = "";
                                      
                  					
                                      
                  					
                  
                                      //change Aus to false, An to true for Zirkulation
                                      if (etaVar[0] == "/79/10531/0/11137/2001"){
                                          if (strValue == "Aus"){
                                              strValue = "false";
                                          }
                                          else
                                              strValue = "true";
                                      }
                                      if (etaVar[5]=="number") {
                  						value = text * 1.0 / scaleFactor;
                  					} else {
                  						value = strValue;
                  					}
                  
                  
                  					setState(etaVar[1], value, true);
                  
                  				}
                  				catch (e) {
                  					log("ETA: Cannot set data "+ etaVar[2] +":" + e, 'error');
                  				}
                  			});
                  		});
                  	});
                  	
                  
                  }
                  
                  1 Antwort Letzte Antwort
                  0
                  • K Kapsville

                    @gmbh07 said in [Projekt] ETA Heizung:

                    @rille06 Hallo, ich habe da mit dem Modus Adapter versucht komme aber nicht weiter, hast du vielleicht eine kleine Übersicht deiner Einstellungen? Es springt bei mir immer wie auf denn Fotos hin und her und ich habe keine Werte.
                    Bildschirmfoto 2022-08-02 um 11.06.51.png Bildschirmfoto 2022-08-02 um 11.06.45.png

                    Habe auch dieses Problem. @gmbh07 konntest du das Problem in der Zwischenzeit lösen?

                    frischF Offline
                    frischF Offline
                    frisch
                    schrieb am zuletzt editiert von
                    #54

                    @kapsville
                    Hi hab auch dieses Problem...
                    Gibt es eine Lösung?
                    LG
                    Friedrich

                    1 Antwort Letzte Antwort
                    0
                    • T tcfigge

                      @tcfigge Nach Downgrade auf Javascriptadapter 6.0 läuft es erstmal wieder... ?!?!?

                      frischF Offline
                      frischF Offline
                      frisch
                      schrieb am zuletzt editiert von
                      #55

                      @tcfigge
                      Hi ich komme nur auf 6.0.1 zurück. Gibt es eine Möglichkeit auf 6.0 zu kommen bzw. 5.x? Vielen Dank für eure Hilfe..
                      LG Friedrich

                      T 1 Antwort Letzte Antwort
                      0
                      • frischF frisch

                        @tcfigge
                        Hi ich komme nur auf 6.0.1 zurück. Gibt es eine Möglichkeit auf 6.0 zu kommen bzw. 5.x? Vielen Dank für eure Hilfe..
                        LG Friedrich

                        T Offline
                        T Offline
                        tcfigge
                        schrieb am zuletzt editiert von
                        #56

                        @frisch
                        Hi!
                        Ich habe das über die Expertenfunktion in der Adapterinstallation gemacht...
                        Da gab es die 6.0.0 noch. :man-shrugging:

                        Ist das Problem wohl schon bekannt und auf dem Weg der Lösung?

                        frischF 1 Antwort Letzte Antwort
                        0
                        • T tcfigge

                          @frisch
                          Hi!
                          Ich habe das über die Expertenfunktion in der Adapterinstallation gemacht...
                          Da gab es die 6.0.0 noch. :man-shrugging:

                          Ist das Problem wohl schon bekannt und auf dem Weg der Lösung?

                          frischF Offline
                          frischF Offline
                          frisch
                          schrieb am zuletzt editiert von
                          #57

                          @tcfigge
                          Danke für die Info. Ich hab gestern ein paar Module installiert..
                          npm install date-format, npm install node-fetch@3.0.0, npm install xmldom, npm install xpath,
                          diese dann irgendwie eingetragen
                          11b35b1a-a5f9-4775-ae05-833cb71870b0-image.png

                          Jetzt bekomme ich die Werte.
                          Das Script meldet aber noch ein paar Fehlermeldungen (aber es läuft)...

                          PS: bin blutiger Anfänger...

                          1 Antwort Letzte Antwort
                          0
                          • KH OstnerK Offline
                            KH OstnerK Offline
                            KH Ostner
                            schrieb am zuletzt editiert von
                            #58

                            @amandus99
                            Hallo, gibt es auch eine Möglichkeit eine einzelne Pumpe aus und einzuschalten über ein Skript.
                            Wenn ich den Wert unter Objekte ändere, dass dieser dann auch an die ETA Heizung übertragen wird.
                            Beispiel: "Kollektorpumpe 1" von 0% auf 100%

                            Werde leider aus deinem Skript nicht Schlau wie ich das anwenden kann :man-shrugging:

                            M 1 Antwort Letzte Antwort
                            0
                            • KH OstnerK KH Ostner

                              @amandus99
                              Hallo, gibt es auch eine Möglichkeit eine einzelne Pumpe aus und einzuschalten über ein Skript.
                              Wenn ich den Wert unter Objekte ändere, dass dieser dann auch an die ETA Heizung übertragen wird.
                              Beispiel: "Kollektorpumpe 1" von 0% auf 100%

                              Werde leider aus deinem Skript nicht Schlau wie ich das anwenden kann :man-shrugging:

                              M Offline
                              M Offline
                              merlinfive
                              schrieb am zuletzt editiert von
                              #59

                              Ich habe auch mal das Script genommen und bekomme zwar Werte aber habe auch reichlich Fehlermeldungen

                              3e300e89-2c56-44ff-934f-04be49d2cad5-image.png

                              auch stimmen einige Infos nicht z.B. Ein [heizen]
                              4697c7b1-1527-4022-9863-962136ac9e98-image.png

                              ich lese die Werte parallel mit dem parser aus dort sind sie richtig
                              dc784e10-4079-4f06-a1ee-1cc0a272616c-image.png

                              any hints ?

                              C 1 Antwort Letzte Antwort
                              0
                              • M merlinfive

                                Ich habe auch mal das Script genommen und bekomme zwar Werte aber habe auch reichlich Fehlermeldungen

                                3e300e89-2c56-44ff-934f-04be49d2cad5-image.png

                                auch stimmen einige Infos nicht z.B. Ein [heizen]
                                4697c7b1-1527-4022-9863-962136ac9e98-image.png

                                ich lese die Werte parallel mit dem parser aus dort sind sie richtig
                                dc784e10-4079-4f06-a1ee-1cc0a272616c-image.png

                                any hints ?

                                C Offline
                                C Offline
                                CaneTLOTW
                                schrieb am zuletzt editiert von
                                #60

                                @merlinfive

                                Bist du weitergekommen?

                                Ich schaue mir auch gerade die Integration an und wäre für eine verbesserte Lösung dankbar ;)
                                Kannst du die Konfiguration des Parsers teilen?

                                1 Antwort Letzte Antwort
                                0
                                • H Herry

                                  @catnipper
                                  ich habe mich an deinen Adapter versucht und nach ein paar Änderungen läuft er sehr gut. Trotzdem sind noch ein paar "undefinierbare" Fehler vorhanden, was aber komischerweise nicht am Ergebnis zur Erzeugung der Daten beiträgt.
                                  Ich denke auch, das hat mit dem jeweiligen System und dessen Software zu tun.
                                  Bei mir läuft das ganze auf einem Raspberry 4, 4 GB Ram problemlos und schnell.

                                  ETA_VIS.jpg

                                  Realisiert habe ich das über ioBroker und Vis. Die Darstellung ist sehr einfach gehalten, da der Monitor im Hausgang hängt und für jeden verständlich sein soll.
                                  Hier noch die Anpassungen am Script:

                                  Script.jpg

                                  Zur Visualisierung läuft auf dem Raspberry auch noch Magic Mirror 2 und das sieht dann so aus:

                                  MM-Display_cplt.jpg

                                  Vielen Dank für deine großartige Arbeit mit dem Adapter !

                                  C Offline
                                  C Offline
                                  CaneTLOTW
                                  schrieb am zuletzt editiert von
                                  #61

                                  @herry

                                  Ich schließe mich der Frage mal!
                                  Wäre ein super Startpunkt, bevor man kompltte von 0 anfangen muss :)

                                  1 Antwort Letzte Antwort
                                  0
                                  • K Kapsville

                                    @gmbh07 said in [Projekt] ETA Heizung:

                                    @rille06 Hallo, ich habe da mit dem Modus Adapter versucht komme aber nicht weiter, hast du vielleicht eine kleine Übersicht deiner Einstellungen? Es springt bei mir immer wie auf denn Fotos hin und her und ich habe keine Werte.
                                    Bildschirmfoto 2022-08-02 um 11.06.51.png Bildschirmfoto 2022-08-02 um 11.06.45.png

                                    Habe auch dieses Problem. @gmbh07 konntest du das Problem in der Zwischenzeit lösen?

                                    R Offline
                                    R Offline
                                    Rille06
                                    schrieb am zuletzt editiert von
                                    #62

                                    @kapsville
                                    sry das ich jetzt erst antworte.
                                    Du musst für ModBus TCP an der Heizung entsprechend werte "freigeben" und Adressieren.
                                    unten Links auf die Werkzeugkiste -> Berechtigung -> 135 "Enter"
                                    Danach über die Parameterliste einzeln alle werte die du willst via Zahnradsymbol -> MusdBus/TCP -> Register zuweisen
                                    Oben Links und in der Info (falls vorhanden) stehen allgemeine Infos dazu, ist relativ selbsterklärend.
                                    Idr sind alles Signed 32 bit (Big Endian) oder Unsigned 32 bit (Big Endian) als Datentyp.
                                    Dann eben alle Register im ModBus Adapter entsprechend eintragen.

                                    An der ETA hab ich das über VNC Viewer gemacht.
                                    Funktioniert bei mir schon lange problemlos.

                                    C K 2 Antworten Letzte Antwort
                                    0
                                    • R Rille06

                                      @kapsville
                                      sry das ich jetzt erst antworte.
                                      Du musst für ModBus TCP an der Heizung entsprechend werte "freigeben" und Adressieren.
                                      unten Links auf die Werkzeugkiste -> Berechtigung -> 135 "Enter"
                                      Danach über die Parameterliste einzeln alle werte die du willst via Zahnradsymbol -> MusdBus/TCP -> Register zuweisen
                                      Oben Links und in der Info (falls vorhanden) stehen allgemeine Infos dazu, ist relativ selbsterklärend.
                                      Idr sind alles Signed 32 bit (Big Endian) oder Unsigned 32 bit (Big Endian) als Datentyp.
                                      Dann eben alle Register im ModBus Adapter entsprechend eintragen.

                                      An der ETA hab ich das über VNC Viewer gemacht.
                                      Funktioniert bei mir schon lange problemlos.

                                      C Offline
                                      C Offline
                                      CaneTLOTW
                                      schrieb am zuletzt editiert von CaneTLOTW
                                      #63

                                      @rille06

                                      Ich komme mit modbus auch nicht weiter, kannst du dir das hier mal anschauen.
                                      Irgendwas musst du anders/besser gemacht haben:

                                      https://github.com/ioBroker/ioBroker.modbus/issues/388

                                      R 1 Antwort Letzte Antwort
                                      0
                                      • C CaneTLOTW

                                        @rille06

                                        Ich komme mit modbus auch nicht weiter, kannst du dir das hier mal anschauen.
                                        Irgendwas musst du anders/besser gemacht haben:

                                        https://github.com/ioBroker/ioBroker.modbus/issues/388

                                        R Offline
                                        R Offline
                                        Rille06
                                        schrieb am zuletzt editiert von
                                        #64

                                        @canetlotw
                                        Moin,
                                        ist der verlinkte Post von dir selbst?
                                        Das dabei beschriebene Problem liegt nicht an Iobroker sondern an der ETA Firmware.
                                        Wegen diesem Problem war ich vor ca einem Jahr schon mit ETA Selbst in Kontakt, Offiziell wurde der Fehler nicht behoben,
                                        bei einem Bekannten hat es dann aber mit einem Firmware update dennoch geklappt.
                                        Mit dem Haken bei "aliases" erwartet der Modbus-Adapter strickte Einhaltung der Adressbereiche, ETA liefert aber ab einem gewissen
                                        Bereich keine Sinnvollen daten mehr.
                                        Ich würde also mal auf eine Aktuelle Version Updaten, falls das nicht schon der fall ist.

                                        Bedeutet für dich, du musst den Hacken bei aliases raus machen.
                                        Bei deiner Heizung dann mit Adresse 1000 beginnend einfach alle werte nacheinander Aktivieren und eben im Modbus Adapter entsprechend eintragen.
                                        ETA-Modbus.png

                                        Ich meine auch, dass der Abfrage Intervall zu kurz ist, ich habe bei mir 5sec drin, ich meine ein zu kurzer Intervall hat ebenfalls zu Problemen geführt,
                                        dabei bin ich mir aber nicht mehr ganz sicher.

                                        1 Antwort Letzte Antwort
                                        0
                                        • T Offline
                                          T Offline
                                          tcfigge
                                          schrieb am zuletzt editiert von
                                          #65

                                          Hallo!

                                          In einem anderen Thread hat mir jemand geholfen, die Probleme mit dem Script zu beheben.

                                          Fehler war in der DOMParser Zeile 3 und einer in der log Zeile 117

                                          Hier jetzt die funktionierende Version:

                                          var http = require('http');
                                          var xpath = require('xpath');
                                          var dom = require('@xmldom/xmldom').DOMParser;
                                          var objectInstanz = '0_userdata.0.Heizung.';
                                          
                                          var etaIP = 'http://192.168.100.220:8080/user/var';
                                          
                                          	// 1. URI
                                          	// 2. iobroker Object
                                          	// 3. read
                                          	// 4. write
                                          	// 5. name
                                          	// 6. type
                                          	// 7. unit
                                          	// 8. role
                                          	// 9. CCU variable (optional)
                                          var etaVars = [
                                          	 ["/120/10251/0/0/12242",		"eta.puffer.oben",				true, false, "Puffer oben",						"number",	"°C",		"value.temperature",    ""]
                                          	,["/120/10251/0/0/12244",		"eta.puffer.unten",				true, false, "Puffer unten",					"number",	"°C",		"value.temperature",    ""]
                                          	,["/120/10251/0/0/12522",		"eta.puffer.mitte",	 		   	true, false, "Puffer mitte",					"number",	"°C",		"value.temperature",    ""]
                                          	,["/120/10251/0/0/12533",		"eta.puffer.leistung",			true, false, "Puffer Leistung",					"number",	"KW",		"state",                ""]
                                          	,["/120/10251/12130/0/1109",	"eta.puffer.zustand",			true, false, "Puffer Zustand",					"string",	"",			"state",                ""]
                                          	
                                          	,["/120/10101/0/0/12080",	    "eta.hk.1.zustand",				true, false, "Heizkreis Zustand",				"string",	"",			"state",                ""]
                                          	,["/120/10101/0/0/19391",	    "eta.hk.1.info",				true, false, "Heizkreis Info",		     		"string",	"",			"state",                ""]
                                              ,["/120/10101/0/0/12241",		"eta.hk.1.vorlauf",				true, false, "Heizkreis Vorlauf",				"number",	"°C",		"value.temperature",    ""]
                                          	,["/120/10101/0/0/12111",		"eta.hk.1.heizkurve",			true, false, "Heizkreis Heizkurve",				"number",	"°C",		"value.temperature",    ""]
                                          	,["/120/10101/0/11124/0",		"eta.hk.1.pumpe",				true, false, "Heizkreis Pumpe",					"string",	"",			"state",                ""]
                                          	,["/120/10101/0/11124/2001",	"eta.hk.1.anforderung",			true, false, "Heizkreis Anforderung",			"string",	"",			"state",                ""]
                                          	
                                          	,["/40/10021/0/0/19402",		"eta.kessel.aktion",			true, false, "Kessel",      					"string",	"",			"state",                ""]
                                          	,["/40/10021/0/11123/2002",		"eta.kessel.pumpe",		     	true, false, "Kesselpumpe",      				"string",	"",			"state",                ""]
                                              ,["/40/10021/0/0/12153",		"eta.kessel.vollast",			true, false, "Kessel Vollaststunden",			"string",	"",		    "state",                ""]
                                          	,["/40/10021/0/0/12016",		"eta.kessel.verbrauch",			true, false, "Kessel Gesamtverbrauch",			"number",	"kg",		"state",                ""]
                                          	,["/40/10021/0/0/12013",		"eta.kessel.aschebox",			true, false, "Kessel Verbrauch seit Aschebox",	"number",	"kg",		"state",                ""]
                                          	,["/40/10021/0/0/12180",		"eta.kessel.druck",				true, false, "Kessel Druck",					"number",	"bar",		"state",                ""]
                                          	,["/40/10021/0/0/12001",		"eta.kessel.soll",				true, false, "Kessel Soll",						"number",	"°C",		"state",                ""]
                                          	,["/40/10021/0/0/12161",		"eta.kessel.ist",				true, false, "Kessel Ist",						"number",	"°C",		"state",                ""]
                                          	,["/40/10021/0/0/12162",		"eta.kessel.abgasgtemp",		true, false, "Kessel Abgastemperatur",			"number",	"°C",	    "state",                ""]
                                          	,["/40/10021/0/0/12165",		"eta.kessel.abgasgeblaese",		true, false, "Kessel Abgasgebläse",				"number",	"U/min",	"state",                ""]
                                          	,["/40/10021/0/0/12164",		"eta.kessel.restsauerstoff",	true, false, "Kessel Restsauerstoff",			"number",	"%",		"state",                ""]
                                          	,["/40/10021/0/0/12080",		"eta.kessel.zustand",			true, false, "Kessel Zustand",					"string",	"",			"state",                ""]
                                          	
                                          	,["/40/10201/0/0/12015",		"eta.lager.silo",				true, false, "Pellets Silo",					"number",	"kg",		"state",                ""]
                                          	,["/40/10021/0/0/12011",		"eta.lager.tag",				true, false, "Pellets Tagesbehälter",			"number",	"kg",		"state",                ""]
                                          	,["/40/10241/0/0/12197",		"eta.system.aussentemperatur",	true, false, "Aussentemperatur",				"number",	"°C",		"state",                ""]
                                          ];
                                          
                                          etaVars.forEach(function(etaVar){
                                              createState(objectInstanz + etaVar[1], 0, {
                                                  read:  etaVar[2],
                                                  write: etaVar[3],
                                                  name:  etaVar[4],
                                                  type:  etaVar[5],
                                                  unit:  etaVar[6],
                                                  role:  etaVar[7]
                                              });
                                          });
                                          
                                          schedule("*/7 * * * *", 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 strValue    = (select('//eta:value/@strValue',    doc)[0].nodeValue);
                                          					var text        = (select('//eta:value/text()',       doc)[0].nodeValue);
                                          					var scaleFactor = (select('//eta:value/@scaleFactor', doc)[0].nodeValue);
                                          					var unit        = (select('//eta:value/@unit',        doc)[0].nodeValue);
                                                              var value       = "";
                                                              
                                          					if (etaVar[5]=="number") {
                                          						value = text * 1.0 / scaleFactor;
                                          					} else {
                                          						value = strValue;
                                          					}
                                          
                                          					/* console.log("**** ETA " + etaVar[0] + " @strValue:    " + strValue);
                                          					console.log("**** ETA " + etaVar[0] + " @unit:        " + unit);
                                          					console.log("**** ETA " + etaVar[0] + " text()  :     " + text);
                                          					console.log("**** ETA " + etaVar[0] + " @scaleFactor: " + scaleFactor);
                                          					console.log("** ETA [" + etaVar[4] + "]: " + value + " " + unit); */
                                          
                                          					setState(objectInstanz + etaVar[1], value, true);
                                          					
                                          
                                          				}
                                          				catch (e) {
                                          					log("ETA: Cannot set data "+ etaVar[2] +":" + e, 'error');
                                          				}
                                          			});
                                          		});
                                          	});
                                              log(formatDate(new Date(), "DD. O YYYY hh:mm"), "info");
                                          }
                                          

                                          Vielleicht hilft es jemandem....

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          702

                                          Online

                                          32.5k

                                          Benutzer

                                          81.8k

                                          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