-
Notifications
You must be signed in to change notification settings - Fork 3
ITalk MCS 1608
TTN Ulm hat 5 iTalks zur Verfügung, die für verschiedene Projekte (z.B. die Abdeckungskarte) verwendet werden. Diese sind fest auf eine App konfiguriert. Wer ein Projekt mit den iTalks starten will, oder an der Abdeckungskarte teilhaben möchte, kontaktiert bitte @dermatthias (auch 'dermatthias' im Slack). Er fügt euch dann als Collaborator zur App hinzu, damit habt ihr Zugang zu den Sensordaten.
Uns sind aktuell keine Bezugsquellen bekannt, ausser direkt beim Hersteller.
https://www.mcs-nl.com/producten/italks-mcs-1608-full-lora-sensor/
Die Node wird komplett von aussen über Downlink Messages konfiguriert. Dazu schickt man am einfachsten via TTN Console die entsprechenden Bytes zum Device.
In der Doku (Download) findet man ab Seite 10 die entsprechenden Bytes, die downlink zur Node gesendet werden müssen, um die Optionen zu setzen.
Beispiel, GPS einschalten, in HEX ohne 0x:
01 17 01
Das erste 01
ist die command sequence
, die 17
die Nummer des Kommandos und die hintere 01
bedeutet "einschalten" (00
wäre ausschalten). Wichtig ist die command sequence
, da diese stimmen muss, damit das Kommando akzeptiert wird. Hierbei wird bei jedem Befehl die Sequenz um 1 hochgezählt. Wenn die Inkrementierung nicht passt, wird das Kommando verworfen.
Wenn man GPS Daten bekommen und damit die Node tracken will, sind diese beiden Kommandos zu senden:
01 0e 01 //enable tracker
01 0b 01 //enable motion detection
01 17 01 //enable gps while moving
Die iTalks sind nicht, wie man es von den Arduinos oder Raspberry Pis kennt, via USB flashbar oder via SSH konfigurierbar. Bisher wurden die iTalks nur über die Downlink Messages konfiguriert, was ausreichend war. Wer sich an die PINs auf der Platine traut, kann gerne im Verschwörhaus mal experimentieren (aber vorsichtig, die waren teuer :))
TODO: _Genauer auf die einzelnen Teile der Message Types eingehen. _
function Decoder(bytes, port) {
var lat, lng;
if (bytes[0] === 0 || bytes[0] == 1) {
lat = ((bytes[6] << 16) + (bytes[7] << 8) + bytes[8]) / 100000;
lng = ((bytes[9] << 16) + (bytes[10] << 8) + bytes[11]) / 100000;
} else {
lat = -1;
lng = -1;
}
var decoded = {
lat: lat,
lng: lng
};
return decoded;
}