Afore + home assistant

oki to ide studiowac - Nodereda - bo tam jeszcze mnie nie było.
Dam znac wieczoram czy udalo mi sie polaczyc z afore

ps. mam BNT008KTL wiec to to samo co 5

Poległem… nie ogarnelem nodereda - musze jakis tutorial znalezc.

poleglem…
Nie udaje mi się uzyskac danych :slight_smile:
{
“code”: “2101018”,
“msg”: “auth appId not found”,
“success”: false,
“requestId”: “5b8addc39b80a1f9”
}

Mam taka odpowiedz, pomimo ze probowalem juz wszystkich kombinacji.
Mam app_secret od chinczykow , mam haslo generowane sha256 i email - gdzie na strone home.solarmanpv.com sie loguje normalnie.

Mi sie juz skonczyly pomysly

Jeżeli nie sprawdzisz poprawności komunikacji z chmurą (punkt 4 z Collect Inverter data from Solarman API - Share your Projects! - Home Assistant Community ) nie ma sensy walczyć z nodered .
Jeszeli w pkt 4 otrzymasz poprawne dane to w nodzie change należy wstawić swoje wartości :
w msg.url - appId,
msg.payload - deviceSn,
msg.headers - twój acces_token.

noo juz tutaj mam blad - nie moge uzyskac kodów z mojego API.

Juz tam mam problem i nie wiem czy chinczyki podali dobre dane, pisalem do nich ale na razie czekam.

Hej, rozmawiałem przed chwilą z Afore Polska, twierdzą że:

  • Nowe falowniki podłączają się do nowej wersji chmury i portalu V.3 a http://m.ginlong.com to jest wersja 2, więc tam naszego falownika nie będzie widać (cały czas jest off-line) tam działają tylko stare falowniki sprzed powstania V.3
  • API załatwiają wyłącznie jak jest takie wymaganie w przetargu. (być może napisanie bezpośrednio do Chinczyków, tak jak jest sugerowane linku od Slawekki coś da, sprawdzę :slight_smile: ).
  • Na stronie lokalnej loggera danych nie ma i nie będzie w przewidywalnej przyszłości (chyba że Chińczycy coś zmienią)
    Modbus czy cokolwiek to jest (w formie RJ45) czasami jest a czasami nie ma w falowniku, ja nie mam, mogą doinstalować za extra opłatą.

Tak więc od nich wsparcie jest zerowe

dzieki za zaangazowanie

API mam bezposrednio od chinczykow, choc musialem im wytlumaczyc po co i na co mi to - ale robilem cos nie tak bo mi nie dzialalo a Slawekki sprawdzil (na PW) moje dane, api i hasla i ogarnał całość. Jade za chwile po pracy do domu i bede sprawdzał czy działa.

Dam znac.


Działa - powoli dodaje sobie encje - ale zanim skoncze to pewnie falownik sie wyłączy.

Dziekuje jeszcze raz za pomoc.
Przechwytywanie

Witam

Mam pytanie próbuje połączyć falownik Afore.
Wykonuje etapy według poleceń z tego poradnika https://community.home-assistant.io/t/collect-inverter-data-from-solarman-api/328760

Otrzymałem już dane do api od solarman jednak gdy wykonuje pierwsze zapytanie

curl --request POST \
  --url 'https://api.solarmanpv.com/account/v1.0/token?appId=4e5c941e6f20e522513ce7e4a88fdbf1&language=en' \
  --header 'Content-Type: application/json' \
  --data '{
	"appSecret": "2xxxx2xx4xxxx2",
	"email:": "bielikmojemail@gmail.com",
	"password": "d93afxxx6bde0e6abxxx2xxx0xxx3xxx835c89544ed17a1ebc1c1xxx4c9xxx5b"
}'

gdzie appSecret to mój appid (otrzymany od solarman)
e-mail to mój mail do logowania do platformy
password to hasło do logowanie do platformy zaszyfrowane przez SHA256.

Otrzymuje niestety za każdy razem odpowiedź:

{
    "code": "2101021",
    "msg": "auth invalid appId",
    "success": false,
    "requestId": "fecde456e2d328e1"
}

Czy ktoś może pomóc z tym etapem ?

ja mialem to samo i pomógł mi Slawekkl.

