Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Einsteigerfragen
  4. Einbindung von Geräten
  5. Deye Wechselrichter Modbus Register beschreiben

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

Deye Wechselrichter Modbus Register beschreiben

Deye Wechselrichter Modbus Register beschreiben

Scheduled Pinned Locked Moved Einbindung von Geräten
230 Posts 27 Posters 57.7k Views 26 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • TheBamT Offline
    TheBamT Offline
    TheBam
    wrote on last edited by
    #89

    @lars-2
    Lösche Mal spaßeshalber nur die Zeile 7 bei dir in den Registern 40147
    Ich bin mir nicht sicher klingt aber für mich so als wenn ein register nicht passt und der deswegen abstützt.
    Ansonsten würde ich das morgen selbst Mal probieren mit deinen Einstellungen heute bekomme ich keine Zeit dazu.
    Normal muss das gehen. Auf welchem Gerät hast du das denn laufen? Ist das ein anderes die der cas Scanner? Nicht das da irgendeine Firewall den Port blockiert oder so

    Lars 2L 1 Reply Last reply
    0
    • TheBamT TheBam

      @lars-2
      Lösche Mal spaßeshalber nur die Zeile 7 bei dir in den Registern 40147
      Ich bin mir nicht sicher klingt aber für mich so als wenn ein register nicht passt und der deswegen abstützt.
      Ansonsten würde ich das morgen selbst Mal probieren mit deinen Einstellungen heute bekomme ich keine Zeit dazu.
      Normal muss das gehen. Auf welchem Gerät hast du das denn laufen? Ist das ein anderes die der cas Scanner? Nicht das da irgendeine Firewall den Port blockiert oder so

      Lars 2L Offline
      Lars 2L Offline
      Lars 2
      wrote on last edited by Lars 2
      #90

      @thebam said in Deye Wechselrichter Modbus Register beschreiben:

      @lars-2
      Lösche Mal spaßeshalber nur die Zeile 7 bei dir in den Registern 40147
      Ich bin mir nicht sicher klingt aber für mich so als wenn ein register nicht passt und der deswegen abstützt.
      Ansonsten würde ich das morgen selbst Mal probieren mit deinen Einstellungen heute bekomme ich keine Zeit dazu.
      Normal muss das gehen. Auf welchem Gerät hast du das denn laufen? Ist das ein anderes die der cas Scanner? Nicht das da irgendeine Firewall den Port blockiert oder so

      Kann ich morgen testen...
      Habe den iobroker in einem Proxmox Container laufen.
      Firewalls sind innerhalb der Netzwerkstruktur keine vorhanden ich kann aus der Shell des iobrokers die IP Adresse und auch den Port scannen/anpingen
      Die 2. Iobroker Instanz läuft auch auf einem Proxmox Container aber in dem Subnetz vom Waveshare... Trotzdem keine Verbindung

      Und der Windows Rechner wo der Scanner drauf läuft habe ich in allen Subnetzen probiert, geht immer

      hab mal schnell getestet, einmal nur die 40147 gelöscht und einmal alles dahinter komplett.

      modbus.0
      13973	2023-07-15 20:56:54.909	debug	Socket closed with error
      
      modbus.0
      13973	2023-07-15 20:56:54.908	warn	Poll error count: 2 code: {"err":"timeout","timeout":8000}
      
      modbus.0
      13973	2023-07-15 20:56:54.908	error	Client in error state.
      
      modbus.0
      13973	2023-07-15 20:56:54.908	error	Request timed out.
      
      modbus.0
      13973	2023-07-15 20:56:54.908	warn	Error: undefined
      
      modbus.0
      13973	2023-07-15 20:56:46.907	debug	[DevID_1/holdingRegs] Poll address 0 - 1 registers
      
      modbus.0
      13973	2023-07-15 20:56:46.906	debug	[DevID_1] Poll start ---------------------
      
      modbus.0
      13973	2023-07-15 20:56:46.906	info	Connected to slave 192.168.30.223
      
      modbus.0
      13973	2023-07-15 20:56:41.904	info	Disconnected from slave 192.168.30.223
      
      modbus.0
      13973	2023-07-15 20:56:41.904	debug	Closing client on purpose.
      
      modbus.0
      13973	2023-07-15 20:56:40.905	debug	Cleaning up request fifo.
      
      modbus.0
      13973	2023-07-15 20:56:40.905	debug	Clearing timeout of the current request.
      
      modbus.0
      13973	2023-07-15 20:56:40.905	debug	Socket closed with error
      
      modbus.0
      13973	2023-07-15 20:56:40.904	warn	Poll error count: 1 code: {"err":"timeout","timeout":8000}
      
      modbus.0
      13973	2023-07-15 20:56:40.903	error	Client in error state.
      
      modbus.0
      13973	2023-07-15 20:56:40.903	error	Request timed out.
      
      modbus.0
      13973	2023-07-15 20:56:40.903	warn	Error: undefined
      
      modbus.0
      13973	2023-07-15 20:56:32.900	debug	[DevID_1/holdingRegs] Poll address 0 - 1 registers
      
      modbus.0
      13973	2023-07-15 20:56:32.900	debug	Initialization of scale factors done!
      
      modbus.0
      13973	2023-07-15 20:56:32.899	debug	[DevID_1] Poll start ---------------------
      
      modbus.0
      13973	2023-07-15 20:56:32.899	info	Connected to slave 192.168.30.223
      
      modbus.0
      13973	2023-07-15 20:56:32.776	debug	Add holdingRegisters.40144_Max_Limit_Power_Output_Grid_Connection: {"_id":"holdingRegisters.40144_Max_Limit_Power_Output_Grid_Connection","type":"state","common":{"name":"Begrenzen Sie die maximale Ausgangsleistung des Netzes","role":"level","type":"number","read":true,"write":true,"def":0,"unit":"W"},"native":{"regType":"holdingRegs","address":143,"deviceId":1,"type":"uint16be","len":1,"offset":0,"factor":1,"poll":true}}
      
      modbus.0
      13973	2023-07-15 20:56:32.776	debug	Add holdingRegisters.40110_Max_A_discharge: {"_id":"holdingRegisters.40110_Max_A_discharge","type":"state","common":{"name":"Max A Entladung","role":"level","type":"number","read":true,"write":true,"def":0,"unit":"A"},"native":{"regType":"holdingRegs","address":109,"deviceId":1,"type":"uint16be","len":1,"offset":0,"factor":1,"poll":true}}
      
      modbus.0
      13973	2023-07-15 20:56:32.775	debug	Add holdingRegisters.40109_Max_A_Charge: {"_id":"holdingRegisters.40109_Max_A_Charge","type":"state","common":{"name":"Maximaler Ladestrom der Batterie","role":"level","type":"number","read":true,"write":true,"def":0,"unit":"A"},"native":{"regType":"holdingRegs","address":108,"deviceId":1,"type":"uint16be","len":1,"offset":0,"factor":1,"poll":true}}
      
      modbus.0
      13973	2023-07-15 20:56:32.775	debug	Add holdingRegisters.40105_ZeroExport_power: {"_id":"holdingRegisters.40105_ZeroExport_power","type":"state","common":{"name":"ZeroExport-Leistung","role":"level","type":"number","read":true,"write":true,"def":0,"unit":""},"native":{"regType":"holdingRegs","address":104,"deviceId":1,"type":"floatbe","len":2,"offset":0,"factor":1,"poll":true}}
      
      modbus.0
      13973	2023-07-15 20:56:32.775	debug	Add holdingRegisters.40001_Device_type: {"_id":"holdingRegisters.40001_Device_type","type":"state","common":{"name":"Gerätetyp","role":"level","type":"number","read":true,"write":true,"def":0,"unit":""},"native":{"regType":"holdingRegs","address":0,"deviceId":1,"type":"uint16be","len":1,"offset":0,"factor":1,"poll":true}}
      
      modbus.0
      13973	2023-07-15 20:56:32.775	debug	Initialize Objects for holdingRegs: [{"_address":40001,"name":"Device type","description":"Gerätetyp","unit":"","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"level","room":"","poll":true,"wp":false,"cw":false,"isScale":false,"deviceId":1,"address":0,"id":"holdingRegisters.40001_Device_type"},{"_address":40105,"name":"ZeroExport power","description":"ZeroExport-Leistung","unit":"","type":"floatbe","len":2,"factor":1,"offset":0,"formula":"","role":"level","room":"","poll":true,"wp":false,"cw":false,"isScale":false,"deviceId":1,"address":104,"id":"holdingRegisters.40105_ZeroExport_power"},{"_address":40109,"name":"Max A Charge","description":"Maximaler Ladestrom der Batterie","unit":"A","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"level","room":"","poll":true,"wp":false,"cw":false,"isScale":false,"deviceId":1,"address":108,"id":"holdingRegisters.40109_Max_A_Charge"},{"_address":40110,"name":"Max A discharge","description":"Max A Entladung","unit":"A","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"level","room":"","poll":true,"wp":false,"cw":false,"isScale":false,"deviceId":1,"address":109,"id":"holdingRegisters.40110_Max_A_discharge"},{"_address":40144,"name":"Max Limit Power Output Grid Connection","description":"Begrenzen Sie die maximale Ausgangsleistung des Netzes","unit":"W","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"level","room":"","poll":true,"wp":false,"cw":false,"isScale":false,"deviceId":1,"address":143,"id":"holdingRegisters.40144_Max_Limit_Power_Output_Grid_Connection"}]
      
      modbus.0
      13973	2023-07-15 20:56:32.775	debug	Initialize Objects for inputRegs: []
      
      modbus.0
      13973	2023-07-15 20:56:32.774	debug	Initialize Objects for coils: []
      
      modbus.0
      13973	2023-07-15 20:56:32.774	debug	Initialize Objects for disInputs: []
      
      modbus.0
      13973	2023-07-15 20:56:32.714	info	starting. Version 5.0.11 in /opt/iobroker/node_modules/iobroker.modbus, node: v16.19.1, js-controller: 4.0.24
      
      modbus.0
      13973	2023-07-15 20:56:32.605	info	Plugin sentry Sentry Plugin disabled for this process because sending of statistic data is disabled for the system
      
      modbus.0
      13973	2023-07-15 20:56:32.603	debug	Plugin sentry Initialize Plugin (enabled=true)
      
      1 Reply Last reply
      0
      • Lars 2L Offline
        Lars 2L Offline
        Lars 2
        wrote on last edited by Lars 2
        #91

        Guten morgen zusammen,

        ich habe jetzt nochmal verschieden Sachen probiert. Keine Chance irgendeine Verbindung über IObroker und den Modbusadapter herzustellen. Es ist auch egal ich welchem Netzwerk sich der IObroker befindet😥

        ich habe auch mal probiert meinen SDM über Modbus auszulesen, auch hier Verbindungsabbruch ohne irgendwelche Daten zu erhalten.
        Auslesen am Laptop über den CAS ModBus Scanner funktioniert problemlos egal welcher Waveshare und welcher Port (502/8899) und auch egal ob Eingangsregister oder Holdingregister
        scanner.jpg

        Es kommt lediglich beim ersten Verbindungsaufbau ein Fehler, danach läuft es mit 1s abfrage Intervall.
        error.jpg

        Für mich kann es eigentlich nur am IObroker liegen bzw. irgendwelchen Einstellungen aber leider weiß ich nicht mehr was ich noch einstellen könnten.
        Selbst bei der neu aufgesetzten IOBroker instanz geht es ja nicht....😕

        HomoranH 1 Reply Last reply
        0
        • Lars 2L Lars 2

          Guten morgen zusammen,

          ich habe jetzt nochmal verschieden Sachen probiert. Keine Chance irgendeine Verbindung über IObroker und den Modbusadapter herzustellen. Es ist auch egal ich welchem Netzwerk sich der IObroker befindet😥

          ich habe auch mal probiert meinen SDM über Modbus auszulesen, auch hier Verbindungsabbruch ohne irgendwelche Daten zu erhalten.
          Auslesen am Laptop über den CAS ModBus Scanner funktioniert problemlos egal welcher Waveshare und welcher Port (502/8899) und auch egal ob Eingangsregister oder Holdingregister
          scanner.jpg

          Es kommt lediglich beim ersten Verbindungsaufbau ein Fehler, danach läuft es mit 1s abfrage Intervall.
          error.jpg

          Für mich kann es eigentlich nur am IObroker liegen bzw. irgendwelchen Einstellungen aber leider weiß ich nicht mehr was ich noch einstellen könnten.
          Selbst bei der neu aufgesetzten IOBroker instanz geht es ja nicht....😕

          HomoranH Do not disturb
          HomoranH Do not disturb
          Homoran
          Global Moderator Administrators
          wrote on last edited by
          #92

          @lars-2 sagte in Deye Wechselrichter Modbus Register beschreiben:

          Für mich kann es eigentlich nur am IObroker liegen

          wieso?

          @lars-2 sagte in Deye Wechselrichter Modbus Register beschreiben:

          Es kommt lediglich beim ersten Verbindungsaufbau ein Fehler,

          ich weiss nicht was der CAS dann unter der Haube umbiegt.
          Aber da scheint es ja wirklich eine Ursache zu geben.

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          1 Reply Last reply
          0
          • Lars 2L Offline
            Lars 2L Offline
            Lars 2
            wrote on last edited by
            #93

            ich nochmal 🙄

            ich habe jetzt alles noch einmal vorn von gemacht. d.h. ein komplettes Autarkes Netzwerk mit Raspberry und IObroker, Waveshare, Fritzbox und Laptop.
            Alles nach genannter Konfig eingestellt und siehe da, Verbindung steht, Daten kommen an.
            Die gleichen Konfig Schritte im Mainsystem gemacht, also Modbus komplett gelöscht, Waveshare angepasst, Modbus neu installiert... jetzt geht auch hier die Verbindung 😵 😁

            Warum auch immer oder was auch immer dazu geführt hat, keine Ahnung. Es kommen jetzt Daten und ich kann sie weiterverwenden.
            Ein paar Sachen sind mir noch komisch wie z.B. Charge/Discharge Batterie 40592 bei Discharge werden die richten Ampere angezeigt, lädt er den Akku ist der wert z.b. DEYE=1A laden->IOBroker 650A laden 😑
            Genauso 40593_Corrected_AH- hier stehen 211Ah obwohl 302Ah im Deye stehen

            1 Reply Last reply
            0
            • TheBamT Offline
              TheBamT Offline
              TheBam
              wrote on last edited by TheBam
              #94

              @lars-2
              Es freut mich das du eine verbindung hin bekommen hast. Da ich auf dein Problem keine Lösung hatte. Kann mir nur vorstellen das vielleicht irgendwo eine Einstellung nicht gepasst hat.

              Ich habe die werte gerade mal bei mir geprüft. Da er bei mir Aktuell die Batterie entlädt stimmen diese.
              Ich werde versuchen mir die werte morgen noch mal beim Laden anzusehen. Deye schickt keine Minus werte wenn er läd dann rechnet der vom Max. Integer wert nach unten. Also als Beispiel (65535 Max Integer) 300 watt laden wäre dann 65235. Dafür habe ich ja in der Liste eine Formel hinterlegt ich weiß nur nicht auf welche werte diese formel alles hinterlegt werden muss und wo die evtl. angepasst werden muss.
              Also der wert 40593 vermute ich das der den aus der Batterie liest und man den nirgends eintragen kann so das deine Batterie eine Kapazität von 211 AH hat.

              1 Reply Last reply
              0
              • coyoteC coyote

                @thebam ah ok, kann ich mal testen. Ich schau mal ob ich dein Script finde.

                TheBamT Offline
                TheBamT Offline
                TheBam
                wrote on last edited by
                #95

                @coyote
                ich bin gerade noch an einem Skript was in beide Richtungen geht am Arbeiten. Daher kann ich dir eine fertige Lösung noch nicht geben.
                Anbei aber das andere Skript mit dem kannst du schon mal die Werte in das objekt schreiben.

                function bla (){  //erstellen einer funktion
                
                //anlegen von Variablen (eingang)
                createState("javascript.0.Rechner.Bit_0",false,{ read: true, write: true, desc: "Bit 0", type: "boolean"});
                createState("javascript.0.Rechner.Bit_1",false,{ read: true, write: true, desc: "Bit 1", type: "boolean"});
                createState("javascript.0.Rechner.Bit_2",false,{ read: true, write: true, desc: "Bit 2", type: "boolean"});
                createState("javascript.0.Rechner.Bit_3",false,{ read: true, write: true, desc: "Bit 3", type: "boolean"});
                createState("javascript.0.Rechner.Bit_4",false,{ read: true, write: true, desc: "Bit 4", type: "boolean"});
                createState("javascript.0.Rechner.Bit_5",false,{ read: true, write: true, desc: "Bit 5", type: "boolean"});
                createState("javascript.0.Rechner.Bit_6",false,{ read: true, write: true, desc: "Bit 6", type: "boolean"});
                createState("javascript.0.Rechner.Bit_7",false,{ read: true, write: true, desc: "Bit 7", type: "boolean"});
                createState("javascript.0.Rechner.Bit_8",false,{ read: true, write: true, desc: "Bit 8", type: "boolean"});
                createState("javascript.0.Rechner.Bit_9",false,{ read: true, write: true, desc: "Bit 9", type: "boolean"});
                createState("javascript.0.Rechner.Bit_10",false,{ read: true, write: true, desc: "Bit 10", type: "boolean"});
                createState("javascript.0.Rechner.Bit_11",false,{ read: true, write: true, desc: "Bit 11", type: "boolean"});
                createState("javascript.0.Rechner.Bit_12",false,{ read: true, write: true, desc: "Bit 12", type: "boolean"});
                createState("javascript.0.Rechner.Bit_13",false,{ read: true, write: true, desc: "Bit 13", type: "boolean"});
                createState("javascript.0.Rechner.Bit_14",false,{ read: true, write: true, desc: "Bit 14", type: "boolean"});
                createState("javascript.0.Rechner.Bit_15",false,{ read: true, write: true, desc: "Bit 15", type: "boolean"});
                
                
                //anlegen von Variablen (Ausgang)
                createState("javascript.0.Rechner.Out_Byte",{read: true,write: true,desc: "Byte out",type: "number",min:'0', max:'65536',def:0});
                
                
                const id0   ="javascript.0.Rechner.Bit_0";//T
                const id1   ="javascript.0.Rechner.Bit_1";//A
                const id2   ="javascript.0.Rechner.Bit_2";//A
                const id3   ="javascript.0.Rechner.Bit_3";//S
                const id4   ="javascript.0.Rechner.Bit_4";//V
                const id5   ="javascript.0.Rechner.Bit_5";//V
                const id6   ="javascript.0.Rechner.Bit_6";//V
                const id7   ="javascript.0.Rechner.Bit_7";//V
                const id8   ="javascript.0.Rechner.Bit_8";//V
                const id9   ="javascript.0.Rechner.Bit_9";//V
                const id10   ="javascript.0.Rechner.Bit_10";//V
                const id11   ="javascript.0.Rechner.Bit_11";//V
                const id12   ="javascript.0.Rechner.Bit_12";//V
                const id13   ="javascript.0.Rechner.Bit_13";//V
                const id14   ="javascript.0.Rechner.Bit_14";//V
                const id15   ="javascript.0.Rechner.Bit_15";//V
                const id17   ="javascript.0.Rechner.Out_Byte";
                
                //Bit deglarieren
                var Bit_0 = getState(id0).val;
                var Bit_1 = getState(id1).val;
                var Bit_2 = getState(id2).val;
                var Bit_3 = getState(id3).val;
                var Bit_4 = getState(id4).val;
                var Bit_5 = getState(id5).val;
                var Bit_6 = getState(id6).val;
                var Bit_7 = getState(id7).val;
                var Bit_8 = getState(id8).val;
                var Bit_9 = getState(id9).val;
                var Bit_10 = getState(id10).val;
                var Bit_11 = getState(id11).val;
                var Bit_12 = getState(id12).val;
                var Bit_13 = getState(id13).val;
                var Bit_14 = getState(id14).val;
                var Bit_15 = getState(id15).val;
                var Out_Byte = getState(id17).val;
                
                
                
                //Augang auf 0 setzen
                Out_Byte=0;
                
                //eingangsvariabeln erfassen und mit Ausgang verrechnen
                if(Bit_0==true){
                    Out_Byte=Out_Byte+1
                }
                
                if(Bit_1==true){
                    Out_Byte=Out_Byte+2 
                }
                
                if(Bit_2==true){
                    Out_Byte=Out_Byte+4 
                }
                
                if(Bit_3==true){
                    Out_Byte=Out_Byte+8 
                }
                
                if(Bit_4==true){
                    Out_Byte=Out_Byte+16 
                }
                
                if(Bit_5==true){
                    Out_Byte=Out_Byte+32 
                }
                
                if(Bit_6==true){
                    Out_Byte=Out_Byte+64 
                }
                
                if(Bit_7==true){
                    Out_Byte=Out_Byte+128 
                }
                
                if(Bit_8==true){
                    Out_Byte=Out_Byte+256 
                }
                
                if(Bit_9==true){
                    Out_Byte=Out_Byte+512 
                }
                
                if(Bit_10==true){
                    Out_Byte=Out_Byte+1024 
                }
                
                if(Bit_11==true){
                    Out_Byte=Out_Byte+2048 
                }
                
                if(Bit_12==true){
                    Out_Byte=Out_Byte+4096 
                }
                
                if(Bit_13==true){
                    Out_Byte=Out_Byte+8192 
                }
                
                if(Bit_14==true){
                    Out_Byte=Out_Byte+16384 
                }
                
                if(Bit_15==true){
                    Out_Byte=Out_Byte+32768 
                }
                
                //Ausgang auf wert setzen
                 setState(id17, Out_Byte);
                }
                
                //Funktion erneut aufrufen
                setInterval(function() { 
                    bla(); 
                }, 3000);// alle 3 Sekunden ausführen 
                
                
                
                
                coyoteC 1 Reply Last reply
                0
                • TheBamT TheBam

                  @coyote
                  ich bin gerade noch an einem Skript was in beide Richtungen geht am Arbeiten. Daher kann ich dir eine fertige Lösung noch nicht geben.
                  Anbei aber das andere Skript mit dem kannst du schon mal die Werte in das objekt schreiben.

                  function bla (){  //erstellen einer funktion
                  
                  //anlegen von Variablen (eingang)
                  createState("javascript.0.Rechner.Bit_0",false,{ read: true, write: true, desc: "Bit 0", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_1",false,{ read: true, write: true, desc: "Bit 1", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_2",false,{ read: true, write: true, desc: "Bit 2", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_3",false,{ read: true, write: true, desc: "Bit 3", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_4",false,{ read: true, write: true, desc: "Bit 4", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_5",false,{ read: true, write: true, desc: "Bit 5", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_6",false,{ read: true, write: true, desc: "Bit 6", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_7",false,{ read: true, write: true, desc: "Bit 7", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_8",false,{ read: true, write: true, desc: "Bit 8", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_9",false,{ read: true, write: true, desc: "Bit 9", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_10",false,{ read: true, write: true, desc: "Bit 10", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_11",false,{ read: true, write: true, desc: "Bit 11", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_12",false,{ read: true, write: true, desc: "Bit 12", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_13",false,{ read: true, write: true, desc: "Bit 13", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_14",false,{ read: true, write: true, desc: "Bit 14", type: "boolean"});
                  createState("javascript.0.Rechner.Bit_15",false,{ read: true, write: true, desc: "Bit 15", type: "boolean"});
                  
                  
                  //anlegen von Variablen (Ausgang)
                  createState("javascript.0.Rechner.Out_Byte",{read: true,write: true,desc: "Byte out",type: "number",min:'0', max:'65536',def:0});
                  
                  
                  const id0   ="javascript.0.Rechner.Bit_0";//T
                  const id1   ="javascript.0.Rechner.Bit_1";//A
                  const id2   ="javascript.0.Rechner.Bit_2";//A
                  const id3   ="javascript.0.Rechner.Bit_3";//S
                  const id4   ="javascript.0.Rechner.Bit_4";//V
                  const id5   ="javascript.0.Rechner.Bit_5";//V
                  const id6   ="javascript.0.Rechner.Bit_6";//V
                  const id7   ="javascript.0.Rechner.Bit_7";//V
                  const id8   ="javascript.0.Rechner.Bit_8";//V
                  const id9   ="javascript.0.Rechner.Bit_9";//V
                  const id10   ="javascript.0.Rechner.Bit_10";//V
                  const id11   ="javascript.0.Rechner.Bit_11";//V
                  const id12   ="javascript.0.Rechner.Bit_12";//V
                  const id13   ="javascript.0.Rechner.Bit_13";//V
                  const id14   ="javascript.0.Rechner.Bit_14";//V
                  const id15   ="javascript.0.Rechner.Bit_15";//V
                  const id17   ="javascript.0.Rechner.Out_Byte";
                  
                  //Bit deglarieren
                  var Bit_0 = getState(id0).val;
                  var Bit_1 = getState(id1).val;
                  var Bit_2 = getState(id2).val;
                  var Bit_3 = getState(id3).val;
                  var Bit_4 = getState(id4).val;
                  var Bit_5 = getState(id5).val;
                  var Bit_6 = getState(id6).val;
                  var Bit_7 = getState(id7).val;
                  var Bit_8 = getState(id8).val;
                  var Bit_9 = getState(id9).val;
                  var Bit_10 = getState(id10).val;
                  var Bit_11 = getState(id11).val;
                  var Bit_12 = getState(id12).val;
                  var Bit_13 = getState(id13).val;
                  var Bit_14 = getState(id14).val;
                  var Bit_15 = getState(id15).val;
                  var Out_Byte = getState(id17).val;
                  
                  
                  
                  //Augang auf 0 setzen
                  Out_Byte=0;
                  
                  //eingangsvariabeln erfassen und mit Ausgang verrechnen
                  if(Bit_0==true){
                      Out_Byte=Out_Byte+1
                  }
                  
                  if(Bit_1==true){
                      Out_Byte=Out_Byte+2 
                  }
                  
                  if(Bit_2==true){
                      Out_Byte=Out_Byte+4 
                  }
                  
                  if(Bit_3==true){
                      Out_Byte=Out_Byte+8 
                  }
                  
                  if(Bit_4==true){
                      Out_Byte=Out_Byte+16 
                  }
                  
                  if(Bit_5==true){
                      Out_Byte=Out_Byte+32 
                  }
                  
                  if(Bit_6==true){
                      Out_Byte=Out_Byte+64 
                  }
                  
                  if(Bit_7==true){
                      Out_Byte=Out_Byte+128 
                  }
                  
                  if(Bit_8==true){
                      Out_Byte=Out_Byte+256 
                  }
                  
                  if(Bit_9==true){
                      Out_Byte=Out_Byte+512 
                  }
                  
                  if(Bit_10==true){
                      Out_Byte=Out_Byte+1024 
                  }
                  
                  if(Bit_11==true){
                      Out_Byte=Out_Byte+2048 
                  }
                  
                  if(Bit_12==true){
                      Out_Byte=Out_Byte+4096 
                  }
                  
                  if(Bit_13==true){
                      Out_Byte=Out_Byte+8192 
                  }
                  
                  if(Bit_14==true){
                      Out_Byte=Out_Byte+16384 
                  }
                  
                  if(Bit_15==true){
                      Out_Byte=Out_Byte+32768 
                  }
                  
                  //Ausgang auf wert setzen
                   setState(id17, Out_Byte);
                  }
                  
                  //Funktion erneut aufrufen
                  setInterval(function() { 
                      bla(); 
                  }, 3000);// alle 3 Sekunden ausführen 
                  
                  
                  
                  
                  coyoteC Offline
                  coyoteC Offline
                  coyote
                  Most Active
                  wrote on last edited by
                  #96

                  @thebam sagte in Deye Wechselrichter Modbus Register beschreiben:

                  ich bin gerade noch an einem Skript was in beide Richtungen geht am Arbeiten

                  Ok, wenn ich es richtig verstehe, meinst du mit den 2 Richtungen, dass wir einmal die Werte schreiben können über iob, aber auch den richtigen Wert angezeigt bekommen, wenn er am Gerät geändert wird.
                  Zu meinem Verständnis, das Register wird dann mit Integer beschrieben, heißt als Beispiel im Script, wenn ich den DP für Bit 5 auf true setze, setzt das Script mir den Wert auf 32, richtig?

                  TheBamT 1 Reply Last reply
                  0
                  • coyoteC coyote

                    @thebam sagte in Deye Wechselrichter Modbus Register beschreiben:

                    ich bin gerade noch an einem Skript was in beide Richtungen geht am Arbeiten

                    Ok, wenn ich es richtig verstehe, meinst du mit den 2 Richtungen, dass wir einmal die Werte schreiben können über iob, aber auch den richtigen Wert angezeigt bekommen, wenn er am Gerät geändert wird.
                    Zu meinem Verständnis, das Register wird dann mit Integer beschrieben, heißt als Beispiel im Script, wenn ich den DP für Bit 5 auf true setze, setzt das Script mir den Wert auf 32, richtig?

                    TheBamT Offline
                    TheBamT Offline
                    TheBam
                    wrote on last edited by TheBam
                    #97

                    @coyote
                    Ja genau mit Bit 5 also einer 32 in Modbus datenpunkt hast du den Donnerstag aktiviert. Wenn du Mittwoch und Donnerstag aktivieren willst musst 32+16 addieren. Also eine 48 rein schreiben.
                    Das Skript. Kann dir also die Werte ausrechnen und du musst die dann nur noch in den Modbus datenpunkt schreiben.

                    Mit beide Richtungen soll der Wert aus dem dp in die einzelnen Bits geschrieben werden da bin ich aber noch dran ich hoffe das ich es bis Sonntag gelöst habe.

                    coyoteC 1 Reply Last reply
                    1
                    • TheBamT TheBam

                      @coyote
                      Ja genau mit Bit 5 also einer 32 in Modbus datenpunkt hast du den Donnerstag aktiviert. Wenn du Mittwoch und Donnerstag aktivieren willst musst 32+16 addieren. Also eine 48 rein schreiben.
                      Das Skript. Kann dir also die Werte ausrechnen und du musst die dann nur noch in den Modbus datenpunkt schreiben.

                      Mit beide Richtungen soll der Wert aus dem dp in die einzelnen Bits geschrieben werden da bin ich aber noch dran ich hoffe das ich es bis Sonntag gelöst habe.

                      coyoteC Offline
                      coyoteC Offline
                      coyote
                      Most Active
                      wrote on last edited by
                      #98

                      @thebam so ganz passt das noch nicht, wenn ich den 40146 Solar Sell mit 32 beschreibe, geht nur Solar Sell an und Time of Use und die Tage sind nicht angehakt.

                      TheBamT 1 Reply Last reply
                      0
                      • coyoteC coyote

                        @thebam so ganz passt das noch nicht, wenn ich den 40146 Solar Sell mit 32 beschreibe, geht nur Solar Sell an und Time of Use und die Tage sind nicht angehakt.

                        TheBamT Offline
                        TheBamT Offline
                        TheBam
                        wrote on last edited by
                        #99

                        @coyote
                        Probier Mal mit 40147 ich mein der 40146 setzt nur den Haken ob überschuss verkauft werden darf oder nicht

                        coyoteC 2 Replies Last reply
                        0
                        • TheBamT TheBam

                          @coyote
                          Probier Mal mit 40147 ich mein der 40146 setzt nur den Haken ob überschuss verkauft werden darf oder nicht

                          coyoteC Offline
                          coyoteC Offline
                          coyote
                          Most Active
                          wrote on last edited by coyote
                          #100

                          EDIT: Sorry, nehme alles zurück. Natürlich ist es 40147......

                          @thebam nee, dass ist ja genau das was ich meinte. 40147 is Grid Phase.
                          Schau mal:

                          modbus.PNG

                          Ich habe leider keine Ahnung, wie man Bit0-7 einzeln mit 0/1 beschreiben kann im Register. Muss ich mal bisschen googeln, ob ich dazu was finde. Zumal es ja dann quasi auch falsch ausgelesen wird, bzw. nur das erste Bit ausgelesen wird.

                          1 Reply Last reply
                          0
                          • TheBamT TheBam

                            @coyote
                            Probier Mal mit 40147 ich mein der 40146 setzt nur den Haken ob überschuss verkauft werden darf oder nicht

                            coyoteC Offline
                            coyoteC Offline
                            coyote
                            Most Active
                            wrote on last edited by coyote
                            #101

                            @thebam ich denke, ich habe es rausgefunden. 40417 wird Dezimal beschrieben von 0-255. Damit kannst du dann den Haken bei Time of Use und die Haken bei den Tagen setzen.

                            Beispiel:
                            Dez 0 = Time of use aus und alle Tage nicht angehakt
                            Dez 65 = Time of use an und nur Samstag an
                            Dez 255 = Time of use an und alle Tage angehakt

                            TheBamT 1 Reply Last reply
                            0
                            • coyoteC coyote

                              @thebam ich denke, ich habe es rausgefunden. 40417 wird Dezimal beschrieben von 0-255. Damit kannst du dann den Haken bei Time of Use und die Haken bei den Tagen setzen.

                              Beispiel:
                              Dez 0 = Time of use aus und alle Tage nicht angehakt
                              Dez 65 = Time of use an und nur Samstag an
                              Dez 255 = Time of use an und alle Tage angehakt

                              TheBamT Offline
                              TheBamT Offline
                              TheBam
                              wrote on last edited by
                              #102

                              @coyote
                              Irgendwie ist da eine Verschiebung zwischen Liste und Auslesen. Deswegen ist der 40146 laut Liste im Adapter der 40146.

                              Das andere hatte ich dir ja auch so versucht zu sagen.
                              Bei einer 1 ist der Time of use. Angehackt.
                              Bei einer 2 nur der Montag
                              bei einer 3 time of use und Montag
                              Usw. Bei einer 4 nur der Dienstag

                              Zumindest habe ich das so verstanden ausprobiert habe ich es noch nicht können

                              coyoteC 1 Reply Last reply
                              0
                              • TheBamT TheBam

                                @coyote
                                Irgendwie ist da eine Verschiebung zwischen Liste und Auslesen. Deswegen ist der 40146 laut Liste im Adapter der 40146.

                                Das andere hatte ich dir ja auch so versucht zu sagen.
                                Bei einer 1 ist der Time of use. Angehackt.
                                Bei einer 2 nur der Montag
                                bei einer 3 time of use und Montag
                                Usw. Bei einer 4 nur der Dienstag

                                Zumindest habe ich das so verstanden ausprobiert habe ich es noch nicht können

                                coyoteC Offline
                                coyoteC Offline
                                coyote
                                Most Active
                                wrote on last edited by
                                #103

                                @thebam sagte in Deye Wechselrichter Modbus Register beschreiben:

                                Irgendwie ist da eine Verschiebung zwischen Liste und Auslesen. Deswegen ist der 40146 laut Liste im Adapter der 40146.

                                Ja, hab ich ja gemerkt, da hatte ich den Beitrag schon geschrieben, daher mein EDIT.

                                Genau so ist es. Habe es ausprobiert und funktioniert auch. Habe aber erst heut gesehen, dass es Dezimal geschrieben wird.

                                B 1 Reply Last reply
                                0
                                • coyoteC coyote

                                  @thebam sagte in Deye Wechselrichter Modbus Register beschreiben:

                                  Irgendwie ist da eine Verschiebung zwischen Liste und Auslesen. Deswegen ist der 40146 laut Liste im Adapter der 40146.

                                  Ja, hab ich ja gemerkt, da hatte ich den Beitrag schon geschrieben, daher mein EDIT.

                                  Genau so ist es. Habe es ausprobiert und funktioniert auch. Habe aber erst heut gesehen, dass es Dezimal geschrieben wird.

                                  B Offline
                                  B Offline
                                  berlinerbolle
                                  wrote on last edited by
                                  #104

                                  Mal eine blöde Frage: ich war davon ausgegangen, dass Modbus TCP direkt über den WLAN Adapter auf Port 8899 funktioniert, man also keine zusätzliche Hardware (Modbus/Ethernet Adapter) benötigt. Da liege ich anscheinend falsch?

                                  Überlege, für meine Eltern einen DEYE Hybrid zu besorgen, weil deren Niedervolt Wechselrichter kaputt gegangen ist, und sie dann die vorhandenen Bleiakkus weiternutzen könnten. Das würde ja zumindest gehen, richtig? Also man kann ganz normale 48V Akkus ohne BMS verwenden?

                                  1 Reply Last reply
                                  0
                                  • TheBamT Offline
                                    TheBamT Offline
                                    TheBam
                                    wrote on last edited by
                                    #105

                                    @berlinerbolle
                                    Also deine Doppel Frage ist etwas schwer zu beantworten. Es gibt einen deye Adapter für Cloud freies auslesen. Wenn man da in der Programmierung etwas ändert geht der auch für die Hybriden aber. Irgendwie stimmen die Register nicht. Ich habe das Mal ausprobiert bei mir aber ich konnte da jetzt keine Werte zuordnen also irgendwie passten die nicht überrein. Deswegen lese ich die Werte aus dem wr mit eine Adapter/Gateway aus. Was mir den rs485 auf Ethernet gibt. Der WLAN Stick schickt aber auch die Daten an die Solarmann App mit der man dann von überall her den Wechselrichter auslesen kann.

                                    Zu deiner 2. Frage, grundsätzlich kann der deye mit allen 48v Batterien umgehen. Nur schöner ist es wenn eine Kommunikation funktioniert. Zwischen BMS und dem wr. Aber hierfür spricht der deye ja auch can und rs485. (Bei rs485 brauchst du aber noch den Lithium Mode...ist nur eine Nummer damit die miteinander sprechen)

                                    W 1 Reply Last reply
                                    0
                                    • miaelM Offline
                                      miaelM Offline
                                      miael
                                      wrote on last edited by
                                      #106

                                      Moin,
                                      hat einer Erfahrung mit einem Umsetzer auf WLAN?
                                      Z.B. sowas:
                                      https://www.amazon.de/dp/B09PD5ZD56/ref=sspa_mw_detail_2?ie=UTF8&psc=1&sp_csd=d2lkZ2V0TmFtZT1zcF9waG9uZV9kZXRhaWwyp13NParams

                                      Habe eigentlich ganz guten Empfang in der Garage.
                                      Gruß miael

                                      1 Reply Last reply
                                      0
                                      • TheBamT TheBam

                                        @berlinerbolle
                                        Also deine Doppel Frage ist etwas schwer zu beantworten. Es gibt einen deye Adapter für Cloud freies auslesen. Wenn man da in der Programmierung etwas ändert geht der auch für die Hybriden aber. Irgendwie stimmen die Register nicht. Ich habe das Mal ausprobiert bei mir aber ich konnte da jetzt keine Werte zuordnen also irgendwie passten die nicht überrein. Deswegen lese ich die Werte aus dem wr mit eine Adapter/Gateway aus. Was mir den rs485 auf Ethernet gibt. Der WLAN Stick schickt aber auch die Daten an die Solarmann App mit der man dann von überall her den Wechselrichter auslesen kann.

                                        Zu deiner 2. Frage, grundsätzlich kann der deye mit allen 48v Batterien umgehen. Nur schöner ist es wenn eine Kommunikation funktioniert. Zwischen BMS und dem wr. Aber hierfür spricht der deye ja auch can und rs485. (Bei rs485 brauchst du aber noch den Lithium Mode...ist nur eine Nummer damit die miteinander sprechen)

                                        W Offline
                                        W Offline
                                        Waly_de
                                        wrote on last edited by Waly_de
                                        #107

                                        @thebam Bin jetzt auch mal in dieses Thema eingestiegen. Echt spannend. Danke für Deine Registerdefinitionen. Das hat mir viel geklickt gespart 😉

                                        Allerdings ist mir nicht klar, warum du uint16be verwendest und dann mit einer Formel die Werte wieder grade ziehst. In der Definition steht ja auch oft der Wertebereich.

                                        Hier mal die Definitionen der Datentypen:

                                        uint16be und int16be beziehen sich auf die Darstellung von 16-Bit-Werten (2-Byte-Werte) in einem Computer. Der Unterschied zwischen ihnen liegt in der Art, wie die Zahlen interpretiert werden.

                                        uint16be (Unsigned 16-Bit Big-Endian):

                                        • Wertebereich: 0 bis 65,535 (2^16 - 1)

                                        • uint16be repräsentiert eine 16-Bit-unsigned integer (vorzeichenlose Ganzzahl) im Big-Endian-Format. Das bedeutet, dass der Wert in 2 Byte (16 Bit) gespeichert wird, wobei das höchstwertige Byte zuerst kommt und das niederwertige Byte danach.

                                        int16be (Signed 16-Bit Big-Endian):

                                        • Wertebereich: -32,768 bis 32,767

                                        • int16be repräsentiert eine 16-Bit-signed integer (vorzeichenbehaftete Ganzzahl) im Big-Endian-Format. Auch hier wird der Wert in 2 Byte (16 Bit) gespeichert, wobei das höchstwertige Byte zuerst kommt und das niederwertige Byte danach.

                                        Oder hab ich etwas übersehen?

                                        Ich hab eben mal das chinesische Dokument mit der Modbusbeschreibung mal durch den Übersetzter gejagt. Vielleicht hilft das ja auch jemandem weiter 😉

                                        MODBUSRTU (Deutsch).pdf

                                        TheBamT 1 Reply Last reply
                                        1
                                        • W Waly_de

                                          @thebam Bin jetzt auch mal in dieses Thema eingestiegen. Echt spannend. Danke für Deine Registerdefinitionen. Das hat mir viel geklickt gespart 😉

                                          Allerdings ist mir nicht klar, warum du uint16be verwendest und dann mit einer Formel die Werte wieder grade ziehst. In der Definition steht ja auch oft der Wertebereich.

                                          Hier mal die Definitionen der Datentypen:

                                          uint16be und int16be beziehen sich auf die Darstellung von 16-Bit-Werten (2-Byte-Werte) in einem Computer. Der Unterschied zwischen ihnen liegt in der Art, wie die Zahlen interpretiert werden.

                                          uint16be (Unsigned 16-Bit Big-Endian):

                                          • Wertebereich: 0 bis 65,535 (2^16 - 1)

                                          • uint16be repräsentiert eine 16-Bit-unsigned integer (vorzeichenlose Ganzzahl) im Big-Endian-Format. Das bedeutet, dass der Wert in 2 Byte (16 Bit) gespeichert wird, wobei das höchstwertige Byte zuerst kommt und das niederwertige Byte danach.

                                          int16be (Signed 16-Bit Big-Endian):

                                          • Wertebereich: -32,768 bis 32,767

                                          • int16be repräsentiert eine 16-Bit-signed integer (vorzeichenbehaftete Ganzzahl) im Big-Endian-Format. Auch hier wird der Wert in 2 Byte (16 Bit) gespeichert, wobei das höchstwertige Byte zuerst kommt und das niederwertige Byte danach.

                                          Oder hab ich etwas übersehen?

                                          Ich hab eben mal das chinesische Dokument mit der Modbusbeschreibung mal durch den Übersetzter gejagt. Vielleicht hilft das ja auch jemandem weiter 😉

                                          MODBUSRTU (Deutsch).pdf

                                          TheBamT Offline
                                          TheBamT Offline
                                          TheBam
                                          wrote on last edited by
                                          #108

                                          @waly_de
                                          Das ist eine gute Frage. Ich hatte es anfangs mit verschiedenen Byte Arten probiert und die unit ging am besten daher bin ich dabei geblieben und irgendwann habe ich bemerkt das die Werte nicht ins Minus gehen sondern halbe im integer minus. Ich habe auch mit welchen gesprochen die Home Assistent nutzen mit dem deye die haben das selbe gesagt man muss die Werte dann umrechnen deswegen habe ich das nie mit anderen probiert. Aber wenn das auch anders geht wäre das super. Kannst es ja Mal testen und berichten.

                                          W 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          369

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe