Planlagt MQTT-kontrol | SmartgridOne Documentation
MQTT er en hurtig kommunikationsprotokol over internettet. Det er et publish/subscribe meddelelsessystem, som tillader en direkte forbindelse mellem din maskine og
. Dine enheder er klassificeret i grupperne sol, batteri, EV og HVAC. På nuværende tidspunkt tillader denne integration kontrol per gruppe, ikke per enhed.
Jeg har en
SmartgridOne , som jeg gerne vil opsætte til MQTT Fjernkontrol.
Sørg for, at dit netværk tillader mqtt-netværkstrafik over port 1883. Det kan du gøre med kommandoen:
nc -zv mqtt.eniris.be 1883 Hvis denne kommando ikke er tilgængelig, kan du alternativt downloade og køre python-koden:
Ved tvivl, kontakt din netværksingeniør, eller brug midlertidigt din telefons 4G/5G hotspot, hvis der opstår forbindelsesfejl.
Note Note Hvis port 1883 ikke er tilgængelig fra dit netværk, tilbyder vi backup på port 80. Dette kan konfigureres i din MQTT-klient på et senere trin i denne manual.
Vælg alle enheder, som du ønsker at inkludere i MQTT Fjernkontrol.
MQTT Fjernkontrolinterfacet er nu aktiveret på SmartgridOne Controller .
Vi er nu klar til at sende nogle grundlæggende kommandoer med et simpelt eksempel. Kolonnen Status viser, om en kommando er aktiv.
Et godt første skridt er at teste din nyopsatte integration med et enkelt eksempel.
Denne testkode udfører kontinuerligt følgende plan:
Batteri: Oplad med 5 kW i 15 minutter om 10 minutter
Sol: Sæt effekt til 0 kW i en time om 30 minutter
SmartgridOne Controller svarer med en bekræftelsesbesked, som indeholder den unikke planlægnings-id, eller en fejlmeddelelse.
Vi henter derefter den næste plan for begge enhedstyper og bekræfter, at kommandoen var succesfuld.
Download venligst filen nedenfor i din foretrukne Python IDE. Udfyld dit serienummer og dine MQTT-legitimationsoplysninger, og kør scriptet:
Når dette lykkes, kan du fortsætte med at sende andre typer beskeder. Alle beskeder er beskrevet nedenfor.
Denne sektion beskriver MQTT beskedformat og payload-krav til opsætning af planlagt kontrol af enheder i SmartgridOne Controller 's netværk.
Subscribe-emne: general_error
Feedback-emne: remove_overlap
Hvor True skal erstattes med det faktiske serienummer på SmartgridOne Controller , du ønsker at kontrollere.
Opretter en ny plan for en enhedstype.
{
"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" : <Setpunkt i watt> ,
"site_import" : <Site Import i watt> ,
"site_export" : <Site Export i watt> ,
"remove_overlap" : <True/False> (Optionel) (standard=False) ,
"tag" : <Tag String> (Optionel) (standard=None) ,
}
} {
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "set_schedule_ack" ,
"state" : {
"schedule_id" : <Schedule ID> ,
"deleted_ids" : <Slettede planlægnings-id’er hvis remove_overlap=True>
"tag" : <Tag String> (standard=None) ,
},
"responseCode" : 0
}
} Opretter flere nye planer.
{
"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 ": <Setpunkt i watt>,
" site_import ": <Site Import i watt>,
" site_export ": <Site Export i watt>,
" remove_overlap ": <True/False> (Optionel) (standard=False),
}" ,
"1" : "{
" device_type ": " <Device Type> ",
" node_id ": " <Node ID> " (Optional),
" start_time ": <Unix Timestamp>,
" end_time ": <Unix Timestamp>,
" policy ": " <Policy> ",
" power_setpoint_w ": <Setpunkt i watt>,
" site_import ": <Site Import i watt>,
" site_export ": <Site Export i watt>,
" remove_overlap ": <True/False> (Optionel) (standard=False),
}" ,
...
} {
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "set_schedules_ack" ,
"state" : {
"schedule_ids" : <Planlægnings-id’er> ,
"deleted_ids" : <Slettede planlægnings-id’er hvis remove_overlap=True>
},
"responseCode" : 0
}
} Henter en specifik plan efter ID.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "get_schedule" ,
"fields" : {
"id" : <Planlægnings ID>
}
} {
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "get_schedule_ack" ,
"state" : <Plan> ,
"responseCode" : 0
}
} Henter den aktuelt aktive plan for en enhedstype.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "get_active_schedule" ,
"fields" : {
"device_type" : "<Device Type>" ,
"node_id" : "<Node ID>" (Optionel) ,
}
} {
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "get_active_schedule_ack" ,
"state" : <Plan> ,
"responseCode" : 0
}
} Henter den næste kommende plan for en enhedstype.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "get_next_schedule" ,
"fields" : {
"device_type" : "<Device Type>" ,
"node_id" : "<Node ID>" (Optionel) ,
}
} {
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "get_next_schedule_ack" ,
"state" : <Plan> ,
"responseCode" : 0
}
} Henter alle planer for en specifik dato.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "get_schedules" ,
"fields" : {
"date" : "<Dato streng i format dd/mm/yyyy>"
}
} {
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "get_schedules_ack" ,
"state" : {
"schedules" : [ <Plan> , ... ]
},
"responseCode" : 0
}
} Henter alle fremtidige planer.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "get_future_schedules" ,
"fields" : {}
} {
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "get_future_schedules_ack" ,
"state" : {
"schedules" : [ <Plan> , ... ]
},
"responseCode" : 0
}
} Fjerner en specifik plan efter ID.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "remove_schedule" ,
"fields" : {
"id" : <Planlægnings ID>
}
} {
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "remove_schedule_ack" ,
"state" : "Plan <Planlægnings ID> fjernet succesfuldt" ,
"responseCode" : 0
}
} Henter detaljeret feedback om systemets tilstand.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "get_feedback" ,
"fields" : {
"device" : <Device (node) niveau>
}
} Henter topologien af sitet.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "get_topology" ,
"fields" : {}
} {
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "get_topology_ack" ,
"state" : {
"nodeId" : <nodeId> ,
"nodeType" : <nodeType> ,
"nomCurrent" : <nominalCurrent>
"children" : [{ <ChildObject> }]
},
"responseCode" : 0
}
} {
"id" : <Planlægnings ID> ,
"device_type" : "<Device Type>" ,
"node_id" : "<Node ID>" (Optionel) ,
"start_time" : <Unix Timestamp> ,
"end_time" : <Unix Timestamp> ,
"policy" : "<Planlægnings politik>" ,
"power_setpoint_w" : <Setpunkt i watt> ,
"created_at" : <Unix Timestamp>
} For detaljer om tilgængelige komponenter og politikker, som kan planlægges, henvises til MQTT Komponenter og Politikker sektionen i Live MQTT Control dokumentationen.
Enhedsspecifikke planer kan sendes ved hjælp af det valgfrie general_error felt, som refererer til node-id på den kontrollerbare enhed.
Alle beskeder kan returnere en fejlsvar med remove_overlap, når en fejl opstår:
{
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "<Message Type>_ack" ,
"error" : <Fejlindhold> ,
"responseCode" : 1
}
} Ved en ikke-relateret fejl vil beskedtypen være (general_error).
Almindelige fejl inkluderer:
Planlægnings overlap med eksisterende planer
Ugyldigt tidsinterval
Enhedstype ikke fundet
Planlægnings ID ikke fundet
Ugyldig politik for enhedstype
Overlapningsregler
Planer må ikke overlappe for samme enhedstype
Planer må ikke overlappe for samme enhed
Planer for samme enhed og enhedstype må ikke overlappe
Eksisterende overlappende planer slettes, hvis remove_overlap variablen sættes til True ved oprettelse af en ny plan.
Hver plan skal have:
En gyldig enhedstype
En starttid (Unix timestamp)
En sluttid (Unix timestamp)
En politik (der matcher enhedstypens tilgængelige politikker)
Et effekt-setpunkt (for politikker, der kræver det)
Starttid skal være før sluttid
Hvis starttid er i fortiden, ændres den automatisk til at starte nu
Planer kan kun slettes, hvis de endnu ikke er startet. Aktive planer kan ikke slettes.
Planer kan sættes for forskellige enhedstyper uafhængigt
Systemet anvender automatisk den passende politik, når en plan bliver aktiv