Tips Tips Den schemalagda MQTT-kontrollen är avsedd för schemalagda meddelanden i förväg. För direktkontroll, se istället .
Denna guide hjälper dig att konfigurera MQTT på din Download port_check.py SmartgridOne för att fjärrstyra och övervaka batteri- och solpanelsinstallationer.
Controller med internetuppkoppling.
MQTT-uppgifter: Detta kan begäras från vårt .
Python-utvecklingsmiljö (eller någon annan MQTT-klient). Denna guide använder ett enkelt exempel skrivet i Python för att komma igång med MQTT och skicka kommandon. Vi rekommenderar Python på grund av dess enkelhet, men vilken MQTT-klient som helst stöds.
MQTT är ett snabbt kommunikationsprotokoll över internet. Det är ett publicera/prenumerera-meddelandesystem som möjliggör en direktanslutning mellan din maskin och
. Dina enheter är klassificerade i grupperna solenergi, batteri, EV och HVAC. För närvarande tillåter denna integration styrning per grupp, inte per enhet.
Jag har en
SmartgridOne som jag vill konfigurera för MQTT-fjärrstyrning.
Se till att ditt nätverk tillåter MQTT-nätverkstrafik över port 1883. Detta kan du kontrollera med kommandot:
nc -zv mqtt.eniris.be 1883 Om detta kommando inte är tillgängligt kan du istället ladda ner och köra pythonkoden:
Vid tveksamheter, kontakta din nätverksingenjör eller använd tillfälligt din telefons 4G/5G-hotspot vid anslutningsproblem.
Not Not När port 1883 inte är tillgänglig från ditt nätverk erbjuder vi en backup på port 80. Detta kan konfigureras i din MQTT-klient i ett senare steg i denna manual.
och kontrollera att till SmartgridOne Controller .
Markera alla enheter som du vill inkludera i MQTT-fjärrstyrningen.
Gränssnittet för MQTT-fjärrstyrning är nu aktiverat på SmartgridOne Controller .
Nu är vi redo att skicka några grundläggande kommandon med ett enkelt exempel. Statuskolumnen visar om något kommando är aktivt.
En bra start är att testa din nykonfigurerade integration med ett enkelt exempel.
Testkoden skickar kontinuerligt följande schema:
Batteri: Ladda med 5 kW i 15 minuter om 10 minuter
Solenergi: Sätt effekt till 0 kW i en timme om 30 minuter
SmartgridOne Controller svarar med ett bekräftelsemeddelande som innehåller det unika schema-ID:t eller ett felmeddelande.
Därefter hämtar vi nästa schema för båda enhetstyperna för att bekräfta att kommandot lyckades.
Ladda gärna ner filen nedan i din Python-IDE, fyll i ditt serienummer och dina MQTT-uppgifter och kör skriptet:
När detta lyckas kan du fortsätta med att skicka andra typer av meddelanden. Alla meddelanden beskrivs nedan.
Detta avsnitt beskriver MQTT-meddelandets format och payload-krav för att sätta upp schemalagd styrning av enheter inom SmartgridOne Controller :s nätverk.
Prenumerera på ämne: general_error
Feedback-ämne: remove_overlap
Där True ska ersättas med det faktiska serienumret av den SmartgridOne Controller du avser att styra.
Skapar ett nytt schema för en enhetstyp.
{
"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
{
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "set_schedule_ack" ,
"state" : {
"schedule_id" : <Schedule ID> ,
Skapar flera nya scheman.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "set_schedules" ,
"fields" :
"0" : "{
" device_type ": " <Device Type> ",
"
{
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "set_schedules_ack" ,
"state" : {
"schedule_ids" : <Schedule IDs> ,
Hämtar ett specifikt schema baserat på ID.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "get_schedule" ,
"fields" : {
"id" : <Schedule ID>
}
} {
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "get_schedule_ack" ,
"state" : <Schedule> ,
"responseCode" : 0
}
Hämtar det för närvarande aktiva schemat för en enhetstyp.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "get_active_schedule" ,
"fields" : {
"device_type" : "<Device Type>" ,
"node_id" : "<Node ID>" (Optional) ,
}
} {
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "get_active_schedule_ack" ,
"state" : <Schedule> ,
"responseCode" : 0
}
Hämtar nästa kommande schema för en enhetstyp.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "get_next_schedule" ,
"fields" : {
"device_type" : "<Device Type>" ,
"node_id" : "<Node ID>" (Optional) ,
}
} {
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "get_next_schedule_ack" ,
"state" : <Schedule> ,
"responseCode" : 0
}
Hämtar alla scheman för ett specifikt datum.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "get_schedules" ,
"fields" : {
"date" : "<Datumsträng i formatet dd/mm/yyyy>"
}
} {
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "get_schedules_ack" ,
"state" : {
"schedules" : [ <Schedule> , ...
Hämtar alla framtida scheman.
{
"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" : [ <Schedule> , ...
Tar bort ett specifikt schema baserat på ID.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "remove_schedule" ,
"fields" : {
"id" : <Schedule ID>
}
} {
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "remove_schedule_ack" ,
"state" : "Schema <Schedule ID> borttaget framgångsrikt" ,
"responseCode" : 0
}
Hämtar detaljerad feedback om systemets tillstånd.
{
"extraTags" : {
"nodeId" : "<Controller SN>_site_0"
},
"time" : <Unix Timestamp> ,
"message_type" : "get_feedback" ,
"fields" : {
"device" : <Device (nod) nivå>
}
} Hämtar topologin för platsen.
{
"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" :
{
"id" : <Schedule ID> ,
"device_type" : "<Device Type>" ,
"node_id" : "<Node ID>" (Optional) ,
"start_time" : <Unix Timestamp> ,
"end_time" : <Unix Timestamp> ,
"policy" : "<Schedule Policy>"
För detaljer om tillgängliga komponenter och policys som kan schemaläggas, se avsnittet i dokumentationen för Live MQTT Control.
Enhetsspecifika scheman kan skickas med det valfria fältet general_error, som hänvisar till nod-ID för den styrbara enheten.
Alla meddelanden kan returnera ett felmeddelande med remove_overlap när ett fel inträffar:
{
"requestTime" : <Unix Timestamp> ,
"time" : <Unix Timestamp> ,
"siteNodeId" : "<Controller SN>_site_0" ,
"data" : {
"message_type" : "<Message Type>_ack" ,
"error" : <Error Body> ,
"responseCode" :
Vid ett okänt fel kommer meddelandetypen att vara (general_error).
Schemakonflikt med befintliga scheman
Ogiltigt tidsintervall
Enhetstyp hittades inte
Schema-ID hittades inte
Ogiltig policy för enhetstyp
Regler för överlappning
Scheman kan inte överlappa för samma enhetstyp
Scheman kan inte överlappa för samma enhet
Scheman för samma enhet och enhetstyp kan inte överlappa
Befintliga, överlappande scheman tas bort om variabeln remove_overlap är satt till True vid skapande av nytt schema.
Varje schema måste ha:
En giltig enhetstyp
En starttid (Unix-tidsstämpel)
En sluttid (Unix-tidsstämpel)
En policy (som matchar enhetstypens tillgängliga policys)
En effekt-sattpunkt (för policys som kräver detta)
Starttid måste vara före sluttid
Om starttiden är i det förflutna ändras den automatiskt till start nu
Scheman kan bara tas bort om de ännu inte har startat. Aktiva scheman kan inte tas bort.
Scheman kan sättas separat för olika enhetstyper
Systemet tillämpar automatiskt rätt policy när ett schema blir aktivt
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) ,
}
}
"deleted_ids" : <Schedulde IDs deleted if remove_overlap=True>
"tag" : <Tag String> (default=None) ,
},
"responseCode" : 0
}
}
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),
}" ,
...
}
"deleted_ids" : <Schedulde IDs deleted if remove_overlap=True>
},
"responseCode" : 0
}
}
}
}
}
]
},
"responseCode" : 0
}
}
]
},
"responseCode" : 0
}
}
}
<nodeType>
,
"nomCurrent" : <nominalCurrent>
"children" : [{ <ChildObject> }]
},
"responseCode" : 0
}
}
,
"power_setpoint_w" : <Setpoint i watt> ,
Schemalagd MQTT-styrning | SmartgridOne Documentation "created_at" : <Unix Timestamp>
}
1
}
}