LoRaWAN♥HomeKit

Bilen står i ett garage med el 100m bort. Timern från Classe funkar fint för motor och kupevärmare, men ibland vill man hämta tidigare, eller så får någon i familjen skjuts hem - ja som du säkert förstår, det är inte smidigt.
Wifi/ZigBee (Trådfri/Aqara) fungerar inte så långt, så vad göra? Jo lösningen heter LoRaWAN: Long Range Wide Area Network. Vi pratar galna avstånd - med rätt antenn når man flera hundra kilometer!. Men det kostar i överföringskapacitet, vi skickar max 222 bytes (i praktiken är gränsen 51) med <27 kbps. Kommunikationen sker på 868 MHz i Europa, en öppen frekvens.


Lora är själva överföringsmediet, medans LoRaWAN är de övre lagren. Det finns fjärrströmbrytare som enbart är Lora, de är i princip två vanliga radiosänd/mottagare inställda på samma frekvens. Inte HomeKit-kompatibla alltså :wink:

LoRaWAN är ett eget moln:
loracloudimage-18
längst till vänster sensorer (noder) som pratar över radio med en gateway (basstation) som i sin tur är kopplat till en nätverksserver, därefter mot en applikationsserver och sist ut på själva internet.
Från RAKwireless i Kina beställde jag en RAK2245 som man sätter fast på en Raspberry 3/4 via 40pin headern.


Svarta svansen är 868 MHz antennen, fyrkantiga klumpen är GPS-antenn.
Denna agerar gateway, nätverksserver och applikationsserver. Kör en egen variant av Rasbian.
Därefter står valet mellan två mjukvaru lösningar: Chirpstack, opensource som körs lokalt eller the Things Network (TTN), även den opensource men en communitylösning i molnet. Idag finns +17000 gateways tillgängliga, dock ingen där jag bor. (Kolla kartan!) Isåfall hade jag kunnat spara 1500pix…
Jag valde den första. Men hur kul är det med EN radioapparat???
På interwebben införskaffade jag mig min första Arduino:
feather_3078_iso_ORIG
Adafruit Feather 32u4 LoRa Radio 8Mhz 2K RAM, drivs via USB eller batteri.
Till denna en Adafruit Power Relay FeatherWing:
feather_3191-06
Denna monterade jag ovanpå med hjälp av stift på en breadboard. Inte mycket dokumentation, men snodde kod från höger och vänster utan att göra några direkta framsteg. C är… ja låt oss säga ett intressant språk att koda i.

LoRaWAN skiljer sig från Lora genom att det är ett nätverk, med autentisering.
Två varianter finns: ABP: Aktivering från fabrik (Activation by personalisation) och OTAA: Aktivering över luften (Over-the-air activation).
Jag valde ABP där man förprogrammerar varje enhet med nycklar.

Till Arduinon nyttjade jag LMIC library, och fick den att sända på 415Mhz, den amerikanska frekvensen. Till sist fann jag ../Arduino/libraries/MCCI_LoRaWAN_LMIC_library/project_config/lmic_project_config.h som tydligen innehöll en intressant rad: //#define CFG_eu868 1
Bort med kommentaren på den alltså!
Den tisdagskvällen hördes en djuriskt vrål från kontoret. Jag hade lyckats tända en lysdiod. Blink blink. Gick ut i garaget och provkörde, japp 100m in i ett stängt garage fungerade.

(Notera den ledsna Classe-timern. Fria sladden är 8,2cm antenn.)
Men styrning av reläet fick jag inte till, kunde inte hitta någon online som satt ihop en 32u4 Lora med Relä-Wing från Adafruit. Flera sena kvällar senare började jag ana vad som var fel, lösa stift är allt annat än kontakt. Fram med lödkolven och vips, allt fungerade.

“Kopplingsschema”

Prototyp 1, väderskyddad och batteridriven. Visade sig vara en dålig ide, då batteriet inte kände av den lilla förbrukaren på 0.3mA.

Chirpstack spottar ur sig MQTT-meddelanden så det är enkelt att “lyssna” på aktiviteten:
mosquitto_sub -h 192.168.0.19 -v -t "gateway/#"


Uppe till höger en USB-laddare.

Färdig lösning.

