I detta pilotprojekt har olika LoRaWAN-nätverk och sensorer undersökts för att kunna användas inom restauranger. Syftet var att mäta temperatur och luftfuktighet i restaurangmiljöer, registrera antalet besökare samt övervaka bullernivån. Bullernivån är särskilt viktig eftersom olika kommuner i Sverige har fastställt olika riktvärden för bullernivåer beroende på källan till ljudet. Detta innebär att restauranger och krogar behöver anpassa sig efter dessa riktlinjer. Resten av detta dokument kommer att gå igenom vilka nätverk, sensorer och plattformar som har använts.
- Kallskänken pilote case
- Innehållsförteckning
- LoRaWAN Nätverk
- Sensorer
- Visualisering av data
- Länka till google kalkylark
I detta projekt testades nätverken Helium och Actility (via Kalmar Energi). till en början kopplades några sensorer till Helium och några till Actility. Från Helium skickas data vidare till google-sheets och Datacake. På Datacake skapades 2 dashboards där data från sensorerna visualiserades. Eftersom det visade sig att täckningen för Helium inte var tillräcklig på restaurangerna lades alla sensorer över till Kalmar energis portal. Från Kalmar energis portal är data tillgängligt via ett API, det går även att skapa dashboards på portalen.
Helium använder ett decentraliserat lågkostnadsnätverk där användarna betalar med Helium-tokens för att skicka data. Det är möjligt att köpa tokens eller tjäna dem genom att köpa och hålla igång enheter som kallas Hotspots. Hotspots ger nätverkstäckning. Det är en kostnadseffektiv lösning för IoT-dataöverföring som görs möjlig av privatpersoner.
Eftersom täckningen är beroende av privatpersoner som håller igång Heliums Hotspots, ser den olika ut på olika platser. Ju fler Hotspots det finns i ett område, desto bättre täckning.
- Se till att du är inloggad på gmail med mejladressen som är listad i Autentiseringsuppgifter
- Gå till: https://console-vip.helium.com/.
- Klicka på 'continue with google' och använd mejladressen som är listad i Autentiseringsuppgifter
- Klicka på "Devices" i listan med alternativ till vänster.
- Klicka på ikonen som är inringad med rött.
- Ge enheten ett beskrivande namn.
- Dev EUI, App EUI och App Key kan hittas på olika sätt beroende på enhet.
- Valfritt: Lägg till "label". Med "label" är det möjligt att gruppera sensorer och tillämpa samma inställningar på en hel grupp.
- Spara enheten.
Downlinks kan användas för att konfigurera vissa av sensorerna. I avsnittet Sensorer beskrivs vad som ska skickas för att konfigurera enheten.
- Gå till "Devices"
- Klicka på den enhet som du vill skicka en downlink till.
- Klicka på ikonen som är inringad med rött.
- Ange "payload" och den port som den ska skickas till. Klicka på ikonen markerad med rött för att lägga downlinken i kö för att skickas. Meddelandet kommer att skickas nästa gång sensorn skickar något. ![](https://hackmd.io/_uploads/ryxK8G933.png
När en enhet läggs till kan den länkas till Datacake. Data från enheten skickas från Helium till Datacake, där den kan visualiseras.
- Gå till "Flows".
- Klicka på plustecknet bredvid "NODES".
- Du hittar enheten i "Devices" eller "Labels", labels kan innehålla många enheter.
- Dra och släpp enheten ut på arbetsytan.
- Dra en linje mellan den nya enheten och den befintliga datacake-noden.
För att data ska visas i Datacake måste enheten läggas till i Datacake. Se Lägg till enhet Datacake för instruktioner.
- Gå till "Devices".
- Klicka på den enhet som du vill byta namn på.
- Klicka på pennikonen bredvid namnet. .
- Uppdatera namnet, var noga med att komma ihåg vilken enhet det är.
Actility är en leverantör av IoT-anslutningar som erbjuder en plattform för anslutning och hantering av Internet of Things-enheter. Actility driver [Stadshuben] (https://kalmarenergi.se/kalmarstadshubb/) som är en IoT-plattform som tillhandahålls av Kalmar Energi. För tillfället är alla sensorer som ingår i projektet uppkopplade på stadshubben.
Det är möjligt att filtrera bort sensorer som ligger utanför ett inställt intervall på valfria kanaler som sensorerna skickar. Senaste sensorvärdet visas då även i kartvyn, som visas i bilden nedan.
För att göra detta, klicka på Filter channels
i det övre högra hörnet av kartan och välj kanalen/värdet du vill filtrera baserat på.
För att skicka en Downlink behöver man klicka på de tre prickarna längst till höger och sedan på Messages
.
Sedan behöver man klicka på de tre prickarna längst till höger och sedan på Send Downlink
. Strängen som man skickar med brukar oftast vara i hexadecimal form och skickar över port 11
.
Det är möjligt att använda dina inloggningsuppgifter (som du använder för att logga in på Stadshubben) för att logga in på vår API-portal - eventuellt behöver du slutföra registreringen för att få tillgång till API-portalen:
Gör så här för att logga in på API-portalen:
- Navigera till: https://ke-apim.developer.azure-api.net/ .
- Klicka på
sign in
:
- Gå till Azzure Active Directory B2C och använd inloggningsuppgifterna för att logga in. Se bilden:
Utforska API:erna och se alla andra ändpunkter.
För att få autentiseringstoken via API:erna måste man använda API:et för kundidentitet: POST: /v1/resource-owner/token
När det gäller autentisering via HTTPS Request måste du anropa följande endpoint https://api.kalmarenergi.se/customer-identity/v1/resource-owner/token med följande information i Request:
- Username: "EMAIL"
- Passsword: "PASSWORD"
- responseType: "token id_token"
- scope: "openid offline_access https://kalmarenergib2c.onmicrosoft.com/6b6a459a-2596-4213-b42b-153f1e0a9af7/Device.Read.Add"
- grantType: "password"
Se bilden nedan för ett exempel på hur du hämtar din token:
Header är:
För att uppdatera ditt token: POST: /v1/resource-owner/token
Payloaden borde se ut som följande:
- refreshToken: "xxxx"
- grantType: "refresh_token"
Node Id kan erhållas via API:erna eller från URL:en. Idt finns i den sista delen av URL:en, den börjar efter sista snedstrecket. Användaren måste logga in på Stadshubben för att gå till Nodes
och sedan klicka på målnoden. När målnodens sida öppnas kan Id hämtas från URL:en. Se nedan:
Nodens ID för exemplet ovan är: 469f0f0f-12fc-440a-81db-56295513151w
-
För att anropa alla noder och se deras: Id, ChannelId, ModelId, etc... Gör en GET request på följande endpoint:
-
För att anropa en specifik nod och se dess: Id, ChannelId, ModelId, etc... Gör en GET request på följande endpoint:
Hämta data från en nod:
GET https://api.kalmarenergi.se/device-data/v1/message-values?NodeId={NodeId}
GET https://api.kalmarenergi.se/device-data/v1/message-values?ChannelIds={ChannelId}&NodeId={NodeId}
Hämta det senaste meddelandet (data) som anlänt från en nod:
Det finns ett stort antal tillgängliga sensorer som är LoRa-kompatibla. I det här projektet användes 3 olika sorter. Comfort strip som mäter temperatur, luftfuktighet och ljus, ERS sound som mäter ljud, temperatur luftfuktighet och ljus, samt en besöksräknare.
Sensor | Antal |
---|---|
Comfort strip | 10 |
ERS sound | 1 |
Besöksräknare | 1 |
Strips från Sensative är diskreta sensorer som finns tillgängliga för ett antal användningsområden. De vi använder kallas +comfort. De har sensorer för temperatur, luftfuktighet och omgivande ljus. De kan även användas som dörrsensor. Remsorna är gjorda för inomhusbruk, men de kan hantera temperaturer mellan -20 och 60 C, så det skulle vara möjligt att placera dem i en frys eller ett kylskåp.
Tio remsor ingår för tillfället i projektet, Alla är just nu inlagda på på Actility/Stadshubben. De är märkta "SH1-10". De har också konfigurerats för att skicka relevanta data. De bör vara redo att installeras där de behövs.
För att ansluta en sensor till LoRaWAN-nätverket behöver magneten avlägsnas efter att nycklarna har matats in i nätverksservern. Då gör sensorn en join-sekvens och ansluter till nätverket. Om man har avlägsnat magneten innan nycklarna har matats in i nätverksservern kan en manuell join-sekvens göras genom att hålla en magnet vid den runda sidan av sensorn och flytta bort den tre gånger.
Följande film som visar hur man tvingar sensorn att göra en join-sekvens: https://www.youtube.com/watch?v=BBRCxrhlpsc&ab_channel=Sensative
Föjande film som visar hur man återställer sensorn till fabriksinställningar: https://www.youtube.com/watch?v=qkWr9diDSNk&ab_channel=Sensative
När remsorna är nya är de inställda till att endast fungera som dörr-sensorer. De behöver konfigureras för att läsa av temperatur, luftfuktighet och omgivande ljus. Sensorerna konfigureras genom att en downlink skickas till dem. Sensatives webbplats har en ['Strips configuration aplication'] (https://strips-lora-config-app.service.sensative.net/profiles) som tillhandahåller rätt meddelande att skicka med downlinkarna för att konfigurera remsan.
- Gå till 'Strips configuration aplication'.
- "Device model" är "Strips multi sensor +comfort".
- Välj den profil som passar det remsan ska användas till.
- Generatorn kommer att beskriva den valda profilen, fortsätt genom att klicka på "proceed". I dessa steg är det möjligt att ändra profilen, men detta kan påverka enhetens batteritid.
- I det sista steget visas en "payload" överst på sidan. "Payloaden" är meddelandet som ska skickas till remsan, den är i hexadecimal form, under finns en knapp som gör den bas 64-kodad. Vilket format det ska vara beror på vilket nätverk som används för enheten.
- Skicka meddelandet till din enhet: Skicka downlink(Helium).
ERS sound mäter ljud och flera andra saker så som temperatur, luftfuktighet och ljusintensitet.
Ta bort sensorns baksida för att installera de två batterierna. batteritypen är 3,6 V litium AA.
Alla sensorinställningar kan konfigureras via en smartphone-applikation med NFC eller via nätverksservern genom att man skickar downlinks till sensorn.
- Ladda ner ELSYS applikation "Sensor Settings" från Google Play och installera den på en smartphone eller surfplatta. Enheten måste ha stöd för NFC.
- Aktivera NFC på enheten och starta applikationen.
- Placera din enhet ovanpå NFC-antennen på sensorn.
- Ta bort enheten. Aktuella inställningar visas i applikationen.
- Använd applikationen för att ändra inställningar om det behövs.
- Tryck snabbt på enheten ovanpå NFC-antennen för att ge de nya inställningarna till sensorn. Se till att applikationen bekräftar dina nya inställningar.
- Vänta tills sensorn har startat om (5 sek), vilket indikeras av att LED-lampan blinkar. Sensorns inställningar har uppdaterats.
Alla inställningar kan konfigureras via din LoRaWAN®-infrastruktur. Besök supportavsnittet på denna webbsida för mer information om downlink-protokollet. Generatorn skapar en nedlänk som kan skickas till enheten, t.ex. via Helium.
Alla parametrar för applikationen "Sensorinställningar" finns i inställningsdokumentet. Mer information finns i supportavsnittet på denna webbsida.
Besöksräknaren kan detektera när någon passerar emellan dess två enheter. Den kan också avgöra åt vilket håll personen rörde sig. Med hjälp av dessa egenskaper kan den ge en ungefärlig bild av hur många människor som befinner sig i en lokal.
Manual: IMBUILDINGS - LoRaWAN People Counter - doc v1.1
Avancerad guide: IMBUILDINGS_Reference_Guide_for_System_Integrators
För att komma igång och konfigurera enheten via NFC behöver man ladda ner appen (APK) för Android från IMBuildings Github sida. När man väl har installerat appen kan man hålla telefonen nära sensorn för att göra NFC-avläsningen. I Appen kan man sedan ändra AppKey
och AppEUI
såväl som andra inställningar.
Du kan se alla inställningar i den avancerade guiden ivan, men här är en snabb sammanfattning av vad du kan göra:
Sätta till 10 minuters intervall
F1 01 03 1E ==0A== interval : 0A (correspond to 10 minutes)
Ändra avstånd
F1 01 04 50 ==1E 96==
Ignored distance : 0x1E (correspond to 30 cm)
Detection distance : 96 (correspond to 150 cm)
Det är rekommenderat att baka in flera instruktioner i en enda Downlink. I det här fallet kan du lägga till intruktionen save, vilket skulle ge följande Downlink:
intruktionen för att spara
F1 01 04 50 1E 96 ==03 C8 04==
För att se alla olika typer av nyttolaster kan du kolla den avancerade guiden ovan.
Mer om Downlinks här
Datacake användes för att visualisera data från sensorerna i heliumnätverket. För att se den visualiserade data klicka på en enhet eller på en "Dashboard".
- Gå till https://app.datacake.de/login
- Använd den e-postadress och det lösenord som anges i Credentials
- Gå till enheter och klicka på "+ Add Device"
- Välj "LoRaWAN" och klicka på " Next".
- Välj " New Product from template"
- Sök och se om det finns en mall för enheten.
- Välj den korrekta mallen, klicka på " Next".
- Välj det nätverk som enheten är ansluten till, till exempel Helium. Klicka på " Next"
- Lägg till enheten genom att skriva dess DevEUI och ge den ett namn. Den kan också ges en plats, t.ex. " matsal".
- Det är möjligt att lägga till flera enheter samtidigt genom att klicka på "+ Add another device".
- Gå till "Devices".
- Klicka på den enhet du vill byta namn på.
- Klicka på "Konfiguration".
- Uppdatera namnet, var noga med att komma ihåg vilken enhet det är.
- Spara!
Datacake låter dig skapa dashbords där data från flera olika sensorer kan visualiseras. För detta projekt skapas två dashbords: "Kallskänken history" och "Kallskänken live".
-
Klicka på "+Add Dashboard" i menyn till vänster.
-
Namnge dashboarden och bestäm vem som ska ha tillgång till den.
-
För att redigera dashboarden, klicka på ikonen markerad med rött.
-
Klicka på "Add widget" för att utforska vad som kan läggas till i dashboarden och hur data kan visualiseras.
Tips: Ett bra sätt att lära sig vad som kan göras är att redigera befintliga dashboards och undersöka de widgetar som redan finns där.
Om du vill använda dina data kan du ha dem i Google Sheets. Du kan sedan enkelt konsultera dem och göra vad du vill med dem.
Vi samlar in data från portalen och bearbetar den sedan med en avkodare för att skicka den.
Avkodaren är en kod som tar en del av data som kallas "Payload" och bearbetar den för att extrahera de önskade värdena.
Datan skickas till dokumentet via ett frågeformulär. I det här fallet använder vi Google-formulär. Formuläret måste inehålla en fråga för varje del av data som vi vill ha med.
Sedan överför google forms uppgifterna till google sheets.
Det här är vad du kommer att se i Google Sheets: Datum, temperatur, ljus och luftfuktighet. Ibland saknas vissa data eftersom de inte har ändrats sedan den senaste mätningen...