Guten Morgen Jochen,
Vielen Dank für deine kritischen Fragen. Das ist ja für mich auch immer eine Chance besser zu werden.
Ja korrekt. Es gibt einige/viele Nichtlinearitäten in der Kurve. Das hat mich ja zum Rücklesen des Displays und dem optionalen individuellen kalibrieren der LUTs gebracht.
Der RS485 Transceiver hat ESD Schutz bis +-15KV
Eine Terminierungsoption habe ich für nicht notwendig erachtet da ein EPEver, SDM630, Pylontech, DalyBMS meines Wissens nach auch keine Terminierung haben. D.h. hier geht man wohl davon aus, dass der Anwender sich selbst um die Terminierung kümmert. Grundsätzlich bin ich Fan von Terminierung mit optionalen Widerständen und keinen per Software schaltbaren Elementen. Da weiß man was man hat, oder eben nicht hat.
Viele Grüße
Trucki
Kann ich eigentlich über ESPHome (Wemos D1 mini) meinen aktuellen Verbrauch nicht auch über die YAML direkt vom Lesekopf am Zähler (ebenfalls Wemos D1) abfragen?
Bisher sendet der Lesekopf am Zähler den Wert alle 10 Sekunden an ioBroker und von dort holt sich der ESPHome dann den Verbrauchswert um den Sun zu steuern.
Schöner wäre es doch, wenn ich diesen Wert direkt von WemoD1 zu WemosD1 senden könnte.
Schöner wäre es doch, wenn ich diesen Wert direkt von WemoD1 zu WemosD1 senden könnte.Mache ich auch direkt von einem Wemos zum anderen, wenn der Akku voll ist - dann wird nämlich die Teichpumpe inkl. UV von Intervall- auf Dauerbetrieb umgeschaltet.
Tobi
Mit was hast Du die Wemos programmiert? Arduino?
Cool Christian hat ein Video zur SUN RS485 Platine veröffentlich:
https://www.youtube.com/watch?v=7YadXS-L-PE
Danke
Gruß,
Trucki
N'Abend!
Besteht das "Problem" mit der Minimalleistung von ca. 12W nur beim 2000 oder auch beim 1000?
Meine beiden 1000er kommen bis auf 0W runter (also ohne Trucki's Platine bisher).
Tobi
Ja meine SUN 1000 kommen auch auf 0W runter. Christian hat eine Platine mit sehr alter Firmware 1.02. Ich glaube die hatte einen kleinen BUG im Bereich von 0-40W.
Der SUN2000 kommt bei mir aber nicht unter 75W-100W .
Gruß,
Trucki
Mit was hast Du die Wemos programmiert? Arduino?Ich nehme mal an, dass MagicSven gemeint ist?!
Nein Du ![]()
Joa auch der weg wemos zu wemos ohne iobroker funktioniert. kann man über die yaml einstellen.
Ich habe ja den wemos mit tasmota geflashed und lese die Daten des stromzählers darüber aus.
der wemos am sun kann eine abfrage an den wemos am stromzähler schicken und dieser sendet dann den aktuellen gesamtverbrauch an den am sun zurück.
anzeigen lassen kann ich mir das übers display auch schon, die berechnung in der yaml... ja da habe ich mich noch nicht dran gesetzt aber die werte sind da.
funktioniert mit einem http get und deserialisation
vielleicht kennt sich ja jemand mit berechnungen in der yaml aus und gibt mir einen denkanstoß oder codebeispiele...
der wert wird als string bereitgestellt und müsste dann in eine zahl konvertiert und als ac output gesetzt werden...
Nein Du ;-)Oh :D
Ja, die Wemos habe ich mit der Arduino-IDE programmiert.
Bin immer noch auf der Suche warum es mit dem ESPHome nicht läuft. Dann mit Tasmota probiert keine Ausgabe auf die Modbus befehle außer Result=Befehl.
Dann gerade eben nochmal auf die Platine geschaut.. und total verwirrt "festgestellt" das bei J5 ja eine Brücke eingebaut ist(dachte das wäre R19 und habe die Brücke weggelötet.. und wieder ESPHome dran, Rx,TX hin und her getauscht aber weiterhin nichts.
Muss ich für ESP Home oder Tasmota noch Änderungen an der Platine machen? Ich glaube für ESP Home muss R19 offen sein? Bei Tasmota geschlossen? Was ist mit dem J5? Modbus ID muss ich setzen bei beiden? sorry bin total verwirrt ![]()
Hallo Mitch,
deine Verdrahtung sieht richtig aus. Ob Du R19 oder J5 oder beide auslötest ist egal.
Miss mal mit dem Multimeter die TX u. RX Leitung vom Wemos bis zum MikrocontrollerPin auf meiner Platine durch. Wemos RX zum zweiten Pin unter der Beschriftung U1 und Wemos TX zum dritten Pin unter der Beschriftung U1 durch. Beide müssen jeweils 47Ohm haben, da sie durch R1/R2 gehen. Ich habe schon defekte R1/R2 gesehen.
Dann muss noch die 5V/Gnd am Wemos, um sicher zu sein, dass die Spannungsversorgung von meiner Platine in Ordnung ist.
Wenn das alles funktioniert, dann würde ich anstelle des Wemos einen USB zu TTL Wandler an den UART Port anschließen.
So wie hier beschrieben:
https://github.com/trucki-eu/RS485-Interface-for-Sun-GTIL2-1000#updates
Dann lädst Du Dir das Programm ModLink Demo64 VCL von hier (https://www.ozm.cz/ivobauer/modlink/downloads.htm) runter und startest es.
Du musst ComPort und ID einstellen und dann kannst Du schon versuchen die Register aus der Platine auszulesen. Ist hier ganz genau beschrieben wie das geht:
https://github.com/trucki-eu/RS485-Interface-for-Sun-GTIL2-1000#1st-test-with-pc--rs485-usb-converter-stick
Das Du anstelle des RS485 USB Stick einen normalen UART TTL USB Stick verwendest spielt keine Rolle.
Je nach dem ob die Kommunikation geht oder nicht weißt Du schon mal eher ob Du in Richtung Wemos oder Platine suchen musst.
Viel Erfolg,
Gruß,
Trucki
Hallo
Also kannst du mal einen Screenshoot von deiner WEMOS Konfig machen.
Hatte das Problem auch am Anfang, bis ich gesehen habe das ich statt ModBR TX - SerbTX genommen habe.
Vielleicht ist es ja nur so einen "kleinichkeit" ![]()
lg
Inspiriert durch die WEMOS D1 Mini Lochrasterplatine von Christian habe ich mir auch ein paar sehr billige Wemos Module besorgt und eingebaut:
Und ich muss zugeben es lief nicht sofort weil ... siehe unten ... . Hier meine YAML für ESPHome. Die Temperatur habe ich auskommentiert, da sie erst ab meiner Firmware 1.06 unterstützt wird:
esphome:
name: gtil2-1000
platform: ESP8266
board: nodemcuv2
board: d1_mini
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: ""
password: ""
captive_portal:
Enable logging
logger:
level: DEBUG
baud_rate: 115200
hardware_uart: UART1
Enable Home Assistant API
api:
ota:
uart:
id: mod_bus
tx_pin: 1
rx_pin: 3
baud_rate: 9600
stop_bits: 1
modbus:
#flow_control_pin: 5
id: modbus1
modbus_controller:
- id: sun
the Modbus device addr
address: 0x01
modbus_id: modbus1
update_interval: 1s
setup_priority: -10
sensor:
- platform: modbus_controller
modbus_controller_id: sun
name: "AC Output"
id: ac_output
register_type: holding
address: 0x01
unit_of_measurement: "W"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: sun
name: "Grid Voltage"
id: grid_voltage
register_type: holding
address: 0x02
unit_of_measurement: "V"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: sun
name: "Bat Voltage"
id: bat_voltage
register_type: holding
address: 0x03
unit_of_measurement: "V"
value_type: U_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: sun
name: "Temperature"
id: temperature
register_type: holding
address: 0x07
unit_of_measurement: "°C"
value_type: U_WORD
number:
- platform: modbus_controller
modbus_controller_id: sun
id: ac_setpoint_number
name: "AC Setpoint Number"
address: 0x00
value_type: U_WORD
multiply: 10
unit_of_measurement: "W"
min_value: 0
max_value: 9600 - platform: modbus_controller
modbus_controller_id: sun
id: dac_number
name: "DAC Number"
address: 0x04
value_type: U_WORD
min_value: 0
max_value: 33187 platform: modbus_controller
modbus_controller_id: sun
id: calibration_number
name: "Calibration Number"
address: 0x05
value_type: U_WORD
min_value: 0
max_value: 1
Mein erstes Problem:
Der WEMOS D1 Mini hat sich ganz selten mit dem WLAN verbunden. Und wenn, dann war die Verbindung total instabil. Hier hat mir geholfen, eine Standard-Config mit UART Logging zu installieren. Im Log habe ich dann gesehen, dass der WEMOS das WALN nicht findet, etc... Der Grund: BILLIGER MIST CHINA CLONE. Einfach das nächste CLONE WEMOS Modul aus der Tüte geholt und -> WLAN verbindet, super stabil.
Mein zweites Problem:
Keine Kommunikation mit der Platine. Im ESPHome Log habe ich gesehen, dass keine Daten von meiner Platine kommen. Der Grund war schnell gefunden: Meine Testplatine lief noch auf ID16 (für SDM630 Mode). Also schnell die Jumper J1-J4 für ID1 geöffnet... Und läuft
Mein ESPHome Log sieht so aus:
INFO Reading configuration /config/esphome/GTIL2-1000.yaml...
INFO Starting log output from gtil2-1000.local using esphome API
INFO Successfully connected to gtil2-1000.local
[08:42:08][app]: ESPHome version 2022.3.1 compiled on Sep 28 2022, 08:40:58
[08:42:08][C][wifi]: WiFi:
[08:42:08][C][wifi]: Local MAC: ***
[08:42:08][C][wifi]: SSID: ''[redacted]
[08:42:08][C][wifi]: IP Address: 192.168.1.
[08:42:08][C][wifi]: BSSID: **** [redacted]
[08:42:08][C][wifi]: Hostname: 'gtil2-1000'
[08:42:08][C][wifi]: Signal strength: -87 dB ▂▄▆█
[08:42:08][C][wifi]: Channel: 11
[08:42:08][C][wifi]: Subnet: 255.255.255.0
[08:42:08][C][wifi]: Gateway: 192.168.1.1
[08:42:08][C][wifi]: DNS1: 192.168.1.1
[08:42:08][C][wifi]: DNS2: 0.0.0.0
[08:42:08][C][logger]: Logger:
[08:42:08][C][logger]: Level: DEBUG
[08:42:08][C][logger]: Log Baud Rate: 115200
[08:42:08][C][logger]: Hardware UART: UART1
[08:42:08][C][uart.arduino_esp8266]: UART Bus:
[08:42:08][C][uart.arduino_esp8266]: TX Pin: GPIO1
[08:42:08][C][uart.arduino_esp8266]: RX Pin: GPIO3
[08:42:08][C][uart.arduino_esp8266]: RX Buffer Size: 256
[08:42:08][C][uart.arduino_esp8266]: Baud Rate: 9600 baud
[08:42:08][C][uart.arduino_esp8266]: Data Bits: 8
[08:42:08][C][uart.arduino_esp8266]: Parity: NONE
[08:42:08][C][uart.arduino_esp8266]: Stop bits: 1
[08:42:08][C][uart.arduino_esp8266]: Using hardware serial interface.
[08:42:08][C][modbus]: Modbus:
[08:42:08][C][modbus]: Send Wait Time: 250 ms
[08:42:08][C][modbus.number]: modbus.numberModbus Number 'AC Setpoint Number'
[08:42:08][C][modbus.number]: modbus.number Unit of Measurement: 'W'
[08:42:08][C][modbus.number]: modbus.numberModbus Number 'DAC Number'
[08:42:09][C][modbus.number]: modbus.numberModbus Number 'Calibration Number'
[08:42:09][C][modbus_controller.sensor]: modbus_controller.sensorModbus Controller Sensor 'AC Output'
[08:42:09][C][modbus_controller.sensor]: modbus_controller.sensor State Class: ''
[08:42:09][C][modbus_controller.sensor]: modbus_controller.sensor Unit of Measurement: 'W'
[08:42:09][C][modbus_controller.sensor]: modbus_controller.sensor Accuracy Decimals: 1
[08:42:09][C][modbus_controller.sensor]: modbus_controller.sensorModbus Controller Sensor 'Grid Voltage'
[08:42:09][C][modbus_controller.sensor]: modbus_controller.sensor State Class: ''
[08:42:09][C][modbus_controller.sensor]: modbus_controller.sensor Unit of Measurement: 'V'
[08:42:09][C][modbus_controller.sensor]: modbus_controller.sensor Accuracy Decimals: 1
[08:42:09][C][modbus_controller.sensor]: modbus_controller.sensorModbus Controller Sensor 'Bat Voltage'
[08:42:09][C][modbus_controller.sensor]: modbus_controller.sensor State Class: ''
[08:42:09][C][modbus_controller.sensor]: modbus_controller.sensor Unit of Measurement: 'V'
[08:42:09][C][modbus_controller.sensor]: modbus_controller.sensor Accuracy Decimals: 1
[08:42:09][C][captive_portal]: Captive Portal:
[08:42:09][C][mdns]: mDNS:
[08:42:09][C][mdns]: Hostname: gtil2-1000
[08:42:09][C][ota]: Over-The-Air Updates:
[08:42:09][C][ota]: Address: gtil2-1000.local:8266
[08:42:09][C][api]: API Server:
[08:42:09][C][api]: Address: gtil2-1000.local:6053
[08:42:09][C][api]: Using noise encryption: NO
[08:42:09][C][modbus_controller]: ModbusController:
[08:42:09][C][modbus_controller]: Address: 0x01
[08:42:09][D][modbus.number]: Number new state : 0.00
[08:42:09][D][number]: 'AC Setpoint Number': Sending state 0.000000
[08:42:09][D][modbus_controller.sensor]: Sensor new state: 0.00
[08:42:09][D][sensor]: 'AC Output': Sending state 0.00000 W with 1 decimals of accuracy
[08:42:09][D][modbus_controller.sensor]: Sensor new state: 2238.00
[08:42:09][D][sensor]: 'Grid Voltage': Sending state 223.80000 V with 1 decimals of accuracy
[08:42:09][D][modbus_controller.sensor]: Sensor new state: 0.00
[08:42:09][D][sensor]: 'Bat Voltage': Sending state 0.00000 V with 1 decimals of accuracy
[08:42:09][D][modbus.number]: Number new state : 0.00
[08:42:09][D][number]: 'DAC Number': Sending state 0.000000
[08:42:09][D][modbus.number]: Number new state : 0.00
[08:42:09][D][number]: 'Calibration Number': Sending state 0.000000
[08:42:10][D][modbus.number]: Number new state : 0.00
Viele Grüße,
Trucki
Hey Trucki,
also R1 und R2 sind ok, habe nun deinen Code mal verwendet, ergänzt um "
web_server:
port: 80"
Aber es kommt immer folgende Meldung:
13:58:29 [D] [modbus_controller] Modbus command to device=1 register=0x00 countdown=0 no response received - removed from send queue
13:58:30 [W] [modbus_controller] Duplicate modbus command found: type=0x3 address=0 count=6
Hallo Mitch,
ich habe noch ein downgrade auf Firmware 1.04 mit meiner Testplatine gemacht und den WebServer der YAML hinzugefügt. Funktioniert alles.
- Kommen aus dem RX u. TX Pin meiner Platine 5V, wenn das WEMOS nicht angeschlossen ist?
Gruß,
Trucki
Zwischen RX und TX ist keine Spannung zu messen ![]()
Klar, weil beide 5V haben.
Du musst jeweils zwischen GND und RX und GND und TX messen.
Gruß Trucki
Hi Trucki,
ok also sind 5,37V und 5,4V auf den 2 Datenleitungen ![]()
Gruß




