Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request: Einspeise-Steuerung via ModBus RS485 #431

Open
21 tasks
Merlin8888 opened this issue Nov 17, 2022 · 21 comments
Open
21 tasks

Feature Request: Einspeise-Steuerung via ModBus RS485 #431

Merlin8888 opened this issue Nov 17, 2022 · 21 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@Merlin8888
Copy link

Hardware

  • ESP8266
  • ESP32
  • Raspberry Pi

Modelname: ______
Retailer URL: ______

nRF24L01+ Module

  • nRF24L01+ you verified this is a Plus model capable of the required 256kBit/s mode
  • square dot indicates original Nordic Semicon chip
  • round dot indicates copy-cat / counterfeit SI labs chip

Antenna:

  • circuit board
  • external antenna

Power Stabilization:

  • 100uF Electrolytic Capacitor
    connected between +3.3V and GND (Pin 1 & 2) of the NRF Module
  • Voltage stabilizing motherboard

Connection diagram:

  • Image of the your wiring attached

Connection diagram I used:

nRF24L01+ Pin ESP8266 GPIO
Pin 1 GND [*] GND
Pin 2 +3.3V +3.3V
Pin 3 CE GPIO2 CE D4
Pin 4 CSN GPIO15 CS D8
Pin 5 SCK GPIO14 SCLK D5
Pin 6 MOSI GPIO13 MOSI D7
Pin 7 MISO GPIO12 MISO D6
Pin 8 IRQ GPIO0 IRQ D3
nRF24L01+ Pin ESP32 GPIO
Pin 1 GND [*] GND
Pin 2 +3.3V +3.3V
Pin 3 CE GPIO4 CE D4
Pin 4 CSN GPIO5 CS D5
Pin 5 SCK GPIO18 SCLK D18
Pin 6 MOSI GPIO23 MOSI D23
Pin 7 MISO GPIO19 MISO D19
Pin 8 IRQ GPIO0 IRQ D0

Note: [*] GND Pin 1 has a square mark on the nRF24L01+ module

Software

  • AhoyDTU
  • OpenDTU

Version / Git SHA:

Version: ..__
Github Hash: _______

Build & Flash Method:

  • Arduino
  • ESP Tools
  • Platform IO

Desktop OS:

  • Linux
  • Windows
  • Mac OS

Debugging:

  • USB Serial Log (attached)
  • Setup settings (use our templates ... to be added)
@Merlin8888
Copy link
Author

Merlin8888 commented Nov 17, 2022

Hallo, ist es möglich die Netzeinspeisung live zu steuern (z.B. auf 600W drosseln oder Null-Einspeisung) - also wie bei der originalen Hoymiles DTU, indem man die Daten von einem Smartmeter im Zählerkasten über eine R485 Leitung zur Verfügung stellt? Und falls ja, ... muss dass dann auch ein bestimmter Smart Meter sein (also für Hoymiles kompartibel)?
Vielen Dank

@DanielR92
Copy link
Collaborator

Hallo Merlin,

theoretisch wäre dies möglich ja.
Es fehlt aktuell noch die Software Einbindung in dem vorhanden Code.

Theoretisch würde jedes Energiemessgerät gehen, das eine Schnittstelle anbietet. Die Umsetzung muss jedoch der Nutzer selbst machen. Damit ist gemeint, wenn du ein SmartMeter hast, der nur TTL kann, wir aber aktuell MQTT anbieten. Müsstest du TTL konvertieren.

Wie auch immer... Mein Ziel ist es, das die Ahoy Software auch direkt mit dem Zähler in Kontakt tretten kann und die Daten abfragen könnte. Damit es für jeden einfach zu realisieren ist.

Jedoch stecken wir hier noch am Anfang.

@stefan123t
Copy link
Collaborator

@DanielR92 der Ansatz mit RS485 ist vermutlich der Erfolgversprechendste/Professionellste!

Was ist mit den anderen Ansätzen:

  • MQTT Topic zB von einem Shelly Device (entweder Steckdoseanadapter an der Waschmaschine oder Shelly 3EM am Hauptanschlusskasten)
  • TTL Signal zB von einem Hichi / Volkszähler am vorhandenen SmartMeter
  • Anbindung von RS485-fähigen SmartMeter wie bereits in der Original DTU Pro.

@DanielR92
Copy link
Collaborator

Ja das wäre auch alles noch was man einbauen könnte. Geb dir hier recht.

@Leviathan09
Copy link

Leviathan09 commented Nov 20, 2022

Also über eine Umsetzung mit dem Shelly 3EM würde ich mich sehr freuen.
Evtl lässt sich das ja auch mit der API von Shelly realisieren, das würde den Schritt über MQTT sparen

Aber sehe ich das richtig das beim setzen eines neuen Limits (percent non persitent) immer einige Zeit vergeht bis die Rückmeldung kommt das der Hoymiles es akzeptiert hat?
Habe Ahoy und openDTU getestet und bei openDTU scheint es irgendwie schneller zu gehen.

