Uwaga! W przykładzie wykorzystano moduł Gate HTTP drugiej generacji z FW 1.1.0-2034C!


Poniższa instrukcja przedstawia możliwość integracji z inwerterem Fronius Symo 8.2-3-M za pośrednictwem Fronius Solar API (JSON). Instrukcja została przygotowana w oparciu o informacje umieszczone na stronie: Fronius Solar API

Po podłączeniu inwertera do sieci lokalnej należy zapamiętać jego adres IP. Inwerter zmienia cyklicznie adres IP, dlatego należy pamiętać o aktualizowaniu adresu IP lub przypisaniu inwerterowi stałego adresu IP (w routerze).


W przykładzie zostaną odczytane dane dotyczące:

  • generowanej mocy chwilowej;
  • całkowitej energii wytworzonej w ciągu dnia, roku oraz od początku działania instalacji.



Chcąc dokonać integracji z inwerterem należy wykonać opisane poniżej kroki:


1. W cechach użytkownika modułu Gate o nazwie Gate_Http tworzymy następujące zmienne:

* total_energy - energia wyprodukowana od początku istnienia instalacji (w kWh);
* year_energy - energia wyprodukowana w ciągu ostatniego roku (w kWh);
* day_energy - energia wyprodukowana dzisiejszego dnia (w kWh);
* current_energy - energia wyprodukowana w chwili odczytu (w Wh); 



2. Następnie tworzymy obiekt wirtualny HttpRequest o nazwie fronius_info:




3. Ustawienia obiektu wirtualnego fronius_info wyglądają następująco:


gdzie:
Host: adres IP inwertera
Path: /solar_api/v1/GetInverterRealtimeData.cgi
QueryStringParams: Scope=System
ResponseType: JSON


Takie ustawienie cechy QueryStringParams spowoduje, że odczytywane informacje będą dotyczyły całego systemu. 


Przykładowa odpowiedź na powyższe zapytanie wygląda następująco:

Szczegółowy opis i inne możliwości (np. odczyt aktualnie generowanego prądu i napięcia dla wybranego inwertera) można znaleźć w dokumentacji.


4. Następnie tworzymy skrypt fronius_info_resp:

resp=Gate_Http->fronius_info->ResponseBody

if(Gate_Http->fronius_info->StatusCode==200) then

  Gate_Http->total_energy=resp.Body.Data.TOTAL_ENERGY.Values["2"]
  Gate_Http->total_energy=Gate_Http->total_energy/1000
  Gate_Http->year_energy=resp.Body.Data.YEAR_ENERGY.Values["2"]
  Gate_Http->year_energy=Gate_Http->year_energy/1000
  Gate_Http->day_energy=resp.Body.Data.DAY_ENERGY.Values["2"]
  Gate_Http->day_energy=Gate_Http->day_energy/1000
  Gate_Http->current_energy=resp.Body.Data.PAC.Values["2"]

end



5. Skrypt ten przypisujemy do zdarzenia OnResponse obiektu wirtualnego fronius_info:

 


6. Wysyłając konfigurację do CLU oraz wywołując zdarzenie SendRequest w obiekcie fronius_info:

cechy użytkownika w module Gate HTTP powinny przyjąć odpowiednie wartości: 


7. Do cyklicznego pobierania danych tworzymy obiekt wirtualny Timer o nazwie fronius_requests:




8. W cechach wbudowanych ustawiamy czas odświeżania (np. 1000ms) oraz zmieniamy tryb pracy na Interval:


9. Do zdarzenia OnTimer przypisujemy metodę SendRequest:


10. Start obiektu wirtualnego przypisujemy do zdarzenia OnInit w module Gate HTTP:



11. Tak utworzoną konfigurację przesyłamy do modułu Gate HTTP.