**** LoRa **** .. todo:: * lora radio * lorawan netwerk * TheThingsNetwork LoRa radio ========== * instelbaar: bereik vs. bitrate (SF, modulatiemethode) (en vermogen?) * 868MHz, vrij band met beperkingen (1% of soms 0,1%) * spread-spectrum technologie; gebruikt van "chirps" om interferentie en andere verstoringen te verminderen * eventueel zonder LoRaWan netwerk te gebruiken, als radio voor pakket-communicatie. LoRa hardware ============= * Hope RFM95-module (op basis van SX1276) * http://www.hoperf.com/rf_transceiver/lora/RFM95W.html (o.a. datasheet) * https://www.semtech.com/products/wireless-rf/lora-transceivers/SX1276 * Adafruit RFM95-module: * https://www.adafruit.com/product/3072 * SOS solutions: https://www.sossolutions.nl/3072-adafruit-rfm95w-lora-radio-transceiver-breakout-868-or-915-mhz (EUR 22,95) * Adafruit Feather - e.g., M0 LoRa: * https://www.adafruit.com/product/3178 * SOS solutions: https://www.sossolutions.nl/3178-adafruit-feather-m0-with-rfm95-lora-radio-900mhz (EUR 42,95) * Arduino MK1300 WAN (LoRa) - op basis van Murata CMWX1ZZABZ Lo-Ra module * Arduino mini pro met RFM95: * https://www.thethingsnetwork.org/labs/story/creating-a-ttn-node * PyCom - LoPy (https://pycom.io) LoRaWan software ================ * LMIC (voor Arduino IDE; werkt o.a. met Arduino UNO, mini; ESP8266; Feather M0?) * https://github.com/matthijskooijman/arduino-lmic * voor RFM95 e.d. (SX1276-module) * Arduino library * https://www.arduino.cc/en/Reference/MKRWAN * NB: de Arduino MKR 1300 gebruikt een LoRa-module waarin de LoRa-software geïntegreerd is. Deze zorgt er o.a. voor dat aan de 868Mhz- en LoRa-eisen voldaan wordt. TheThingsNetwork ================ * https://www.thethingsnetwork.org * documentatie: https://www.thethingsnetwork.org/docs/ * projecten, tutorials: https://www.thethingsnetwork.org/labs/ * forum: https://www.thethingsnetwork.org/forum/ Application ----------- Bij het aanmaken van een TTN-toepassing kies je hiervoor een unieke naam (``AppID``). Deze naam wordt onder meer gebruikt in de IoT-knopen en in de externe interfaces (mqtt e.d.). Devices ------- IoT-knopen (devices) zijn onderdeel van een toepassing (application). Bij het aanmaken van een IoT-knoop (register) als onderdeel van een toepassing (application) kies je hiervoor een unieke naam. Deze naam wordt onder meer gebruikt in de IoT-knopen en in de externe interfaces (mqtt e.d.). De naam van een device kun je later niet meer veranderen. Je moet ook een unieke device-EUI kiezen (8 bytes). (Waarvoor wordt deze EUI gebruikt?). App-EUI en device-EUI worden gebruikt als MAC-adressen (als ik het goed begrijp). Deze adressering is van belang bij een "join" van het netwerk. Daarna krijgt een device een dynamisch 32-bits adres (ik neem aan dat dit uniek is voor het netwerk). (Is dit regio-gebonden? gebonden aan de gateways? je wilt niet in de adres-problemen komen met grote aantallen knopen...) Je moet ook opgeven op welke manier het device (de IoT-knoop) zich aanmeldt bij het netwerk. Hiervoor zijn er twee mogelijkheden: * OTAA (Over the air activation) * ABP (Activation by personalization) Daarnaast zijn er nog de volgende gegevens bij een device: * device address (for OTAA: assigned during activation; for ABP: ) * (te vergelijken met een dynamisch IP-adres?) * network session key (for OTAA: assigned during activation; for ABP: ) * deze wordt gedeeld met het netwerk, en o.a. gebruikt voor het controleren van de integriteit van een pakket. Dit voorkomt *tampering* van pakketten. * app session key (for OTAA: assigned during activation; for ABP: ) * voor end-to-end encryptie van de payload tussen de IoT-knoop en de TTN-application. Voor het netwerk daartussen (o.a. de gateway) is deze payload niet leesbaar. ==> Welke rol spelen deze? o.a. m.b.t. de security? versleuteling? Frame counters: * voorkomen van replay attack; * NB: bij een reset van een IoT-knoop met ABP begint de knoop weer bij 0 te tellen; dit wordt door het netwerk beschouwd als een potentiële replay; pas bij een nieuwe framecounter-waarde worden de berichten geaccepteerd. Dit betekent dat je bij een reset van een IoT-knoop (hardware) met ABP, ook in de application de framecounter weer moet resetten. (Je kunt de framecounter-check ook uitschakelen: in een experimentele situatie is *security* niet altijd belangrijk.) Configureren IoT-knoop ---------------------- De gegevens van de TTN-application en van het device gebruik je voor het configureren van de eigenlijke IoT-knoop. In de (arduino)-software moet je de volgende waarden instellen (in het geval van OTAA-activatie). Zie: https://www.thethingsnetwork.org/labs/story/creating-a-ttn-node, "Using Activation by Personalization (ABP)". In het geval van ABP (activation by personinalization) moet je de volgende gegevens in de Arduino-code invoeren: * Device address * Network-session-key * App-session-key (In dit geval zie je geen Join-berichten verschijnen: de data-berichten verschijnen - of niet...) Integratie met een eigen toepassing ----------------------------------- * via mqtt (en JSON) * Dit interface is beschreven in: https://www.thethingsnetwork.org/docs/applications/mqtt/quick-start.html * via http (De structuur van een topic is: ``/devices//up`` etc.; de id-s zijn unieke namen.) * https://www.youtube.com/watch?v=JrNjY-pGuno&list=PLM8eOeiKY7JVwrBYRHxsf9p0VM_dVapXl&index=1 Alternatief: http integration ("push based...") * https://www.youtube.com/watch?v=Uebcq7xmI1M&list=PLM8eOeiKY7JVwrBYRHxsf9p0VM_dVapXl&index=2 Opmerkingen =========== Soms worden er LoRa-gateways aangeboden rond de 100 Euro; dit zijn geen echte multi-channel gateways, maar "uitgebreide LoRa-knopen". Gebruik van dergelijke gateways beperkt de LoRa-dekking voor andere LoRa-netwerken in de buurt. Activation ========== .. toctree:: :hidden: lora/activation.rst