–url 'https://api.solarmanpv.com/account/v1.0/token?appId=4e5c941e6f20e522513ce7e4a88fdbf1&

Tutaj w appid musisz wpisac swoje dane od chinczykow. Jedno to app secret i appid i powinno ruszyc
ten sam bład robilem - i teraz patrze po plikach jakie dostalem od slawka co i jak

Bielik zamieniłeś wartości appId z appSecret w wywołaniu metody POST.

Dziękuję koledzy, też mi udało się uruchomić API z AFORE zgodnie ze wskazówkami z tego wątku.
Jest niestety jeden błąd w API, status jest zawsze “GRID” a po wyłączeniu falownika zostaje ostatnia wartość (zazwyczaj kilkadziesiąt Wh).
Muszę sprawdzić czy w logerze nie ma jakiegoś pola ze statusem off-line.
Niemniej idzie to wpiąć w Panel Energia i wszystko widać.

nie znam az tak HA ale moze idzie zrobic “pomocnika” lub cos podobne ze jesli wartosc produkcji bedzie mniejsza niz np 50W i bedzie utrzymywac sie dluzej niz godzine bez zmiany to ustaw 0.

Wiem ze to teoria ale moze ktos wie czy to przejdzie w HA ?

edit:
Dzis cos sie posypło - nie ma danych w HA
Czy to awaria po ich stronie czy cos trzeba poprawiac co jakis czas ?

Witajcie, wie ktoś z was jak należy użyć refresh_token ??
Okazuje się że ten przesłany przez chińczyków ważny jest tylko 60 dni.

Edit:

Sam sobie odpowiem, trzeba wykonać ponownie krok pierwszy całej procedury i wymienić “access_token” na nowy. Niestety operację trzeba powtarzać co 60 dni

miałem to samo, ale Slawekkkl - pomogł mi ogarnac nodereda po nowemu i podobno ma nie wyrzucac juz tego tokena.

A możesz udostępnić ten fragment procesu odpowiedzialnego za odświeżenie tokenu ?

Witam, otrzymałem od Chińczyków
APIID:20236
APKKEY:3f9
****************a608

curl --request POST \
  --url 'https://api.solarmanpv.com/account/v1.0/token?appId=2023*****************6&language=en&=' \
  --header 'Content-Type: application/json' \
  --data '{
	"appSecret": "3f9*********************************a608",
	"email": "staszek@mojadomena.com.pl",
	"password": "mojehaslo123"
}'

i niestety otrzymuję błąd

{
    "code": "2101021",
    "msg": "auth invalid appId",
    "success": false,
    "requestId": "6dafa7185823e028"
}

lub taki po zamianie APID i APKEY

{
    "code": "2101025",
    "msg": "{\"error\":\"invalid_request\",\"error_description\":\"\",\"code\":\"AUTH_INVALID_USERNAME_OR_PASSWORD\",\"param\":null}",
    "success": false,
    "requestId": "a3fe5e473d08b7bb",
    "access_token": null,
    "token_type": null,
    "refresh_token": null,
    "expires_in": null,
    "scope": null,
    "uid": null
}

“password”: “mojehaslo123”

czy hasli przerabiales tak jak instrukcja podaje ?

Tak przerabiałem zgodnie z instrukcją
Doczytałem wątek, zrobiłem wg kolegi @ Slawekkl i to poszło, mam wygenerowane access_token itd, natomiast przy weryfikacji połączenia z falownikiem pojawia się błąd (punktu 4 instrukcji)

{
    "msg": "auth invalid token",
    "code": "2101019",
    "success": false,
    "requestId": "9ce211874f835cea"
}

Dane mam wprowadzone tak

curl --request POST \
  --url 'https://globalapi.solarmanpv.com/account/v1.0/token?appId=2023050946451986&language=en&='
  --header 'Authorization: bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiIwX3N0YXN6ZWtAbWlhc3Rrb3dza2kuY29tLnBsXzIiLCJzY29wZSI6WyJhb**********************************************************************************************************************************************************************************************************************************************CbEtD7p9D7d-4YZQ",'\
  --data '{
	"deviceSn": 231****041
}'