Das könnte evtl einer "genaueren" Einspeise-Steuerung im Weg stehen.

Ist das nur meine Wahrnehmung? Falls nicht wo könnte den der Unterschied liegen?
Ich bin eigentlich extra von openDTU weg da es bei mir nur Probleme gemacht hat

@BernhardLinz
Copy link

Also wenn man einen MQTT-Datenpunkt angeben könnte der abonniert wird mit der aktuellen Bezug- oder Einspeiseleistung wäre das doch schon ein Anfang. Und dann wird - im Rahmen von Parametern - versucht den Wert auf 0 zu halten. Ist natürlich komplizierter, je nachdem wie die Werte vorliegen (Ein Wert mit Positiv für Bezug und Negativ für Einspeisung? Getrennte Werte? Nur ein Wert für Einspeisung?)

@lumapu
Copy link
Owner

lumapu commented Nov 21, 2022

es wird aber beliebig komplex mit mehreren Wechselrichtern. Ich denke man sollte für sowas eher eine zentrale betreiben, aka NodeRed oä.

Ich kann mir schwer vorstellen, dass es eine generische Lösung für mehrere Anwender gibt.

@stefan123t
Copy link
Collaborator

@lumapu naja eine Zentrale ist für viele Nutzer bereits Overkill :) wie gesagt mir würde evtl sogar ein einzelnes Shelly 1PM genügen. Das Shelly schliesse ich zB an meine Waschmaschine (zieht aktuell XXX Watt) an und sobald genug Sonne da ist, soll der WR auch die 600W + XXX aus den PV Modulen lokal einspeisen können. Bei nem Shelly 3EM oder einem anderen per Modbus RS485 auslesbaren SmartMeter ist es idR die saldierte Summe aller drei Phasen die man abboniert.

Klar kann man das dann noch beliebig kompliziert machen und es auch auf alle WR der DTU verteilen, das macht ja die ZeroControl der DTU Pro indem sie jeweils in 30 Watt Häppchen jeden angeschlossenen WR sukszessive der Reihe nach nach oben regelt.
Ggf sogar nach Phase A/B/C geordnet/getrennt. Das wäre dann evtl sogar für die HMS/HMT WR brauchbar.

@abcdeef

This comment was marked as off-topic.

@Leviathan09

This comment was marked as off-topic.

@stefan123t

This comment was marked as off-topic.

@abcdeef

This comment was marked as off-topic.

@stefan123t
Copy link
Collaborator

@abcdeef das klingt nach einem Bedien- oder Verständnisfehler. Du hast vermutlich ein Intervall eingestellt bzw. setzt das PowerLimit zu häufig. Die AhoyDTU braucht 2-3 Sekunden um ein Kommando auszuführen bzw. den Wechselrichter nach einem Datensatz zu fragen. Der Wechselrichter selber benötigt auch einige Sekunden um das gewünschte PowerLimit nachzuregeln bzw. anzusteuern. Wenn Du nun sehr / zu häufig das PowerLimit über das MQTT Topic regelst, dann kommt die AhoyDTU nicht mehr dazu die Daten abzufragen. Wenn Du das PowerLimit aus Versehen permanent setzen solltest, kannst Du damit auch das EEPROM im Wechselrichter zu Tode flashen!
Bitte mit den vorgegebenen Einstellungen von 30 Sekunden Abfrage Intervall und alle 5 Minuten das PowerLimit per MQTT setzen, testen und ggf. ein eigenes Issue aufmachen. Danke!

Dieses Issue hier geht um eine Einspeise-Steuerung durch die DTU selbst, d.h. AhoyDTU soll selbständig über MQTT, TTL Signal oder Modbus RS485 ein SmartMeter ablesen und darauf das Limit mit einer einstellbaren, maximalen Einspeisung von 0 / 600 / 800 VA (Türkei, Deutschland / Österreich) selbst regeln.

@Screambear
Copy link

Screambear commented Jan 10, 2023

Hallo, ich würde mich über so eine Anbindung auch freuen!

Momentan wäre mein Wunsch auch ein MQTT Topic zu abonnieren und danach die Export Einstellung zu machen.
Als Einstellung dann das MQTT Topic angeben, die maximal einzuspeisende Leistung und ggf. auch den das Updateintervall.
Eine Aufteilung der einzelnen Inverter je nach Phase wäre auch ein sehr gutes Feature welches ich in Zukunft gebrauchen könnte.

Für die Zukunft oder eben für andere Nutzer wäre ein Anbindung per RS485 interessant.
Als Einstellung hier müsste doch die Adress- sowie Busdaten reichen. Dazu könnte man dann die Register für die Gesamtleistung oder die der einzelnen Phasen (Inverter eine Phase zuweisen) angeben. So wäre man frei in der Wahl des Smartmeters. Vorausgesetzt die Smartmeter geben die Daten in den Registern alle gleich an oder man kann dieser in der DTU konvertieren.

