Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Huawei Wechselrichter und Wallbox abfrage über Modus?

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Huawei Wechselrichter und Wallbox abfrage über Modus?

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

      Falls diese komische Array - als String intern konvertiert wird prüfe doch mal ob Du mit einer Inject Node mit einem richtigen Array ebenfalls funktioniert.

      Also

      b6d54b93-809b-40f0-970a-f9d421e7b095-image.png

      Probiere mal direkt mit einer Inject Node in die Modbus Node zu schreiben, ob das gleiche Ergebnis rauskommt.

      2001402d-e1de-4722-bfef-8f77e9918d1e-image.png

      [
          {
              "id": "8befce9809d19c32",
              "type": "inject",
              "z": "f9e28c9cf87b10de",
              "name": "",
              "props": [
                  {
                      "p": "payload"
                  },
                  {
                      "p": "topic",
                      "vt": "str"
                  }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "Array",
              "payload": "[10,0]",
              "payloadType": "json",
              "x": 1510,
              "y": 660,
              "wires": [
                  [
                      "726cd7160ac15a5b"
                  ]
              ]
          }
      ]
      

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

        @mickym

        Also ich habe es jetzt mal auf den Anfang zurück gebaut. Über geben wird an W L1 1499,0 und an Total W Engere L1 14,0. Das Ergebnis an der Wallbox ist 149,90 KW. Somit würde ich sagen ist W L1 der ausschlag gebende

        1 Reply Last reply Reply Quote 0
        • HomeWolf
          HomeWolf @mickym last edited by

          @mickym

          wenn ich [1000,0] eingebe, kommt 100,00 kw raus...

          mickym 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @HomeWolf last edited by

            @homewolf In die Inject -Node?

            HomeWolf 1 Reply Last reply Reply Quote 0
            • HomeWolf
              HomeWolf @mickym last edited by

              @mickym
              jap, also da wo du die 10 eingetragen hattest..

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @HomeWolf last edited by

                @homewolf Ok - dann passt das zumindest dass das Intern wieder als nummerisches Array behandelt wird. Das Komma in dem String halt also nichts mit einem Dezimalkomma zu tun - sondern separiert die beiden Array Werte. In Modbus schreibst Du in regel 2 unsigned Integer.

                HomeWolf 1 Reply Last reply Reply Quote 0
                • HomeWolf
                  HomeWolf @mickym last edited by

                  @mickym

                  wenn wir vorne das Change weg machen, bekommen wir den Wert nicht hinter der Funktion durch 1000 gesetzt, so das das kommen bleibt?

                  mickym 1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @HomeWolf last edited by mickym

                    @homewolf Das Problem ist, dass die Register nur mit Integerwerten arbeitet und nicht mit Floats. Solange Du also 1499 eingibst hast Du kein Problem. Aber 1,499 ist eben nicht darstellbar sondern wird als Integer behandelt.

                    Was diese Zeile macht

                    watts[0]=msg.payload.toFixed(0) * 10;
                    

                    ist folgendes. Wenn Du 1.499 eingibst - wird das ganze gerundet ohne Dezimalstellen (toFixed(0)). Also auf 1 und dann mit 10 mulitpliziert.

                    Bei 1499 gibts keine Kommastellen und es wird einfach mit 10 multipiziert. also 14990. Deshalb kommt da 149,90 kW raus.

                    Wenn wir also 1,49kw haben wollen bzw. 1,5 kW also 1,499 auf 2 Kommastellen gerundet dann müssen wir 150 eingeben. Trotzdem werden wir ggf. Probleme bekommen. Aber ich versuchs mal mit 150 - Also 1499/1000 auf 2 Kommastellen gerundet und dann *100 - Allerdings komme ich mit dem Array noch nicht klar.

                    1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active last edited by mickym

                      So ich weiß zwar nicht warum bei Dir das Integer nun le und nicht be ist aber so müsste die Umrechnung funktionieren:

                      ad822607-bef4-483f-a2ca-99184a811d41-image.png

                      [
                         {
                             "id": "495d7f363e304f9d",
                             "type": "buffer-parser",
                             "z": "f9e28c9cf87b10de",
                             "name": "",
                             "data": "payload",
                             "dataType": "msg",
                             "specification": "spec",
                             "specificationType": "ui",
                             "items": [
                                 {
                                     "type": "uint16le",
                                     "name": "item1",
                                     "offset": 0,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "1",
                                     "mask": ""
                                 },
                                 {
                                     "type": "uint16le",
                                     "name": "item2",
                                     "offset": 2,
                                     "length": 1,
                                     "offsetbit": 0,
                                     "scale": "1",
                                     "mask": ""
                                 }
                             ],
                             "swap1": "",
                             "swap2": "",
                             "swap3": "",
                             "swap1Type": "swap",
                             "swap2Type": "swap",
                             "swap3Type": "swap",
                             "msgProperty": "payload",
                             "msgPropertyType": "str",
                             "resultType": "value",
                             "resultTypeType": "return",
                             "multipleResult": false,
                             "fanOutMultipleResult": false,
                             "setTopic": true,
                             "outputs": 1,
                             "x": 1350,
                             "y": 980,
                             "wires": [
                                 [
                                     "009c970f692bf59f"
                                 ]
                             ]
                         },
                         {
                             "id": "c326ce521b2cc006",
                             "type": "change",
                             "z": "f9e28c9cf87b10de",
                             "name": "Watt => Kilowatt",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "payload",
                                     "pt": "msg",
                                     "to": "$round(payload / 1000,2)*100",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 960,
                             "y": 980,
                             "wires": [
                                 [
                                     "9fc019d1c2bc52cc"
                                 ]
                             ]
                         },
                         {
                             "id": "9fc019d1c2bc52cc",
                             "type": "buffer-maker",
                             "z": "f9e28c9cf87b10de",
                             "name": "",
                             "specification": "spec",
                             "specificationType": "ui",
                             "items": [
                                 {
                                     "name": "item1",
                                     "type": "int32le",
                                     "length": 1,
                                     "dataType": "msg",
                                     "data": "payload"
                                 }
                             ],
                             "swap1": "",
                             "swap2": "",
                             "swap3": "",
                             "swap1Type": "swap",
                             "swap2Type": "swap",
                             "swap3Type": "swap",
                             "msgProperty": "payload",
                             "msgPropertyType": "str",
                             "x": 1170,
                             "y": 980,
                             "wires": [
                                 [
                                     "495d7f363e304f9d"
                                 ]
                             ]
                         }
                      ]
                      

                      Die 3 Nodes zwischen die iobroker Node und die Modbus Node klemmen. Warum das eine le und das andere be ist - keine Ahnung vielleicht ist das Hardwareabhängig.

                      Sprich die Nachkommastellen werden automatisch von der Hardware auf 2 Nachkommastellen fix interpretiert.

                      Die Summierungsfunktion ist für mich Schwachsinn. Da musst Du meines Erachtens mal schauen, ob das überhaupt Sinn macht.

                      HomeWolf 1 Reply Last reply Reply Quote 0
                      • HomeWolf
                        HomeWolf @mickym last edited by

                        @mickym

                        klappt super... danke dir... musste nur change aus der 100 eine 10 machen, da er sonst bei 1230 W 123,0 übergeben hat, also 12,3 kW - Übergeben muss er aber ja 12,0 also 1,2 kw. Eine Frage hätte ich noch, haben wir auch die Möglichkeit, dass er 12,3 übergibt? Also das der Zähler 1,23 kw übergeben bekommt und nicht 1,20 kw ... die 30 W hat zwar keinerlei ausgefragt, bei der Regelung, ging mehr mir um die Optik 😄 und das Verständnis.

                        $round(payload / 1000,2)*10
                        

                        Ja die Summieren ist für die aktuelle Leistung zu übergeben, damit die Wallbox entscheiden kann, was Sie nun macht.
                        Also es kann ja sein, dass W 1 -3,00 KW ist, aber W 2 1,5 KW und W 3 1,5KW ist, da die Wallbox bei -1,4 kW anfängt zu laden, würde Sie jetzt Laden, da wenn keine gesamt W vorhanden ist, Sie immer nur W 1 betrachtet. aber W gesamt wäre ja 0 kw. gibt es denn noch eine andere Version die Werte zu addieren? Ich mein ich kann das auch in meiner Homematic direkt addieren lassen und den Wert übergeben, aber mir geht es ja auch darum möglichst viel in Node Red zu verstehen.

                        mickym 2 Replies Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @HomeWolf last edited by mickym

                          @homewolf So mal langsam wie berechnest Du was? ich dachte das Teil macht aus 123 eine 1,23 kW. Wie schaut denn jetzt Deine Formel aus in der Change Node?

                          5c98bc45-61d8-4777-aae3-85160288ea86-image.png

                          Eine Frage hätte ich noch, haben wir auch die Möglichkeit, dass er 12,3 übergibt?

                          Nochmal Modbus verarbeitet nur ganze Zahlen und keine Floats. Wenn er aus 123 nicht 1,23 macht, was ich eigentlich dachte - dann verstehe ich das ganze Ding nicht mehr.

                          Wenn Du aus meiner Formel hinten nur *10 machst, dann steht da nicht mehr 123 sondern 12,3 und das GEHT nicht - da KEINE Ganzzahl.

                          Deine ursprüngliche Funktion:

                          watts[0]=msg.payload.toFixed(0) * 10; hat auch nichts anderes gemacht. Dieser Teil

                          msg.payload.toFixed(0) 
                          

                          erzeugt nur GANZZahlen also 0 Dezimalkommastellen.

                          Somit würde das Teil nur EINE Dezimalkommastelle verstehen. Dann würde ich die Formel in der Change Node aber anders umbauen, dass sie noch verständlich ist.

                          $round(payload / 1000,1)*10
                          

                          so wird die errechnete kW auf 1 Nachkommastelle gerundet und dann mal 10 genommen. Wenn Du einfach nur mal 10 anstelle mal 100 nimmst, dann wird alles hinten einfach abgeschnitten aber nicht mehr ordnungsgemäß gerundet.

                          1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @HomeWolf last edited by mickym

                            @homewolf sagte in Huawei Wechselrichter und Wallbox abfrage über Modus?:

                            Ja die Summieren ist für die aktuelle Leistung zu übergeben, damit die Wallbox entscheiden kann, was Sie nun macht.
                            Also es kann ja sein, dass W 1 -3,00 KW ist, aber W 2 1,5 KW und W 3 1,5KW ist, da die Wallbox bei -1,4 kW anfängt zu laden, würde Sie jetzt Laden, da wenn keine gesamt W vorhanden ist, Sie immer nur W 1 betrachtet. aber W gesamt wäre ja 0 kw. gibt es denn noch eine andere Version die Werte zu addieren? Ich mein ich kann das auch in meiner Homematic direkt addieren lassen und den Wert übergeben, aber mir geht es ja auch darum möglichst viel in Node Red zu verstehen.

                            So erst mal aus Deinem ursprünglichen Flow - diese beiden Set Nodes machen exakt das gleiche - weshalb sie unsinnig sind.

                            54d668e4-d803-4aaf-9110-3bb95dca130f-image.png

                            Der einzige Unterschied ist, dass die ursprüngliche payload in die Flowvariable twatts anstelle von watts geschrieben wird. Und die Summe wurde dann aus twatts in der 1 verwendet. Das Teil hat also im 1. Teil überhaupt nichts aufsummiert, sondern nur den Ursprungswert in eine Flowvariable geschrieben. Diese wurde aber später nie verwendet - ich sehe sie nicht?

                            965d4dcd-3e9b-4b91-b419-2954671ac1d3-image.png

                            Ich verstehe dass nun zwar und finde es mit den function Nodes nicht besonders elegant - aber dann ist es am wirklich am Einfachsten, was wir bereits hatten. Du rechnest die Watt in kW um, musst aber mit den Ungenauigkeiten leben.

                            Dann war das doch gar nicht so schlecht:

                            c66874ed-3729-4abc-a7b0-5c36eb3ffe58-image.png

                            Genauer wirst Du es kaum hinbekommen. Weil nur 1 Kommastelle akzeptiert wird.
                            Wie gesagt man kann das auch alles ohne function Nodes lösen, aber dadurch wird es ja nicht genauer.

                            Also einfach wieder nur durch 1000 rechnen. Die Change Nodes kannst Du dann entweder mit payload/1000 belassen oder Du änderst halt deine function Nodes, wo du alle eingehenden payloads teilen musst. Dann ist aber die Lösung mit der Change Node sicher einfacher. Die aktuellen Werte siehst Du übrigens immer im Kontextfenster:

                            ef2876cc-c4cf-4190-b6bc-cecc89c9e96b-image.png

                            HomeWolf 1 Reply Last reply Reply Quote 0
                            • HomeWolf
                              HomeWolf @mickym last edited by

                              @mickym ook, dann muss ich mit der Differenz einfach leben.

                              er macht aus 1234 W ->12,0 und das wird an Modbus übergeben und im gerate sind das dann 1,2 kw.

                              Ich verzweifele noch an dieser Wallbox. Alle Daten werden laut Huawei Portal an die Wallbox übertragen. Heute Mittag, als dann genug sonne da war, hat die Wallbox sich auch wie erhofft eingeschaltet, aber leider immer nur für 20 Sekunden und dann geht sie wieder aus. und wieder an usw. Also Sie die Daten immer nur kurz bekommen würde und danach wieder Leistungen von 0 KW

                              mickym 1 Reply Last reply Reply Quote 0
                              • mickym
                                mickym Most Active @HomeWolf last edited by

                                @homewolf hänge einfach Debug nodes hinter die Funktion Nodes und lass die Ausgabe ins iobroker Log schreiben. Dann siehst Du was in due Modbus Nodes geschrieben wird.

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

                                  @mickym
                                  da kommt immer das gleich, von der Seite aus sieht es gut aus..

                                  14.8.2023, 19:30:27node: debug 3
                                  hm-rega.0.32538 : msg.payload : array[2]
                                  [ 65485, 65535 ]
                                  

                                  Gibt es eine Möglichkeit, bei Modbus mit zu hören? Also Überlegung war, die Wallbox wie eigentlich vorgesehen an den Wechselrichter zu hängen und dann zu schauen, welche register die Wallbox abfragt, nicht das irgend ein Register der Wallbox fehlt. oder kann ich sogar schon so sehen, wann die Wallbox bei Node Red an Registern anfragt?

                                  mickym 1 Reply Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @HomeWolf last edited by

                                    @mickym Du kannst doch debug nodes an die Modbus Nodes - also an den Ausgang dran hängen und die payload ins iobroker log schreiben

                                    HomeWolf 1 Reply Last reply Reply Quote 0
                                    • HomeWolf
                                      HomeWolf @mickym last edited by

                                      @mickym

                                      ok die debug hinter das Modbus Nodes bekomme ich hin, aber wie mach ich das andere 😄 ?

                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @HomeWolf last edited by

                                        @homewolf Wenn Du nicht in das Debug Fenster sondern in das iobroker Log schreiben willst, dann schreibst Du in die Systemkonsole.

                                        09770651-28ae-49db-97ac-5bbab4b47239-image.png

                                        HomeWolf 1 Reply Last reply Reply Quote 0
                                        • HomeWolf
                                          HomeWolf @mickym last edited by

                                          @mickym

                                          kommt immer genau das gleiche raus, bin jetzt mal hingegangen und habe das Register auch selbst in Node Red abgefragt, aber immer der gleiche Wert... ohne die Wallbox wartet auf irgend ein Register, dass ihr fehlt. Aber wie bekomme ich das raus, Huawei hat noch keine Modbus Beschreibung von der Wallbox

                                          mickym 1 Reply Last reply Reply Quote 0
                                          • mickym
                                            mickym Most Active @HomeWolf last edited by

                                            @homewolf Ja da kann ich Dir leider nicht helfen. Ich hab Dir ja schon mal gesagt ich habe keine Hardware, die Modbus versteht. Ich kann Dir nur bei der Logik innerhalb von NodeRed versuchen zu helfen, aber ich habe keine Ahnung zu irgendeiner Hardware.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            394
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            65
                                            3503
                                            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