Integracja Solarman - Mikroinwerter HY-2000-PLUS + logger Huayu MECD

Posiadam instalacje PV na Mikroinwerter HY-2000-PLUS x 3szt + logger Huayu MECD który służy do zbierania danych z 3szt mikroinwenterów.

Na razie mam zrobiony sensor przez scrape, tak:

- platform: scrape
  resource: http://192.168.1.244/status.html
  name: PV_lacznie
  authentication: basic
  username: Tomasz
  password: xx
  select: "script"
  index: 1
  value_template: "{{ (( value.split(';')[7] ) | replace ('var webdata_total_e = ','') |replace('\"', '')|float  ) }}"
  scan_interval: 300
  unit_of_measurement: "kWh"
- platform: scrape
  resource: http://192.168.1.244/status.html
  name: PV_aktualnie
  authentication: basic
  username: Tomasz
  password: xx
  select: "script"
  index: 1
  value_template: "{{ (( value.split(';')[5] ) | replace ('var webdata_now_p =','' ) |replace('\"', '') |float) }}"
  scan_interval: 60
  unit_of_measurement: "W"  
- platform: scrape
  resource: http://192.168.1.244/status.html
  name: PV_dzisiaj
  authentication: basic
  username: Tomasz
  password: xx
  select: "script"
  index: 1
  value_template: "{{ (( value.split(';')[6] ) | replace ('var webdata_today_e = ','')|replace('\"', '')|float )}}"
  scan_interval: 60
  unit_of_measurement: "kWh"

ale logger który zbiera dane na adresie 192.168.1.244 wyświetla dane tylko z jednego mikroinwentera, więc zrobiłem taki sensor:

- platform: template
  sensors:
    sensor_pv_lacznie_suma_trzy_mikro:
      friendly_name: "pv lacznie suma trzy mikro"
      unit_of_measurement: "kWh"
      value_template: "{{ states('sensor.pv_lacznie')|float| round(0)  + states('sensor.pv_lacznie')|float| round(0) + states('sensor.pv_lacznie')|float| round(0) }}"      
- platform: template
  sensors:
    sensor_pv_aktualnie_suma_trzy_mikro:
      friendly_name: "pv aktualnie suma trzy mikro"
      unit_of_measurement: "W"
      value_template: "{{ states('sensor.pv_aktualnie')|float| round(0)  + states('sensor.pv_aktualnie')|float| round(0) + states('sensor.pv_aktualnie')|float| round(0) }}" 
- platform: template
  sensors:
    sensor_pv_dzisiaj_suma_trzy_mikro:
      friendly_name: "pv dzisiaj suma trzy mikro"
      unit_of_measurement: "kWh"
      value_template: "{{ states('sensor.pv_dzisiaj')|float| round(0)  + states('sensor.pv_dzisiaj')|float| round(0) + states('sensor.pv_dzisiaj')|float| round(0) }}" 

czyli jeden mikro razy 3 i mam tylko przybliżoną wartość produkcji.

Do loggera Huayu MECD są dedykowany portale:

  1. Solarman
  2. Solarman Business

i na nich wszystkie dane pobierane są prawidłowo (ze wszystkich mikroinwenterów) ale nie udało mi się znaleźć rozwiązania które z integruje się z HA.
Niby ten pierwszy ma API SolarmanOpenAPI.pdf (1,4 MB) ale do tego potrzebny programista na etat :wink:
A sposób z nodered mi nie działa bo mimo tego że widzę na ginlong swój logger i mikro to nie nie ma żadnych danych o produkcji.

Tak, po wejściu na IP logera widzę tylko produkcje jednego mikroinwertera, wpisanego do logera jako pierwszy.
Co ciekawe na wyświetlaczu logera wyświetlana jest wartość bieżącej produkcji i tam jest prawidłowo czyli z wszystkich mikro.

Co do nodered + ginlong to szybko odpuściłem bo myślałem, że skoro tam nie wyświetla danych to znaczy, że nie będzie co pobrać.
Tak to u mnie wygląda, widać logger:


ale nic nie wyświetla o produkcji:

Dostaje taki komunikat przy próbie pobrania danych o produkcji:

Dane o instalacji (object) pobiera bez problemu ale też wyskakuje ten sam error

Cannot read property ‘data’ of undefined"

To może naokoło, ale bez etatu programisty :slight_smile:

+

Niestety do https://www.solarmanpv.com/ mój logger też nie wysyła danych:


Nie mam pojęcia co zrobić żeby puszczał dane dalej.
Na tych dedykowanych portalach dla mojego logera można było by jeszcze chyba spróbować jeszcze przez scrape z tego:

