Ankündigung

Einklappen
Keine Ankündigung bisher.

Heidelberg Energy Control Modbus via Modbus TCP Adapter

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [-] Heidelberg Energy Control Modbus via Modbus TCP Adapter

    Mahlzeit zusammen!

    Ich versuche derzeit, die Heidelberg Energy Control in mein Haus einzubinden.
    Dazu habe ich ein Modbus-TCP-Gateway (https://www.waveshare.com/wiki/RS485_TO_ETH_(B)) angeschlossen.
    Die WB ist als Slave mit Abschlusswiderstand und ID 1 konfiguriert.

    Das ganze wird via Node-Red über den Modbus Baustein ausgelesen.


    Was funktioniert?
    Eigentlich alles. Ich kann alle Register beschreiben und lesen.
    Ich kann den Ladestrom setzen, die WB Sperren, eigentlich alles.
    Das ganze funktioniert soweit recht problemlos

    Was funktioniert nicht?
    Eigentlich nichts. Eigentlich.
    Denn: Während die WB lädt, pulsiert wie gewöhnlich die Anzeige.
    Wenn die WB nicht lädt, zeigt sie jedoch den Fehler für Kommunikationsprobleme an. Das ist nervig, weil das die ganze Zeit vor sich hin blinkt, und irgendwie müsste der Fehler ja mal zu finden sein.

    Was habe ich versucht?
    Neben den Einstellmöglichkeiten sowie einem zusätzlichen Busabschlusswiderstand am Gateway (Allerdings 220O, 120 hatte ich nicht) habe ich den Modbus Watchdog deaktiviert, und versucht einzelne Register in kurzen Abständen zu lesen bzw. zu schreiben. Bislang alles ohne Erfolg.

    Hat hier vielleicht jemand eine Ahnung, woran das liegen kann? Wirklich an dem 120O Widerstand?

    #2
    Hatte ich auch, ich schaue zuhause mal nach...

    Kommentar


      #3
      Hier mein Flow:

      Code:
      [{"id":"5efa76ed.b4c338","type":"tab","label":"Wallbox","disabled":false,"info":""},{"id":"7e91cf43.255e1","type":"modbus-read","z":"5efa76ed.b4c338","name":"","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"5","quantity":"14","rate":"3","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"da56f1b1.fc61a","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":true,"x":130,"y":380,"wires":[["7bca0bcf.f26614","9a496298.d92e5"],[]]},{"id":"7bca0bcf.f26614","type":"debug","z":"5efa76ed.b4c338","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":370,"y":200,"wires":[]},{"id":"c5bd66ee.f00b88","type":"modbus-getter","z":"5efa76ed.b4c338","name":"","showStatusActivities":false,"showErrors":true,"logIOActivities":false,"unitid":"","dataType":"HoldingRegister","adr":"261","quantity":"1","server":"da56f1b1.fc61a","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"keepMsgProperties":false,"x":320,"y":40,"wires":[["b7e4fc8b.9e3e"],[]]},{"id":"b7e4fc8b.9e3e","type":"debug","z":"5efa76ed.b4c338","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":590,"y":40,"wires":[]},{"id":"5c336c26.830a04","type":"inject","z":"5efa76ed.b4c338","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":120,"y":40,"wires":[["c5bd66ee.f00b88"]]},{"id":"26722588.6eb4fa","type":"inject","z":"5efa76ed.b4c338","name":"","topic":"","payload":"65000","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":670,"y":440,"wires":[["ab2e7170.05159"]]},{"id":"de48bc75.29cd2","type":"debug","z":"5efa76ed.b4c338","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1110,"y":420,"wires":[]},{"id":"ab2e7170.05159","type":"modbus-write","z":"5efa76ed.b4c338","name":"SetWatchdogTimeout","showStatusActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"257","quantity":"1","server":"da56f1b1.fc61a","emptyMsgOnFail":false,"keepMsgProperties":false,"x":900,"y":440,"wires":[["de48bc75.29cd2"],[]]},{"id":"a4f94df9.22965","type":"ui_text","z":"5efa76ed.b4c338","group":"6e53173c.ce22f8","order":1,"width":0,"height":0,"name":"","label":"Status:","format":"{{msg.payload}}","layout":"row-spread","x":580,"y":260,"wires":[]},{"id":"71a4e06a.d6987","type":"inject","z":"5efa76ed.b4c338","name":"","topic":"","payload":"0","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":670,"y":480,"wires":[["ab2e7170.05159"]]},{"id":"b9b23794.1d40b8","type":"ui_text","z":"5efa76ed.b4c338","group":"6e53173c.ce22f8","order":5,"width":0,"height":0,"name":"","label":"Temperatur:","format":"{{msg.payload}}°C","layout":"row-spread","x":630,"y":560,"wires":[]},{"id":"2a606935.2d8ab6","type":"function","z":"5efa76ed.b4c338","name":"","func":"msg.payload = msg.payload[4]/10.0;\nreturn msg;","outputs":1,"noerr":0,"x":470,"y":560,"wires":[["b9b23794.1d40b8"]]},{"id":"562cb451.2a2d4c","type":"ui_gauge","z":"5efa76ed.b4c338","name":"","group":"6e53173c.ce22f8","order":6,"width":0,"height":0,"gtype":"gage","title":"Ladeleistung","label":"kW","format":"{{value}}","min":0,"max":"12","colors":["#00b500","#00b500","#00b500"],"seg1":"","seg2":"","x":630,"y":600,"wires":[]},{"id":"ad70607e.28242","type":"function","z":"5efa76ed.b4c338","name":"","func":"msg.payload = msg.payload[9] / 1000.0;\nreturn msg;","outputs":1,"noerr":0,"x":470,"y":600,"wires":[["562cb451.2a2d4c"]]},{"id":"344526d5.94b92a","type":"ui_text","z":"5efa76ed.b4c338","group":"6e53173c.ce22f8","order":7,"width":"2","height":"1","name":"","label":"L1","format":"{{msg.payload[5]}} V","layout":"col-center","x":470,"y":640,"wires":[]},{"id":"78b1c803.000d38","type":"ui_text","z":"5efa76ed.b4c338","group":"6e53173c.ce22f8","order":8,"width":"2","height":"1","name":"","label":"L2","format":"{{msg.payload[6]}} V","layout":"col-center","x":470,"y":680,"wires":[]},{"id":"f11fcc84.5e1aa","type":"ui_text","z":"5efa76ed.b4c338","group":"6e53173c.ce22f8","order":9,"width":"2","height":"1","name":"","label":"L3","format":"{{msg.payload[7]}} V","layout":"col-center","x":470,"y":720,"wires":[]},{"id":"601ce5d2.440d6c","type":"ui_switch","z":"5efa76ed.b4c338","name":"","label":"Ladefreigabe:","tooltip":"","group":"6e53173c.ce22f8","order":10,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"topic","topicType":"msg","style":"","onvalue":"true","onvalueType":"bool","onicon":"","oncolor":"","offvalue":"false","offvalueType":"bool","officon":"","offcolor":"","animate":false,"x":140,"y":1120,"wires":[["71178d9.c386874","26e71011.18044"]]},{"id":"d07d35d2.eb7c98","type":"ui_slider","z":"5efa76ed.b4c338","name":"","label":"Stromlimit:","tooltip":"","group":"6e53173c.ce22f8","order":11,"width":0,"height":0,"passthru":false,"outs":"end","topic":"topic","topicType":"msg","min":"6","max":"16","step":1,"x":150,"y":1200,"wires":[["5e427c55.9ac3c4"]]},{"id":"c5ec7962.069778","type":"modbus-write","z":"5efa76ed.b4c338","name":"","showStatusActivities":true,"showErrors":true,"unitid":"","dataType":"HoldingRegister","adr":"261","quantity":"1","server":"da56f1b1.fc61a","emptyMsgOnFail":false,"keepMsgProperties":false,"x":770,"y":1200,"wires":[["9ee79140.ac4ce"],[]]},{"id":"5e427c55.9ac3c4","type":"function","z":"5efa76ed.b4c338","name":"* 10","func":"msg.payload = msg.payload * 10;\nreturn msg;","outputs":1,"noerr":0,"x":310,"y":1200,"wires":[["88c75639.070f48","c5ec7962.069778"]]},{"id":"ca4561e0.5a568","type":"ui_text","z":"5efa76ed.b4c338","group":"6e53173c.ce22f8","order":4,"width":0,"height":0,"name":"","label":"Aktualisierung:","format":"{{msg.payload}}","layout":"row-spread","x":440,"y":940,"wires":[]},{"id":"bf3b81ad.3df0c","type":"moment","z":"5efa76ed.b4c338","name":"","topic":"","input":"","inputType":"date","inTz":"Europe/Berlin","adjAmount":0,"adjType":"days","adjDir":"add","format":"DD.MM. - HH:mm:ss","locale":"de-DE","output":"payload","outputType":"msg","outTz":"Europe/Berlin","x":220,"y":940,"wires":[["ca4561e0.5a568"]]},{"id":"88c75639.070f48","type":"change","z":"5efa76ed.b4c338","name":"","rules":[{"t":"set","p":"currentlimit","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":1240,"wires":[[]]},{"id":"9e270c41.f4702","type":"change","z":"5efa76ed.b4c338","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"currentlimit","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":560,"y":1100,"wires":[["c5ec7962.069778"]]},{"id":"71178d9.c386874","type":"switch","z":"5efa76ed.b4c338","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":370,"y":1120,"wires":[["9e270c41.f4702"],["88290942.9f0948"]]},{"id":"88290942.9f0948","type":"change","z":"5efa76ed.b4c338","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":560,"y":1140,"wires":[["c5ec7962.069778"]]},{"id":"b490407e.fb954","type":"inject","z":"5efa76ed.b4c338","name":"Init(160)","topic":"","payload":"160","payloadType":"num","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":300,"y":1260,"wires":[["88c75639.070f48"]]},{"id":"9ee79140.ac4ce","type":"debug","z":"5efa76ed.b4c338","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":960,"y":1200,"wires":[]},{"id":"9a496298.d92e5","type":"switch","z":"5efa76ed.b4c338","name":"","property":"payload","propertyType":"msg","rules":[{"t":"empty"},{"t":"nempty"}],"checkall":"false","repair":false,"outputs":2,"x":170,"y":520,"wires":[["a41bfb72.59f088"],["bf3b81ad.3df0c","ad70607e.28242","f11fcc84.5e1aa","78b1c803.000d38","344526d5.94b92a","2a606935.2d8ab6","48ceca8c.49f484","fb46b1f1.0f3ca","a7c494f2.72a6f8"]]},{"id":"a41bfb72.59f088","type":"change","z":"5efa76ed.b4c338","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"sleep","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":260,"wires":[["a4f94df9.22965"]]},{"id":"48ceca8c.49f484","type":"change","z":"5efa76ed.b4c338","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[0]","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":300,"wires":[["a4f94df9.22965","6be1c46e.e7fd9c","86d9b6f6.cf59f8","a61bdd25.90c9e"]]},{"id":"8adef3f4.5aa24","type":"ui_text","z":"5efa76ed.b4c338","group":"6e53173c.ce22f8","order":2,"width":0,"height":0,"name":"Status1","label":"","format":"{{msg.payload}}","layout":"row-left","x":880,"y":300,"wires":[]},{"id":"86d9b6f6.cf59f8","type":"function","z":"5efa76ed.b4c338","name":"","func":"switch(msg.payload)\n{\n    case 2:\n    case 3:\n            \n        msg.payload = \"No vehicle plugged\";\n        break;\n        \n    case 4:\n    case 5:\n        msg.payload = \"Vehicle plugged without charging request\";\n        break;\n        \n    case 6:\n    case 7:\n        msg.payload = \"Vehicle plugged wiht charging request\";\n        break;\n        \n    case 8:\n        msg.payload = \"derating\"\n        break;\n        \n    case 9:\n        msg.payload = \"E\"\n        break;\n        \n    case 10:\n        msg.payload = \"F\"\n        break;\n        \n    case 11:\n        msg.payload = \"ERR\"\n        break;\n        \n    default:\n        msg.payload = \"\";\n}\nreturn msg;","outputs":1,"noerr":0,"x":730,"y":300,"wires":[["8adef3f4.5aa24"]]},{"id":"10f08b76.1a6c75","type":"ui_text","z":"5efa76ed.b4c338","group":"6e53173c.ce22f8","order":3,"width":0,"height":0,"name":"Status2","label":"","format":"{{msg.payload}}","layout":"row-left","x":880,"y":340,"wires":[]},{"id":"6be1c46e.e7fd9c","type":"function","z":"5efa76ed.b4c338","name":"","func":"switch(msg.payload)\n{\n    case 2:\n    case 4:\n    case 6:\n            \n        msg.payload = \"Wallbox doesn´t allow charging\";\n        break;\n        \n    case 3:\n    case 5:\n    case 7:\n        msg.payload = \"Wallbox allows charging\";\n        break;\n        \n    default:\n        msg.payload =\"\";\n}\nreturn msg;","outputs":1,"noerr":0,"x":730,"y":340,"wires":[["10f08b76.1a6c75"]]},{"id":"a61bdd25.90c9e","type":"rbe","z":"5efa76ed.b4c338","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":510,"y":400,"wires":[["7bb9a811.be01d8","9955476a.6b3628"]]},{"id":"7bb9a811.be01d8","type":"change","z":"5efa76ed.b4c338","name":"set 65000","rules":[{"t":"set","p":"payload","pt":"msg","to":"65000","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":660,"y":400,"wires":[["ab2e7170.05159"]]},{"id":"fb46b1f1.0f3ca","type":"function","z":"5efa76ed.b4c338","name":"","func":"msg.payload = msg.payload[10]<<16 | msg.payload[11];\nmsg.payload /= 1000.0;\nreturn msg;","outputs":1,"noerr":0,"x":470,"y":760,"wires":[["2751e478.74e59c","7119bf5d.0dd2c"]]},{"id":"a7c494f2.72a6f8","type":"function","z":"5efa76ed.b4c338","name":"","func":"msg.payload = msg.payload[12]<<16 | msg.payload[13];\nmsg.payload /= 1000.0;\nreturn msg;","outputs":1,"noerr":0,"x":470,"y":840,"wires":[["de8d7f06.c82c5","7cbfbabb.ef7f24"]]},{"id":"2751e478.74e59c","type":"ui_text","z":"5efa76ed.b4c338","group":"6e53173c.ce22f8","order":12,"width":0,"height":0,"name":"","label":"Ladung:","format":"{{msg.payload | number:1}} kWh","layout":"row-spread","x":620,"y":760,"wires":[]},{"id":"de8d7f06.c82c5","type":"ui_text","z":"5efa76ed.b4c338","group":"6e53173c.ce22f8","order":14,"width":0,"height":0,"name":"","label":"Gesamt:","format":"{{msg.payload | number:1}} kWh","layout":"row-spread","x":620,"y":840,"wires":[]},{"id":"7119bf5d.0dd2c","type":"function","z":"5efa76ed.b4c338","name":"to €","func":"msg.payload = msg.payload * 0.2991\nreturn msg;","outputs":1,"noerr":0,"x":610,"y":800,"wires":[["975052ac.45b98"]]},{"id":"7cbfbabb.ef7f24","type":"function","z":"5efa76ed.b4c338","name":"to €","func":"msg.payload = msg.payload * 0.2991\nreturn msg;","outputs":1,"noerr":0,"x":610,"y":880,"wires":[["e6178f10.01023"]]},{"id":"975052ac.45b98","type":"ui_text","z":"5efa76ed.b4c338","group":"6e53173c.ce22f8","order":13,"width":0,"height":0,"name":"Ladung €","label":"","format":"{{msg.payload | number:2}} €","layout":"row-spread","x":780,"y":800,"wires":[]},{"id":"e6178f10.01023","type":"ui_text","z":"5efa76ed.b4c338","group":"6e53173c.ce22f8","order":15,"width":0,"height":0,"name":"Gesamt €","label":"","format":"{{msg.payload | number:2}} €","layout":"row-spread","x":780,"y":880,"wires":[]},{"id":"26e71011.18044","type":"change","z":"5efa76ed.b4c338","name":"","rules":[{"t":"set","p":"ladefreigabe","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":1020,"wires":[[]]},{"id":"dba545b5.9d4b38","type":"change","z":"5efa76ed.b4c338","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ladefreigabe","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":700,"y":1000,"wires":[["71178d9.c386874"]]},{"id":"9955476a.6b3628","type":"link out","z":"5efa76ed.b4c338","name":"","links":["da5c744e.4e6508"],"x":515,"y":460,"wires":[]},{"id":"da5c744e.4e6508","type":"link in","z":"5efa76ed.b4c338","name":"","links":["9955476a.6b3628"],"x":575,"y":1000,"wires":[["dba545b5.9d4b38"]]},{"id":"da56f1b1.fc61a","type":"modbus-client","z":"","name":"","clienttype":"serial","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"127.0.0.1","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB0","serialType":"RTU-BUFFERD","serialBaudrate":"19200","serialDatabits":"8","serialStopbits":"1","serialParity":"even","serialConnectionDelay":"100","unit_id":"1","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"5000","parallelUnitIdsAllowed":false},{"id":"6e53173c.ce22f8","type":"ui_group","z":"","name":"Group 1","tab":"e42eb470.83fa58","order":1,"disp":false,"width":"6","collapse":false},{"id":"e42eb470.83fa58","type":"ui_tab","z":"","name":"Wallbox","icon":"dashboard","order":9,"disabled":false,"hidden":false}]

      Kommentar


        #4
        Besten Dank, ich denke der regelmäßige Watchdog-Reset war es. Scheint jedenfalls auf den ersten Blick zu funktionieren!

        Kommentar


          #5
          Sehr gern! Hat mich auch ein paar graue Haare gekostet

          Kommentar


            #6
            protonmw Hast du das ganz zufällig auch an Smart Appliance Enabler oder evcc angebunden?

            Kommentar


              #7
              matschie Nein leider nicht. Muss erstmal googlen, was das ist...

              Kommentar


                #8
                Ich hab es mit evcc inzwischen geschafft, falls es jemanden interessiert.

                Kommentar


                  #9
                  Hallo matschi,
                  es ist noch nicht dringend aber an einer Lösung wäre ich schon interessiert.
                  Tschö Marcus
                  ----------------------------------------------------------------------
                  Was man anfängt sollte man auch zu Ende bri

                  Kommentar


                    #10
                    Dann skizzier ich schonmal grob wie es läuft:

                    Ich habe node-red als Logikengine laufen. Diese fragt den Status der Heidelberg via Modbus TCP ab, mit dem Flow von protonmw klappt das ganz hervorragend.
                    Statt der Ausgabe auf die node-red-ui schreibe ich die Werte in mqtt (und die interessanten zusätzlich in influxdb, tut aber hier nix zur Sache)

                    In evcc ist ein custom charger eingerichtet, die yaml-datei kann ich gerne mal teilen. Der kommuniziert via mqtt. Kommunikation mit SHM 2.0 ist ja eingebaut.

                    Für die interessierten: Ich habe auch die Anbindung der mercedes-me API in node-red erfolgreich umgesetzt, sodass in evcc auch SoC, Reichweite etc. angezeigt werden können.

                    Kommentar


                      #11
                      Hallo Zusammen, kann mir jemand sagen welche Register Tabelle die richtige ist? Ich habe eine mit IDs von 4 bis 18 und bis 262 und eine mit 30004 usw.

                      Außerdem habe ich zwei wallbox installiert, eine mit ID 2 und eine mit ID 1, die beide am zusammen am waveshare gateway hängen.... braucht eine Box dann zusätzlich den 120ohm Widerstand? Und wenn ja, wo genau muss ich den einbauen ?
                      Zuletzt geändert von Xavac; 26.02.2023, 08:04.

                      Kommentar


                        #12
                        Hallo,
                        ich habe gleiches Problem mit "Fehler für Kommunikationsprobleme​"... es nervt total ;-) gibt es da ne Lösung für?
                        Ich verwende Homeassistant und kann eigentlcuh alle ModbusRigister lesen/schreiben... der WB lädt auch ganz normal... nur dieser ständig blinkenden LED's stören


                        Gelöst ;-)

                        261 darf nicht 0 sein!!! Der Wallbox "vergisst" den Wert im 261 nach Standby oder Restart... und wen 261=0 ist, dann denkt Wallbox, dass die Modbus Verbindung gestörrt ist
                        Zuletzt geändert von stromnas4me; 19.05.2023, 14:04.

                        Kommentar


                          #13
                          Hey stromnas4me kannst du mal deine YAML schicken, ich versuche vergeblich MODBUS zu schreiben für meine Heizung. Würde gerne mal ein funktoionierendes Beispiel sehe...

                          Grüße

                          Kommentar


                            #14
                            Hi,
                            könntet ihr mal bitte eure Konfiguration der Waveshare Box hier reinstellen?
                            Ich bekomme keine Kommunikation zu Stande und da ich noch nicht mit RS485 gearbeitet habe bin ich unsicher ob denn alles richtig eingestellt ist oder ob ich evtl. doch irgendwo ein Kabel Problem habe.

                            Und wie habt ihr eure WB konfiguriert?

                            Vielen Dank schon mal.

                            Grüße
                            Zuletzt geändert von selbstmacher; 19.08.2023, 19:32.

                            Kommentar

                            Lädt...
                            X