Wir sind einen Schritt weiter,
ich habe es geschafft das mit einer und der "ESPHome" Firmware in meinen ioBroker hinein zu bekommen. Leider musste ich das yaml Script etwas anpassen, da ich über den ESPHome Adapter im ioBroker nicht auf "Numbers" zugreifen kann, was aber wichtig ist um den entsprechende Volt und Ampere Wert ändern zu können. Habe es dann so gelöst das ich anstatt der "ESPHome" API einfach den MQTT Server meines ioBrokers hinterlegt habe, somit bekomme ich alle Werte dort hin übertragen und kann Sie auch dort ändern.
Um den ESPHome Adapter überhaupt in ioBroker installieren zu können muss man in den Einstellungen von ioBroker unter "Repositories" den haken bei "beta" setzen, sonst sieht man den ESPHome Adapter nicht. Man könnte Ihn auch direkt über die Katze (GitHub) installieren, davon würde ich allerdings abraten, da dies zu Problemen bei der Installation führen kann.
Ich habe über die ESPHome yaml auch ein Webinterface eingerichtet damit man die Werte auch separat über einen Browser ändern könnte, wenn man das denn möchte. Eigentlich hatte ich das nur gemacht weil ich am Anfang Schwierigkeiten hatte das gerät überhaupt in meinen ioBroker hinein zu bekommen, so hatte ich zumindest aber schonmal die Möglichkeit es über den Browser ansteuern zu können um zu schauen ob das ganze denn überhaupt so funktioniert wie ich mir das Vorgestellt hatte. Sieht dann so aus...
Wenn Ihr den ESPHome Adapter einmal im ioBroker installiert habt, müsst Ihr einfach nur unter "Instanzen" bei den Einstellungen von ESPHome nochmal die IP-Adresse eures ioBrokers eintragen bei "ESPHomeDashboardIP" der Port bleibt Standartmäßig auf "6052" und der Haken bei "Aktiviere das integrierte ESPHOME-Dashboard" muss gesetzt sein. Unten könntet Ihr auch mit "ADD DEVICE" Geräte hinzufügen. Das geht aber nur wenn Ihr unter "api" das Zeug mit "encryption:" raus nehmt und statdessen ein Passwort rein setzt. Vorher sieht es also so aus...
api:
encryption:
key: "zgit8AZtuXUm7x4mlcOFv3lPgTLZc1tX8Y/zwergr2B="
und ihr müsst das daraus machen weil ansonsten in ioBroker bei dem Adapter eine Fehlermeldung kommt.
api:
password: "EuerLieblingsPasswort"
wenn Ihr das mit dem Key nämlich in der yaml drin lasst und das Gerät mit "ADD DEVICE" hinzufügen wollt, kommt der Fehler "Bad format. Expected 0 at the begin" und das wollen wir ja nicht.
Aber wie gesagt, ihr braucht das Gerät gar nicht über ESPHome hinzuzufügen weil dort leider "Number" nicht mit übergeben wird und man somit auch nichts einstellen könnte, habe es nur trotzdem erklären wollen, für die Leute die vielleicht andere Sensoren etc. einbinden möchten wo es nur darum geht Werte auszulesen.
Wir wollen das ganze ja Steuern, also habe ich einfach in der ESPHome yaml den MQTT Server von ioBroker hinterlegt mit...
# MQTT kann nur benutzt werden wenn API raus gelöscht wird (sonst startet der ESP sich alle 15 Minuten neu)
mqtt:
broker: 192.168.178.21
port: 1886
username: Beispiel
password: EuerLieblingsPasswort
hier könnt Ihr natürlich das ganze so anpassen das es zu euren Einstellungen passt, ich habe in meinem MQTT Adapter von ioBroker zum Beispiel den Port auf 1886 gestellt, weil Shelly und Sonoff auch MQTT benutzen und dort schon der Standard MQTT Port vergeben war. "username" und "password" müssen natürlich auch nicht zwangsläufig hinterlegt werden, wenn Ihr in eurem ioBroker bei dem MQTT Adapter nichts hinterlegt habt, geht es auch ohne. Bei mir sieht das im MQTT Adapter zum Beispiel so aus...
Wie man sieht habe ich dort also kein Passwort hinterlegt, daher sieht das bei mir in der ESPHome yaml auch etwas simpler aus.
Wichtig für die ESPHome yaml ist auf jeden Fall auch das Ihr euch entscheiden müsst, ihr könnt ENTWEDER die Schnittstelle vom ESPHome-Adapter ODER vom MQTT-Adapter. Beides geht leider nicht weil ansonsten der ESP alle 15 Minuten einen Neustart macht, deswegen hatte ich das auch mit in die Info rein geschrieben.
Lange Rede kurzer Sinn, meine ESPHome yaml um das Joy-It Netzteil zu steuern sieht am ende so aus...
esphome:
name: joyit-netzteil
friendly_name: joyit-netzteil
esp8266:
board: esp01_1m
# Enable logging
logger:
# MQTT kann nur benutzt werden wenn API raus gelöscht wird (sonst startet der ESP sich alle 15 Minuten neu)
mqtt:
broker: 192.168.178.21
port: 1886
ota:
password: "EuerOTApasswort"
wifi:
ssid: EuerWLAN
password: EuerWlanPasswort
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Joyit-Netzteil Fallback Hotspot"
password: "EuerFallBackPasswort"
# Example configuration entry
web_server:
port: 80
auth:
username: admin
password: test0815
captive_portal:
uart:
id: uart_bus
baud_rate: 115200
tx_pin: 1
rx_pin: 3
#stream_server:
# uart_id: uart_bus
# port: 3001
modbus:
id: modbus1
modbus_controller:
- id: RD6012
## the Modbus device addr
address: 0x1
modbus_id: modbus1
setup_priority: -10
update_interval: 10s
number:
- platform: modbus_controller
modbus_controller_id: RD6012
name: "RD6012 Voltage set value"
id: rd6012_voltage_set_value
register_type: holding
address: 0x0008
unit_of_measurement: "V"
value_type: U_WORD
min_value: 0.00
max_value: 61.10
step: 0.01
multiply: 100
- platform: modbus_controller
modbus_controller_id: RD6012
name: "RD6012 Current set value"
id: rd6012_current_set_value
register_type: holding
address: 0x0009
unit_of_measurement: "A"
value_type: U_WORD
min_value: 0.00
max_value: 12.10
step: 0.01
multiply: 100
sensor:
- platform: modbus_controller
modbus_controller_id: RD6012
name: "RD6012 Voltage actual value"
id: rd6012_voltage_actual_value
register_type: holding
address: 0x000A
unit_of_measurement: "V"
value_type: U_WORD
accuracy_decimals: 2
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: RD6012
name: "RD6012 Current actual value"
id: rd6012_current_actual_value
register_type: holding
address: 0x000B
unit_of_measurement: "A"
value_type: U_WORD
accuracy_decimals: 2
filters:
- multiply: 0.01
- platform: modbus_controller
modbus_controller_id: RD6012
name: "RD6012 Power actual value"
id: rd6012_power_actual_value
register_type: holding
address: 0x000C
unit_of_measurement: "W"
value_type: U_DWORD
accuracy_decimals: 2
filters:
- multiply: 0.01
switch:
- platform: modbus_controller
modbus_controller_id: RD6012
name: "RD6012 Output enable"
id: rd6012_output_enable
register_type: holding
address: 0x0012
Display More
und genau so habe ich das ganze dann auch einfach über die USB Schnittstelle auf die NodeMCU drauf geflasht. Ihr könnt natürlich auch das Original WiFi Modul von Joy-It verwenden, dann braucht Ihr aber zusätzlich noch einen FTDI Programmer um die Firmware drauf zu flashen, weil das Originale WiFi Modul keine Micro-USB Schnittstelle besitzt. mit der NodeMCU braucht Ihr nur ein paar günstige um das entsprechend mit dem Board zu verkabeln. Sind 4 kleine Kabel die auf der Rückseite der Steuereinheit rein gesteckt werden müssen...
Hier sieht man die Steuereinheit vom Joy-It Netzteil von hinten und hier geht es um den unteren rechten Bereich, wo man dann die 4 Jumper Kabel rein stecken muss, lasst euch nicht verwundern von dem 5ten Kabel (das Orangene) was ich da noch zusätzlich drin habe, das sitzt auf dem 5v Pin, den ich nur zu Test Zwecken genutzt habe. Ihr braucht nur 4 die dann auf TX, RX, 3.3v und GND gesteckt werden müssen. Hier nochmal in der Nahaufnahme...
Die anderen Enden der Kabel kommen dann an die NodeMCU dran...
Ihr müsst die 4 Kabel dann einfach wie folgt verbinden...
3.3v --> 3.3v
GND --> GND
TX --> RX
RX --> TX
und es ist noch wichtig das Netzteil in den Einstellungen bei "Communication" unter "Interface" oder Deutsch "Schnittstelle" auf "TTL" zu setzen, sonst funktioniert die ganze Steuerung nicht. Um in das Menü zu kommen müsst Ihr am Netzteil nur auf "SHIFT" und dann auf "0" drücken, dann einfach mit den Pfeiltasten navigieren und bei "Schnittstelle" dann das Wahlrad nutzen um auf "TTL" zu stellen. WICHTIG! Nicht auf WiFi auch wenn das vielleicht logisch klingt, es muss auf TTL stehen. Falls Ihr das Originale WiFi Modul von Joy-It verwenden wollt, müsst ihr im übrigen noch den "EN" Pin abknipsen, weil das Modul sonst nur in den WLAN-Modus geht wenn auch WiFi im Netzteil bei den Einstellungen ausgewählt ist, aber wir müssen ja TTL einstellen, weil das ganze sonst nicht funktioniert. Wenn Ihr es so macht wie ich, also mit einer NodeMCU und ein paar Jumper Kabeln, dann entfällt dieser Schritt natürlich.
Wenn Ihr dann alles eingerichtet habt, sprich den ESPHome-Adapter auf euren ioBroker installiert habt, die yaml richtig konfiguriert und auf euere NodeMCU geflasht habt, den MQTT-Adapter im ioBroker installiert habt und letztendlich die NodeMSU mit ein paar Jumper Kabeln im netzteil an der Steuereinheit verbaut habt. Dann werdet Ihr im ioBroker unter "Objekte" bei "mqtt" ein neues Gerät mit dem Namen "joyit-netzteil" (falls Ihr den gleichen Namen verwendet habt wie ich) finden wo ihr dann mehrere Ordner habt, unter anderem den wichtigsten Ordner "number" wo man dann die entsprechenden Volt und Ampere Werte bei "command" einstellen kann, diese werden dann automatisch an das Netzteil übermittelt. Wichtig ist das wirklich bei "command" einzutragen und nicht bei "state" denn bei "state" steht nur der aktuell eingestellte Wert drin, von dort kann man den Wert nicht ans Netzteil übertragen. Weiter unten im Ordner "switch" ist natürlich auch noch was wichtiges drin, nämlich der "command" wo wir den DC-Ausgang am Netzteil auf "ON" oder "OFF" setzten können, also Ein oder Aus schalten können. Sieht dann so aus...
Jetzt braucht es also nur noch ein wenig Blockly Zauber im "Skripte" Adapter und schon stellt das Netzteil automatisch immer die Werte so ein das genau so viel Watt ausgegeben werden wie gerade der Verbrauch über den gemessen wird. Damit können verschenken wir keinen Strom mehr an das Öffentliche Netz, sondern speisen nur das ins Haus was auch gerade gebraucht wird. Aktuell sind wir hier im Balkonkraftwerk Sektor, leider auf 600 Watt durch den Micro-Wechselrichter beschränkt, aber das gleiche Prinzip sollte sich auch auf ein größeres Maß adaptieren lassen wenn die Reglung mal angehoben oder sogar aufgehoben wird.
Ein kleines Update zur Powerstation gibt es auch noch, denn die Firma "Akkurat GSV" war so freundlich mir eine Bluetti AC200-MAX zur Verfügung zu stellen, welche ich auch mit ein wenig ESP Zauber so smart bekomme das Ich sie über den ioBroker steuern kann, wodurch ich dann auch immer sehen kann wie viel Watt gerade über die PV-Module geladen wird, wie viel Prozent Ladestand der Akku hat und ich kann dort auch AC und DC Ein oder Aus Schalten, denn das Joy-It Netzteil muss ja auch nicht rund um die Uhr an sein. Au0erdem kann ich durch den Ladestand der Batterie auch mit rein programmieren, das er in der Nacht, falls die Batterie mal nur noch wenig Speicher hat, nur noch das absolute Minimum über das Joy-It Netzteil raus gibt, also wirklich nur noch die Grundlast abdeckt.
Alles in allem bin ich echt happy mit diesem Projekt jetzt schon so weit gekommen zu sein, der nächste Schritt wird wie gesagt sein die AC200 MAX in den ioBroker rein zu bekommen. Ich halte euch auf dem laufenden und sobald ich alles fertig habe gibt es selbstverständlich ein Video dazu