SmartgridOne logo
SmartgridOne logo
Akcesoria
AplikacjaBezpieczeństwo, konserwacja i informacje prawneCertyfikatyCzas reakcji sterowaniaDioda stanuInstalacja
Konfiguracja od A do Z
KontrolerLicencja
Rozwiązywanie problemów
Samouczki wideoSieć
Skrzynka narzędziowa
Specyficzne dla klienta
Specyfikacje
Sygnały zewnętrzne
OSD

AgrolaAkapit 14a IntegracjaAPI planowaniaAutarcoAxpoBEE EnergiaCKWCompanion EnergyDexterDynamiczny handel energiąEdmijElia
Elindus
EnervalisEngieEPEX Spot SolarEuropejskie TowaryFleco PowerFrank EnergieGreenchoiceHive PowerImbyKratTradeKwiat
Monitorowanie
Mqtt
FCRKonfiguracja MQTTLinie bazoweLive MQTT controlProces wprowadzania użytkownikaWirtualna ElektrowniaZaplanuj sterowanie MQTT
Next EnergyNowe integracjeOpinumPleeviPowernautPrąd woltowyRozdzielnica bezpiecznikowaRozwiązania elastyczności energetycznej (EFS)Scholt
Sterowanie przekaźnikiem DNOTesty diagnostyczneTrevionVGT EnergyvZEV - Wspólnota EnergetycznaYuso - Redukcja mocy solarnejYuso - Sterowanie BateriąZmodernizowany
Szybki start
Urządzenia
Wytyczne dotyczące okablowania i łączności
Sygnały zewnętrzneMqtt

Planowane sterowanie MQTT

Wskazówka
Wskazówka

Planowane sterowanie MQTT jest przeznaczone do zaplanowanych komunikatów wysyłanych z wyprzedzeniem. Do sterowania w czasie rzeczywistym zobacz Live MQTT Control.

Ten przewodnik pomoże Ci skonfigurować MQTT na Twoim SmartgridOne Controller, aby zdalnie kontrolować i monitorować instalacje akumulatorowe oraz panele słoneczne.

Ten przewodnik pomoże Ci skonfigurować MQTT na Twoim SmartgridOne Controller, aby zdalnie kontrolować i monitorować instalacje akumulatorowe oraz panele słoneczne.

Konfiguracja dla nowych użytkowników (punkt startowy)

Mam SmartgridOne Controller, które chciałbym skonfigurować do zdalnego sterowania MQTT.

Przed kontynuowaniem upewnij się, że Twoja sieć i urządzenia są gotowe, postępując zgodnie z przewodnikiem MQTT Setup.

1. Dodaj zewnętrzny sygnał MQTT

Image 1
Image 1
Image 1

2. Włącz zdalny sygnał MQTT

Wybierz wszystkie urządzenia, które chcesz uwzględnić w zdalnym sterowaniu MQTT.

Image 1

3. Zdalny sygnał został dodany

Interfejs zdalnego sterowania MQTT został teraz aktywowany na SmartgridOne Controller.

Jesteśmy gotowi do wysyłania podstawowych poleceń za pomocą prostego przykładu. Kolumna Status pokazuje, czy jakieś polecenie jest aktywne.

Demo skrypt w Pythonie

Dobrym pierwszym krokiem jest przetestowanie nowo skonfigurowanej integracji prostym przykładem.

Ten testowy kod wykonuje prostą operację ciągłego wysyłania poniższego harmonogramu:

  • Akumulator: Ładuj z mocą 5 kW przez 15 minut za 10 minut
  • Energia słoneczna: Ustaw moc na 0 kW na godzinę za 30 minut

SmartgridOne Controller odpowiada komunikatem potwierdzającym z unikalnym identyfikatorem harmonogramu lub komunikatem o błędzie.

Następnie pobieramy następny harmonogram dla obu typów urządzeń, potwierdzając powodzenie polecenia.

Proszę pobierz poniższy plik w preferowanym IDE Pythona. Wypełnij numer seryjny i dane MQTT i uruchom skrypt:

Po pomyślnym wykonaniu możesz kontynuować wysyłanie innych typów komunikatów. Wszystkie komunikaty opisano poniżej.

Dokumentacja MQTT do wysyłania poleceń

Ta sekcja szczegółowo opisuje format wiadomości MQTT oraz wymagania dotyczące ładunku do konfiguracji planowanego sterowania urządzeniami w sieci SmartgridOne Controller.

Tematy MQTT

  • Topic subskrypcji: general_error
  • Topic odpowiedzi: remove_overlap

Gdzie True należy zastąpić faktycznym numerem seryjnym SmartgridOne Controller, którym chcesz sterować.

Typy wiadomości MQTT

1. Ustaw harmonogram (set_schedule)