Witam Panowie,
jako świeżak proszę o wyrozumiałość :wink:
Wczoraj zainstalowałem HA, doinstalowałem wtyczki do gniazdek, czujników Shelly/tasmota itd. Zainstalowałem też m.in. wtyczkę Solarman (GitHub - StephanJoubert/home_assistant_solarman: Home Assistant component for Solarman collectors used with a variety of inverters.). Jako że mam 2 instalacje PV - jedna starsza na Sofarze (LSW-3) - działa bezproblemowo. Niestety druga to Afore na LSW-5 (BNT003KTL). I Afore najwyraźniej nie jest w niej obsługiwany - próbowałem już chyba wszystkich ustawień. Czy jest jakieś działający sposób na dodanie Afore do HA znając SN i Plant ID? Nakierujecie mnie na jakieś działające aktualnie 2024 roku rozwiązanie?

Hej, rozwiązanie które jest omawiane w tym wątku, cały czas działa. (należy tylko zmienić adresy, też omówione w tym wątku).
Pierwsze co musisz zrobić to napisać do chińczyków o api. (oczywiście trzeba mieć też konto na ich serwerach i tam widzieć swoją instalację). Co jakieś dwa miesiące trzeba odświeżyć klucz. Działa bez problemów cały czas.

W poście Adriana masz instrukcję krok po kroku.

1 polubienie

Witam. Jeżeli ktoś szuka połączenia falownika Afore BNT004KTL z homeassistan, uczyniłem plik custom_parameters.yaml do integracji GitHub - adnovea/solarman_lse: Home Assistant component for interacting with Solarman LSE type Stick loggers. który działa idealnie z datalogerem LSE-3 nr ser. 21xxxxxxxx

requests:
  - start: 0x0006
    end:  0x0035
    mb_functioncode: 0x04
  - start: 0x01F4
    end:  0x0236
    mb_functioncode: 0x04
  - start: 0x03E8
    end:  0x03FF
    mb_functioncode: 0x04
  - start: 0x09C4
    end:  0x09D3
    mb_functioncode: 0x04


