Planowane sterowanie MQTT
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



2. Włącz zdalny sygnał MQTT
Wybierz wszystkie urządzenia, które chcesz uwzględnić w zdalnym sterowaniu MQTT.

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
- 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_overlapzostanie ustawiona naTruepodczas tworzenia nowego harmonogramu.
- 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ą)
- Czas rozpoczęcia musi być wcześniej niż czas zakończenia
- Jeśli czas rozpoczęcia jest w przeszłości, zostanie automatycznie zmieniony na "teraz"
- Harmonogramy można usuwać tylko jeśli jeszcze się nie rozpoczęły. Aktywne harmonogramy nie mogą być usuwane.
- Harmonogramy można ustawiać niezależnie dla różnych typów urządzeń
- System automatycznie stosuje odpowiednią politykę po aktywacji harmonogramu
