Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Adapter für Buderus KM200 (und eventuell auch anderen KMxxx)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Adapter für Buderus KM200 (und eventuell auch anderen KMxxx)

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

      Hi,

      kurze zwischenfrage:

      was beudeutet das denn jetzt?

      habe ich bei einigen datenpunkten

      km200.0	2019-11-13 10:02:50.315	info	Update { 'recordings.heatSources.actualCHPower._Hours':{ type: 'state',id: 'recordings.heatSources.actualCHPower._Hours',common:{ id: 'recordings.heatSources.actualCHPower._Hours',name: 'recordings.h
      km200.0	2019-11-13 10:02:49.987	info	Update { 'recordings.heatSources.actualCHPower._Hours':{ type: 'state',id: 'recordings.heatSources.actualCHPower._Hours',common:{ id: 'recordings.heatSources.actualCHPower._Hours',name: 'recordings.h
      km200.0	2019-11-13 10:02:49.465	warn	Set KM200 err: 'request for http://192.168.178.35/recordings/heatSources/actualDHWPower/_Hours had status 404/Not Found other than supported 200,204'
      km200.0	2019-11-13 10:02:49.159	info	Update { 'recordings.dhwCircuits.dhw1.actualTemp._Hours':{ type: 'state',id: 'recordings.dhwCircuits.dhw1.actualTemp._Hours',common:{ id: 'recordings.dhwCircuits.dhw1.actualTemp._Hours',name: 'record
      
      T 1 Reply Last reply Reply Quote 0
      • T
        tp1de @jmeister79 last edited by tp1de

        @jmeister79
        Nils, das ist leider beim IP-Adapter eine der Schwächen. Der Adapter macht regelmäßig bei Netzwerkabfragen zu, d.h. er beantwortet http-requests mit 404er Fehlern. Bei meinen Scripts versuche ich das bis zu 3 Mal hintereinander - trotzdem funktioniert dies 2 bis 3 Mal am Tag nicht und ich bekomme 404er Fehler zurück . Da ich alle 30 Sekunden abfrage ist das nicht so relevant, bei minimal 5 Minuten für fast-refresh meim km200-Adapter schon. Das war für mich das KO-Kriterium für den Adapter und ich bin auf JS-Skripts umgestiegen.

        Auf meiner Longlist steht das direkte Lesen der RS485 Schnittstelle analog der RC310 Bedieneinheit.....

        Grüße Thomas

        jmeister79 2 Replies Last reply Reply Quote 0
        • jmeister79
          jmeister79 @tp1de last edited by

          @tom57 danke für die antwort.

          nochmal zum vebrauch. die letzten werte des array sind die aktuellsten. warum auch immer. kommt man mit slice gut ran

          Mal so unter uns: die Umsetzung von Buderus was die datenpunkte, und datenverwaltung usw angeht ist gruselig...

          Nils

          1 Reply Last reply Reply Quote 0
          • jmeister79
            jmeister79 @tp1de last edited by

            @tom57 jetzt weiß ich was du mit den updates meinst.

            ich hatte schon ne ahnung, dass sich ständig was ändert.

            die recordings waren im Format [Wert,Wert,wert]

            wobei das letzte immer das aktuellese war.

            hab daraufhin mit string.replace die klammern und eventuelle leerzeichen entfernt. seit 16:00 sind die klammern weg und string replace führt zu nem Fehler, da es ja nun ein array of number ist.

            kopfschüttel

            1 Reply Last reply Reply Quote 0
            • F
              fisch last edited by

              so das klingt ja alles sehr spannend....aber muss nochmal fragen...wie kann ich den Gasverbrauch berechnen bzw. direkt aus dem Adapter entnehmen und eventuell nach NodeRed senden.

              jmeister79 1 Reply Last reply Reply Quote 0
              • jmeister79
                jmeister79 @fisch last edited by

                @fisch ich hätte jetzt erwartet, dass du die Gesamtleistung aufzeichnest und mithilfe von Brennwert und Zustandszahl auf den m³ Verbrauch kommst

                Gasmenge (m³) * Brennwert * Zustandszahl = Arbeit (kWh).

                Die Werte kriegst Du vom Versorger, bzw stehen auf der Rechnung
                Nils

                F 1 Reply Last reply Reply Quote 0
                • F
                  fisch @jmeister79 last edited by

                  @jmeister79

                  ok, danke... für deine Antwort !!!

                  Aber so ganz klar ist mir das nicht, auf welche Werte ich in IoBroker zurückgreifen soll...

                  sorry für meine doofen Fragen ...

                  jmeister79 1 Reply Last reply Reply Quote 0
                  • jmeister79
                    jmeister79 @fisch last edited by

                    @fisch dafür sind Foren doch da 😉

                    ich hab es ganz anders gemacht wie tom:

                    ich habe für den aktuellen Tag jeweils das letzte Element des Arrays

                    km200.0.recordings.heatSources.actualPower._Days
                    

                    genommen und das kannst Du umrechnen.

                    Wie Tom es gemacht hat kannst Du ende April lesen

                    F 1 Reply Last reply Reply Quote 0
                    • F
                      fisch @jmeister79 last edited by

                      @jmeister79

                      ok - was bedeutet der letzte wert genau?

                      Un wenn ich stündlich will, nehme ich da auch den letzten Wert?

                      jmeister79 1 Reply Last reply Reply Quote 0
                      • jmeister79
                        jmeister79 @fisch last edited by

                        @fisch
                        Das ist Buderus' Interpretation eines Arrays, die fügen jeden Tag (ich schätze um 0:00) einen neuen Tageswert hinten an.
                        Somit ist der letzte der aktuellste:
                        [15.2,17.3,14.5,17.0] 1z ist hier der jüngste.

                        var temp = getState('km200.0.recordings.heatSources.actualPower._Days').val;
                                temp = temp.toString().replace(/[/g, "");   //[ löschen wenn vorhanden
                                temp = temp.toString().replace(/]/g, ""); //] löschen wenn vohanden
                                temp = temp.toString().replace(/\ /g, ""); //leerzeichen löschen wenn vorhanden
                                var tempArray = temp.split(",");   //komischen pseudokram zu einem ordentlichen array machen
                                var value1 = Math.round(100*tempArray.slice(-1))/100; //letztes element: heute
                                setState('javascript.0.Heizung.Verbrauch.Energie.Daily', value1, true);// wegschreiben
                        

                        Wenn Du es für alle drei Verbrauchswerte haben willst:

                            //verbrauch heizung
                            var powertype =['actualCHPower','actualDHWPower','actualPower']
                        
                            for(var n=0; n<3; n++){
                                var temp = getState('km200.0.recordings.heatSources.'+powertype[n]+'._Days').val;
                                temp = temp.toString().replace(/[/g, "");
                                temp = temp.toString().replace(/]/g, "");
                                temp = temp.toString().replace(/\ /g, "");
                                var tempArray = temp.split(","); 
                                var value1 = Math.round(100*tempArray.slice(-1))/100; //letztes element: heute
                                var value2 = Math.round(100*tempArray.slice(-2)[0])/100; //vorletztes element: gestern
                                setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Daily', value1, true);
                                setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Yesterday', value2, true);
                                var temp = getState('km200.0.recordings.heatSources.'+powertype[n]+'._Months').val;
                                temp = temp.toString().replace(/[/g, "");
                                temp = temp.toString().replace(/]/g, "");
                                temp = temp.toString().replace(/\ /g, "");
                                var tempArray = temp.split(","); 
                                setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Monthly', parseFloat(tempArray[0]), true);
                            }
                        
                        F 1 Reply Last reply Reply Quote -1
                        • F
                          fisch @jmeister79 last edited by

                          @jmeister79

                          super erstmal vielen dank für deine Hilfe!!!

                          letze Frage , kann ich das Script einfach von hier übernehmen und in javascript adapter einfügen..oder muss nochmal etwas beachtet werden?

                          jmeister79 1 Reply Last reply Reply Quote 0
                          • jmeister79
                            jmeister79 @fisch last edited by

                            @fisch du brauchst noch die datenpunkte und musst schauen ob die bei dir so heißen.

                            F 1 Reply Last reply Reply Quote 0
                            • F
                              fisch @jmeister79 last edited by

                              @jmeister79

                              so super skripte laufen... aber es sind lediglich diese zwei Datenpunkte angelegt. Kommt das andere dann noch?

                              Bildschirmfoto 2019-11-16 um 12.57.53.png

                              1 Reply Last reply Reply Quote 0
                              • jmeister79
                                jmeister79 last edited by jmeister79

                                das muss noch in das zweite script:

                                createState("javascript.0.Heizung.Verbrauch.actualCHPower.Daily", 0.0, {name: "Verbrauch Heizkreise heute", type: 'number', unit: 'kWh'});
                                createState("javascript.0.Heizung.Verbrauch.actualCHPower.Yesterday", 0.0, {name: "Verbrauch Heizkreise gestern ", type: 'number', unit: 'kWh'});
                                createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Daily", 0.0, {name: "Verbrauch Warmwasser heute", type: 'number', unit: 'kWh'});
                                createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Yesterday", 0.0, {name: "Verbrauch Warmwasser gestern", type: 'number', unit: 'kWh'});
                                createState("javascript.0.Heizung.Verbrauch.actualPower.Daily", 0.0, {name: "Verbrauch Gesamtsystem heute", type: 'number', unit: 'kWh'});
                                createState("javascript.0.Heizung.Verbrauch.actualPower.Yesterday", 0.0, {name: "Verbrauch Gesamtsystem gestern", type: 'number', unit: 'kWh'});
                                

                                du brauchst nur eines der scripte btw

                                1 Reply Last reply Reply Quote 0
                                • F
                                  fisch last edited by fisch

                                  @jmeister79

                                  alos so dann ? Bzw. so habe ich es angelegt, States kommen aber keine ... mmm .

                                   //verbrauch heizung
                                       var powertype =['actualCHPower','actualDHWPower','actualPower']
                                    
                                       for(var n=0; n<3; n++){
                                           var temp = getState('km200.0.recordings.system.heatSources.'+powertype[n]+'._Days').val;
                                           temp = temp.toString().replace(/[/g, "");
                                           temp = temp.toString().replace(/]/g, "");
                                           temp = temp.toString().replace(/\ /g, "");
                                           var tempArray = temp.split(","); 
                                           var value1 = Math.round(100*tempArray.slice(-1))/100; //letztes element: heute
                                           var value2 = Math.round(100*tempArray.slice(-2)[0])/100; //vorletztes element: gestern
                                           setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Daily', value1, true);
                                           setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Yesterday', value2, true);
                                           var temp = getState('km200.0.recordings.heatSources.'+powertype[n]+'._Months').val;
                                           temp = temp.toString().replace(/[/g, "");
                                           temp = temp.toString().replace(/]/g, "");
                                           temp = temp.toString().replace(/\ /g, "");
                                           var tempArray = temp.split(","); 
                                           setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Monthly', parseFloat(tempArray[0]), true);
                                           createState("javascript.0.Heizung.Verbrauch.actualCHPower.Daily", 0.0, {name: "Verbrauch Heizkreise heute", type: 'number', unit: 'kWh'});
                                  createState("javascript.0.Heizung.Verbrauch.actualCHPower.Yesterday", 0.0, {name: "Verbrauch Heizkreise gestern ", type: 'number', unit: 'kWh'});
                                  createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Daily", 0.0, {name: "Verbrauch Warmwasser heute", type: 'number', unit: 'kWh'});
                                  createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Yesterday", 0.0, {name: "Verbrauch Warmwasser gestern", type: 'number', unit: 'kWh'});
                                  createState("javascript.0.Heizung.Verbrauch.actualPower.Daily", 0.0, {name: "Verbrauch Gesamtsystem heute", type: 'number', unit: 'kWh'});
                                  createState("javascript.0.Heizung.Verbrauch.actualPower.Yesterday", 0.0, {name: "Verbrauch Gesamtsystem gestern", type: 'number', unit: 'kWh'});
                                       }
                                  
                                  
                                  
                                  F 1 Reply Last reply Reply Quote 0
                                  • F
                                    fisch @fisch last edited by

                                    @fisch said in Adapter für Buderus KM200 (und eventuell auch anderen KMxxx):

                                                                                                                                                                 //verbrauch heizung                                                                                                                                                                                 var powertype =['actualCHPower','actualDHWPower','actualPower']                                                                                                                                                                                                                                                                                                                                                               for(var n=0; n<3; n++){                                                                                                                                                                                     var temp = getState('km200.0.recordings.system.heatSources.'+powertype[n]+'._Days').val;                                                                                                                                                                                     temp = temp.toString().replace(/[/g, "");                                                                                                                                                                                     temp = temp.toString().replace(/]/g, "");                                                                                                                                                                                     temp = temp.toString().replace(/\ /g, "");                                                                                                                                                                                     var tempArray = temp.split(",");                                                                                                                                                                                      var value1 = Math.round(100*tempArray.slice(-1))/100; //letztes element: heute                                                                                                                                                                                     var value2 = Math.round(100*tempArray.slice(-2)[0])/100; //vorletztes element: gestern                                                                                                                                                                                     setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Daily', value1, true);                                                                                                                                                                                     setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Yesterday', value2, true);                                                                                                                                                                                     var temp = getState('km200.0.recordings.heatSources.'+powertype[n]+'._Months').val;                                                                                                                                                                                     temp = temp.toString().replace(/[/g, "");                                                                                                                                                                                     temp = temp.toString().replace(/]/g, "");                                                                                                                                                                                     temp = temp.toString().replace(/\ /g, "");                                                                                                                                                                                     var tempArray = temp.split(",");                                                                                                                                                                                      setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Monthly', parseFloat(tempArray[0]), true);                                                                                                                                                                                     createState("javascript.0.Heizung.Verbrauch.actualCHPower.Daily", 0.0, {name: "Verbrauch Heizkreise heute", type: 'number', unit: 'kWh'});                                                                                                                                                                            createState("javascript.0.Heizung.Verbrauch.actualCHPower.Yesterday", 0.0, {name: "Verbrauch Heizkreise gestern ", type: 'number', unit: 'kWh'});                                                                                                                                                                            createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Daily", 0.0, {name: "Verbrauch Warmwasser heute", type: 'number', unit: 'kWh'});                                                                                                                                                                            createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Yesterday", 0.0, {name: "Verbrauch Warmwasser gestern", type: 'number', unit: 'kWh'});                                                                                                                                                                            createState("javascript.0.Heizung.Verbrauch.actualPower.Daily", 0.0, {name: "Verbrauch Gesamtsystem heute", type: 'number', unit: 'kWh'});                                                                                                                                                                            createState("javascript.0.Heizung.Verbrauch.actualPower.Yesterday", 0.0, {name: "Verbrauch Gesamtsystem gestern", type: 'number', unit: 'kWh'});                                                                                                                                                                                 }                                                                                                                                                                                                                                                                                                                                                                                                      
                                    

                                    bekomme error:

                                    javascript.0 (21539) script.js.Heizung.Verbrauch compile failed:
                                    at script.js.Heizung.Verbrauch:6

                                    1 Reply Last reply Reply Quote 0
                                    • F
                                      fisch last edited by

                                      mmmm leider meldet das Skript bei mir in Zeile 6 Fehler...übrigens habe ich doch keine Pfade ändern müssen..genauso wie in deinem Skript...

                                      Hast du vielleicht noch eine Idee?

                                      1 Reply Last reply Reply Quote 0
                                      • jmeister79
                                        jmeister79 last edited by

                                        natürlich müssen die createstate am anfang sein. Sonst hast du ja keinerlei states.
                                        auch brauchst du n trigger, sonst wird da garnichts ausgeführt.

                                        ichs chick dir dann mal das ganze programm, dies war ja nur der teil der die berechnung asuführt, das ist bei mir in einem riesen programm drin, dass alle meine verbrauchsberechnungen ausführt

                                        1 Reply Last reply Reply Quote 0
                                        • jmeister79
                                          jmeister79 last edited by

                                          hab den rest mal rausgeworfen.
                                          ohne trigger (hier minülich zum debuggen) würde das programm doch niemals ausgeführt werden.

                                          Du kannst mal nachsehen ob du es evtl nur einmal am tag (vielleicht um 00:05) ausführen willst

                                          
                                          createState("javascript.0.Heizung.Verbrauch.actualCHPower.Daily", 0.0, {name: "Verbrauch Heizkreise heute", type: 'number', unit: 'kWh'});
                                          createState("javascript.0.Heizung.Verbrauch.actualCHPower.Yesterday", 0.0, {name: "Verbrauch Heizkreise gestern ", type: 'number', unit: 'kWh'});
                                          createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Daily", 0.0, {name: "Verbrauch Warmwasser heute", type: 'number', unit: 'kWh'});
                                          createState("javascript.0.Heizung.Verbrauch.actualDHWPower.Yesterday", 0.0, {name: "Verbrauch Warmwasser gestern", type: 'number', unit: 'kWh'});
                                          createState("javascript.0.Heizung.Verbrauch.actualPower.Daily", 0.0, {name: "Verbrauch Gesamtsystem heute", type: 'number', unit: 'kWh'});
                                          createState("javascript.0.Heizung.Verbrauch.actualPower.Yesterday", 0.0, {name: "Verbrauch Gesamtsystem gestern", type: 'number', unit: 'kWh'});
                                          
                                          schedule("* * * * *", function () {
                                          
                                          
                                              //verbrauch heizung
                                              var powertype =['actualCHPower','actualDHWPower','actualPower']
                                          
                                              for(var n=0; n<3; n++){
                                                  var temp = getState('km200.0.recordings.heatSources.'+powertype[n]+'._Days').val;
                                                  temp = temp.toString().replace(/[/g, "");
                                                  temp = temp.toString().replace(/]/g, "");
                                                  temp = temp.toString().replace(/\ /g, "");
                                                  var tempArray = temp.split(","); 
                                                  var value1 = Math.round(100*tempArray.slice(-1))/100; //letztes element: heute
                                                  var value2 = Math.round(100*tempArray.slice(-2)[0])/100; //vorletztes element: gestern
                                                  setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Daily', value1, true);
                                                  setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Yesterday', value2, true);
                                                  var temp = getState('km200.0.recordings.heatSources.'+powertype[n]+'._Months').val;
                                                  temp = temp.toString().replace(/[/g, "");
                                                  temp = temp.toString().replace(/]/g, "");
                                                  temp = temp.toString().replace(/\ /g, "");
                                                  var tempArray = temp.split(","); 
                                                  setState('javascript.0.Heizung.Verbrauch.'+powertype[n]+'.Monthly', parseFloat(tempArray[0]), true);
                                              }
                                          
                                          });
                                          
                                          F 1 Reply Last reply Reply Quote 0
                                          • F
                                            fisch @jmeister79 last edited by

                                            @jmeister79

                                            hey vielen dank...das du mir hilfst ..brauvhe nur die werte in iobroker..weiterverarbeitung in nodered ist klar...

                                            habe jetzt Gensau das Skript genommen und erhalte die Fehlermeldung...

                                            Bildschirmfoto 2019-11-17 um 07.40.46.png

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

                                            Support us

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

                                            904
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            99
                                            686
                                            180622
                                            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