Nett wäre auch wenn man eine Prioritätenreihenfolge der Inverter angeben könnte. Die aussagt in welcher Reihenfolge die Inverter hoch oder runter gefahren werden sollen. Da müsste man dann aber auch wieder die DC Leistung mit der AC Leistung abgleichen ob überhaupt genug DC Leistung zum weiteren hochregeln vorhanden ist.

Ist das alles überhaupt von der Rechenleistung eines ESP darstellbar? Oder sollte man diese dinge dann tatsächlich lieber in eine Smarthome Zentrale auslagern?

Wenn ja, könnte man ja hier im Github Projekt ggf. für z.B. ioBroker Beispielprogramme (Blockly, Javascript) bereitstellen.

Danke!

@stefan123t stefan123t changed the title Einspeise-Steuerung Feature Request: Einspeise-Steuerung via ModBus RS485 Jan 12, 2023
@stefan123t stefan123t added enhancement New feature or request help wanted Extra attention is needed labels Jan 12, 2023
@Adminius
Copy link

Adminius commented Jan 30, 2023

ich verlinke mal diese Lib:
https://github.com/reaper7/SDM_Energy_Meter

Mit dieser Lib ist sehr einfach SDM* Zähler auszulesen, man braucht nur einen RS485 Adapter und 2 freie Pins am ESP (geht sogar über SoftwareSerial).
SDM72 liefert sogar 2 passende Leistungen:
https://github.com/reaper7/SDM_Energy_Meter/blob/master/SDM.h#L203-L204

Alternative:

PowerFactor ist positiv wenn Bezug und negativ wenn Einspeisung.
Diese zwei Register sind sowohl bei SDM630 als auch bei SDM72 vorhanden.

@lumapu
Copy link
Owner

lumapu commented Jan 30, 2023

mit dem Power-Factor glaube ich irrst du dich. Ich denke der gibt an wie du prozentual stehst zu 100% Wirkleistung

@Adminius
Copy link

Was Power Factor ist, weiß ich, wobei richtig verstehen tue ich die Blindleistung immer noch nicht :D
Das ist aber aus dem DB:
https://stromzähler.eu/media/pdf/93/17/d7/SDM72DM-V2.pdf
image
image

@lumapu
Copy link
Owner

lumapu commented Jan 30, 2023

ok, ich dachte der hat da evtl. auch Import und Export Felder.
Mich darfst du wegen Blindleistung nicht fragen 😉

@Adminius
Copy link

Adminius commented Feb 6, 2023

also, SDM72D-M-2 liegt auf dem Tisch. um die Einspeisung zu simmulieren habe ich das Netz und Last falschherum angeschlussen. Folgendes kommt aus den Reginstern:

14:11:26.963 -> System Power: -89.80 W (SDM_TOTAL_SYSTEM_POWER)
14:11:27.487 -> 1ph Power: -89.74 W (SDM_PHASE_1_POWER)
14:11:28.044 -> 2ph Power: 0.00 W (SDM_PHASE_2_POWER)
14:11:28.587 -> 3ph Power: 0.00 W (SDM_PHASE_3_POWER)

D.h. bei 3 Phasigen Stromzähler reich ein einziger Register aus: SDM_TOTAL_SYSTEM_POWER.
Die Leistung ist negativ wenn eingespeist wird und positiv wenn verbraucht wird.
https://github.com/reaper7/SDM_Energy_Meter/blob/master/SDM.h#L132

Leider ist dieser Register nicht bei 1ph Zählern vorhanden. Da müsse man auf SDM_PHASE_1_POWER gehen.

Es wäre spannend zu wissen was die 1ph Zähler sagen, wenn man SDM_PHASE_2_POWER und SDM_PHASE_3_POWER abfragt? Die gibt es natürlich nicht bei den 1ph Zählern.
Ich glaube am einfachsten ist eine Umschaltung für 1ph und 3ph einzubauen.

@KG3RK3N
Copy link
Contributor

KG3RK3N commented Feb 9, 2023

Über eine Möglichkeit der direkten Kommunikation zwischen Zähler (in meinem Fall Shelly 3EM mit Tasmota) und ahoy wäre ich auch interessiert da ich eine Nulleinspeisung fahre.
Aktuell mach ich das mit Home Assistant und einer Automatisierung die das Limit dann an ahoy per mqtt sendet. Aber gerade erst gehabt das dann nach einem kurzen Stromausfall das System nicht hoch kam und erst ein weiteres Mal neu gestartet werden musste damit die Automatisierung wieder läuft oder auch die WiFi Verbindung im Zählerschrank nicht immer ideal ist.
Deshalb wäre mir da eine direkte Kommunikation doch etwas lieber.

Hab ebenfalls schon in Richtung Modbus gedacht auch weil es vermutlich für einen größeren Teil an Nutzern interessant sein könnte.

@stefan123t
Copy link
Collaborator

Siehe ein PR für OpenDTU-OnBattery hier: hoylabs/OpenDTU-OnBattery#1150

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

10 participants