Vizualizace senzorických dat v Microsoft Azure pomocí IoT Starter Kit


Pro získávání senzorických údajů a zapínání/vypínání relé jsme využili nový vývojářský nástroj IoT Starter Kit. Aplikaci lze snadno doplnit o další HW a SW rozšíření.

Protože potřebné programy a služby jsou pro něj již přichystány a veřejně dostupné, je vývoj bezdrátové IoT aplikace snadný a rychlý. Ke kitu jsou také dostupné tutoriály, které nás provedou všemi základními kroky.

UP board

Jako rozhraní mezi sítí IQRF a webovými službami Microsoft Azure byla využita oblíbená vývojářská deska UP od firmy AAEON. Jedná se hardwarově velmi zajímavý výrobek vynikající kvalitou, odolností i vnitřním vybavením. Detaily najdete zde.

Gateway zajišťuje komunikaci se sítí IQRF, dokáže z ní díky scheduleru pravidelně vyčítat data a zasílá je MQTT kanálem do připraveného IoT Hubu v Microsoft Azure. Obsluhu MQTT kanálů, formátování JSON zpráv a veškerou komunikaci řídí IQRF Daemon, který je pro tento vývojový kit k dispozici.

Pro nastavení MQTT kanálu jsme nastavili v konfiguračním souboru MqttMessaging.json jméno IoT Hubu v Microsoft Azure a jméno naší GW, kterou jsme si zde přidali jako zařízení.

    {
      "Name": "MqttMessaging2",
      "Enabled": true,
      "Properties": {
        "BrokerAddr": "ssl://YOURIOTHUB.azure-devices.net:8883",
        "ClientId": "YOURDEVICE",
        "Persistence": 1,
        "Qos": 1,
        "TopicRequest": "devices/YOURDEVICE/messages/devicebound/#",
        "TopicResponse": "devices/YOURDEVICE/messages/events/",
        "User": "YOURIOTHUB.azure-devices.net/YOURDEVICE",
        "Password": "SharedAccessSignature sr=YOURIOTHUB.azure-devices.net%2Fdevices%2FYOURDEVICE&sig=aUV7SV1YUtFtO3NoXtPxtnqoI4YYH4xO9A8cAAwt8%2BQ%3D&se=1492996556",
        "EnabledSSL": true,
        "KeepAliveInterval": 20,
        "ConnectTimeout": 5,
        "MinReconnect": 1,
        "MaxReconnect": 64
      }
    }

V konfiguračním souboru Scheduler.json jsme nastavili parametry pro vyčítání senzorických hodnot. Parametry v proměnných pnum a pcmd vycházejí z připraveného Custom DPA Handleru, který je pro vyčítání senzorických hodnot nahrán v příslušném IQRF nodu.

{
  "Tasks": [
  ],

  "TasksJson": [
    {
      "time": "*/30 * * * * * *",
      "service": "BaseServiceForMQTT2",
      "message": {
        "ctype":"dpa",
        "type":"raw-hdp",
        "msgid":"1",
        "timeout":500,
        "nadr":"01",
        "pnum":"20",
        "pcmd":"31",
        "hwpid":"ffff",
        "req-data":"",
        "request":".",
        "request-ts":"",
        "confirmation":".",
        "confirmation-ts":"",
        "response":".",
        "response-ts":""
      }
    }
  ]
}

Detailnější informace o instalaci a konfiguraci služeb najdete zde.

Bezdrátová IQRF mesh síť

Platforma IQRF slouží pro bezdrátový přenos v ISM pásmu, směrování v síti zajišťuje IQMESH protokol, topologie je typu mesh, která vyniká spolehlivostí doručení zpráv.

V IoT Starter Kitu najdete senzorický kit pro sběr senzorických údajů ze senzorů (externí teploměr, světelný senzor pro měření úrovně osvětlení, potenciometr pro měření napětí) a relé pro zapínání/vypínání dalších zařízení.

Jsou připraveny specifické Custom DPA Handlery zajišťující snadnou komunikaci jak s relé, tak s jednotlivými senzory.

V souboru Custom-DPA-Handler-DDC-core.c najdeme okomentovaný zdrojový kód, kde po rychlé analýze zjistíme, jaké periferie a jaké příkazy použít pro komunikaci se senzorickým nebo relé kitem.

----------- DDC-SE-01
Request: PNUM = 0x20, PCMD = 0x31
Response:
 PData[0]=Temperature at [C]
 PData[1]=Photoresistor value 0x00-0xFF
 PData[2]=Potentiometer value 0x00-0xFF
 returns ERROR_FAIL when error reading temperature

FRC=0xC0, returns temperature at C, 127 for 0 C, 0x80 for error reading temperature
FRC=0xC1, returns photoresistor value, returns 1 instead of 0
FRC=0xC2, returns potentiometer value, returns 1 instead of 0

----------- DDC-RE-01
Request: PNUM = 0x20, PCMD = 0x32
 PData[0]=Relay1Ctrl
 PData[1]=Relay2Ctrl

Response:
 PData[0]=Relay1State
 PData[1]=Relay2State

RelayCtrl: 0=Switch the Relay off, 1=Switch the Relay on, Other=Do not control the Relay
RelayState: 0=Relay was off, 1=Relay was on

Popis protokolu DPA, který celou bezdrátovou komunikaci zjednodušuje, najdete zde.

Videotutoriály IQRF

Microsoft Azure

Pro zasílání získaných hodnot z jednotlivých senzorů ze sítě IQRF do IoT Hubu v MS Azure je využíván protokol MQTT. Zde jsou data vhodnými dotazy zpracována a zasílána na výstup. Pro ukázku bylo zpracováno video, jak lze data přehlednou formou zobrazit v Power BI.

Pro získání jednotlivých senzorických hodnot z příchozího řetězce jsme vytvořili javascriptovou funkci a SQL dotaz.

JavaScript

// Convert Hex value to integer.
function main(hexValue) {
    return parseInt(hexValue, 16);
}

T-SQL 

SELECT
    *
     ,UDF.hex2Int(Substring (response,25,2)) AS Temperature
     ,UDF.hex2Int(Substring (response,28,2)) AS Light
     ,UDF.hex2Int(Substring (response,31,2)) AS Potentiometer
INTO
    DataOUT
FROM
    DataIN

Microsoft Azure nabízí i další pokročilé nástroje, kterými lze vytvořit například kompletní aplikaci pro ovládání senzorické sítě či předvídat budoucí stavy ve sledovaných objektech.

Workshop

K IoT Starter Kitu proběhne rozsáhlý workshop na  IQRF Summitu 2017 v Praze 7. až 8. června. Účastníci summitu mohou pro případný nákup tohoto produktu a dalších rozšíření uplatnit výraznou slevu.

IQRF Alliance, 777 775 735, alliance@iqrf.org, www.iqrfalliance.org

Comments (0)

Skip to main content