Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. [Projekt] ETA Heizung

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Projekt] ETA Heizung

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Herry @catnipper last edited by 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 frisch C 3 Replies Last reply Reply Quote 0
      • T
        tcfigge last edited by

        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 Replies Last reply Reply Quote 0
        • T
          tcfigge @tcfigge last edited by

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

          frisch 1 Reply Last reply Reply Quote 0
          • T
            tcfigge @Herry last edited by

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

            1 Reply Last reply Reply Quote 0
            • J
              JoschiP @tcfigge last edited by

              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 Reply Last reply Reply Quote 0
              • frisch
                frisch @Herry last edited by

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

                1 Reply Last reply Reply Quote 0
                • K
                  Kapsville @gmbh07 last edited by

                  @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?

                  frisch R 2 Replies Last reply Reply Quote 0
                  • S
                    solar-robert @amandus99 last edited by

                    @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 Reply Last reply Reply Quote 0
                    • A
                      amandus99 @solar-robert last edited by

                      @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 Reply Last reply Reply Quote 0
                      • frisch
                        frisch @Kapsville last edited by

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

                        1 Reply Last reply Reply Quote 0
                        • frisch
                          frisch @tcfigge last edited by

                          @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 Reply Last reply Reply Quote 0
                          • T
                            tcfigge @frisch last edited by

                            @frisch
                            Hi!
                            Ich habe das über die Expertenfunktion in der Adapterinstallation gemacht...
                            Da gab es die 6.0.0 noch. 🤷‍♂️

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

                            frisch 1 Reply Last reply Reply Quote 0
                            • frisch
                              frisch @tcfigge last edited by

                              @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 Reply Last reply Reply Quote 0
                              • KH Ostner
                                KH Ostner last edited by

                                @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 🤷‍♂️

                                M 1 Reply Last reply Reply Quote 0
                                • M
                                  merlinfive @KH Ostner last edited by

                                  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 Reply Last reply Reply Quote 0
                                  • C
                                    CaneTLOTW @merlinfive last edited by

                                    @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 Reply Last reply Reply Quote 0
                                    • C
                                      CaneTLOTW @Herry last edited by

                                      @herry

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

                                      1 Reply Last reply Reply Quote 0
                                      • R
                                        Rille06 @Kapsville last edited by

                                        @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 Replies Last reply Reply Quote 0
                                        • C
                                          CaneTLOTW @Rille06 last edited by 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

                                          harman-f created this issue in ioBroker/ioBroker.modbus

                                          open ETA PU7 - pelet heating | Holding register #1000 not working #388

                                          R 1 Reply Last reply Reply Quote 0
                                          • R
                                            Rille06 @CaneTLOTW last edited by

                                            @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 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            968
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            27
                                            77
                                            13913
                                            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