ich habe mir jetzt einen zweiten Zähler besorgt und dem im Konfigurationsmenu die Adresse 0x2 gegeben. Den Code habe ich ChatGPT schreiben lassen.
modbus_controller:
- id: ds100_mb10
address: 0x1 ## Adresse des Modbus-Geräts (im Slave-Mode) hier ist es Decimal 1
modbus_id: modbus1
setup_priority: -10
update_interval: 10s ## Für's Testen sehr häufig, später kann man den Wert runterstellen.
- id: ds100_mb20
address: 0x2 ## Adresse des Modbus-Geräts (im Slave-Mode) hier ist es Decimal 2
modbus_id: modbus1
setup_priority: -10
update_interval: 10s ## Für's Testen sehr häufig, später kann man den Wert runterstellen.
Das funktionierte sofort. Beide Zähler werden ausgelesen.
Entsprechend Anleitung mit den beiden Touch-Tasten auf dem Zähler in die Tiefen der Einstellungen abtauchen. Gefummel - aber geht. Geht auch mit ner PC Software von B+G. Aber ich hab kein rs485 am Rechner.
Super, das ist ja einfacher als mit esphome so nen Code.
Tja, die Anleitung hab ich bisher nur überflogen, das ist ja genau die Einfachheit die ich gesucht habe.
Danke für den Input.
Huiuiui, da hab ich ja einiges verpasst. Da ist ja richtig eine kleine Community um die DS100 entstanden. Cool das sich noch einige dazu gefunden haben, ich hatte damals nichts zu dem Thema gefunden.
Das kannst du auch machen in dem du eine Firmware auf den ESP flasht wo die Baud auf 0 gesetzt ist und dann die ESP per USB an den Rechner anschließen.
Wichtig ist, dass dann aber für den MAX485 die TX/RX 0/1 genutzt wird. Also die die direkt am CH340 dran hängt.
Gerne, die Multiply-Werte hatte ich für die Rechnungen angesetzt. Manches stimmt nicht zu 100%, ich hab aber aktuell wenig Zeit das gerade zu ziehen. Falls jemand nochmal eine saubere Config hat, dann gerne einmal Pasten.
Hallo Andi.D
Ich hänge mich mal an das Thema dran…
Die Kommunikation per RS485 mit meinen DS100 funktioniert. Nur mit dem INT31 (3+3) Wert für die Spannung (Register 1024 ff) komme ich nicht klar. Wie hast du das gelöst? Ich arbeite aktuell zwar mit Raspberry-Pi + Node-Red, aber das Problem ist ja ein grundsätzliches.
Gruß
Andreas
Moin! Ich hab den Code von networklurk ganz oben übernommen und nie verändert. Hat sofort funktioniert (“S_Dword”).
Insofern kann ich dich da nicht in die richtige Richtung schubsen.
Ewig lange habe ich gebraucht, um herauszufinden, dass mein converter board mit 3,3V Betriebsspannung nicht auskommt, sondern die vollen 5V möchte.
Aber jetzt läuft das mit 3 x ds100 stabil.
Grüße
Dank für deine Rückmeldung. Das Script ist ja deutlich länger als ich erwartet hatte.
Da war ich wohl zu überflächlich. Ich werd es mal kopieren und in Ruhe durchsehen.
Gruß
Andreas
Ich hatte mir das Script jetzt angesehen. Mein Frage ist wie denn die Werte wie:
INT32(6+1) INT32(3+3) INT32(2+3) INT32(5+0) INT16(2+1) INT16(1+3) gelesen und umgesetzt werden damit sie z.B in Node-Red o.ä verarbeitbar sind. Das mit “Zähler auslesen” hatte ich mir viel einfacher vorgestellt Ich bin zwar Elektroniker, aber Mathe war nie mein Liebling.
Update:
So. Des Rätsels Lösung: Die Klammerangaben bezeichnen wohl nur die Stellen vor dem Punkt (oder Komma) und dahinter. Was kann das Leben einfach sein…
Das steht nirgends explizit. Aber Eingewehte wissen das.
by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)
Ich habe jetzt zwei B+G Smartmeter per Modbus in mein iobroker integriert.
Falls wer Interesse an den tsv Dateien hat, kann sich melden. Ich frage aber nur die Register ab, die mich interessieren.
Hi @Teimue ,
wäre toll wenn du mir einen Auszug aus der tsv Datei zukommen lassen könntest, ich schaffe zwar den Zähler auszulesen, aber die Daten stimmen nicht.
Danke
Das sind meine aktuellen Inputregister. Ich frage 2 DS100 ab!
_address deviceId name description unit type len factor offset formula role room cw isScale
30271 1 ForwardTotalEnergy Forward Total Energy kWh int32be 2 0,01 0 value false false
30281 1 ReverseTotalEnergy Reverse Total Energy kWh int32be 2 0,01 0 value false false
31025 1 A-N_PhaseVoltage A-N Phase Voltage V int32be 2 0,001 0 value false false
31027 1 B-N_PhaseVoltage B-N Phase Voltage V int32be 2 0,001 0 value false false
31029 1 C-N_PhaseVoltage C-N Phase Voltage V int32be 2 0,001 0 value false false
31041 1 A_PhaseCurrent A Phase Current A int32be 2 0,001 0 value false false
31043 1 B_PhaseCurrent B Phase Current A int32be 2 0,001 0 value false false
31045 1 C_PhaseCurrent C Phase Current A int32be 2 0,001 0 value false false
31051 1 A_PhasePower A Phase Power W int32be 2 1 0 value false false
31053 1 B_PhasePower B Phase Power W int32be 2 1 0 value false false
31055 1 C_PhasePower C Phase Power W int32be 2 1 0 value false false
31057 1 CombinedPower Combined Power W int32be 2 1 0 value false false
31076 1 A_PhaseFrequency A Phase Frequency Hz int16be 1 0,1 0 value false false
31077 1 B_PhaseFrequency B Phase Frequency Hz int16be 1 0,1 0 value false false
31078 1 C_PhaseFrequency C Phase Frequency Hz int16be 1 0,1 0 value false false
30271 2 ForwardTotalEnergy Forward Total Energy kWh int32be 2 0,01 0 value false false
30281 2 ReverseTotalEnergy Reverse Total Energy kWh int32be 2 0,01 0 value false false
31025 2 A-N_PhaseVoltage A-N Phase Voltage v int32be 2 0,001 0 value false false
31027 2 B-N_PhaseVoltage B-N Phase Voltage v int32be 2 0,001 0 value false false
31029 2 C-N_PhaseVoltage C-N Phase Voltage v int32be 2 0,001 0 value false false
31041 2 A_PhaseCurrent A Phase Current A int32be 2 0,001 0 value false false
31043 2 B_PhaseCurrent B Phase Current A int32be 2 0,001 0 value false false
31045 2 C_PhaseCurrent C Phase Current A int32be 2 0,001 0 value false false
31051 2 A_PhasePower A Phase Power W int32be 2 1 0 value false false
31053 2 B_PhasePower B Phase Power W int32be 2 1 0 value false false
31055 2 C_PhasePower C Phase Power W int32be 2 1 0 value false false
31057 2 CombinedPower Combined Power W int32be 2 1 0 value false false
31076 2 A_PhaseFrequency A Phase Frequency Hz int16be 1 0,1 0 value false false
31077 2 B_PhaseFrequency B Phase Frequency Hz int16be 1 0,1 0 value false false
31078 2 C_PhaseFrequency C Phase Frequency Hz int16be 1 0,1 0 value false false
Ich habe es nun dank diesem Beitrag (und mit Hilfe von AI) auch hinbekommen. Hatte ganz schön lange dafür gebraucht. Falls es jemandem hilft, hier meine yaml und welche exakten Komponenten ich benutzt habe.
B+G E-Tech DS100-30B
D1 Mini ESP8266
TTL RS-485
Beide Komponenten habe ich bei makershop.de bestellt
Hallo Baz,
ist zwar schon ein Weilchen her, aber … vielleicht stranden andere am gleichen Ufer.
Einfacher ist es, wenn Du die Adressen in Hex verwendest (also 400h anstelle von 31025), die 3 steht nur für den Registertyp (Holding Register) und die 1025 ist die Adresse 400h in dezimaler Schreibweise (4*256 = 1024, also wurde noch zwecks allgemeiner Verwirrung eine eins draufaddiert (Zählung beginnt bei 1, sonst bei 0) - mir ist demzufolge unklar, ob Du überhaupt das richtige Register ausgelesen hast.
address: 0x0400 # Voltage L1
register_type: holding
In der von Dir verlinkten Tabelle ist außerdem die Einheit V angegeben, das ist auch nicht richtig. Das Register enthält die Spannung in mV, deshalb
accuracy_decimals: 3
filters:
- multiply: 0.001
Der Spannungswert ist immer positiv (Leistungen, Ströme dagegen könnten auch negativ sein: Bezug bzw. Einspeisung), deshalb
value_type: U_DWORD
DWORD bedeutet Doppelwort, also 4 Bytes
U bedeutet unsigned, also ohne Vorzeichen, nur positive Werte
sieht zusammengefasst dann z.B. so aus
Hallo Andi,
unter Verwendung zweier Instanzen des modbus_controllers gelingt es auch manche Werte häufiger und andere Werte seltener auszulesen. Den aktuellen Solarüberschuss braucht man z.B. viel häufiger (um Verbraucher zu starten bzw. zu stoppen), als z.B. einen Zählerstand
Hey,
das ist nett, dass du das teilst. Ich habe meine drei DS100 jetzt allerdings stabil laufen mit Abfrage aller 3 Zählerstände und Momentanleistungen alle 90s … und das fass ich nicht mehr an
Dazu laufen die 7 S0-Bus Zähler, die ebenso abgefragt werden zu unzuverlässig.
besten Gruß