Pomiar produkcji PV z użyciem API Huawei zintegrowanego z Fibaro HC3 jako QuickApp
Przetłumaczone automatycznie z angielskiego. Przeczytaj oryginał

Korzystamy z instalacji PV Huawei na dachu naszego domu. Ma panel webowy i aplikację pozwalające podglądać każdy szczegół jej ustawień i warunków pracy. Chciałbym jednak zintegrować produkcję mocy PV z moim Fibaro HC3. A więc:
Po pierwsze: utwórz użytkownika Northbound API w panelu webowym. Wybierz wszystkie uprawnienia do pozyskiwania danych.
Następnie pobierz token uwierzytelniający:
curl -X POST "https://eu5.fusionsolar.huawei.com/thirdData/login" \
-H "Content-Type: application/json" \
-d '{
"userName": "USERNAME",
"systemCode": "PASSWORD"
}' -vW odpowiedzi otrzymasz xsfr-token w danych nagłówków. Teraz używając tego tokena uwierzytelniającego, musisz pobrać listę instalacji (stacji):
url -X POST "https://eu5.fusionsolar.huawei.com/thirdData/getStationList" \
-H "Content-Type: application/json" \
-H "xsrf-token: TOKEN" \
-d '{}' -vTeraz używając swojego ID stacji, pobierz listę swoich urządzeń:
curl -X POST "https://eu5.fusionsolar.huawei.com/thirdData/getDevList" \
-H "Content-Type: application/json" \
-H "xsrf-token: TOKEN" \
-d '{
"stationCodes": "NE=123456789"
}' -vAby pobrać dane w pewnym sensie czasu rzeczywistego, musisz znać ID swojego urządzenia z poprzedniego żądania:
curl -X POST "https://eu5.fusionsolar.huawei.com/thirdData/getDevRealKpi" \
-H "Content-Type: application/json" \
-H "xsrf-token: TOKEN" \
-d '{
"devIds": "112233445566778899",
"devTypeId":"1"
}' -vTeraz powinieneś szukać pola active_power, które jest mocą produkcji Twojej instalacji PV (w watach).
Powiedzmy teraz, że chcesz mieć to w Fibaro. Zdecydowałem się na QuickApp (Lua) w następujący sposób:
function QuickApp:onInit()
self:debug("onInit Huawei Falownik")
self:loop()
end
function QuickApp:loop()
fibaro.setTimeout(1000*60*5, function()
self:debug("Huawei Falownik")
self:debug("Huawei Falownik: login")
local token = ''
local url = "https://eu5.fusionsolar.huawei.com/thirdData/login"
local payload = json.encode({userName="USERNAME",systemCode="PASSWORD"})
net.HTTPClient():request(url, {
options={
data = payload,
method = 'POST',
headers = {
["Content-Type"] = "application/json"
},
timeout = tcpTimeout,
},
success = function(response)
token = response.headers['xsrf-token']
self:debug("Huawei Falownik: getDevRealKpi")
local url2 = "https://eu5.fusionsolar.huawei.com/thirdData/getDevRealKpi"
local payload2 = json.encode({devIds="112233445566778899",devTypeId="1"})
net.HTTPClient():request(url2, {
options={
data = payload2,
method = 'POST',
headers = {
["Content-Type"] = "application/json",
["xsrf-token"]= token
},
timeout = tcpTimeout,
},
success = function(response)
print(response.status)
print(response.data)
activepower=json.decode(response.data)['data'][1]['dataItemMap']['active_power']
self:updateProperty("value", activepower*1000)
self:debug(activepower)
end,
error = function(message)
print("error:", message)
end
})
end,
error = function(message)
print("error:", message)
end
})
self:loop(text)
end)
endNa koniec możesz skonfigurować miernik produkcji z użyciem tej QuickApp. Ostatnią rzeczą do zapamiętania jest ograniczanie ruchu po stronie Huawei, więc pobieraj dane powiedzmy raz na 5 minut lub podobnie, w przeciwnym razie zamiast danych otrzymasz komunikat o błędzie.