Reverse Engineering protokolu telemetrie solárního invertoru

…a obecný pohled na výzvy solárních invertorů/skvělé věci.

Aktualizace z 21. listopadu 2020:

Několik lidí se mě zeptalo na aplikaci a zdrojový kód použitý k přemostění tohoto střídače na brokera MQTT. Bohužel tento střídač selhal nedlouho po napsání tohoto příspěvku (nikdy nezapínejte “Auto Bypass/Option 9″…) a jako takový jsem se posunul dál haha 😬​​.

Utilitu, kterou jsem vytvořil, což je spustitelný soubor C#/Mono zaměřený na CPU arm32/Raspberry Pi, najdete zde . Zdrojový kód je dostupný na Github zde . Možná budete muset nainstalovat mono-complete na váš počítač, abyste mohli spustit binární spustitelný soubor: sudo apt install mono-complete.

Činnost binárního spustitelného souboru je podrobně popsána níže.

Hlavní příběh:

V roce 2012 Eskom (jediná veřejná dodavatelská společnost elektřiny v Jižní Africe) oznámila, že zvýší své tarify za elektřinu zhruba o 16 % a chce zvýšit tarify meziročně o 25,9 % (v závislosti na různých schváleních). To bylo samozřejmě směšné číslo, ale bylo řečeno: elektřina by se stala mnohem dražší a náklady by nadále rostly rychlostí vyšší než inflace. Rozhodl jsem se, že mít několik solárních panelů na kompenzaci některých mých požadavků by byl dobrý nápad a pustil jsem se do získávání cenových nabídek.

První cenová nabídka, kterou jsem obdržel, byla neobyčejně drahá a ani v nejhorším scénáři eskom-sazeb by se instalace nikdy nezaplatila. Takže jsem si obstaral panely a střídače pro připojení k síti sám a provedl vlastní instalaci. To bylo před 8 lety.

(Velmi riskantní) čínský solární střídač před instalací. Ventilátory na těchto jednotkách selhaly krátce po zakoupení a generovaly mnoho RF rušení. Byly extrémně neefektivní, ale cenově dostupné.
8 let a noví fanoušci později.
Solární panely – CHINALAND 270w panely, pocházejí od Mantech Electronics (distributor elektrických součástek). Sama sebe jsem touto samoinstalací překvapila. Tyto panely byly uváděny jako 13,7% účinné při zachycování sluneční energie. Moderní panely zjevně přesahují 20 %.

Rychlý posun vpřed do roku 2020 a snižování zátěže je zpět... ale technologie invertoru se hodně zlepšila, a tak se zdálo být dobrým nápadem upgradovat. Nějaký průzkum, dotazy na akcie a výlet do železářství Brights později:

Zadejte invertor CB Solar Synapse 4.0+ .

Trh s měniči je zaplaven řadou různých značek. Máte Mecer, KODAK(!?), Synerji, THESUNPAYS, MaxPower atd. Je jich spousta, ale všechny vypadají zhruba stejně: kovová krabice s malým LCD panelem.

Zdálo se, že většinu měničů skutečně vyrobila společnost s názvem Voltronic/Axpert. Poněkud známý je protokol Axpert s různými repozitáři demonstrujícími komunikační pokusy dostupné na Githubu a podobně. "Skvělé," pomyslel jsem si, "tato jednotka Synapse musí být jednotka Axpert, koupím ji a použiji nějaký otevřený zdrojový kód k jejímu přečtení."

