---
title: "Pomiar produkcji PV z użyciem API Huawei zintegrowanego z Fibaro HC3 jako QuickApp"
url: https://michalasobczak.pl/pl/posts/pv-production-metering-using-huawei-api-integrated-with-fibaro-hc3-as-quickapp.html
author: "Michał Sobczak"
description: "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."
published: 2026-01-16T11:38:39.000Z
updated: 2026-01-16T11:39:06.000Z
language: pl
categories: ["Technology", "Hobby"]
tags: ["Smart Home & IoT", "Programming", "Electronics"]
license: CC BY-NC-ND 4.0 (https://creativecommons.org/licenses/by-nc-nd/4.0/)
---
# Pomiar produkcji PV z użyciem API Huawei zintegrowanego z Fibaro HC3 jako QuickApp

![](https://michalasobczak.pl/wp-content/uploads/2026/01/obraz.png)

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:

```bash
curl -X POST "https://eu5.fusionsolar.huawei.com/thirdData/login" \
-H "Content-Type: application/json" \
-d '{
"userName": "USERNAME",
"systemCode": "PASSWORD"
}' -v
```

W odpowiedzi otrzymasz xsfr-token w danych nagłówków. Teraz używając tego tokena uwierzytelniającego, musisz pobrać listę instalacji (stacji):

```text
url -X POST "https://eu5.fusionsolar.huawei.com/thirdData/getStationList" \
  -H "Content-Type: application/json" \
  -H "xsrf-token: TOKEN" \
  -d '{}' -v
```

Teraz używając swojego ID stacji, pobierz listę swoich urządzeń:

```bash
curl -X POST "https://eu5.fusionsolar.huawei.com/thirdData/getDevList" \
-H "Content-Type: application/json" \
  -H "xsrf-token: TOKEN" \
  -d '{
"stationCodes": "NE=123456789"
}' -v
```

Aby pobrać dane w pewnym sensie czasu rzeczywistego, musisz znać ID swojego urządzenia z poprzedniego żądania:

```bash
curl -X POST "https://eu5.fusionsolar.huawei.com/thirdData/getDevRealKpi" \
-H "Content-Type: application/json" \
  -H "xsrf-token: TOKEN" \
  -d '{
"devIds": "112233445566778899",
"devTypeId":"1"
}' -v
```

Teraz 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:

```lua
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)
end
```

Na 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.
