Huawei R4850G2 per CAN mit tasmota auslesen und steuern
Teil 1 - Allgemein
Teil 2 - WT32-ETH1 <> R4850G2 + Netzteilabschaltung
Teil 3 - Olimex POE <> R4850G2 + Netzteilabschaltung + Pylontech (+ HLG)
Das Huawei R4850G2 ist ein Netzteil, welches gern zum Laden von Akkus verwendet wird. Das R480G2 soll mein Meanwell HLG600-54B ersetzen.
Während sich das HLG recht einfach per PWM-Signal ansteuern liess, so muss das Huawei per CAN angesprochen werden.
Da die bestehenden Möglichkeiten mit dem Can_Sniffer per SPI nicht zum Erfolg führten hat Gerhard kurzerhand seinen SML-Treiber erweitert und dieser kann nun mit dem Huawei kommunizieren.
Hier noch einmal meinen RIESEN Dank dafür!
Hardware:
ESP: ESP32
CAN-Transceiver TJA1051-Modul (normale 5V Variante, nicht 3.3V /T3)
Ein ESP 8266 geht hier nicht, es muss zwingend ein ESP32 sein, da dieser den CAN-Controller integriert hat und man nur noch einen CAN-Transceiver benötigt. Ich nutze dafür einen TJA1051. (ein MCP2551 funktionierte nicht)
Das TJA1051-Modul wird mit 5V betrieben , somit liegt sicherlich auch der Signalpegel ebenfalls bei 5V. Und ja, die I/Os des ESPs dürfen offiziell nur mit 3.3V betrieben werden. Nach meinen Recherchen und Erfahrungen sind die I/Os 5V tolerant.
Wer dem allerdings nicht vertraut, der kann einen 3.3V Transceiver benutzen oder alternativ einen Levelshifter.
Schaltplan und Anschluss:
Den Anschluss der zwei CAN-Leitungen am Huawei und weitere Infos kann man hier entnehmen.
Software:
Die Firmware muss wieder mit dem Development branch von tasmota kompiliert werden.
Die benötigten Definitionen für die user_config_override.h:
#ifndef USE_SCRIPT
#define USE_SCRIPT # adds about 17k flash size, variable ram size
#endif
#ifdef USE_RULES
#undef USE_RULES
#endif
#define USE_UFILESYS
#define USE_SCRIPT_WEB_DISPLAY
#ifndef USE_SML_M
#define USE_SML_M
#endif
#ifndef USE_SML_CANBUS
#define USE_SML_CANBUS
#endif
#define USE_SML_SCRIPT_CMD
Alles anzeigen
Script:
>D 40
ovolt=0
maxc=0
cstr=""
>B
=>sensor53 r
>S
if chg[ovolt]>0 {
; change voltage 41.5 - 58.5
cstr="908180FE0801000000"+hx(ovolt*1024)
sml(1 3 cstr)
}
if chg[maxc]>0 {
; change max current 0-60A
cstr="908180FE0801030000"+hx(maxc*20)
sml(1 3 cstr)
}
>M 1
; Huawei R4850G2
+1,12,C,0,3203,CAN,13,10,908040FE080000000000000000
1,1081407f0801700000UUuuUUuu@1024,Input Power,W,ipwr,1
1,1081407f0801710000UUuuUUuu@1024,Input Frequency,Hz,freq,1
1,1081407f0801780000UUuuUUuu@1024,Input Voltage,V,ivolt,1
1,1081407f0801720000UUuuUUuu@1024,Input Current,A,icurr,1
1,1081407f0801750000UUuuUUuu@1024,Output Voltage,V,ovolt,1
1,1081407f0801810000UUuuUUuu@1024,Output Current,A,ocurr,1
1,1081407f0801760000UUuuUUuu@20,Output Max Current,A,mcurr,1
1,1081407f0801800000UUuuUUuu@1024,Input Temp,C,itmp,1
1,1081407f08017f0000UUuuUUuu@1024,Output Temp,C,otmp,1
1,1081407f0801740000UUuuUUuu@1024,Efficiency,%%,eff,1
1,=so8,00000000
1,=so9,1081407f
#
>W
<hr>
nm(41.5 58.5 0.1 ovolt "Output Voltage (V): " 80 1)
nm(0 60 0.1 maxc "Max Current (A): " 80 1)
#
Alles anzeigen
Mit dieser Minimalvariante kann man die Ausgangsspannung und die maximale Stromstärke manuell per Dropdownmenü einstellen. Eine erweiterte Funktionalität folgt im Teil 2 und 3.
Zu beachten ist, dass der ESP nach dem Netzteil starten muss, ist dies nicht der Fall muss der ESP / oder der Decoder neu gestartet werden.
Firmware zum Testen: