Pro práci s Microsoft Azure používají jednotky Poseidon2 a Damocles2 protokol MQTT. V jednotkách musí být nahrán FW 3.2.6 a vyšší.
Pro nastavení a ověření činnosti použijeme software Device Explorer Twin. Ten stáhneme na adrese https://github.com/Azure/azure-iot-sdks/releases/download/2016-11-17/SetupDeviceExplorer.msi Po spuštění aplikace zadáme do okna IoT Hub Connection String řetězec, který jme obdrželi při zakládání účtu MS Azure, klineme na tláčítko update a následně si vygenerujeme SAS klíč pro potřebnou dobu. V našem případě 365 dní:
Nyní se přepneme na záložku Management a založíme nová produkt s Device IP např. Poseidon24002Demo:
Vytvoření je potvrzeno oknem:
Zařízení nyní vidíme ve výpisu zařízení
Vybereme nově zadané zařízení a stiskem tlačítka SAS Token si vygenerujeme heslo:
Zde si ohlídáme že pole DeviceID obsahuje správné zařízení a pole TTL (Days) má rozumnou délku, tedy délku po jakou bude heslo platné:
Z Tokenu vykopírujeme heslo. To obsahuje vse počínaje řetězcem SharedAccessSignature sr
Nyní nastavíme jednotku Poseidon:
On MQTT page we enable MQTT protocol support. Enter server address which was assigned to us when creating MS Azure account, port add 8883 and at the same time we check Secure SSL Mode. Into field Password we enter password generated by previous step. Username is always a compound of server address and DeviceID, for example hwg.azure-devices.net/Poseidon24002Demo and Client ID is in this case on same level as DeviceID.
At the same time, you still need to allow user defined Topic and as Topic name set: devices/YOUR_DEVICE_ID/messages/events/, for example devices/Poseidon24002Demo/messages/events/:
Into Topic Value we can fill definated content using macros:
// XML template
<?xml version="1.0" encoding="utf-8" ?> <BinaryInSet>%LOOP_IN%<Entry> <ID>%VAL_ID%</ID> <Name>%VAL_NAME%</Name> <Value>%VAL_VALUE%</Value> <State>%VAL_STATE%</State> </Entry>%LOOP_IN_END%</BinaryInSet>
<BinaryOutputSet>%LOOP_OUT%<Entry> <ID>%VAL_ID%</ID> <Name>%VAL_NAME%</Name> <Value>%VAL_VALUE%</Value> <State>%VAL_STATE%</State> </Entry>%LOOP_OUT_END%</BinaryOutputSet>
<SensorSet>%LOOP_SENSOR%<Entry> <ID>%VAL_ID%</ID> <Name>%VAL_NAME%</Name> <Value>%VAL_VALUE%</Value> <State>%VAL_STATE%</State> </Entry>%LOOP_SENSOR_END%</SensorSet>
<BinaryOutputSet>%ID_OUT_3%<Entry> <ID>%VAL_ID%</ID> <Name>%VAL_NAME%</Name> <Value>%VAL_VALUE%</Value> <State>%VAL_STATE%</State> </Entry>%ID_OUT_END%</BinaryOutputSet>
// Json template
{ "sensors": [ %LOOP_SENSOR%{"id":%VAL_ID%, "name":"%VAL_NAME%", "value":%VAL_VALUE%, "state":%VAL_STATE% },
%LOOP_SENSOR_END%,], "inputs": [ %LOOP_IN%{"id":%VAL_ID%, "name":"%VAL_NAME%", "value":%VAL_VALUE%, "state":%VAL_STATE% }, %LOOP_IN_END%,],
"outputs": [ %LOOP_OUT%{"id":%VAL_ID%, "name":"%VAL_NAME%", "value":%VAL_VALUE%, }, %LOOP_OUT_END%,] }