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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    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 jmeister79

      Hier nochmal beide :
      Einmal json, einmale html

      createState("javascript.0.Heizung.ProgramA_HTML", 0.0, {name: "HTML Tabelle Program A", type: 'string'});
      createState("javascript.0.Heizung.ProgramA_json", 0.0, {name: "JSON Tabelle Program A", type: 'string'});
      
      schedule("* * * * *", function () {
        var header ="<table><tr><th>Wochentag</th><th>Solltemperatur</th><th>Schaltzeit(min)</th></tr>";
        var worker = getState('km200.0.heatingCircuits.hc1.switchPrograms.A').val;
        worker = worker.replace(/dayOfWeek:/g, "");
        worker = worker.replace(/setpoint:/g, "");
        worker = worker.replace(/time:/g, "");
        worker = worker.replace(/\ /g, "");
        worker = worker.replace(/\'/g, "");
        worker = worker.replace(/[/g, "");
        worker = worker.replace(/]/g, "");
        worker = worker.replace(/\{/g, "<tr><td>");
        worker = worker.replace(/\}/g, "</td></tr>");
        worker = worker.replace(/\,/g, "</td><td>");
        worker = header.concat(worker);
      setState("javascript.0.Heizung.ProgramA_HTML", worker, true);
      
        var worker2 = getState('km200.0.heatingCircuits.hc1.switchPrograms.A').val;
        worker2 = worker2.replace(/\'/g, "");
        worker2 = worker2.replace(/\ /g, "");
        worker2 = worker2.replace(/\{/g, '{"');
        worker2 = worker2.replace(/\}/g, '"}');
        worker2 = worker2.replace(/\:/g, '":"');
        worker2 = worker2.replace(/\,/g, '","');
        worker2 = worker2.replace(/\}","{/g, '},{');
       
      setState("javascript.0.Heizung.ProgramA_json", worker2, true);
      
      });
      
      

      Nils

      1 Reply Last reply Reply Quote 0
      • T
        tp1de last edited by

        Welches Widget meinst Du eigentlich?

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

          Hi,
          basic table

          Nils

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

            Moin,
            Unter welchem Objekt kann ich die Zirkulationspumpe steuern?
            Ich habe das Zeitprogramm an der Therme deaktiviert. Ich sehe aber keine Änderung unter den Objekten. Ziel soll sein die Pumpe manuell über HomeKit-yahka zu schalten.

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

              @efxz
              Die Zirkulationspumpe ist aktuell nicht steuerbar. Habe bereits vor mehr als einem Jahr dies als Verbesserungswunsch an Bosch / Buderus gemeldet. Geht aber bisher nicht ....

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

                Danke für die Info. Hat jemand mit der Steuerung Zirkulationspumpe über Sonoff TH16 oder Shelly Erfahrung?

                1 Reply Last reply Reply Quote 0
                • W
                  Werner303 @Werner303 last edited by

                  @Werner303 Problem ist jetzt gelöst:
                  Resetten des Buderus KM200. Löschung aller Daten bei Bosch. Neuanmeldung der Anlage. Gesamtzurücksetzung aller km200 Daten im ioBroker. Jetzt funktioniert es einwandfrei.

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

                    @tom57
                    ich habe mir mal dein Script angeschaut, hut ab, dass ist wirklich sehr gut geworden (und du sagst du bist nicht so fit in js, dafür ist das hammer)

                    Ich stelle jetzt mal ganz ketzerisch die Frage warum nicht einfach zB den Datenpunkt "km200.0.recordings.heatSources.actualCHPower._Hours" schaust und bei änderung den jüngsten Wert ausliest und in eine Variable schreibst, die dann mit history überwachen.
                    Die kodierung ist ja relativ simpel.

                    Wenn ich jetzt nicht etwas übersehen habe dann würde ich das zu morgen mal kodieren.

                    LG
                    Nils

                    ps.: Ich hab nach ewigem Versuchen endlich hinbekommen die Programme zu visualisieren. Interesse am Script?
                    Ich bastel grad daran sie aus dem VIS zu Editieren.

                    programme.png

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

                      @jmeister79
                      Hallo Nils, das sieht ja interessant aus. Ich würde mich freuen, wenn du das Skript / Vis View zur Verfügung stellen könntest.

                      Zu den Recordings:
                      Ich benutze den km200 Adapter schon lange und hatte eine Menge Probleme damit, dass die States z.T. neu angelegt wurden und dann unter anderen ID's in der SQL-Datenbank auftauchten. Auch war mir der minimale Aktualisierungszeitraum zu groß. Also nutze ich seit über einem Jahr eigene Skripts und eine eigene Datenstruktur mit den für mich wichtigen Daten.

                      So auch bei den Recordings:
                      Die Recordings liefern Verbrauchsdaten für den Verbrauch (Gesamt / Warmwasseraufbereitung) für Stunden je Tag, Tag je Monat und Monat je Jahr. Also kannst Du z.B. auch die Monatsdaten der Vergangenheit lesen. Z.B. die Monatsverbräuche des letzten Jahres. Im Adapter gab es dabei leichte Unstimmigkeiten bei der Umrechnung auf die Anzahl der Tage pro Monat - Ist vielleicht behoben, dass weiss ich nicht.

                      Der Vorteil keine eigene Fortschreibung zu implementieren ist es, dass die Verbrauchsdaten auch stimmen, wenn ioBroker down ist bzw. upgedated wird und dass die Daten mit denen des Portals übereinstimmen.
                      Bei mir stimmen die Daten mit ca. 1% Abweichung mit dem gemessenen Gasverbrauch überein (Logano Plus KB192i mit IP intern).

                      Ich hatte vor der Installation des Buderus Kessels die Heizungssteuerung selbst programmiert und in VIS dargestellt. Nun mit dem Buderus-Kessel habe ich die Darstellung nahezu 1:1 übernommen und versucht die Regelungsparameter und die Heizungspumpen zu optimieren. Dazu lese ich ca. 10 Werte alle 30 Sekunden aus.
                      So sieht das dann aus mit den Eingabewerten:

                      47c470d8-1ea8-4f6a-8d31-f58db53cf2d6-grafik.png

                      Grüße Thomas

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

                        @tom57

                        krass, wie genial ist denn bitte diese Visualisierung.
                        Daran scheitert es bei mir immer, ich hab jede menge ideen der Asuwertung aber die Darstellung: da fehlt mir kreativität.

                        Das Programm der grafischen auswertung sit n JS. ziemlich wirr noch ich würde es gerne noch optimieren und anpassbar machen.

                        kann den Code aber gerne schonmal posten

                        Nils

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

                                            Support us

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

                                            834
                                            Online

                                            31.8k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

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