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 AkumulatoremZmodernizowany
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 po raz pierwszy (Punkt startowy dla nowych użytkowników)

Posiadam SmartgridOne Controller, który chcę 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. Add the MQTT external signal

Image 1
Image 1
Image 1

2. Enable MQTT remote signal

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

Image 1

3. Remote signal is added

The MQTT Remote Control interface has now been activated on the SmartgridOne Controller.

We are now ready to send some basics commands using a simple example. The Status column tells you if any command is active.

Skrypt demonstracyjny w Pythonie

A good first starting point would be to test your newly setup integration with a simple example.

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ę pobrać poniższy plik w preferowanym środowisku Python IDE. Wypełnij swój numer seryjny i dane dostępowe MQTT, a następnie uruchom skrypt:

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

MQTT Documentation for Sending Commands

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>" (Optional),
        "start_time": <Unix Timestamp>,
        "end_time": <Unix Timestamp>,
        "policy": "<Policy>",
        "power_setpoint_w": <Setpoint in watts>,
        "site_import": <Site Import in Watts>,
        "site_export": <Site Export in Watts>,
        "remove_overlap": <True/False> (Optional) (default=False),
        "tag": <Tag String> (Optional) (default=None),
    }
}

Odpowiedź (Sukces):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "set_schedule_ack",
        "state": {
            "schedule_id": <Schedule ID>,
            "deleted_ids": <Schedulde IDs deleted if remove_overlap=True>
            "tag": <Tag String> (default=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>" (Optional),
            "start_time": <Unix Timestamp>,
            "end_time": <Unix Timestamp>,
            "policy": "<Policy>",
            "power_setpoint_w": <Setpoint in watts>,
            "site_import": <Site Import in Watts>,
            "site_export": <Site Export in Watts>,
            "remove_overlap": <True/False> (Optional) (default=False),
        }",
        "1": "{
            "device_type": "<Device Type>",
            "node_id": "<Node ID>" (Optional),
            "start_time": <Unix Timestamp>,
            "end_time": <Unix Timestamp>,
            "policy": "<Policy>",
            "power_setpoint_w": <Setpoint in watts>,
            "site_import": <Site Import in Watts>,
            "site_export": <Site Export in Watts>,
            "remove_overlap": <True/False> (Optional) (default=False),
        }",
        ...
}

Odpowiedź (Sukces):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "set_schedules_ack",
        "state": {
            "schedule_ids": <Schedule IDs>,
            "deleted_ids": <Schedulde IDs deleted if 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": <Schedule ID>
    }
}

Odpowiedź:

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_schedule_ack",
        "state": <Schedule>,
        "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>" (Optional),
    }
}

Odpowiedź (Sukces):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_active_schedule_ack",
        "state": <Schedule>,
        "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>" (Optional),
    }
}

Odpowiedź (Sukces):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_next_schedule_ack",
        "state": <Schedule>,
        "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": "<Date String of Format dd/mm/yyyy>"
    }
}

Odpowiedź (Sukces):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "get_schedules_ack",
        "state": {
            "schedules": [<Schedule>, ...]
        },
        "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": [<Schedule>, ...]
        },
        "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": <Schedule ID>
    }
}

Odpowiedź (Sukces):

{
    "requestTime": <Unix Timestamp>,
    "time": <Unix Timestamp>,
    "siteNodeId": "<Controller SN>_site_0",
    "data": {
        "message_type": "remove_schedule_ack",
        "state": "Schedule <Schedule ID> removed successfully",
        "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": <Device (node) level>
    }
}

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": [{<ChildObject>}]
            },
        "responseCode": 0
    }
}

Standardowy format odpowiedzi harmonogramu

{
    "id": <Schedule ID>,
    "device_type": "<Device Type>",
    "node_id": "<Node ID>" (Optional),
    "start_time": <Unix Timestamp>,
    "end_time": <Unix Timestamp>,
    "policy": "<Schedule Policy>",
    "power_setpoint_w": <Setpoint in watts>,
    "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": "<Message Type>_ack",
        "error": <Error Body>,
        "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 7, 2026Edit this page

Wirtualna Elektrownia

Previous Page

Next Energy

Next Page

On this page

Planowane sterowanie MQTTKonfiguracja po raz pierwszy (Punkt startowy dla nowych użytkowników)1. Add the MQTT external signal2. Enable MQTT remote signal3. Remote signal is addedSkrypt demonstracyjny w PythonieMQTT Documentation for Sending CommandsTematy 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