Zapojení ve střídači do domácí rozvodné desky (poté, co mi Dents Electrical řekl, že mi mohou pomoci až za 2 týdny, pfffft). Jsem opravdu rád, že jsem si nechal nainstalovat tuto 3-vrstvou desku. Některé jednotky Shelly 4CH Pro kontrolér/monitor energie jsou přítomny.
Samozřejmě musí být zapojeno Raspberry Pi. Hackujte tvrději Bobby! Vlevo je USB vstup (který vychází z USB portu routeru Mikrotik, který je napájen baterií). Vpravo je adaptér OTG s kabelem USB vedoucím do měniče.
Moaaar baterie! Jedná se o místně vyráběné 102Ah utěsněné olověné baterie. Jsou zapojeny v sérii pro 48V @ 102Ah. Jejich maximální vybití je 80 %, takže v praxi dokážou dodat ~3,8 kwH. To nám obecně vydrží 2 sloty pro odkládání zátěže.
PCB datové konektivity střídače – zleva doprava: port RJ45 (ale na dvou pinech nese RS485), port USB a výstupy signalizačních relé „suchý kontakt“.

Jaký má smysl mít solární panely, pokud nechcete být energeticky efektivní? Zadejte Raspberry Pi Zero: malé, levné a s nízkou spotřebou. S připojeným Raspberry Pi Zero jsem se pustil do zkoušení různých úložišť, která se zaměřují na měniče Voltronic... ale nejde to. Viděl jsem, jak data procházejí dráty; Zkoušel jsem RS485 a USB (USB konektor je jen převodník RS485), ale nic. Sakra. Po dlouhém hledání jsem našel tuto nestandardní aplikaci na prodej za 32 $:

Aplikace ICC MQTT společnosti ICC Software. Tohle má běžet na Raspberry Pi?! Opravdu jim unikla podstata. Jako by vzali všechny mizerné věci o Windows a přenesli je na minimalistickou platformu.
To je bohužel velmi jihoafrický. Špinaví zákazníci. Tento druh svinstva mě nutí vytvářet si vlastní věci.

Naštěstí software ICC „není kompatibilní“ s mým měničem. Jsem líný, úplně bych šel na variantu 32 dolarů. Budu muset vyzkoušet riskantní čínský software Windows, se kterým tato věc přišla…

no, nic neříká kvalitu jako mini-cd s Pandou.
Chci říct, co jsem čekal? „PowerMonitor.exe“ spuštěný na počítači se systémem Windows 10.

Software na dodaném disku obsahoval standardní instalační program s názvem „PowerMonitor“. Nainstaloval aplikaci „PowerMonitor.exe“, což je aplikace .Net a jak se ukázalo, aplikace .Net se dekompilují opravdu dobře. Dekompilovaný kód je super čitelný (ačkoli samotný kód je špatně napsaný (kód běžně používá řetězce jako nedílnou součást funkcí převodu čísel}).

