@sailnator Liebendgerne würde ich wissen wie ich den DPM8624-485 mit meinen 8266 verheirate.. Ich habe das MQTT Projekt von GitHub - d4rken/jt-dpm8600-psu-mqtt: Use an ESP8266 to control a JT-DPM8600 power supply using MQTT. auf meinem ESP geflasht.. Was ich nich hin bekomme ist eine Kommunikation mit dem DPM..
So, ich habs jetzt mit dem DPM und dem MQTT Projekt von https://github.com/d4rken/jt-dpm8600-psu-mqtt. Das Projekt brauchte noch ein wenig Tuning (kein PnP)und das Schema der Verkabelung passte so gar nicht wie dort auf den Bild zu sehen mit den im Projekt überein, konnte so auch nicht klappen -> desweiteren Übertragungsraten und Modus.... Da hatte ich zum Glück fachkundige Hilfe beim Anpassen..
Angesteuert wird der DPM jetzt via MQTT und einem Script im Openhab4. Der Hausverbrauch wird durch einen 3EM ermittelt, Batteriespannung mit einem Victron Shunt zu MQTT. Das ganze wird noch mit dem Wirkungsgrad des Grid-Inverters verrechnet und viola fertig die Nulleinspeisung.
Moin,
erstmal danke für den Thread. Die Informationen zu den DPM Geräten sind echt spärlich.
Ich versuche aktuell ein DPM8605 mit einem ESP32 zu steuern. Das klappt soweit auch. Eine einfache Transistorschaltung sorgt für die Pegelwandlung der TX/RX Signale. Baudrate ist mit 115200 ausgereizt. Die Schreibbefehle sind sehr schnell.
Leider gibt es ein Latenz in der Antwort. Nachdem ein Befehl gesendet wurde dauert es ca 2000us (Mikrosekunden) bis der DPM anfängt zurückzusenden. Im groben sind es 2000-2500us.
2ms sind mir leider zu viel und ich versuche das irgendwie zu optimieren. Das DPM Modul ist die TTL Version ohne RS Adapter. Die Kommunikation läuft über das "simple protocol". Meine Hoffnung ist dass vll. die Modbus Kommunikation schneller ist.
Meine Fragen:
-
Ist es überhaupt möglich mit der TTL version Modbus zu nutzen
-
Könnte jemand der das Gerät über Modbus steuert die Geschwindigkeit messen? ( Latenz zwischen absenden und dem ersten Empfang oder einfach die Gesamtdauer einer vollständigen Abfrage der Spannung.)
-
Gibt es neben dem reduzieren von Stringoperationen noch andere Wege die Gesamtdauer zu verkürzen?
Code zum benchmarken in Mikrosekunden ist recht einfach.
/** Startzeit loggen **/ int64_t start_time = esp_timer_get_time(); /** Funktionsaufrufe zum benchmarken **/ x(); y(); z(); /** Dauer berechnen **/ int64_t total = esp_timer_get_time()-start_time; /** Ergebnis ausgeben**/ Serial.println( int( total ) );
Hallo,
ich bin über ein funktionsgleiches Modul gestolpert. Es scheint mir viel preiswerter als die JoyIt Produkte.
KIKAPA XY6020L CNC justierbares Gleichstrom stabilisierte Spannungs-Stromversorgungs-konstante Spannung und gegenwärtiges Step-Down-Modul, A : Amazon.de: Gewerbe, Industrie & Wissenschaft
Von diversen Herstellern(?) und auch bei EBAY Deutschland für ~30 Euro zu finden.
Der Link ist der mit der ausführlichsten Beschreibung. In der Regel wird es ohne Gehäuse angeboten.
Optionales WIFI oder RS485 wird z.T. angeboten, braucht man aber nicht. ESP8266 oder USB-to-Seriell tut es auch ...
Die Register sind nahezu identisch und ich kann gesichert sagen, dass es auf der UART TTL Schnittstelle MODBUS "spricht".
Viel mehr als zwei, drei Sunden habe ich mich damit aber noch nicht beschäftigt.
Exploring programming a XY6020L power supply via modbus | All About Circuits
Grüße
SolarHeini
Hallo
Hat dann jemand eine Lösung hin bekommen via Home Assistant auf dem RaspberryPi über den USB Adapter (USB => RS485) das DPM8624 zu Steuern.
Wie kletty das beschrieben hat?
Oder ist es nur über einen ESP32 möglich? Was aus meiner Sicht etwas komplizierter ist.
Reto
Habe mich mit diesem Modul auch beschäftigt. Es läuft inzwischen so leidlich über das umgeflashte wlan modul. Nachteilig ist das die Batteriespannung durch das Ding zurück in das Netzteil fliesst was es Lader ungeeignet macht.
@tobimg
Hallo,
ja tatsächlich, wenn die Eingangsspannung < der Batteriespannung ist, dann kann es tatsächlich in die falsche Richtung gehen. ![]()
Ich habe probeweise ein CCCV Ladegerät klüger gemacht.
Da dieses ständig an der Batterie verbleiben könnte tritt das nicht auf.
Nebenbei, der WLAN oder USB/Seriell Adapter versorgt sich auch aus der Batterie.
Wenn man mit dem kleinen Schalter ausschaltet spart man 10-20mA.
Noch eine Beobachtung: Alle Werte sind nicht flüchtig ![]()
Selbst Ein-Aus wird in einem Bit gespeichert.
Jetzt kann man befürchten, dass man das nicht beliebig oft machen können wird.
Ähnlich wie mit dem MeanWell NPB.
Den WLAN Adapter mit dem Cloud Appen Zirkus hatte ich gar nicht ausgepackt.
Kann man den gebrauchen, mit anderer Firmware?
SolarHeini
Den Adapter hab ich mit Tasmota geflasht. Ähliches script wie bei DPM‘s. Ich kann jetzt praktisch Strom, Spannung und Switch per MQTT schalten.
Hallo auch von meiner Seite,
ich habe mir vor ein paar Monaten hier das Node-Red Skript gezogen, danke an der Stelle an @guenter_46, habe dann das ganze ausprobiert und gemerkt,
dass zwar das lesen von Werten ganz gut geht aber das schreiben ging bei mir nicht, daher habe ich dann das Skript "weiterentwickelt" bzw. abgeändert.
Damit keine Verwechslungen entstehen eine Beschreibung...
- meine Hardware: DPM8624 mit dem gelieferten RS485 Adapter und ein (Mini-)Rechner mit USB und Netzwerk (WLAN oder LAN)
- Software: Linux mit installiertem Node-Red
Man muss aber beachten, dass der Benutzer auch die Berechtigung für den USB TTL Adapter hat.
Dazu muss man sich im Terminal mit diesem Befehl zur Gruppe dialout hinzufügen:
sudo usermod -a -G dialout $USERNAME
falls es dann noch nicht geht, benötigt man noch schreib rechte:
sudo chmod 666 /dev/ttyUSB0
weitere infos: usb - How do I allow non-root access to /ttyUSB0? - Ask Ubuntu
Zur Info, für den x86 PC mit Linux habe ich mich wegen besser verfügbarer Software gegenüber Raspi und wegen des einfacheren Konfigurieren/Aufsetzen gegenüber einem ESP-Board.
Nachteil sind die höheren Anschaffungskosten und der höhere Stromverbrauch.
- Einstellungen auf dem DPM: 5 - CS Modbus auf 1, 6 - BD Baudrate auf 115200
- Verdrahtung: A zu A (DPM - Adapter), B zu B (DPM - Adapter), das wars schon.
Dabei beachten, dass die Drähte bis zum Adapter so kurz wie möglich sind (bei mir sind es jetzt 10cm weil mit 80cm hat es nicht funktioniert!)
und dann kann man mit USB-Verlängerungen arbeiten falls nötig.
5. System: Ein Gerät im Netzwerk sendet per MQTT die aktuellen Netzbezugswerte meiner Anlage.
Node-Red empfängt diese, berechnet aus dieser Leistung und der aktuellen Spannung des DPM dann den passenden Stromwert und sendet diesen an den DPM.
Mit der Basis sollte sich von der Logik her so ziemlich alles umsetzen was man gerne haben möchte,
10 Watt offset, 2% mehr/weniger Leistung abgeben, ab Spannung X erst volle Leistung, "Unterspannungsschutz" oder eventuell sogar Zeitgesteuert usw.
- Node-Red Schnittstellen:
Ihr müsst bei einem eurer Modbus-Clients eure serielle Schnittstelle unter "Server" einrichten (bei meinem Skript "DPM Serial" genannt),
möglicherweise passt alles, eventuell muss der Serial-Port geändert werden (bei mir /dev/ttyUSB0)
Und dann müsst ihr natürlich eure Datenquelle für die Leistung anpassen bzw. euren MQTT Server und die Zugangsdaten dafür ändern.
Somit gebe ich mein aktuelles Node-Red Script an die Community zurück:
Achtung! Das Skript berücksichtigt keine Unterspannung des Akku's
Node-Red-DPM.zip (3.23 KB)
Ihr könnt das dazugehörige Dashboard mit IP-Adresse:1880/endpoint/ui aufrufen
(eventuell lade ich noch eines mit mehr Dokumentation hoch)
Hallo zusammen,
ich habe mir hier jetzt alle Beiträge durchgelesen und bin etwas verwirrt weil die beiden Ansteuerarten (TTL oder Modbus) zusammen besprochen werden.
Der DPM8605 der mich zum Testen interessieren würde kann ja eh nur per TTL gesteuert werden.
Jetzt wäre meine Frage mit welchem Pegel der TTL- Ein/Ausgang gesteuert werden muss oder einfacher gefragt kann man den direkt über einen ESP steuern (weil der mit 3,3V läuft) oder muss ein Level-shifter verwendet werden?
Ich hatte dazu auch Joy-it angeschrieben aber der Support scheint mir unter aller Sau zu sein da auch nach Wochen keine Antwort gekommen ist.
Es wäre klasse wenn Ihr mich erhellen könntet ![]()
Danke und Gruß
dnwalker
Schau mal einige Beiträge weiter oben:
Er hat Level Shifter verbaut.
Bei TTL Bausteinen wird High spätestens bei Spannungen über 2,4V erkannt. Der ESP32 hat z.B. eine High Level Output Voltage von 0,8 * Vdd ; 3,3 * 0,8 = 2,64V und eine High Level Input Voltage ist 0,75 * Vdd, 0,75 * 3,3 = 2,4V (Info aus dem Datenblatt)
Könnte gerade so gehen, aber ich würde auch Level Shifter einsetzen. Das wäre eigentlich eine Frage an den ESP Support gewesen, denn TTL ist klar definiert ![]()
Viele Grüße, steve
@chrisly-2 Hallo Chrisly. Was genau muss da geändert werden? Ich habe dies bei mir versucht und bin gescheitert. Die COM läuchtet blau am DMP, aber es kommt nie was zurück und kein Befehlt wird empfangen. Danke um jeglichen Hinweis! Gruss Martin
@nili76 sehr interessant. Danke für den Code. Hat das bei dir einfach so geklappt? Ich habe einen R485 DMP, hast du auch einen TTL<->R485 Adapter?
@nili76 du hast das gelbe Kabel (VCC) nicht an den Adapter angeschlossen? Und wie powerst du den ESP8266?
Hier gibt es eine DIY WiFi dongle für den großen Bruder, sollte aber auch mit dem DPM8642-485 und Homeassistent funktionieren: GitHub - mjpalmowski/esphome-juntek-DPM8650-mqtt-http-tool: Control your JUNTEK 50A Buck converter using its RS485 interface. "WIFI dongle" Homeasistant/NodeRed/Web Control ESPHome YAML Config
