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.