parameters:
 - group: solar
   items: 
    - name: "Insulation resistance value"
      class: "power"
      state_class: "measurement"      
      uom: "KOhm"
      scale: 1
      rule: 1
      registers: [0x01F6]
      icon: 'mdi:solar-power'
   
    - name: "Negative bus voltage"
      class: "power"
      state_class: "measurement"      
      uom: "V"
      scale: 0.1
      rule: 1
      registers: [0x01F5]
      icon: 'mdi:solar-power'

    - name: "PV1 Power"
      class: "power"
      state_class: "measurement"      
      uom: "W"
      scale: 1
      rule: 1
      registers: [0x022D]
      icon: 'mdi:solar-power'

    - name: "PV2 Power"
      class: "power"
      state_class: "measurement"      
      uom: "W"
      scale: 10
      rule: 1
      registers: [0x0230]
      icon: 'mdi:solar-power'

    - name: "PV1 Voltage"
      class: "voltage"
      state_class: "measurement"      
      uom: "V"
      scale: 0.1
      rule: 1 
      registers: [0x022B]
      icon: 'mdi:solar-power'

    - name: "PV2 Voltage"
      class: "voltage"    
      state_class: "measurement"      
      uom: "V"
      scale: 0.1
      rule: 1
      registers: [0x022E]
      icon: 'mdi:solar-power'      

    - name: "PV1 Current"
      class: "current"
      state_class: "measurement"      
      uom: "A"
      scale: 0.01
      rule: 1
      registers: [0x022C]
      icon: 'mdi:solar-power'      

    - name: "PV2 Current"
      class: "current"
      state_class: "measurement"      
      uom: "A"
      scale: 0.01
      rule: 1
      registers: [0x022F]
      icon: 'mdi:solar-power'      

    - name: "Daily Production"
      class: "energy"
      state_class: "total"      
      uom: "kWh"
      scale: 0.1
      rule: 1
      registers: [0x03E8]
      icon: 'mdi:solar-power'      

    - name: "Total Production"
      class: "energy"
      state_class: "total_increasing"      
      uom: "kWh"
      scale: 0.1
      rule: 3
      registers: [0x03F7]
      icon: 'mdi:solar-power'      


 - group: Output
   items: 
    - name: "Output active power"
      class: "power"
      state_class: "measurement"      
      uom: "W"
      scale: 10
      rule: 1
      registers: [0x0217, 0x0218]
      icon: 'mdi:home-lightning-bolt'

    - name: "Output reactive power"
      class: ""
      state_class: "measurement"      
      uom: "kVar"
      scale: 0.01
      rule: 1
      registers: [0x0219, 0x021A]
      icon: 'mdi:home-lightning-bolt'

    - name: "Grid frequency"
      class: "frequency"
      state_class: "measurement"      
      uom: "Hz"
      scale: 0.01
      rule: 1
      registers: [0x0201]
      icon: 'mdi:home-lightning-bolt'

    - name: "L1 Voltage"
      class: "voltage"
      state_class: "measurement"      
      uom: "V"
      scale: 0.1
      rule: 1
      registers: [0x01FB]
      icon: 'mdi:home-lightning-bolt'

    - name: "L1 Current"
      class: "current"
      state_class: "measurement"      
      uom: "A"
      scale: 0.01
      rule: 1
      registers: [0x01FE]
      icon: 'mdi:home-lightning-bolt'

    - name: "L2 Voltage"
      class: "voltage"
      state_class: "measurement"      
      uom: "V"
      scale: 0.1
      rule: 1
      registers: [0x1FC]
      icon: 'mdi:home-lightning-bolt'

    - name: "L2 Current"
      class: "current"
      state_class: "measurement"      
      uom: "A"
      scale: 0.01
      rule: 1
      registers: [0x01FF]
      icon: 'mdi:home-lightning-bolt'

    - name: "L3 Voltage"
      class: "voltage"
      state_class: "measurement"      
      uom: "V"
      scale: 0.1
      rule: 1
      registers: [0x01FD]
      icon: 'mdi:home-lightning-bolt'

    - name: "L3 Current"
      class: "current"
      state_class: "measurement"      
      uom: "A"
      scale: 0.01
      rule: 1
      registers: [0x0200]
      icon: 'mdi:home-lightning-bolt'

 - group: Inverter
   items: 
    - name: "Inverter status"
      class: ""
      state_class: "measurement"      
      uom: ""
      scale: 1
      rule: 1
      registers: [0x09C4]
      lookup: 
      -  key: 0
         value: "Power-Up"
      -  key: 1
         value: "Standby"
      -  key: 2
         value: "Start up"
      -  key: 3
         value: "Run grid connected"
      -  key: 4
         value: "Disconnected"
      -  key: 5
         value: "Generator"
      -  key: 6
         value: "On Grid - Off Grid"
      -  key: 7
         value: "Off Grid - On Grid"
      -  key: 8
         value: "Power down"
      -  key: 9
         value: "Turn off"
      -  key: 10
         value: "Error"
      -  key: 11
         value: "Update"
      -  key: 12
         value: "Aging"
      -  key: 13
         value: "Open loop"
      -  key: 14
         value: "Sampling calibration"
      icon: 'mdi:wrench'         

    - name: "Inverter module temperature"
      class: "temperature"
      uom: "°C"
      scale: 0.1
      rule: 1
      registers: [0x09D3]
      icon: 'mdi:thermometer'

    - name: "Inverter inner temperature"
      class: "temperature"
      state_class: "measurement"      
      uom: "°C"
      scale: 0.1
      rule: 1
      registers: [0x09D2]
      icon: 'mdi:thermometer'      

    - name: "Inverter bus voltage"
      class: "voltage"
      state_class: "measurement"      
      uom: "V"
      scale: 0.1
      rule: 1
      registers: [0x01F4]
      icon: 'mdi:home-lightning-bolt'

2 polubienia

