-
-
Notifications
You must be signed in to change notification settings - Fork 226
FAQ Frequently Asked Questions
-
Die Wechselrichter senden nur bei Tag, wenn auch eine Stromproduktion durch die PV Module stattfindet (DC Spannung >16V an einem MPPT-Eingang).
-
Es ist ratsam, einen Elko größer 10µF an die Stromversorgung des nRF24L01+ Moduls zu löten.
-
Beim Wemos D1 mini ESP8266 Modul sollte bei Problemen der IRQ Pin statt an D3 an D1 / D2 angelötet werden und dies auch in der System Config eingetragen werden.
-
Bei Problemen am besten ein fertiges .bin aus den GitHub Actions verwenden.
-
Die Sendeleistung nicht gleich auf HIGH oder gar MAX stellen. LOW oder MIN ist in den meisten Fällen die bessere Wahl, da es einen geringeren Einbruch der Versorgungspannung beim Senden bewirkt.
-
Binaries für AhoyDTU gibt es unter: https://github.com/lumapu/ahoy/actions/workflows/compile_esp8266.yml oder https://github.com/lumapu/ahoy/actions/workflows/compile_development.yml
-
Man muss für die o.g. Binaries bei GitHub eingeloggt sein. Die Anmeldung ist kostenlos.
-
Das erste Flashen kann z.B. mit dem esp flasher erfolgen: https://www.espressif.com/sites/default/files/tools/flash_download_tool_3.9.3.zip
-
Danach kann für Updates die .bin Datei einfach per OTA hochgeladen werden.
-
Falls bei Jemandem der ESP nach dem Flashen nicht mehr startet, im Support melden. Es scheint bei neueren Versionen des esp flasher Tools bei manchen Leuten probleme zu geben (konnte ich bei mir nicht feststellen).
-
Der Haken bei DoNotChgBin muss weg gemacht werden falls er da ist.
-
Wenn gar Nichts geht, ein Erase Flash durchführen und von vorne beginnen.
-
AhoyDTU und OpenDTU brauchen eine korrekte NTP Zeit um den Wechselrichter abzufragen.
-
Man sollte also als erstes sein WLAN eintragen und zum Internet connecten.
-
Man sollte auch etwas bei der max. Panel Power eintragen damit die Irradiation % richtig berechnet werden können.
-
Not available heißt der Wechselrichter antwortet seit min. 5 Minuten nicht auf die üblichen Anfragen durch die AhoyDTU / OpenDTU.
-
Not producing heißt der Wechselrichter hat keine aktuellen Werte zur Leistung übermittelt (d.h. die AC-Leistung <3W).
-
Die Autodiscover Funktion in HomeAssistant wird nur getriggert, wenn auch MQTT Nachrichten gesendet werden, also der Wechselrichter auch Daten sendet.
behoben / veraltet
* Beim ESP32 Wroom32 (38pol.) ist die empfohlene GPIO-Belegung diese hier und im Setup unter Sytem Config, Pinout (Wemos) folgendermaßen einzutragen:
CS=D1 (GPIO5)CE=D2 (GPIO4)IRQ=D0 (GPIO16 - no IRQ!)
* Die Warnmeldung "no IRQ" zu GPIO16 gilt nur für den kleinen Bruder ESP8266 (Wemos) und funktioniert beim ESP32 einwandfrei.
* Es kann bis zu 30 Minuten dauern, bis der Wechselrichter die erste Antwort auf Anfragen zurücksendet, also nicht gleich nach zwei / drei Minuten Sendeversuchen aufgeben.
OpenDTU
-
Binaries für OpenDTU kann man hier laden: https://github.com/tbnobody/OpenDTU/actions/workflows/build.yml
-
Bei OpenDTU:
- die opendtu-generic.bin,
- die bootloader_dio_40m.bin kommt nach 0x1000,
- die partitions.bin nach 0x8000,
- die boot_app0.bin nach 0xe000
- und das eigentliche Programm dann nach 0x10000. Beim Update wird nur noch das eigentliche Programm geflasht.
- FAQ Häufig gestellte Fragen
-
FAQ Frequently Asked Questions
- Inhaltsverzeichnis
-
Allgemeines
- Welche Modelle werden unterstützt
- Welche Geräte / Funktionen werden nicht unterstützt
- Welche Kommandos werden von der DTU unterstützt
- Welche Entfernung unterstützen die nRF24L01+ Funkmodule
- Modbus via TCP oder RS485
- Was sind SunSpec und Victron
- Was ist DRM
- Was ist AntiReflux
- Welche Modbus Register unterstützt die DTU-Pro
- Was ist MQTT
- Welche MQTT Broker / Home Automation Systeme verwendet ihr
- Hardware
-
Software / Installation
- Welche Software gibt es und mit welcher Hardware läuft sie
- BIN Files für Ahoy-DTU
- Platform IO installieren
- Wie definiere ich die Serielle Schnittstelle für den ESP7266/ESP32
- Wie kann ich den ESP8266 konfigurieren
- Wo finde ich den original Source Code von Hoymiles
- Welche EXPERIMENTELLEN Software Funktionen sind bisher noch nicht im Standard enthalten (Pull Request / Merge)
- Welche Software Funktionen sind geplant
- Konfiguration
Herzlich wilkommen zu den aktuellen Faqs, die aktuell noch in der Entwicklung sind und einen kleinen Überblick über das Projekt geben sollen
Vielleicht könnt Ihr Bitte mal so die letzten Beiträge durchgehen und einiges als FAQs mit aufnehmen in der Hoffnung, dass es nicht täglich neu gefragt wird ?
Das könnte vielleicht auch jemand machen, der aktuell nicht mit entwickelt, aber sich gut mit github auskennt ? Vielleicht auch 1 Dokument für alle Sourcen zusammen - denn einiges wäre ja Allgemeingültig ?
Bitte im entsprechenden Forums Beitrag Hilfe anbieten bzw. weitere Entwicklung hierzu diskutieren.
Tabelle der Hersteller & Modelle
Alles Wechselrichter die mit nRF24L01+ Modulen per 2.4GHz und ESB (Enhanced Shock Burst) von Nordic Semiconductors erreicht werden kann.
Aktuell unterstützte Modelle:
- ESP8266
- Arduino Nano (schon lange nicht mehr aktualisiert)
- Raspberry Pi
- Werden Hoymiles HMT und HMS auch unterstützt ?
Nein HMT und HMS verwenden ein anderes Funkmodul und können daher (vorerst) auch nicht unterstützt werden. Ob die beiden Modelle auch die selben Kommandos verwenden ist bisher unbekannt.
- Wird DTU-Pro-S auch unterstützt ?
Die DTU-Pro S ist für die o.g. Hoymiles HMT & HMS Modelle gebaut und verwendet ebenfalls ein anderes Funkmodul. Sie wird also ebenfalls auf absehbare Zeit nicht unterstützt.
- Statusabfrage
- detaillierte Statusabfrage der aktuellen Werte
- allgemeine Hardware / Software Informationen
- Alarmmeldungen
- alle Meldungen seit der letzten Nacht
- neue Meldungen
- Kontrollkommandos
- Start des Wechselrichters (Boot)
- Stop des Wechselrichters (Shutdown)
- Restart des Wechselrichters (Reboot)
- Power Limit (PowerLimit)
- Power Factor (PowerFactor)
- Parameter setzen
- Netz Profil (GridProfile)
Es sind scheint unterschiedliche Reichweiten, je nach Gegebenheit, zu geben. Ich denke ein erster Richtwert wären Sichtkontakt bis zu 10m Leichte Wände wie Holz, Ziegel etc. bis zu 3m Alles weiteren Wände eventuell nur 1m
Der Abstand zwischen einem HM-600 war nur knapp 2 m, und durch die Holzdecke + Schindeln.
Wird Modbus für Zähler auch unterstützt ?
SunSpec ist das, was z.B. SMA und Fronius sprechen um die WR zu regeln, du bekommst Werte vom WR und eine Steuerung wie z.B. Victron kann entsprechend nach Batteriestand und Hausverbrauch die Leistung reduzieren, so dass du Nulleinspeisung fahren kannst basiert auf Modbus, hat aber noch einige Register zur Identifikation zusätzlich
DRM ist ein Hardwareport, der für Australien entwickelt ist, da musst mit Widerständen und Schaltern gegen + und - Schalten, bisher keine vernünftigen Schaltungen gefunden, SunSpec ist nur möglich über RS485 wenn nicht Zero-Export aktiv ist, da der RS485 Port dann in den Slavemode geht und sonst mit dem Zähler/Messgerät als Master arbeitet
In der Dokumentation zum ModBus Protokoll [1] wird folgende Liste von Registern angegeben, hängt das eventuell miteinander zusammen ?
4.3.2 Microinverter Data Register List
The following registers provide a microinverter data register list,
which can be read-only with the function code 0x03
Table Microinverter Data Register List
Registers | Name | Decimal | Units | Remark |
---|---|---|---|---|
0x1000 | Data Type | / | / | Default, 0x3C |
0x1001 | Microinverter SN | / | / | 12-digit decimal number Big-Endian For example, 116151200012 |
0x1002 | Microinverter SN | / | / | 12-digit decimal number Big-Endian For example, 116151200012 |
0x1003 | Microinverter SN | / | / | 12-digit decimal number Big-Endian For example, 116151200012 |
0x1004 | Microinverter SN | / | / | 12-digit decimal number Big-Endian For example, 116151200012 |
0x1005 | Microinverter SN | / | / | 12-digit decimal number Big-Endian For example, 116151200012 |
0x1006 | Microinverter SN | / | / | 12-digit decimal number Big-Endian For example, 116151200012 |
0x1007 | Port Number | / | / | |
0x1008 | PV Voltage | 1 | V | |
0x1009 | PV Voltage | 1 | V | |
0x100A | PV Current | 1/2 | A | 1 for MI Series, 2 for HM Series |
0x100B | PV Current | 1/2 | A | 1 for MI Series, 2 for HM Series |
0x100C | Grid Voltage | 1 | V | |
0x100D | Grid Voltage | 1 | V | |
0x100E | Grid frequency | 2 | Hz | |
0x100F | Grid frequency | 2 | Hz | |
0x1010 | PV Power | 1 | W | |
0x1011 | PV Power | 1 | W | |
0x1012 | Today Production | / | Wh | |
0x1013 | Today Production | / | Wh | |
0x1014 | Total Production | / | Wh | |
0x1015 | Total Production | / | Wh | |
0x1016 | Total Production | / | Wh | |
0x1017 | Total Production | / | Wh | |
0x1018 | Temperature | 1 | °C | Microinverter internal temperature |
0x1019 | Temperature | 1 | °C | Microinverter internal temperature |
0x101A | Operating Status | / | / | |
0x101B | Operating Status | / | / | |
0x101C | Alarm Code | / | / | |
0x101D | Alarm Code | / | / | |
0x101E | Alarm Count | / | / | |
0x101F | Alarm Count | / | / | |
0x1020 | Link Status | / | / | Communication status with DTU |
0x1021 | / | / | / | Fixed, 0x07 |
0x1022 | Reserved | / | / | |
0x1023 | Reserved | / | / | |
0x1024 | Reserved | / | / | |
0x1025 | Reserved | / | / | |
0x1026 | Reserved | / | / | |
0x1027 | Reserved | / | / | |
0x1028 | Data Type | / | / | Default, 0x3C |
0x1029 | / | / |
Die Daten können offenbar mit dem entsprechenden 0x03
Kommando
angefordert werden und aus der entsprechenden 0x03
Antwort entnommen
werden:
4.2.3 Read Device Data
Tables Read Device Data
- Command sending format
Name | Length | Value | Remark |
---|---|---|---|
Address | 1 | RS485 Address | |
Function Code | 1 | 0x03 | |
Register Address | 2 | Big-Endian | |
Register Count | 2 | Big-Endian | |
CRC | 2 | CRC16 |
- Command response format (if success)
Name | Length | Value | Remark |
---|---|---|---|
Address | 1 | RS485 Address | |
Function Code | 1 | 0x03 | |
Data Length | 2 | ||
Data 1 | 2 | Big-Endian | |
Data 2 | 2 | Big-Endian | |
...... | |||
CRC | 2 | CRC16 |
- Command response format (if failed)
Name | Length | Value | Remark |
---|---|---|---|
Address | 1 | RS485 Address | |
Function Code | 1 | 0x83 | |
Wrong Data Code | 1 | 0x01 | |
CRC | 2 | CRC16 |
Das Protokoll ( Message Queuing Telemetry Transport ) ist ein offenes Netzwerkprotokoll für Machine-to-Machine-Kommunikation (M2M), das die Übertragung von Telemetriedaten in Form von Nachrichten zwischen Geräten ermöglicht, trotz hoher Verzögerungen oder beschränkter Netzwerke. Es ermöglich dem Wechselrichter Inforamtionen an einen Dienst zu senden, die dort abgegriffen werden können.
- Home Assistant
- Openhab
- InfluxDB
Reicht ein ESP8266 mit 1MB oder muss es unbedingt ein ESP8266 mit 4MB sein ?
- ESP8266 mit 4MB Flash ist empfohlen
- Raspberry Pi
- ESP32 mit OpentDTU
- Arduino Nano (aktuell nicht gepflegt, daher u.a. kein Active PowerLimit)
Hardware | Software (Pfad) |
---|---|
Arduino nano | Ahoy DTU tools/nano
|
ESP8266 | Ahoy DTU tools/esp8266
|
ESP8266 | Ahoy DTU tools/HoyDtuSim
|
ESP8266 | Ahoy DTU tools/NRF24_SendRcv
|
ESP32 | Open DTU tbnobody/OpenDTU |
Raspberry Pi | Ahoy DTU tools/rpi
|
Muß es ein nrf24L01+ sein oder funktioniert auch ein nrf24L01 (ohne Plus) ?
- nrf24L01+
- DollaTek 2Pcs NRF24L01 + PA + LNA Funk-Transceiver-Modul 2.4G
Nach den bisherigen Erfahrungen muß es ein +
Modell sein.
Mit der NRF24 Bibliothek kann man das Modell mit printDetails() ausgeben lassen.
Ich will mir eines bestellen, wo gibt es eine sichere Quelle ?
Die Module die aktuell bei AZDelivery (Amazon) und Makershop (ebay) angeboten werden scheinen i.d.R. zu funktionieren.
ESP32 (OpenDTU) oder ESP8266 (Ahoy-DTU) sind beide zu empfehlen, da sie bereits eine WLAN / WiFi Antenne eingebaut haben. Der Unterschied liegt ein wenig am Preis und welche Software man darauf laufen lassen möchte. Wer bereits einen Raspberry Pi in Betrieb hat, der nahe genug an den Wechselrichtern ist, kann auch diesen direkt nutzen. Auf dem Raspberry Pi sind Änderungen am Code nicht immer mit einem Software-Update (Flashen) verbunden. Historisch wurde auch der Arduino nano für erste Scans beim Reverse-Engineering verwendet.
Stabile Stromversorgung ...
Am besten nimmt man ein Netzteil mit mindestens 1A Ausgangsstrom und einem Micro USB Kabel. Am besten nimmt man originale Handyladegeräte z.B. von Samsung oder auch vom Raspberry. Je besser die Qualität desto stabiler die Spannung und der Strom --> je stabiler der DTU.
Es wird empfohlen einen 10/100uF Elko zwischen +5V und GND des NRF24 Moduls zu löten um den entsprechend hohen Strombedarf des Moduls beim Senden besser zu unterstützen. Manchmal wird auch empfohlen einen 10/100nF Tantalkondensator dazu parallel zu schalten um die Spannung zu glätten.
Die Software für den ESP32 (OpenDTU) ist ein bißchen übersichtlicher aufgebaut und wird von Thomas B. (@noby) vorbildlich gewartet.
Ahoy auf ESP8266 läuft bei mir mehrfach "im Produktiv-Einsatz" seit Wochen. Damit füttere ich die InfluxDB.
Software for ESP32 to talk to Hoymiles Inverters https://github.com/tbnobody/OpenDTU/
Software for ESP8266, Raspberr https://github.com/grindylow/ahoy
https://github.com/DanielR92/ahoy/tree/main/tools/rpi
Software (Pfad) | Hardware |
---|---|
Ahoy DTU tools/nano
|
Arduino nano |
Ahoy DTU tools/esp8266
|
ESP8266 |
Ahoy DTU tools/HoyDtuSim
|
ESP8266 |
Ahoy DTU tools/NRF24_SendRcv
|
ESP8266 |
Open DTU tbnobody/OpenDTU | ESP32 |
Ahoy DTU tools/rpi
|
Raspberry Pi |
Wo und wie kommt man direkt ohne Entwicklungsumgebung an die .bin ?
Wo liegen die verschiedenen Versionen der .bin´s ?
Den aktuellen Build bekommnt man für den ESP8266 unter: https://nightly.link/lumapu/ahoy/workflows/compile_esp8266/main/esp8266.zip
Dort im Bereich Actions findet man den Download, man muss man sich allerdings bei Github anmelden. Ein Release wird aktuell noch nicht gebaut und die BIN Files sind auch im Master Branch mit Vorsicht zu genießen. Man sollte ggf. die aktuellsten Commits / Merge Requests kontrollieren bzw. die Issues lesen.
- unter Linux
Mit upload_port = /dev/ttyUSB0
in der platformio.ini unter [env:d1_mini]
und/oder [env:node_mcu_v2]
Kommt der Fehler could not open port
muß man noch die Berechtigung anpassen,
der Benutzer muss in der dialout Gruppe sein unter Linux.
sudo adduser <mein_nutzer> dialout
Eventuell muss man sich sogar noch einmal abmelden und wieder anmelden, damit er die Berechtigungen aktualisiert.
-
unter Mac OS
-
unter Windows
Treiber installieren COM1:
Der ESP8266 eröffnet einen eigenen AP (wie zum Beispiel die Fritz!Box) Mit diesem muss man sich verbinden wie mit jedem anderen WLAN, dann kann man auf die Einstellungen zugreifen und seine eigenen Zugangsdateien fürs Wlan eingeben.
http://192.168.178.XXX/setup
https://gitee.com/iotloves/hoymiles-DTU-PRO/
andycao1860-hoymiles-DTU-PRO.zip and 1 more file https://we.tl/t-tn7OWR4VdR
Welche EXPERIMENTELLEN Software Funktionen sind bisher noch nicht im Standard enthalten (Pull Request / Merge)
SD Card Support https://github.com/grindylow/ahoy/compare/main...stefan123t:ahoy:sd_card
Power Limit via mqtt https://github.com/grindylow/ahoy/pull/109
ESP8266 Async WebServer https://github.com/grindylow/ahoy/pull/107
- State Machine
List State Machine Resources
EMBED WITH ELLIOT: PRACTICAL STATE MACHINES https://hackaday.com/2015/09/04/embed-with-elliot-practical-state-machines/
Multithreading in C und Arduino http://stefanfrings.de/multithreading_arduino/index.html
Using State Machines In Your Designs http://aqdi.com/articles/using-state-machines-in-your-designs-3/
C and C++ Finite State Machine Framework http://block-net.de/Programmierung/cpp/fsm/fsm.html
SMC The State Machine Compiler http://smc.sourceforge.net/
Generate production ready source code from UML state diagrams – and activity diagrams! https://www.sinelabore.de/doku.php
Qfsm - A graphical tool for designing finite state machines http://qfsm.sourceforge.net/
Professioneller Arduino Code: Variablen, State-Machine und Klassen https://www.youtube.com/watch?v=MERB1lqqyl8
STATE YOUR INTENTIONS MORE CLEARLY WITH STATE MACHINES https://hackaday.com/2018/04/06/state-your-intentions-more-clearly-with-state-machines/ https://www.youtube.com/watch?v=v8KXa5uRavg
Artikel über Finite State Machines https://www.mikrocontroller.net/topic/248837
Die Seriennummern des/der Wechselrichter findet man auf der Rückseite des WRs bzw. der Module. Man sollte sich die Seriennummer notieren oder abfotografieren, da man manchmal nach Installation der Module nicht mehr an diese Information kommt.
The datasheet specifies the over-the-air packet format: "Most Significant Byte (MSB) to the left" (cf [datasheet figure 11][3])
Address := Byte_4, Byte_3, Byte_2, Byte_1, Byte_0
("LSByte must be unique") so 0x1946107301
results in 19 46 10 73 01
"on the air".
Old-style NRF Libraries take uint64_t
addresses.
In this case, the correct address to pass to the library would be (uint64_t)0x1946107301ULL
.
Beispiel direkt im Souce als Kommentar z.B.
Format:
#define DTU_RADIO_ID ((uint64_t)0x1234567801ULL)
#define WR1_RADIO_ID ((uint64_t)0x1946107301ULL) // 0x1946107300ULL = WR1
#define WR2_RADIO_ID ((uint64_t)0x3944107301ULL) // 0x3944107301ULL = WR2
Ich habe mehr als 3 hoymiles HM-..., wird das auch Unterstützt ? (muss im Source geändert werden - ich weiss - aber neue Nutzer eher nicht)
Antwortet der HM-.... auch ohne angeschlossene PV Module bzw. Nachts ?
Nein, für Nachts muss zum testen ein Netzteil für Gleichspannung angeschlossen werden. Der Wechselrichter läßt sich nur bei einer Spannung von > 30V über das Funkmodul erreichen.