ale to też robota dla programisty więc na pewno zakup drugiego MEW będzie tańszym rozwiązaniem :wink:

Chciałbym serdecznie podziękować dla @bartik22, który ogarnął integracje moich mikroinwenterów za pomocą Node Reda i API Solarmana. Wszystko działa od kilku dni bez zajęknięcia.
@bartik22 naprawdę WIELKI SZACUNEK za ogromną wiedzę oraz chęć pomocy dla innych :clap: :clap: :clap:

PS jak tylko znajdę chwilę to opisze dla potomnych jak to zrobić :wink:

3 polubienia

@bartik22 i ja dziękuję. Mam te same mikroinwertery co @Tomasz
Integracja śmiga aż miło.
Leci kolejny :beer:

1 polubienie

Obiecałem, że opiszę więc podaje przepis :wink:

Na początku trzeba odblokować API.

Piszemy email na customerservice@solarmanpv.com z prośbą odblokowanie API, podając swój adres email na którym mam konto Solarmana. Po kilku dniach dostajemy APP ID oraz APP SECRET które są do uzyskania Tokenu, który jest niezbędny do pobierania danych z mikroinwenterów.

1. Wygenerowanie Tokena

Idziemy na stronę:

Uruchamianie poleceń Curl w trybie online (reqbin.com)

W lewym oknie wklejamy:

  --url 'https://api.solarmanpv.com/account/v1.0/token?appId=202107214884098&language=en&=' \
  --header 'Content-Type: application/json' \
  --data '{
	"appSecret": "1d6404fe8db33eeeeee43480a0bdd0b4662",
	"email": "twój@email.com",
	"password": "d1c82d443c5a444444ss7df85d5we94076a0fbcc0eeee48b6bbab2574220242"
}'

gdzie:
appSecret – dostaniesz na email po odblokowaniu API
email – do konta Solarman
password – hasło do konta Solarman – trzeba je zamienić na SHA256 na stronie SHA256 Online (emn178.github.io)
następnie klikamy RUN i w polu po prawej pojawi się nasz token i refresh token, oba zapisujemy.

  1. Pobieranie danych z mikorinwenterów

Mając już token możemy pobrać dane do AI-Speaker/HA. Tu sposobów jest bardzo dużo:

A. można przez platform: rest
tworząc dla każdego mikro i dla każdego sensora osobny wpis:

- platform: rest
  resource: https://api.solarmanpv.com/device/v1.0/currentData?appId=<APPID>&language=en&=
  method: POST
  name: "Dzienna Produkcja (aktywna) Mikro 7770140777"
  scan_interval: 60
  headers:
   Authorization: bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiIwX3RvbWVrbWVsbGVyQGdtYWlsLmNvbV8yIiwic2NvcGUiOlsiYWxsIl0sImRldGFpbCI6eyJvcmdhbml6YXRpb25JZCI6MCwidG9wR3JvdXBJZCI6bnVsbC8888CI6bnVsbCwicm9sZUlkIjotMSwidXNlcklkIjoyNTI3MDIsInZlcnNpb24iOjIsImlkZW50aWZpweweweweweweweweweMDk4In0sImV4cCI6MTYzNDQwNjkwOCwiYXV0aG9yaXRpZXMiOlsiYWxsIl0sImp0aSI6IjRiMjUzNjljLWYxN2UtNDVhMi05Yjg5LWM4MjAwZDZlZTg5NiIsImNsaWVudF9pZCI6InRlc3QifQ.NC2d5cvHjHqzKK8wK21fB1NQlahH3hkzqyKMk-2S9cggJku45NdTXVJ8sWUEksdsdsdsBTDvHklZQeWBH59O-bTWj75FxpV6eZjtn4L3owvcxMPezbmyhk6mFKc6r7M6Fuo51IE5n_cKzL6rcX0WIypOBK12q2v-SVmjUGgQZ4XgXLAqGUxevSgd74G0dBhK30sj31xq1z5Hn1mkJMx_qAuqH29KSBlD53xPfAs-1ceffbUnN3Xjcm_DUoQHD5sCuWsTXC4qZeLyNUz6zxkQxjg
   Content-Type: application/json
  payload: '{  "deviceSn": "7770140777"}'
  value_template: "{{ value_json.dataList[34].value }}"

gdzie:
“deviceSn”: “7770140777” to numer mikro
Authorization: bearer to token

B. można przez Node Reda przez dodatek:
zachowj/hass-node-red: Companion Component for node-red-contrib-home-assistant-websocket to help integrate Node-RED with Home Assistant Core (github.com)
dzięki któremu będziemy mogli tworzyć sensory w HA.

C. można przez Node Reda przez MQTT

PS @bartik22 jeszcze raz dzięki

2 polubienia