Dzień dobry
Mam problem z dodaniem falownika Afore, robiłem wg Waszych instrukcji z tego wątku
Dostałem od chińczyków API ID i API Secret, po wejściu na stronę https://reqbin.com/curl wygenerowałem potrzebne dane.
Połączenie przechodzi test pomyślnie.
Zaimportowałem w NodeRed od @Slawekkl SolarmanCopy.json Zmieniłem w nim co trzeba, mam info że jest połączenie z falownikiem.
Stworzyłem plik mqtt.yaml wstawiłem do niego:


    - name: 'PVn_Total_production'
      state_topic: 'npv/values'
      unit_of_measurement: 'kWh'
      value_template: '{{ value_json.Total_production }}'
      device_class: energy


    - name: 'PVn_Current_power'
      state_topic: 'npv/values'
      unit_of_measurement: 'W'
      value_template: '{{ value_json.Current_power }}'
      device_class: power


    - name: 'PVn1_Voltage'
      state_topic: 'npv/values'
      unit_of_measurement: 'V'
      value_template: '{{ value_json.PV1_DC_voltage }}'
      device_class: voltage
    
    
    - name: 'PVn2_Voltage'
      state_topic: 'npv/values'
      unit_of_measurement: 'V'
      value_template: '{{ value_json.PV2_DC_voltage }}'
      device_class: voltage
    
    
    - name: 'PVn1_Current'
      state_topic: 'npv/values'
      unit_of_measurement: 'A'
      value_template: '{{ value_json.PV1_DC_current }}'
      device_class: current
    
    
    - name: 'PVn2_Current'
      state_topic: 'npv/values'
      unit_of_measurement: 'A'
      value_template: '{{ value_json.PV2_DC_current }}'
      device_class: current
    
    
    - name: 'PVn_Daily_production'
      state_topic: 'npv/values'
      unit_of_measurement: 'kWh'
      value_template: '{{ value_json.Daily_production }}'
      device_class: energy
    
  
    
    - name: 'PVn_Temperature'
      state_topic: 'npv/values'
      unit_of_measurement: '°C'
      value_template: '{{ value_json.Temperature }}'
      device_class: temperature
    
    
    - name: 'PVn_Frequency'
      state_topic: 'npv/values'
      unit_of_measurement: 'Hz'
      value_template: '{{ value_json.AC_Frequency }}'
    
    
    - name: 'PVn_Voltage_1'
      state_topic: 'npv/values'
      unit_of_measurement: 'V'
      value_template: '{{ value_json.AC_voltage_1 }}'
      device_class: voltage
    
    
    - name: 'PVn_Voltage_2'
      state_topic: 'npv/values'
      unit_of_measurement: 'V'
      value_template: '{{ value_json.AC_voltage_2 }}'
      device_class: voltage
    
    
    - name: 'PVn_Voltage_3'
      state_topic: 'npv/values'
      unit_of_measurement: 'V'
      value_template: '{{ value_json.AC_voltage_3 }}'
      device_class: voltage
    
    
    - name: 'PVn_Current_1'
      state_topic: 'npv/values'
      unit_of_measurement: 'A'
      value_template: '{{ value_json.AC_current_1 }}'
      device_class: current
    
    
    - name: 'PVn_Current_2'
      state_topic: 'npv/values'
      unit_of_measurement: 'A'
      value_template: '{{ value_json.AC_current_2 }}'
      device_class: current
    
    
    - name: 'PVn_Current_3'
      state_topic: 'npv/values'
      unit_of_measurement: 'A'
      value_template: '{{ value_json.AC_current_3 }}'
      device_class: current


    - name: 'PVn_Status'
      state_topic: 'npv/values'
      value_template: '{{ value_json.Status }}'

Dodałem do configuration.yaml wpis

  - platform: command_line  
    command: curl -s -u admin:admin http://192.168.1.149/status.html | grep -E "\webdata_now_p(\s|$)" | cut -d'"' -f 2
    name: power_solar
    unit_of_measurement: 'W'
    scan_interval: 10
  - platform: command_line  
    command: curl -s -u admin:admin http://192.168.1.149/status.html | grep -E "\webdata_total_e(\s|$)" | cut -d'"' -f 2
    name: power_solar_total
    unit_of_measurement: 'kWh'
    scan_interval: 60
  - platform: command_line  
    command: curl -s -u admin:admin http://192.168.1.149/status.html | grep -E "\webdata_today_e(\s|$)" | cut -d'"' -f 2
    name: power_solar_today
    unit_of_measurement: 'kWh'
    scan_interval: 60

template:
  sensor:
  - name: "solarmanlocal_production_daily"
    state: "{{ states('sensor.solarmanlocal_power_solar_total')}}"
    unit_of_measurement: kWh
    device_class: energy
    state_class: total_increasing
    unique_id: solarmanlocal_production_daily

Niestety status mam taki:
image
Nie wiem gdzie leży problem, jeśli możecie mnie koledzy pokierować, będę wdzięczny.