Chirpstack skapar API-nycklar, och med anropet:

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Grpc-Metadata-Authorization: Bearer galet_lång_API_nyckel' -d '{ "deviceQueueItem": {"confirmed": true, "data": "'b24u'", "fPort": 10 } }' 'http://192.168.0.19:8080/api/devices/c55f2c9b34245e42/queue'

så får jag kommunicerat tre bytes(!) till mottagaren: “on.” Hex-kodat blir det 6F6E2E och det vill överföras Base64-kodat i Chirpstack, och då får man b24u.
“off” blir 6F66666/b2Zm.
Mottagaren loopar konstant och kodar av mottagna meddelanden, är andra byten 6E så slår reläet till och är det 66 så stänger den av.

./lw32.sh on | off

Min underbara fru ser inte nyttan med att styra motorvärmaren från terminalen, så det fick bli HOOBS, en vidareutveckling av Homebridge.
Pluginet Script2 nyttjades med följande:
{ "accessory": "Script2", "name": "Motorvärmare", "on": "/hoobs/lw32on.sh", "off": "/hoobs/lw32off.sh", "unique_serial": "1234567" }
Här fick jag köra wget då jag inte orkade lägga in curl i HOOBS…

In i Hem-appen på mobilen, lägg till tillbehör och scanna koden.
Lägg till “tillbehöret”, ändra Visa som till Reglage.

-Hey Siri, sätt på motorvärmare.

Att göra:

  • Skapa ett anrop som efterfrågar aktuell status
  • Skapa en automation i HOOBS som startar värmaren om det finns en kalenderevent, och baserat på lokal temperatur dra igång i X antal minuter
    *Nästa projekt blir en temperatursensor för jaquzzin

Pris: ~2500kr, där själva basstationen går loss på 1500kr. Idag ligger antennen inomhus och når några hundra meter, med rätt antenn har jag ett nätverk som sträcker sig ett par mil. Helt klart oekonomiskt - elen i garaget står inte jag för… men billigare än att golfa :wink:

8 gillningar

Kan man, så ska man!

Fantastiskt kul att läsa! Vilket projekt, och som Erik skriver kan man så kan man!

Bra jobbat och kul att du dokumenterar för oss andra som inte kan :grin:

Wow! Tack för detta!

Snyggt löst! :smiley:

När det kommer till Script2-pluginen så har jag använt den länge till massor av olika saker, väldigt användbar :slight_smile:

LoRaWAN var relativt populärt för fjärravläsning av både el och fjärrvärme för några år sedan. Några av våra kunder använder det i liten skala, men det verkar funka bra. Nuförtiden är det dock “narrow band IoT” som gäller. Dock måste man blanda in en korkad ISP då, vilket man slipper med LoRa då man kan sätta upp infrastrukturen själv om det nu inte finns någon.

:star_struck: wow! Det här var kul läsning!

Ok, NB-IoT har jag helt missat. Var köper jag prylarna? :wink: Just det ja, SIM-kort och sånt. Borde man inte kunna lösa det med e-SIM?

För transparensen så läser jag en KY utbildning, Internet of Things Developer, och de företag jag mött därigenom har i många fall nyttjat LoRaWAN. Sen har jag förstått att det byggts rikstäckande nät, även om det inte talas så högt om det, Om oss - StadshubbsAlliansen
Tolkade det som att LoRaWAN var på uppgång, svårt att få kläm på.
LoRa(WAN) har brister, endast en chiptillverkare, dyr basstation, säkerheten… Haystack/DASH7 verkar lösa allt detta? Verkar vara en toppenlösning med en person som gör allt? (Patrick Burns) Sen har vi SigFox, stora i Europa men i startgroparna(?) i Sverige.

Överföringsmediet för IoT är i startfasen, vore riktigt intressant att spå 5-10 år i framtiden för att veta vilken “häst” man skall satsa på.

Intressant vad tror du om Helium?

Oj… som jag fattar det så ska man tjäna kryptovaluta varje gång en enhet nyttjar din bassation. Är LoRaWAN med alla dess brister, så Helium tillför inget för själva funktionen, endast ett incitament för att få folk att drifta basstationer.

Själv anser jag att den mer altruistiska vägen med The Things Network är rätt sätt att bygga nätverk. Ej insatt i Heliumkryptot, men i regel är de volatila, dåliga för miljön och gynnar kriminalitet.