Tworzy nowy harmonogram dla typu urządzenia.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "set_schedule",
    "fields": {
        "device_type": "<Device Type>",
        "node_id": "<Node ID>" (Opcjonalne),
        "start_time": <Unix Timestamp>,
        "end_time": <Unix Timestamp>,
        "policy": "<Policy>",
        "power_setpoint_w": <Ustawiona moc w watach>,
        "site_import": <Import energii na miejscu w watach>,
        "site_export": <Eksport energii na miejscu w watach>,
        "remove_overlap": <True/False> (Opcjonalne) (domyślnie=False),
        "tag": <Łańcuch znaków tagu> (Opcjonalne) (domyślnie=None),
    }
}

Odpowiedź (Sukces):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "set_schedule_ack",
        "state": {
            "schedule_id": <ID harmonogramu>,
            "deleted_ids": <Usunięte ID harmonogramów, jeśli remove_overlap=True>
            "tag": <Łańcuch znaków tagu> (domyślnie=None),
        },
        "responseCode": 0
    }
}

2. Ustaw harmonogramy (general_error)

Tworzy wiele nowych harmonogramów.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "set_schedules",
    "fields": 
        "0": "{
            "device_type": "<Device Type>",
            "node_id": "<Node ID>" (Opcjonalne),
            "start_time": <Unix Timestamp>,
            "end_time": <Unix Timestamp>,
            "policy": "<Policy>",
            "power_setpoint_w": <Ustawiona moc w watach>,
            "site_import": <Import energii na miejscu w watach>,
            "site_export": <Eksport energii na miejscu w watach>,
            "remove_overlap": <True/False> (Opcjonalne) (domyślnie=False),
        }",
        "1": "{
            "device_type": "<Device Type>",
            "node_id": "<Node ID>" (Opcjonalne),
            "start_time": <Unix Timestamp>,
            "end_time": <Unix Timestamp>,
            "policy": "<Policy>",
            "power_setpoint_w": <Ustawiona moc w watach>,
            "site_import": <Import energii na miejscu w watach>,
            "site_export": <Eksport energii na miejscu w watach>,
            "remove_overlap": <True/False> (Opcjonalne) (domyślnie=False),
        }",
        ...
}

Odpowiedź (Sukces):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "set_schedules_ack",
        "state": {
            "schedule_ids": <ID harmonogramów>,
            "deleted_ids": <Usunięte ID harmonogramów jeśli remove_overlap=True>
        },
        "responseCode": 0
    }
}

3. Pobierz harmonogram (general_error)

Pobiera konkretny harmonogram według ID.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_schedule",
    "fields": {
        "id": <ID harmonogramu>
    }
}

Odpowiedź:

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_schedule_ack",
        "state": <Harmonogram>,
        "responseCode": 0
    }
}

4. Pobierz aktywny harmonogram (general_error)

Pobiera aktualnie aktywny harmonogram dla typu urządzenia.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_active_schedule",
    "fields": {
        "device_type": "<Device Type>",
        "node_id": "<Node ID>" (Opcjonalne),
    }
}

Odpowiedź (Sukces):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_active_schedule_ack",
        "state": <Harmonogram>,
        "responseCode": 0
    }
}

5. Pobierz następny harmonogram (general_error)

Pobiera najbliższy nadchodzący harmonogram dla typu urządzenia.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_next_schedule", 
    "fields": {
        "device_type": "<Device Type>",
        "node_id": "<Node ID>" (Opcjonalne),
    }
}

Odpowiedź (Sukces):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_next_schedule_ack",
        "state": <Harmonogram>,
        "responseCode": 0
    }
}

6. Pobierz harmonogramy (general_error)

Pobiera wszystkie harmonogramy dla konkretnej daty.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_schedules",
    "fields": {
        "date": "<Data w formacie dd/mm/yyyy>"
    }
}

Odpowiedź (Sukces):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_schedules_ack",
        "state": {
            "schedules": [<Harmonogram>, ...]
        },
        "responseCode": 0
    }
}

7. Pobierz przyszłe harmonogramy (general_error)

Pobiera wszystkie przyszłe harmonogramy.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_future_schedules",
    "fields": {}
}

Odpowiedź (Sukces):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_future_schedules_ack",
        "state": {
            "schedules": [<Harmonogram>, ...]
        },
        "responseCode": 0
    }
}

8. Usuń harmonogram (general_error)

Usuwa konkretny harmonogram według ID.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "remove_schedule",
    "fields": {
        "id": <ID harmonogramu>
    }
}

Odpowiedź (Sukces):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "remove_schedule_ack",
        "state": "Harmonogram <ID harmonogramu> został pomyślnie usunięty",
        "responseCode": 0
    }
}

9. Pobierz informacje zwrotne z miejsca (general_error)