I když je kód aplikace Chinese-Panda-Inverter obecně špatně kódovaný, měl přiměřeně dobré oddělení komunikačních, konverzních a uživatelských modulů, takže zachycení a stubování komunikačního kódu bylo poměrně snadné. Ve skutečnosti je to tak snadné, že jsem opustil svůj pokus o aplikaci Go-app ve prospěch pouhé kompilace s Mono (i když zřídka píšu/pracuji s C#). Také aplikace Mono na CPU Raspberry Pi 1. generace?! Šílený.

Dekompilovaný kód, konkrétně pro PH1800 a související jednotky (PH1100, PH1000 atd.) Je podporována řada dalších modelů, jako EP3000 a EP2000Pro. Člověk si nemůže nevšimnout, že hlavní aplikace se jmenuje „CCControl“, což ve spojení s „čínským“ vyvolává představu o červech Command and Control a nějaké riskantní budově PLA.
Ano, je to PuTTY na Windows, nesuďte mě, bylo to šikovné.

Jak se ukázalo, NENÍ to měnič Axpert King, a proto žádný z nástrojů Axpert nefungoval.

Toto je výstup z mé aplikace:

{"_accumulatedBuyPower":"169.9","_accumulatedChargerPower":"19.8","_accumulatedDischargerPower":"12.4","_accumulatedGridChargerPower":"19.8","_accumulatedLoadPower":"159.1","_accumulatedPower":"3.4","_accumulatedPvSellPower":"0","_accumulatedSelfUsePower":"5.9","_accumulatedSellPower":"0","_accumulatedTime":"00:09:02","_acRadiatorTemperature":"47","_acVoltageGrade":"230","_battCurrent":"0","_batteryRelay":"Connect","_batteryVoltage":"54.8","_battPower":"-54","_battVolGrade":"48","_busVoltage":"434.8","_chargerCurrent":"9.4","_chargerPower":"519","_chargerWorkstate":"Work Mode","_chargingState":" Float charge","_combineType":"0000","_controlCurrent":"1.6","_dcRadiatorTemperature":"38","_dcRelayState":"Connect","_chargerId":4,"_earthRelayState":"Disconnect","_errorMessage":"","_externalTemperature":"-53","_gridCurrent":"5.1","_gridFrequency":"49.82","_gridRelayState":"Connect","_gridVoltage":"242.2","_hardwareVersion":"1.02.02","_inverterBatteryVoltage":"54.5","_inverterCurrent":"1.6","_inverterErrorMessage":"","_inverterFrequency":"49.82","_inverterHardwareVersion":"1.01.01","_inverterMachineType":"PH1800","_inverterMaxNumber":"0000","_inverterNumber":"0000","_inverterRelayState":"Connect","_inverterSerialNumber":"FFFFFFFF","_inverterSoftwareVersion":"2.15.19","_inverterVoltage":"239.3","_inverterWarningMessage":"","_loadCurrent":"6.4","_loadPercent":"33","_loadRelayState":"Connect","_machineType":"0708","_mpptState":"Current limiting","_nLineRelayState":"Disconnect","_pGrid":"-984","_pInverter":"391","_pLoad":"1342","_pvRelay":"Connect","_pvVoltage":"106.8","_qgrid":"786","_qinverter":"98","_qload":"721","_radiatorTemperature":"40","_ratedCurrent":"80","_ratedPower":"5000","_serialNumber":"FFFFFFFF","_sGrid":"1259","_sInverter":"400","_sload":"1524","_softwareVersion":"1.16.23","_transformerTemperature":"50","_warningMessage":"","_workState":"Grid-Tie","_inverterId":4,"Id":0,"ChargerId":4,"InverterId":4,"RecordTime":"0001-01-01T00:00:00","MachineType":"0708","SerialNumber":"FFFFFFFF","HardwareVersion":"1.02.02","SoftwareVersion":"1.16.23","PvVoltageC":"4000","BatteryVoltageC":"4000","ChargerCurrentC":"4000","ChargerWorkEnable":"1","AbsorbVoltage":"50","FloatVoltage":"54.8","AbsorptionVoltage":"58.4","BatteryLowVoltage":"34","BatteryHighVoltage":"60","MaxChargerCurrent":"80","AbsorbChargerCurrent":"10","BatteryType":"1","BatteryAh":"200","RemoveTheAccumulatedData":"0","ChargerWorkstate":"Work Mode","MpptState":"Current limiting","ChargingState":" Float charge","PvVoltage":"106.8","BatteryVoltage":"54.8","ChargerCurrent":"9.4","ChargerPower":"519","RadiatorTemperature":"40","ExternalTemperature":"-53","BatteryRelay":"Connect","PvRelay":"Connect","ErrorMessage":"","WarningMessage":"","BattVolGrade":"48","RatedCurrent":"80","AccumulatedPower":"3.4","AccumulatedTime":"00:09:02","InverterMachineType":"PH1800","InverterSerialNumber":"FFFFFFFF","InverterHardwareVersion":"1.01.01","InverterSoftwareVersion":"2.15.19","InverterBatteryVoltageC":"3FEB","InverterVoltageC":"3F95","GridVoltageC":"FFFF","BusVoltageC":"FFFF","ControlCurrentC":"FFFF","InverterCurrentC":"FFFF","GridCurrentC":"FFFF","LoadCurrentC":"FFFF","InverterOffgridWorkEnable":"1","InverterOutputVoltageSet":"230","InverterOutputFrequencySet":"5000","InverterSearchModeEnable":"0","InverterDischargerToGridEnable":"0","EnergyUseMode":"2","GridProtectStandard":"2","SolarUseAim":"1","InverterMaxDischargerCurrent":"13","NormalVoltagePoint":"46","StartSellVoltagePoint":"54.5","GridMaxChargerCurrentSet":"15","InverterBatteryLowVoltage":"45","InverterBatteryHighVoltage":"60","MaxCombineChargerCurrent":"15","SystemSetting":"0100000000000000","ChargerSourcePriority":"0","WorkState":"Grid-Tie","AcVoltageGrade":"230","RatedPower":"5000","InverterBatteryVoltage":"54.5","InverterVoltage":"239.3","GridVoltage":"242.2","BusVoltage":"434.8","ControlCurrent":"1.6","InverterCurrent":"1.6","GridCurrent":"5.1","LoadCurrent":"6.4","PInverter":"391","PGrid":"-984","PLoad":"1342","LoadPercent":"33","SInverter":"400","SGrid":"1259","Sload":"1524","Qinverter":"98","Qgrid":"786","Qload":"721","InverterFrequency":"49.82","GridFrequency":"49.82","InverterMaxNumber":"0000","CombineType":"0000","InverterNumber":"0000","AcRadiatorTemperature":"47","TransformerTemperature":"50","DcRadiatorTemperature":"38","InverterRelayState":"Connect","GridRelayState":"Connect","LoadRelayState":"Connect","N_LineRelayState":"Disconnect","DCRelayState":"Connect","EarthRelayState":"Disconnect","AccumulatedChargerPower":"19.8","AccumulatedDischargerPower":"12.4","AccumulatedBuyPower":"169.9","AccumulatedSellPower":"0","AccumulatedLoadPower":"159.1","AccumulatedSelf_usePower":"5.9","AccumulatedPV_sellPower":"0","AccumulatedGrid_chargerPower":"19.8","InverterErrorMessage":"","InverterWarningMessage":"","BattPower":"-54","BattCurrent":"0"}

Moje stubby app se dotazuje na invertor, serializuje výstup do JSON a pak vypíše výsledek do stdout. To lze vložit do mosquitto_pub a publikovat data brokerovi.

Jak je uvedeno výše, tento měnič není měničem Axpert King/Voltronic. Ve skutečnosti ho vyrábí společnost s názvem Must Power/MustPower, která stejně jako Axpert přeznačuje své vybavení pro nejbližšího prodejce. To bohužel způsobuje velkou fragmentaci trhu z hlediska podpory komunity. Tento konkrétní stroj se identifikuje jako invertor Must Power PH1800 s výkonem 5000 VA. Je důležité, že zde existuje velké množství metrik, které nejsou vystaveny v softwaru pro stolní počítače nebo na displeji LCD zařízení.

LCD displej měniče cyklicky prochází „stránky“. Tato stránka ukazuje vlevo nahoře vstupní napětí FV pole (106 VDC) a výstup z pole v kW (0,51 kw). Pod ní je uvedeno, že FV pole prochází DC/DC modulem ve střídači a výstup se používá k nabíjení baterií a napájení domu (přes komponent DC/AC střídače).

Mám data vložená do mého MQTT brokera, teď je musím zalogovat (přečtěte si „integrovat je do Home Assistant“).

Konfigurace YAML Home Assistant. Vybírám si pole, která mám zájem zobrazit, a přihlásit se do Home Assistant. Struktura JSON je plochá, takže direktivy JsonPath jsou docela jednoduché.
Sakra miluju technologie. Výstup napětí solárního FV pole, jak je vidět ve webovém rozhraní Home Assistant (Lovelace).

Pokles je noční. Kroky jsou způsobeny funkcí MPPT na měniči (napětí naprázdno by bylo kolem 135V). 106,7 V je 35,5 V na sadu panelů, což je výrobcem specifikované napětí pro napětí „nejlepšího výkonu“. Toto napětí bylo vybráno funkcí MPPT měniče... takže je docela působivé, že to udělal tak dobrou práci, aby to zjistil.

Dalším krokem je integrace funkce zápisu do mé malé aplikace, takže Home Assistant (zejména NodeRED) může být použit ke správě střídače.

{"_accumulatedBuyPower":"2651.9","_accumulatedChargerPower":"904.3","_accumulatedDischargerPower":"1884.1","_accumulatedGridChargerPower":"904.3","_accumulatedLoadPower":"3654.1","_accumulatedPower":"1856.3","_accumulatedPvSellPower":"4","_accumulatedSelfUsePower":"1002.1","_accumulatedSellPower":"4","_accumulatedTime":"206:18:58","_acRadiatorTemperature":"27","_acVoltageGrade":"230","_battCurrent":"-2","_batteryRelay":"Connect","_batteryVoltage":"52.2","_battPower":"-146","_battVolGrade":"48","_busVoltage":"415.5","_chargerCurrent":"9.8","_chargerPower":"511","_chargerWorkstate":"Work Mode","_chargingState":" Float charge","_combineType":"0000","_controlCurrent":"1.5","_dcRadiatorTemperature":"24","_dcRelayState":"Connect","_chargerId":4,"_earthRelayState":"Disconnect","_errorMessage":"","_externalTemperature":"-53","_gridCurrent":"1.1","_gridFrequency":"49.97","_gridRelayState":"Connect","_gridVoltage":"218.2","_hardwareVersion":"1.02.02","_inverterBatteryVoltage":"52.1","_inverterCurrent":"1.5","_inverterErrorMessage":"","_inverterFrequency":"49.97","_inverterHardwareVersion":"1.01.01","_inverterMachineType":"PH1800","_inverterMaxNumber":"0000","_inverterNumber":"0000","_inverterRelayState":"Connect","_inverterSerialNumber":"FFFFFFFF","_inverterSoftwareVersion":"2.55.19","_inverterVoltage":"217","_inverterWarningMessage":"","_loadCurrent":"1.5","_loadPercent":"6","_loadRelayState":"Connect","_machineType":"0708","_mpptState":"Current limiting","_nLineRelayState":"Disconnect","_pGrid":"0","_pInverter":"306","_pLoad":"288","_pvRelay":"Connect","_pvVoltage":"107.8","_qgrid":"240","_qinverter":"105","_qload":"171","_radiatorTemperature":"28","_ratedCurrent":"80","_ratedPower":"5000","_serialNumber":"FFFFFFFF","_sGrid":"242","_sInverter":"319","_sload":"335","_softwareVersion":"1.16.26","_transformerTemperature":"47","_warningMessage":"","_workState":"Grid-Tie","_inverterId":4,"Id":0,"ChargerId":4,"InverterId":4,"RecordTime":"0001-01-01T00:00:00","MachineType":"0708","SerialNumber":"FFFFFFFF","HardwareVersion":"1.02.02","SoftwareVersion":"1.16.26","PvVoltageC":"4000","BatteryVoltageC":"4000","ChargerCurrentC":"4000","ChargerWorkEnable":"1","AbsorbVoltage":"50","FloatVoltage":"52","AbsorptionVoltage":"52.5","BatteryLowVoltage":"34","BatteryHighVoltage":"60","MaxChargerCurrent":"80","AbsorbChargerCurrent":"10","BatteryType":"2","BatteryAh":"200","RemoveTheAccumulatedData":"0","ChargerWorkstate":"Work Mode","MpptState":"Current limiting","ChargingState":" Float charge","PvVoltage":"107.8","BatteryVoltage":"52.2","ChargerCurrent":"9.8","ChargerPower":"511","RadiatorTemperature":"28","ExternalTemperature":"-53","BatteryRelay":"Connect","PvRelay":"Connect","ErrorMessage":"","WarningMessage":"","BattVolGrade":"48","RatedCurrent":"80","AccumulatedPower":"1856.3","AccumulatedTime":"206:18:58","InverterMachineType":"PH1800","InverterSerialNumber":"FFFFFFFF","InverterHardwareVersion":"1.01.01","InverterSoftwareVersion":"2.55.19","InverterBatteryVoltageC":"4040","InverterVoltageC":"FFFF","GridVoltageC":"FFFF","BusVoltageC":"FFFF","ControlCurrentC":"FFFF","InverterCurrentC":"FFFF","GridCurrentC":"FFFF","LoadCurrentC":"FFFF","InverterOffgridWorkEnable":"1","InverterOutputVoltageSet":"230","InverterOutputFrequencySet":"5000","InverterSearchModeEnable":"0","InverterDischargerToGridEnable":"0","EnergyUseMode":"2","GridProtectStandard":"2","SolarUseAim":"1","InverterMaxDischargerCurrent":"21.7","NormalVoltagePoint":"46.8","StartSellVoltagePoint":"52","GridMaxChargerCurrentSet":"30","InverterBatteryLowVoltage":"46.8","InverterBatteryHighVoltage":"60","MaxCombineChargerCurrent":"80","SystemSetting":"1100010000000000","ChargerSourcePriority":"2","WorkState":"Grid-Tie","AcVoltageGrade":"230","RatedPower":"5000","InverterBatteryVoltage":"52.1","InverterVoltage":"217","GridVoltage":"218.2","BusVoltage":"415.5","ControlCurrent":"1.5","InverterCurrent":"1.5","GridCurrent":"1.1","LoadCurrent":"1.5","PInverter":"306","PGrid":"0","PLoad":"288","LoadPercent":"6","SInverter":"319","SGrid":"242","Sload":"335","Qinverter":"105","Qgrid":"240","Qload":"171","InverterFrequency":"49.97","GridFrequency":"49.97","InverterMaxNumber":"0000","CombineType":"0000","InverterNumber":"0000","AcRadiatorTemperature":"27","TransformerTemperature":"47","DcRadiatorTemperature":"24","InverterRelayState":"Connect","GridRelayState":"Connect","LoadRelayState":"Connect","N_LineRelayState":"Disconnect","DCRelayState":"Connect","EarthRelayState":"Disconnect","AccumulatedChargerPower":"904.3","AccumulatedDischargerPower":"1884.1","AccumulatedBuyPower":"2651.9","AccumulatedSellPower":"4","AccumulatedLoadPower":"3654.1","AccumulatedSelf_usePower":"1002.1","AccumulatedPV_sellPower":"4","AccumulatedGrid_chargerPower":"904.3","InverterErrorMessage":"","InverterWarningMessage":"","BattPower":"-146","BattCurrent":"-2"}

Aplikaci můžete spouštět v pravidelných intervalech pomocí cronjob, něco podobného tomuto (rychle sestavené z paměti, takže pravděpodobně ne úplně správně):

* * * * * root /usr/bin/dtach -n /dev/shm/mustinv$$ /usr/bin/bash -c "/home/pi/MustInverter.exe | mosquitto_pub -h 192.168.0.5 -t "/mustinverter" -l -u username -P password"

A toto je další YAML, který jsem dal Home Assistant, aby pohltil toto užitečné zatížení:

sensor:
  - platform: mqtt
    state_topic: "/inverter"
    name: "_acRadiatorTemperature"
    expire_after: 360
    value_template: "{{ value_json._acRadiatorTemperature }}"
    unit_of_measurement: '°C'
  - platform: mqtt
    state_topic: "/inverter"
    name: "_dcRadiatorTemperature"
    expire_after: 360
    value_template: "{{ value_json._dcRadiatorTemperature }}"
    unit_of_measurement: '°C'
  - platform: mqtt
    state_topic: "/inverter"
    name: "_transformerTemperature"
    expire_after: 360
    value_template: "{{ value_json._transformerTemperature }}"
    unit_of_measurement: '°C'
  - platform: mqtt
    state_topic: "/inverter"
    name: "_battCurrent"
    expire_after: 360
    value_template: "{{ value_json._battCurrent }}"
    unit_of_measurement: 'A'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_chargerCurrent"
    expire_after: 360
    value_template: "{{ value_json._chargerCurrent }}"
    unit_of_measurement: 'A'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_controlCurrent"
    expire_after: 360
    value_template: "{{ value_json._controlCurrent }}"
    unit_of_measurement: 'A'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_gridCurrent"
    expire_after: 360
    value_template: "{{ value_json._gridCurrent }}"
    unit_of_measurement: 'A'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_inverterCurrent"
    expire_after: 360
    value_template: "{{ value_json._inverterCurrent }}"
    unit_of_measurement: 'A'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_loadCurrent"
    expire_after: 360
    value_template: "{{ value_json._loadCurrent }}"
    unit_of_measurement: 'A'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_gridFrequency"
    expire_after: 360
    value_template: "{{ value_json._gridFrequency }}"
    unit_of_measurement: 'Hz'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_inverterBatteryVoltage"
    expire_after: 360
    value_template: "{{ value_json._inverterBatteryVoltage }}"
    unit_of_measurement: 'V'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_inverterVoltage"
    expire_after: 360
    value_template: "{{ value_json._inverterVoltage }}"
    unit_of_measurement: 'V'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_loadPercent"
    expire_after: 360
    value_template: "{{ value_json._loadPercent }}"
    unit_of_measurement: '%'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_battPower"
    expire_after: 360
    value_template: "{{ value_json._battPower }}"
    unit_of_measurement: 'W'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_pGrid"
    expire_after: 360
    value_template: "{{ value_json._pGrid }}"
    unit_of_measurement: 'W'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_pInverter"
    expire_after: 360
    value_template: "{{ value_json._pInverter }}"
    unit_of_measurement: 'W'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_inverterVoltage"
    expire_after: 360
    value_template: "{{ value_json._pLoad }}"
    unit_of_measurement: 'V'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_busVoltage"
    expire_after: 360
    value_template: "{{ value_json._busVoltage }}"
    unit_of_measurement: 'V'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_sload"
    expire_after: 360
    value_template: "{{ value_json._sload }}"
    unit_of_measurement: 'W'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_chargerPower"
    expire_after: 360
    value_template: "{{ value_json._chargerPower }}"
    unit_of_measurement: 'W'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_sInverter"
    expire_after: 360
    value_template: "{{ value_json._sInverter }}"
    unit_of_measurement: 'V'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_qgrid"
    expire_after: 360
    value_template: "{{ value_json._qgrid }}"
    unit_of_measurement: 'W'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_qinverter"
    expire_after: 360
    value_template: "{{ value_json._qinverter }}"
    unit_of_measurement: 'W'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_qload"
    expire_after: 360
    value_template: "{{ value_json._qload }}"
    unit_of_measurement: 'W'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_sGrid"
    expire_after: 360
    value_template: "{{ value_json._sGrid }}"
    unit_of_measurement: 'V'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_pvVoltage"
    expire_after: 360
    value_template: "{{ value_json._pvVoltage }}"
    unit_of_measurement: 'V'
    device_class: power
  - platform: mqtt
    state_topic: "/inverter"
    name: "_mpptState"
    expire_after: 360
    value_template: "{{ value_json._mpptState }}"
  - platform: mqtt
    state_topic: "/inverter"
    name: "PV Inverter Power"
    expire_after: 360
    value_template: "{{ value_json.PInverter }}"
    unit_of_measurement: 'W'
    device_class: power

Rozhraní USB na těchto zařízeních se připojuje k převodníku, který se nakonec připojuje ke stejnému sériovému rozhraní jako vyhrazené rozhraní RS422/RS485 – můžete tedy také použít připojení USB.

Hodně štěstí! a klidně mi napište, pokud vám toto užitečné, vždy zábavné slyšení od lidí, kteří čtou tyto příspěvky (kdo by si to pomyslel?!)

Vlákno PowerForum, kterého se tento příspěvek týká, najdete zde .

Zanechat odpověď