Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. ModBus Hilfe - Azzurro ZCS

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    ModBus Hilfe - Azzurro ZCS

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

      @kodo_sh hi, ja, das habe ich schon hinbekommen. ich schreibe gleich etwas mehr dazu, wie das geht, welche hardware man braucht, configs, etc.

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

        Lösung

        Hardware

        Um die Daten ber ModBus zu lesen, braucht man eine physiskalische Verbindung zum Wechselrichter. Dafür muss man einen RS485 zu USB Adapter kaufen. Ich habe mehrere solche Adapter probiert und fast keiner davon funktioniert richtig, außer dem hier: https://smile.amazon.de/gp/product/B082D5PXJ4/.

        Zusätzlich braucht man auch etwas, was die Daten dann zukünftig liest. Ich habe eine RaspberryPi dafür benutzt.

        Als nächstes muss man die Verbindung zwischen dem Wechselrichter und dem RS485 Adapter machen. Das ist eigentlich das "schwierige" Teil, da bei dem Wechselrichter nur 2 Pins verfügbar sind und eine passende Klemme wird nicht mitgeliefert. Ich hatte zufällig etwas gefunden was mit ein bisschen "Handarbeit" gepasst hat. Den RS485 Port findest du beim WR auf der unteren Seite, wo auch alle anderen Kabel rauskommen.

        Sobald die Verbindung physikalisch steht, kann man den Stick in der RasPi einstecken. Mit dem Befehl lsusb kann man dann prüfen ob der Stick erkannt wird. Es soll ein Gerät angezeigt, ähnlich wie dieser: Bus 001 Device 003: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC.

        Software

        Für einfaches, lokales Testen kann man das Tool mbpoll. Installation passiert dann laut Doku so:

        wget -O- http://www.piduino.org/piduino-key.asc | sudo apt-key add -
        echo 'deb http://raspbian.piduino.org stretch piduino' | sudo tee /etc/apt/sources.list.d/piduino.list
        sudo apt update
        sudo apt install mbpoll
        

        Da ich eigentlich nur dieses eine Gerät an den USB Ports des RasPis angebunden habe, hat es die Adresse /dev/ttyUSB0. Wenn mehrere USB Geräte verbunden sind, musst du herausfinden auf welche Adresse der RS485 Adapter läuft. Dann kann man sowas ausführen, um zu schauen ob alles läuft: mbpoll -m rtu /dev/ttyUSB0 -b 9600 -P none -r 531 -0 -1 -v. Im besten Fall kommt dann ein Wert heraus und nicht eine Fehlermeldung. Leider funktioniert es bei mir so nicht zuverlässig (bin mir nicht sicher wieso und da ich es eigentlich nicht so benutzen würde, ist es mir eigentlich egal).

        Bei mir läuft ioBroker eigentlich auf einer anderen RasPi, die zu weit weg ist um die direkt am WR zu verbinden. Deswegen benutze ich auf dem RasPi dass am WR verbunden ist ein zusätzliches Tool, ein sogenanntes ModBus RTU to TCP Gateway. Die software heißt mbusd. Wie man es baut und installiert steht im Link, ist nicht so schwierig. Sobald die Installation durch ist, braucht man eine Config Datei. Ich benutze das hier:

        # Serial port device name
        device = /dev/ttyUSB0
        
        # Serial port speed (Folow on your PLC or Modbus Device config)
        speed = 9600
        
        # Serial port mode (Folow on your PLC or Modbus Device config)
        mode = 8n1
        
        # RS-485 data direction control type (addc, rts, sysfs_0, sysfs_1)
        trx_control = addc
        
        # Sysfs file to use to control data direction
        # trx_sysfile =
        
        ############# TCP port settings #############
        
        # TCP server port number
        port = 502
        
        # Maximum number of simultaneous TCP connections
        maxconn = 32
        
        # Connection timeout value in seconds
        timeout = 60
        
        ######### Request/response settings #########
        
        # Maximum number of request retries
        retries = 3
        
        # Pause between requests in milliseconds
        pause = 100
        
        # Response wait time in milliseconds
        wait = 500
        

        Die Datei soll man im Ordner /etc/mbusd als mbusd-ttyUSB0.conf speichern (oder wenn nicht ttyUSB0, dann die richtige Adresse / Serial Port). Dann kann man mbusd als Service aktivieren indem man dieses Befehl ausführt: systemctl enable mbusd@ttyUSB0.service. Auch hier, ttyUSB0 mit der eigentlichen Adresse ersetzen, falls notwendig. Mit dem Befehl journalctl -u mbusd@<serial port>.service -f -n 10 kann man sehen was da gerade passiert, im besten fall, keine Fehler 😉

        Wenn das erstmal geht, dann kann man nochmal mbpoll ausprobieren mbpoll localhost -r 531 -0 -1 -v. Wenn alles richtig ist, dann bekommt man etwas ähnliches wie das hier:

        debug enabled
        Set device=localhost
        mbpoll 1.4-25 - FieldTalk(tm) Modbus(R) Master Simulator
        Copyright © 2015-2019 Pascal JEAN, https://github.com/epsilonrt/mbpoll
        This program comes with ABSOLUTELY NO WARRANTY.
        This is free software, and you are welcome to redistribute it
        under certain conditions; type 'mbpoll -w' for details.
        
        Connecting to [localhost]:502
        Connecting to [localhost]:502
        Set response timeout to 1 sec, 0 us
        Protocol configuration: Modbus TCP
        Slave configuration...: address = [1]
                                start reference = 531, count = 1
        Communication.........: localhost, port 502, t/o 1.00 s, poll rate 1000 ms
        Data type.............: 16-bit register, output (holding) register table
        
        -- Polling slave 1...
        [00][01][00][00][00][06][01][03][02][13][00][01]
        Waiting for a confirmation...
        <00><01><00><00><00><05><01><03><02><00><E1>
        [531]:  225
        

        Noch eine wichtige Info die man zukünftig braucht ist die IP Adresse vom RasPi. Wenn man es nicht schon kennt dann bekommt man es über den Befehl ifconfig.

        Die richtige ModBus Adresse finden

        Ein weiteres wichtiges Stück Info ist, wie man die Adressen aus der Dokumentation zu dem "übersetzt" was mbpoll, ioBroker oder ein anderer ModBus Master braucht. Wichtig sind hier 2 Sachen zu verstehen:

        • die Adressen in der Anleitung sind im Hexadecimal eingetragen. Diese muss man zu Decimal konvertieren. Z.B habe ich die Adresse 0x0200 (Running State). 0x0200 in Decimal ist 512. Rechner finden man online, hier z.B. https://www.rapidtables.com/convert/number/hex-to-decimal.html
        • bei ioBroker (und auch andere ModBus Master) spricht man die sogenannten "Holding Register" an indem man die Adresse die man vorher bekommen hat, 512, zu 40001 addiert. Also, um das "Running State" in ioBroker anzuzeigen, braucht man die Adresse 40513.

        ioBroker Config

        Nun zum spannenden Teil. In ioBroker braucht man den modbus adapter. Sobald dieser installiert ist und eine Instanz zur Konfiguration verfügbar ist, soll man diese ungefähr wie folgt konfigurieren:
        d8ddbd21-45aa-4125-86e0-372a2a8c2f9b-image.png
        727f98bb-85d4-4c8f-8544-5af69bfed9cd-image.png

        Dann springt man zu den Holding Registers und fängt an, die einzelnen Adresse hinzuzufügen. Ich habe schon ziemlich viele schon bei mir hinzugefügt also teile ich diese gerne mit euch:

        _address	name	description	unit	type	len	factor	offset	formula	role	room	poll	wp	cw	isScale
        40513	operating_status	Operating Status		uint16be	1	1	0		value		true	false	false	false
        40519	grid_voltage	Grid Voltage	V	uint16be	1	0.1	0		value		true	false	false	false
        40520	grid_current	Grid Current	A	int16be	1	0.01	0		value		true	false	false	false
        40525	grid_frequency	Grid Frequency	Hz	uint16be	1	0.01	0		value		true	false	false	false
        40526	batt_charge_discharge_power	Battery Charge / Discharge Power	W	int16be	1	10	0		value		true	false	false	false
        40527	batt_voltage	Battery Voltage	V	uint16be	1	0.1	0		value		true	false	false	false
        40528	batt_charge_discharge_current	Battery Charge / Discharge Current	A	int16be	1	0.01	0		value		true	false	false	false
        40529	batt_soc	Battery Status of Charge	%	uint16be	1	1	0		value		true	false	false	false
        40530	batt_temp	Battery Temperature	°C	uint16be	1	1	0		value		true	false	false	false
        40531	grid_power	Grid Power: to Grid + / From Grid -	W	int16be	1	10	0		value		true	false	false	false
        40532	load_power	Household Consumption	W	uint16be	1	10	0		value		true	false	false	false
        40533	batt_inverter_power	Battery Inverter Power: Discharge + / Charge -	W	int16be	1	10	0		value		true	false	false	false
        40534	pv_power_gen	PV Generated Power	W	uint16be	1	10	0		value		true	false	false	false
        40535	eps_output_voltage	EPS Output Voltage	V	uint16be	1	0.1	0		value		true	false	false	false
        40536	eps_output_power	EPS Output Power	kW	uint16be	1	0.01	0		value		true	false	false	false
        40537	daily_energy	Daily Energy	kW	uint16be	1	0.01	0		value		true	false	false	false
        40538	daily_energy_to_grid	Daily Energy to Grid	kW	uint16be	1	0.01	0		value		true	false	false	false
        40539	daily_energy_from_grid	Daily Energy from Grid	kW	uint16be	1	0.01	0		value		true	false	false	false
        40540	daily_energy_load	Daily Energy Load	kW	uint32sw	2	0.01	0		value		true	false	false	false
        40541	total_energy	Total Energy	kW	uint32be	2	1	0		value		true	false	false	false
        40543	total_energy_to_grid	Total Energy to Grid	kW	uint32be	2	1	0		value		true	false	false	false
        40545	total_energy_from_grid	Total Energy from Grid	kW	uint32be	2	1	0		value		true	false	false	false
        40547	total_energy_load	Total Energy Load	kW	uint32be	2	1	0		value		true	false	false	false
        40549	batt_daily_charge	Daily Energy Charging Battery	kW	uint16be	1	0.01	0		value		true	false	false	false
        40550	batt_daily_discharge	Daily Energy Discharging Battery	kW	uint16be	1	0.01	0		value		true	false	false	false
        40551	batt_total_charge	Total Energy Charging Battery	kW	uint32be	2	1	0		value		true	false	false	false
        40553	batt_total_discharge	Total Energy Discharging Battery	kW	uint32be	2	1	0		value		true	false	false	false
        40561	grid_voltage	Grid Voltage	V	uint16be	1	0.1	0		value		true	false	false	false
        

        Um diese zu importieren, hier drauf clicken und dann dort direkt einfügen:
        f2d68fc6-421f-4d04-8f38-5ac3dda0de7d-image.png

        Das war es schon. Ich hoffe das es hilft. Wenn es fragen dazu gibt, einfach reinschreiben 😉

        K S 2 Replies Last reply Reply Quote 1
        • K
          Kodo_sh @mrFenyx last edited by

          @mrfenyx Danke für deine Mühe 🙂

          das schaut alles schon mal ganz klasse aus.
          Ich habe am Azzurro das LAN-Modul, ein direktes auslesen per TCP ist wohl nicht möglich oder?
          Ich werde die Tage nochmal mit dem Support telefonieren.

          Anderenfalls werde ich mein Glück mit einem 484/POE LAN Adapter versuchen. Der USB Dongle mit Raspi ist mir irgendwie etwas zuviel.

          Sobald ich neue Infos habe, gebe ich sie gerne weiter.

          Gruß und ein schönes 2023

          mrFenyx 1 Reply Last reply Reply Quote 0
          • mrFenyx
            mrFenyx @Kodo_sh last edited by

            @kodo_sh dir auch ein gutes 2023 und erstmal viel Glück mit dem Support. Bei mir waren die leider nicht wirklich freundlich oder hilfreich. Ich habe am WR das WiFi Modul aber es wird nur dafür benutzt um die Daten an Azzurro selbst zu schicken und für deren (Web)App. Leider werden diese Daten auch sehr unregelmäßig und selten versandt und ich konnte die auch nicht "abfangen".
            Wenn du es ohne RasPi und Dongle irgendwie schaffst, lass es mich bitten wissen 😉

            E 1 Reply Last reply Reply Quote 0
            • E
              etsob @mrFenyx last edited by

              Hey @mrfenyx, vielen Dank für die gute Beschreibung der todos. Wir haben in vier Wochen unseren installationstermin. Ich denke mit der Übersicht kann man schon etwas anfangen. Danke dafür.

              Ich nutze auf jeden Fall als kleines danke schön, den Smileys Link ☺️

              Mich würde nur mal interessieren, wie deine. Verbindung am Azzurro zu den Pins des modbus rtu aussieht. Hast du zufällig ein Foto?

              Hattest du mit dem Gedanken gespielt einen rs232 zu lan Converter zu statt des rpi zu nutzen?

              Viele Grüße

              mrFenyx 1 Reply Last reply Reply Quote 0
              • mrFenyx
                mrFenyx @etsob last edited by

                @etsob Viel Glück mit der Installation. Wegen RS232 zu LAN, nein, habe ich nicht überlegt. Ich habe einige RPIs die bei mir rumliegen also war das für mich eigentlich die einzige Lösung die ich mir angeschaut habe. Hier noch einige Fotos zu der Verbindung. Ich habe dafür ein sogenanntes Twisted Pair benutzt (sind eigentlich die Kabel, die man in einem LAN Kabel finden - ein Paar davon habe ich benutzt.

                1. Die 4 Schrauben entfernen und Deckel Öffnen
                  f6c1eaba-e856-4b37-9e6a-7f98234b6882-image.png
                2. So sieht die Verbindung am USB Stick aus
                  b39585cb-0f38-45b9-a513-fe2c3a166c4f-image.png
                3. So sieht die Verbindung am WR aus
                  bfb30b20-650c-4e7f-aaff-4051e0dca868-image.png

                Für mich war eigentlich das größte Problem ein "Adapter" zu finden - das grüne Teil. Mein Elektriker hatte sowas bei uns "vergessen" und ich habe es ein bisschen gefeilt und es hat glücklicher weise gepasst.

                E E 2 Replies Last reply Reply Quote 0
                • E
                  etsob @mrFenyx last edited by

                  @mrfenyx

                  Perfekt. Danke dir 👍🏻

                  1 Reply Last reply Reply Quote 0
                  • E
                    ehi @mrFenyx last edited by ehi

                    @mrfenyx Vielen Dank für die tolle Anleitung,
                    mit ihr ist es mir gelungen meinen Azzurro ZCS HYD 15000 Wechselrichter auszulesen!
                    Allerdings haben die 3-Phasen Wechselrichter wohl andere Adressen als die 1-Phasigen.
                    Falls jemand die Adressen bzw. die Holding Register dafür brauchen kann stelle ich sie gerne hier rein.

                    A 1 Reply Last reply Reply Quote 0
                    • A
                      Andi 5 @ehi last edited by

                      @ehi Hallo ich habe den selben Wechselrichter habe aber das Modbus Protokoll nicht könntest du mir das schicken?
                      Danke

                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @Andi 5 last edited by

                        @andi-5 sagte in ModBus Hilfe - Azzurro ZCS:

                        habe aber das Modbus Protokoll nicht könntest du mir das schicken?

                        wenn du die Registerbeschreibung meinst ist die oben im Thread
                        https://forum.iobroker.net/post/910443
                        sehr weit unten

                        A 1 Reply Last reply Reply Quote 0
                        • A
                          Andi 5 @Homoran last edited by

                          @homoran Danke aber ich brauche die Adressen vom 3 Phasen Wechselrichter. Ich bin neu auf dem Gebiet und das ist mein erster Versuch.
                          Danke

                          K 1 Reply Last reply Reply Quote 0
                          • K
                            korhorlefor @Andi 5 last edited by

                            @andi-5 Gibt es denn da Unterschiede bezüglich der Register? In dem Pdf ist generell die Rede von Storage and Hybrid Invertern. Ich wäre jetzt davon ausgegangen, dass es keinen Unterschied macht ob ein oder dreiphasig.

                            A 1 Reply Last reply Reply Quote 0
                            • A
                              Andi 5 @korhorlefor last edited by

                              @korhorlefor kann ich noch nicht sagen aber Ehi hat geschrieben dass die 3-Phasen Wechselrichter wohl andere Adressen als die 1-Phasigen haben.

                              1 Reply Last reply Reply Quote 0
                              • K
                                korhorlefor last edited by

                                @andi-5 versuch nochmal unter https://openwb.de/forum/download/file.php?id=14331&sid=b0cb172e8faa221ead96bc3424bf151f dein Glück. Das ist die Registerbeschreibung der Sofar Wechselrichter. Die sollen baugleich sein mit Azzurro.

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

                                  @Andi-5 meine Anleitung bezieht sich auf einen 3-Phasen Wechselrichter. Die Register da drin sollten gehen. Hier aber auch die komplette Definition: ModBus-RTU Communication Protocol Ibrido monofase e 3000SP.pdf

                                  UPDATE: ach, jetzt verstehe ich! @Andi-5 braucht die Modbus Register von 1-phasigem Wechselrichter!

                                  K 1 Reply Last reply Reply Quote 0
                                  • K
                                    korhorlefor @mrFenyx last edited by

                                    Hat jemand mal den oben genannte USB RS485 Adapter mit dem ZCS Azzurro HYD 10000 verbunden? Ich versuche das gerade über die Com-Schnittstelle, wundere mich aber, dass der WR überhaupt nicht antwortet. Über Erfahrungen damit wäre ich dankbar.

                                    K T 2 Replies Last reply Reply Quote 0
                                    • K
                                      korhorlefor @korhorlefor last edited by

                                      Ich hatte ein Kontaktfehler. Es geht nun.
                                      Es handelt sich bei mir um zwei WR HYD 15000, die im Master Slave Betrieb arbeiten.
                                      Mit dem Rs485 Adapter gehe ich über die Com Schnittstelle auf die Pins 1 und 3 des ersten WR. Dann wird der erste WR(Master) mit den Pins 2 und 4 auf die Pins 1 und 3 des zweiten WR (Slave) verbunden.
                                      Das ist zwar entgegen der Skizze im Handbuch aber nach den Bezeichnung aus der Tabelle macht es so Sinn. Über die unterschiedlichen Modbus Ids kann man dann unabhängig auf beide WR zugreifen.

                                      1 Reply Last reply Reply Quote 0
                                      • M
                                        Marmic last edited by

                                        @mrFenyx noch eine Frage zu deiner Lösung. Wäre es denkbar, dass man das ganze nicht per LAN sondern per WLAN umsetzt via Raspi? Hast du dazu entsprechende Erfahrungen?

                                        Danke schon mal

                                        Alex.Sch. mrFenyx 2 Replies Last reply Reply Quote 0
                                        • Alex.Sch.
                                          Alex.Sch. @Marmic last edited by

                                          @marmic der HF2211 S ist dein Freund - der wandelt Modbus RTU in TCP über dein WLAN. Bei Ali knapp 20 Euros...

                                          M 1 Reply Last reply Reply Quote 0
                                          • M
                                            Marmic @Alex.Sch. last edited by

                                            @alex-sch Danke für die Info resp. Hinweis. Werde mir das Teil mal anschauen.

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

                                            Support us

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

                                            539
                                            Online

                                            31.8k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            14
                                            47
                                            7976
                                            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