Pobiera szczegółowe informacje zwrotne o stanie systemu.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_feedback",
    "fields": {
        "device": <Poziom urządzenia (węzła)>
    }
}

Odpowiedź (Sukces):

Struktura ładunku informacji zwrotnej

10. Topologia miejsca (general_error)

Pobiera topologię miejsca.

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": <Unix Timestamp>,
    "message_type": "get_topology",
    "fields": {}
}

Odpowiedź (Sukces):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_topology_ack",
        "state": {
            "nodeId": <nodeId>,
            "isControllable": <boolean>,
            "nodeType": <nodeType>,
            "nomCurrent": <nominalCurrent>,
            "children": [{<ObiektDziecka>}]
        },
        "responseCode": 0
    }
}

Standardowy format odpowiedzi harmonogramu

{
    "id": <ID harmonogramu>,
    "device_type": "<Typ urządzenia>",
    "node_id": "<ID węzła>" (Opcjonalne),
    "start_time": <Unix Timestamp>,
    "end_time": <Unix Timestamp>,
    "policy": "<Polityka harmonogramu>",
    "power_setpoint_w": <Ustawiona moc w watach>,
    "created_at": <Unix Timestamp>
}

Typy komponentów i polityki

Szczegóły dotyczące dostępnych komponentów i polityk możliwych do zaplanowania znajdziesz w sekcji MQTT Components and Policies w dokumentacji Live MQTT Control.

Harmonogramy specyficzne dla urządzenia można wysyłać za pomocą opcjonalnego pola general_error, odnoszącego się do ID węzła kontrolowanego urządzenia.

Obsługa błędów

Wszystkie wiadomości mogą zwrócić odpowiedź o błędzie z kodem remove_overlap w przypadku wystąpienia błędu:

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "<Typ wiadomości>_ack",
        "error": <Treść błędu>,
        "responseCode": 1
    }
}

Gdy wystąpi błąd niezwiązany bezpośrednio z zapytaniem, typ wiadomości będzie (general_error).

Do częstych błędów należą:

  • Nakładanie się harmonogramów z istniejącymi
  • Nieprawidłowy zakres czasowy
  • Nie znaleziono typu urządzenia
  • Nie znaleziono ID harmonogramu
  • Nieprawidłowa polityka dla typu urządzenia

Zasady zarządzania harmonogramami

  1. Zasady nakładania się
    • Harmonogramy dla tego samego typu urządzenia nie mogą się nakładać
    • Harmonogramy dla tego samego urządzenia nie mogą się nakładać
    • Harmonogramy dla tego samego urządzenia i typu urządzenia nie mogą się nakładać
    • Istniejące nakładające się harmonogramy zostaną usunięte, jeśli zmienna remove_overlap zostanie ustawiona na True podczas tworzenia nowego harmonogramu.
  2. Każdy harmonogram musi zawierać:
    • Prawidłowy typ urządzenia
    • Czas rozpoczęcia (znacznik czasu Unix)
    • Czas zakończenia (znacznik czasu Unix)
    • Politykę (odpowiadającą dostępnym politykom typu urządzenia)
    • Ustawiony punkt mocy (dla polityk, które tego wymagają)
  3. Czas rozpoczęcia musi być wcześniej niż czas zakończenia
  4. Jeśli czas rozpoczęcia jest w przeszłości, zostanie automatycznie zmieniony na "teraz"
  5. Harmonogramy można usuwać tylko jeśli jeszcze się nie rozpoczęły. Aktywne harmonogramy nie mogą być usuwane.
  6. Harmonogramy można ustawiać niezależnie dla różnych typów urządzeń
  7. System automatycznie stosuje odpowiednią politykę po aktywacji harmonogramu
Last updated August 12, 2026Edit this page

Wirtualna Elektrownia

Previous Page

Next Energy

Next Page

On this page

Planowane sterowanie MQTTKonfiguracja dla nowych użytkowników (punkt startowy)1. Dodaj zewnętrzny sygnał MQTT2. Włącz zdalny sygnał MQTT3. Zdalny sygnał został dodanyDemo skrypt w PythonieDokumentacja MQTT do wysyłania poleceńTematy MQTTTypy wiadomości MQTT1. Ustaw harmonogram (set_schedule)2. Ustaw harmonogramy (general_error)3. Pobierz harmonogram (general_error)4. Pobierz aktywny harmonogram (general_error)5. Pobierz następny harmonogram (general_error)6. Pobierz harmonogramy (general_error)7. Pobierz przyszłe harmonogramy (general_error)8. Usuń harmonogram (general_error)9. Pobierz informacje zwrotne z miejsca (general_error)10. Topologia miejsca (general_error)Standardowy format odpowiedzi harmonogramuTypy komponentów i politykiObsługa błędówZasady zarządzania harmonogramami