Archiv der Kategorie: Unterwegs

LoRa APRS Tracker auf ESP32 Basis

In meinem Blog habe ich häufig Raspberry-basierte Lösungen und Anwendungen beschrieben. In letzter Zeit (in den letzten 1-2 Jahren) entstehen in der Community aber immer mehr Lösungen auf Basis von ESP8266 bzw. dem quasi-Nachfolger ESP32, also basierend auf einem “Mikroprozessor” und nicht einem vollständigen Linux-System, wie es beim Raspberry der Fall ist. Das finde ich sehr toll, weil damit die Pflege des vollständigen Linux-Systems hinfällig wird und ich leider auch schon viele SD-Karten tauschen musste, die mit der Zeit kaputt geworden sind. Immerhin sind die Rapsberrys oft im Außenbereich den Temperaturschwankungen und Änderungen der Luftfeuchtigkeit des Wetters und der Jahreszeiten ausgesetzt.

ESP32 basierter APRS LoRa iGate von OE5BPA

Als Client, Node, Tracker, Endgerät – wie auch immer man es nennen möchte – ist der ESP8266 schon länger im Einsatz. Neu ist, dass nun mit dem ESP32 Prozessor ein leistungsstarker Kern verfügbar ist, der auch Anwendungen ermöglicht, die früher einen Raspberry oder ähnliche Geräte erfordert hätten. Immerhin hat der im Jahr 2016 vorgsetellte ESP32 beeindruckende Leistungsdaten (für einen stromsparenden Mikroprozessor): 160 bis 240 MHz auf einer Dual-Core-Plattform mit 520 KB SRAM. Eingebaut sind WLAN (802.11 b/g/n) mit Bluetooth und zahlreiche Schnittstellen, auszugsweise zB.: GPIOs, 12bit ADC und 8bit DAC, SPI, I²S, I²C, UART, Unterstützung für SD/eMMC, Ethernet, CAN 2.0 uvm. Das Datenblatt gibt dazu mehr Auskunft.

Nachdem in diesem Leistungsbereich jetzt neue Anwendungen ermöglich werden, freut es mich besonders, dass Initiativen wie LoRa APRS davon profitieren und handfeste Lösungen auch für den Gateway-Einsatz (als iGate) verfügbar sind, aktiv entwickelt und laufend verbessert werden.

OM Andi OE1ROT stellt auf seinem Blog einerseits einen Tracker mit TTGO T-Beam (433 MHz!) vor, als auch die nun verfügbaren Gateways auf ESP32 Basis. Ich möchte hier in meinem Blog nicht nochmal alles beschreiben, Andi hat das bereits sehr ausführlich getan, daher verlinke ich diesmal nur zu seinem Eintrag:
https://www.aronaut.at/2020/11/lora-aprs-gateway-mit-esp32-boards/

Die Projekte werden auf Github in diesem Bereich gehostet: https://github.com/lora-aprs
Die iGate Software wird von Peter OE5BPA hier aktuell angeboten:
https://github.com/lora-aprs/LoRa_APRS_iGate

Die TTGO T-Beams sind zB. hier bei Amazon erhältlich: TTGO T-Beam ESP32 mit LoRa für 433 MHz (ggf. OLED Display nicht vergessen)

Induktives Laden mit Qi

Samsung S7 hat induktiv voll geladen

Ich beziehe mich bewusst nicht nur auf Handys bzw. Smartphones, weil ich glaube, dass dieses induktive Laden viele andere Anwendungsmöglichkeiten bietet. Ich möchte ja auch den Akku eines tragbaren LoRaWAN-Sensors künftig induktiv laden, aber das ist ein anderes Thema…

Dass es die Möglichkeit gibt, Smartphones induktiv aufzuladen, ist mir schon länger bewusst. Ich habe aber auch gesehen, dass es mehrere Standards gibt, die nur eingeschränkt (wenn überhaupt) kompatibel erscheinen. Im letzten Urlaub habe ich einiges zu dem Thema gelesen und bin nun auf den Zug aufgesprungen und sehr begeistert.

Hauptgrund war, dass es nun einen von allen Herstellern anerkannten und kompatiblen Standard gibt und meine Bedenken hinsichtlich Gesundheitsproblemen durch permanente Strahlung zerstreut wurden.

Funktionsweise

Induktives Laden läuft: 53%. Ca. 1 h 22 min bis voll geladen

Wie funktioniert das induktive Laden? Im Prinzip werden eine Ladeschale (oder Halterung) benötigt, die mit einer Stromversorgung (meist USB) verbunden ist und ein Endgerät (Smartphone), das induktives Laden unterstützt. Sobald man das Smartphone auf die Ladeschale legt, beginnt das Handy zu laden.

Dabei bedient man sich einer Technologie, die von Transformatoren her längst bekannt und im Einsatz ist: eine Spule in der Ladeschale induziert ein Magnetfeld und dieses wird von einer Spule im Smartphone wieder in elektrischen Strom umgewandelt.

Spezifikation

Das Wort “Qi” bedeutet auf chinesisch “Lebensenergie” und ist vielleicht von Qi Gong her bekannt. Hier beschreibt der Name die proprietäre Technologie des Wireless Power Consortiums. Nachdem sich der konkurrierende Standard “Powermat” der “Power Matters Alliance” zurückgezogen hat, ist nun Qi der de-facto Industriestandard.

Die Übertragung findet im Bereich der Langwelle von 110 bis 205 kHz mit nominal 19 Volt statt. Es gibt mehrere Leistungsklassen von 5-15 Watt (Low Power) bis 120 Watt (Medium Power). Ich glaube, dass dadurch in naher Zukunft auch Anwendungen für andere Geräte mit höherem Energiebedarf ermöglicht werden. Die Übertragung funktioniert meist bei einem Abstand im Bereich einzelner Millimeter. Die Effizienz der Übertragung liegt je nach Gerät bei 60-90%, ist also immer verlustbehafteter im Vergleich zum Laden über Kabel.

Besonders gut hat mir gefallen, dass der Standard auch eine Datenübertragung zwischen den Geräten definiert. Diese ist mit 2 kbit/s spezifiziert und ermöglicht den Informationsaustausch zwischen den Qi-Komponenten. Damit ist nun auch klar, dass der Sendeteil (zB. die Ladeschale) nicht permanent ein starkes elektromagnetisches Feld erzeugt, sondern erst mit höherer Leistung beginnt, sobald ein kompatibles Endgerät erkannt wurde, die Datenverbindung hergestellt ist und die Geräte vereinbart haben, welche Ladung (zB. Leistung) durchgeführt wird.

Kann mein Smartphone Qi und was mache ich, wenn nicht?

Die einfachste Möglichkeit herauszufinden ob das eigene Smartphone Qi unterstützt ist wie üblich: ausprobieren, oder im Handbuch nachlesen. 😉

Samsung Smartphones sind beispielsweise seit dem Samsung S6 Qi-fähig und Apple-Geräte seit dem iPhone 7.

Es ist aber auch möglich, das eigene Smartphone nachzurüsten. Dazu gibt es recht günstig dünne induktive Ladeempfänger, die man zB. in der Schutzhülle des Handys verstecken kann. Diese Empfänger werden zB. per USB Micro (oder Typ C) an das Smartphone angeschlossen. Das Handy merkt eigentlich nicht, dass es induktiv geladen wird, sondern erkennt natürlich nur, dass es an einem “Ladekabel” hängt. Der USB-Port ist damit natürlich auch belegt – das sollte man beachten. Die Empfänger sind so dünn und oft so passgenau, dass sie zwar einerseits kaum sichtbar/spürbar sind, andererseits aber kaum Spielraum haben und man immer die Hülle herunternehmen muss, falls man den USB-Port anders nutzen möchte.

Ladeempfänger ist zu lang und verdeckt den Fingerprint Sensor teilweise

Außerdem empfehle ich sehr, nachzusehen ob der Ladeempfänger von der Form für das eigene Smartphone passt. Bei meinem ersten Kauf für mein Nexus 5X habe ich einen zu großen Empfänger gekauft, der verdeckt fast die Hälfte des Fingerprint-Scanners. Den verwende ich nicht, also stört es mich nicht, aber hätte ich besser aufgepasst, hätte ich was Passendes um’s gleiche Geld bekommen.

Ergebnisse im Test

Mittlerweile habe ich ein paar Ladeschalen und ein paar Qi-fähige Endgeräte getestet, sowie eine handvoll Handys nachgerüstet.

Es funktioniert alles einwandfrei. Man muss sich daran gewöhnen, dass die Ladezeiten länger werden, weil die meisten kostengünstigen Qi-Geräte 800mAh oder vielleicht 1000mAh schaffen. Damit brauchen moderne Handyakkus schon rein rechnerisch 4-5 Stunden für eine volle Ladung. Aufgrund des Verlusts in der Übertragung wird das nochmal erheblich mehr. Über Nacht ist das aber normalerweise kein Problem.

Ich erwähne die längere Ladezeit nur deswegen so explizit, weil ich das Gefühl habe, dass bei kabelgebundenen Lademöglichkeiten gerade die Erwartungen sehr hoch gesteckt werden, nämlich “mehrere zig”-Prozent in einzelnen Minuten laden zu können. Dort kommen auch Ströme von 4,6 Ampere zum Einsatz, die über den USB-Port in den Akku “gedrückt” werden. (Vgl. Qualcomm Quick Charge 3 oder 4+).

Eine berichtenswerte Erfahrung habe ich aber auch gemacht: ich habe mir eine Ladeschale ins Büro gelegt. Tagsüber bin ich öfters in Besprechungen und dann meist nur 20 Minuten kurz am Platz die neuen Emails durchschauen. Früher habe ich dabei nie oder selten das Handy angesteckt und aufgeladen. Heute lege ich es regelmäßig bei diesen kurzen Aufenthalten auf die Ladeschale. Und das führt dazu, dass ich tagsüber immer wieder nachlade und so an manchen Tagen eigentlich kaum noch unter 90% auf der Akkuanzeige komme…

Eine weitere Erkenntnis ist, dass man manche Smartphones relativ genau platzieren muss, damit das Laden funktioniert. Die Spulen müssen möglichst übereinander liegen. Ein Samsung S6 zum Beispiel funktioniert auf einem meiner getesteten Ladeschalen (es handelt sich um dieses Modell) nur, wenn ich es eher rechts platziere. Mittig funktioniert es nicht und links auch nicht. Andere Smartphones funktionieren mittig und rechts, aber links auch nicht. Daran habe ich mich aber recht schnell gewöhnt und lege die jeweiligen Geräte mittlerweile ohne viel Nachdenken richtig auf.

Folgende Geräte sind auf den Fotos in diesem Blog gezeigt:

Fazit

Ich liebe es! Einziger Wermutstropfen ist der Energieverlust bei der Übertragung. Das ist sehr schade und Verschwendung. Von der Zuverlässigkeit, Kompatibilität und Geschwindigkeit (für mich ausreichend) alles super!

Meldung eines Samsung S7

APRS über LoRa mit Dragino LoRa/GPS shield für 70cm-Band

In den letzten Monaten habe ich mich sehr viel mit LoRa und LoRaWAN beschäftigt. Bei den zahlreichen Treffen hat mir die Amateurfunk-Community erzählt, dass LoRa auch ein guter Ersatz für das FSK/AFSK basierte APRS sein könnte und an einer Implementierung arbeiten.

Das halte ich für eine tolle Idee! APRS hat mich – wie ihr an anderen Beiträgen meines Blogs erkennen könnt – schon immer sehr interessiert!

Es handelt sich also nur um den Ersatz der Modulation durch LoRa und nicht um eine vollwertige LoRaWAN-Implementierung, die ja auch das ganze Umfeld der Datenverarbeitung mit einschließen würde. Daher ist man auch hinsichtlich QRG (Frequenz) flexibel. Die Hardware für LoRa ist ja für 868 MHz, 433 MHz und 912 MHz erhältlich. Der Bereich um 912 MHz ist in der EU nicht frei nutzbar. Im “kommerziellen” Einsatz (LoRaWAN) ist 868 MHz die Wahl für Europa.

Funkamateure sind sowieso im Bereich um 433 MHz “zu Hause”, das ja für viele Anwendungen als 70cm-Band bekannt ist und dort seitens Amateurfunk als Primärdienst genutzt werden kann.

Damit ist für mich die Trennung der Anwendungen und Frequenzen auch schlüssig umsetzbar:

  • LoRaWAN nutzen wir (kommerziell) auf 868 MHz und
  • LoRa für APRS im 430-439 MHz Bereich als Amateurfunkdienst!

APRS Tracker

Das Ziel ist also, einen APRS-Tracker zB. für’s Auto mit LoRa-Modulation im70cm-Band zu schaffen. Die Daten sollen dann wie andere APRS-Anwendungen über zB. aprs.fi zur Verfügung stehen.

Auf der Webseite von DJ7OO (http://www.kh-gps.de/lora.htm) wird sehr viel zu dem Thema erklärt. Die Software basiert auf Codeteilen, die von Stuart Robinson (ua. auf dieser Website https://www.rcgroups.com/forums/showthread.php?2454546-Arduino-LoRa-Long-Range-Lost-Model-Tracker) veröffentlicht wurden. Bitte beachtet die Lizenz, die hier kommerzielle Nutzung auch von Codeteilen ohne ausdrücklicher Zustimmung von Stuart untersagt.

Die meisten OMs haben ihre Sender auf Basis von Arduino Pro Mini erstellt. Dazu benötigt man noch ein paar Kleinteile, ua. ein GPS-Modul und den RFM98W LoRa-Chip.  Ich gestehe, das Löten vermeide ich, wenn es leicht möglich ist – daher habe ich nach einer andere Hardware-Lösung gesucht.

ohne löten: Dragino LoRa/GPS shield

Mit den LoRa/GPS-Shields von Dragino habe ich ja bereits in anderen Projekten gute Erfolge erzielt. Diese Shields sind natürlich auch für 433 MHz erhältlich. Ich kaufe übrigens meistens über Tindie. Es funktioniert zuverlässig, die Lieferung dauert ca. 3 Wochen:
https://www.tindie.com/products/edwin/loragps-shield-for-arduino/

Das Tolle ist, dass man dazu nur noch einen Arduino Uno benötigt, zusammensteckt und für viele Anwendungen eine fertige Lösung hat!

Als Basis für meinen Code habe ich die Version von Sascha (iot4pi.com) und Karl OE1KEB gewählt, die für den Arduino Pro Mini geschrieben ist:
https://github.com/IoT4pi/LoRa-APRS-Sender
(Den Link zu meinem Fork für’s Dragino LoRa/GPS findet ihr  unten.)

Die Software benutzt SoftSerial, um auf die GPS-Daten zuzugreifen. Dazu benötigt man zwei Jumper Wire Kabel (M-F). Am Dragino LoRa/GPS Shield werden die Jumper bei TX_GPS und RX_GPS entfernt und mit den digitalen Eingängen 3 und 4 verbunden werden.

Bitte beachtet, dass nur lizenzierte Funkamateure diesen Funkdienst benutzen dürfen, es wird auch ein Funkrufzeichen (Call) benötigt, das eingestellt werden muss!

Die von mir für das Dragino LoRa/GPS Shield abgeänderte Software findet ihr hier:

https://github.com/schulti/LoRa-APRS-Sender

Bitte ändert euren Call und ggf. die SSID (“-12”)  in dieser Variable:

String Tcall="OE1SCS-12"; //your Call Sign

Die Software muss nun nur noch auf den Arduino raufgeladen werden und schon kann man testen. Der erste GPS-Fix dauert leider ein bißerl – da muss man etwas Geduld haben. An einer blinkenden LED sieht man, dass ein GPS-Fix vorhanden ist.

Ein Blick auf die Webseite https://aprs.fi hat den Tracker sofort gezeigt:

Auch die Rohdaten sehen vernünftig aus. Meine Pakete wurden von OE1XBR-10 empfangen:

Nun bin ich also zusätzlich zur 2m APRS Antenne über 70cm LoRa APRS unterwegs. Zusätzlich habe ich einen GPS Mapper für LoRaWAN (868 MHz):

Für’s Autodach habe ich eine Magnetfußantenne für 433 MHz und einen aktiven GPS-Empfänger bestellt. Das Shield hat eine GPS-Antenne eingebaut. Es schaltet von selbst um, sobald es erkennt, dass eine externe Antenne angesteckt wird.

Damit lassen sich ganz einfach Vergleichsfahrten zwischen den Technologien durchführen, zB: unten links LoRa-APRS-70cm mit APRS-2m im Vergleich (Argent Data OpenTracker+):

Einkaufsliste für den LoRa/GPS APRS Tracker

Die Bauteile sind um gesamt € 42,- erhältlich, um weitere €  15,- gibt’s die Antennen für’s Autodach dazu:

Optional:

LoRa Single Channel Gateway

Mit Freunden baue ich einen Multi-Channel-Gateway, der auf sämtlichen LoRa-Kanälen empfangen und senden kann – und das mit allen SF (Spreading Factors). So ein Gateway kostet knapp 400 Euro in Summe – das ist mir zum Spielen für zu Hause zu teuer.

Nachtrag Juli 2017: wir haben mit dem Aufbau einer Community bei The Things Network in Wien begonnen. Das Ziel ist die Schaffung eines freien und offenen Netzes für IoT. Nachdem ich mehrfach auf meinen Blog hin angeschrieben wurde, es den Personen aber nicht bewusst war, dass sich hier was tut, möchte ich auf folgende Links verweisen: folgt uns auf Twitter (@TTN_Vienna), für Updates und Infos zu den nächsten Treffen oder besucht die Wiener Community Seite!

Single Channel Gateway = günstig

Die günstige Variante, die streng genommen nicht LoRaWAN-kompatibel ist, weil sie nur eine Frequenz und einen Spreading Factor unterstützt, ist ein Single Channel Gateway. Dieses hört auf einen vordefinierten (aber konfigurierbaren) Kanal mit einem vordefinierten Spreading Factor (auch konfigurierbar) und sendet die Daten an The Things Network.

Als Basis nehme ich einen Raspberry Pi 2, der aktuell eh auf eine Aufgabe wartet. Das LoRa & GPS HAT von Dragino nutze ich für die LoRa-Übertragungen. Das HAT habe ich um € 29,- bei Tindie erstanden. In Summe bin ich bei Kosten von weniger als € 65,-.

Einsatzgebiet

Wie beschrieben ist ein Single Channel Gateway kein vollständig LoRaWAN-kompatibler Gateway. Er hört nur auf eine Frequenz (Kanal) und versteht nur einen SF. Nachdem meine Sensoren abwechselnd auf drei Frequenzen senden, stelle ich den Single Channel Gateway auf eine Frequenz ein – und ich stelle mich darauf ein, nur jedes dritte Paket zu empfangen. (Da bei LoRa ja ein Counter mitläuft, kann ich das leicht nachprüfen.)

Falls ich einmal einen Sensor permanent installieren möchte, würde ich ihn fix auf die eine Frequenz stellen, die der Gateway (oder mehrere?) auch nutzt. Damit wäre ein kleines LoRa-Netzwerk möglich, das aber nur auf einer Frequenz funktioniert.

Installation

Es ist ganz einfach:

  1. aktuelle Raspian-Version installieren und Raspberry vorbereiten (resize disk, SSH-Zugriff für Fernzugriff aktivieren, Passwort und IP-Einstellungen ändern)
  2. alles aktualisieren und wiring-pi installieren:
apt-get update && apt-get dist-upgrade
apt-get install wiringpi

3. in raspi-config das SPI Interface aktivieren & rebooten

4. die Single Channel Gateway Software von Github laden und installieren:

wget https://github.com/tftelkamp/single_chan_pkt_fwd/archive/master.zip
unzip master.zip

und ein paar Parameter in der main.cpp konfigurieren:

// SX1272 - Raspberry connections
int ssPin = 6;
int dio0  = 7;
int RST   = 0;

// Set spreading factor (SF7 - SF12)
sf_t sf = SF7;

// Set center frequency
uint32_t  freq = 868100000; // in Mhz! (868.1)

// Set location
float lat=48.0;
float lon=16.0;
int   alt=200;

/* Informal status fields */
static char platform[24] = "Single Channel Gateway"; /* platform definition */
static char email[40] = "meine@email.at"; /* used for contact email */
static char description[64] = "Dragino LoRa GPS HAT Raspberry 2"; /* used for free form description */

// define servers
#define SERVER1 "52.169.76.203" // The Things Network: router.eu.thethings.network #define PORT 1700 // The port on which to send data

Danach mit “make” builden:

make

Und schon kann ich den Gateway starten:

./single_chan_pkt_fwd

Einrichten bei The Things Network

Nun erstelle ich den Gateway in der TTN Console:

  • Register Gateway
  • dann wähle ich “I’m using the legacy packet forwarder”. Somit kann ich die Gateway EUI eingeben, die mir beim Start meines Single Channel Gateways angezeigt wurde.
  • die Description kann frei gewählt werden
  • der Frequency Plan ist Europe in meinem Fall und der
  • Router EU. Das ist auch die IP-Adresse, die wir oben in der main.cpp definiert haben. (Details siehe hier: https://www.thethingsnetwork.org/wiki/Backend/Connect/Gateway)
  • mehr muss man nicht tun (natürlich ist es schön, die GPS-Position und Höhe einzugeben)

Das war’s! Bei “Data” kann ich zusehen, wie die Daten ankommen, und binnen kurzer Zeit bestätigt sich die Vermutung, dass ich jeden dritten Counter sehen werde:

Stückliste zum Nachbauen

  1. Raspberry Pi (2 oder 3)
  2. Dragino LoRa GPS HAT, alternativ hier beim Hersteller mit längerer Lieferzeit zu erstehen: https://www.tindie.com/products/edwin/loragps-hat/
  3. ev. eine coole Antenne? (nicht unbedingt nötig, es ist eine beim LoRA GPS HAT dabei)

LoRa Reichweite mit TTNmapper abschätzen

Nachdem wir jetzt auch einen Gateway fertig haben (ich werde in einem eigenen Beitrag berichten) und mehrere Sensoren funktionieren, wäre es doch mal interessant, die Reichweite der Signale kennenzulernen.

Grundsätzlich senden meine Sensoren bisher nur Messdaten, im Moment aber noch eher statische kurze Textmitteilungen. Was mir fehlt sind die GPS-Positionsdaten, damit ich feststellen kann, von welcher Position mit welcher Signalstärke Pakete empfangen wurden (RSSI).

Nachtrag Juli 2017: wir haben mit dem Aufbau einer Community bei The Things Network in Wien begonnen. Das Ziel ist die Schaffung eines freien und offenen Netzes für IoT. Nachdem ich mehrfach auf meinen Blog hin angeschrieben wurde, es den Personen aber nicht bewusst war, dass sich hier was tut, möchte ich auf folgende Links verweisen: folgt uns auf Twitter (@TTN_Vienna), für Updates und Infos zu den nächsten Treffen oder besucht die Wiener Community Seite!

Bevor ich mich damit beschäftige, mit dem LoRa/GPS Shield auch die GPS-Daten mitzusenden, möchte ich mit ttnmapper.org mal die GPS-Daten dazuschummeln. TTNmapper hat einen super Ansatz dafür gewählt: in der Annahme, dass ich mein Smartphone (Android) und meinen Sensor bei mir habe (mit mir herumtrage oder in meinem Fall beides mit dem selben Auto unterwegs ist), ergänzt TTNmapper mit einer eigenen App einfach die GPS-Position vom Smartphone. Clever!

Funktionsweise

Klarerweise muss ich auf meinem Android Smartphone die App aus dem Play Store installieren. Danach melde ich mich in der App mit meinen Login-Daten bei The Things Network an und wähle aus meinen Applikationen und Devices den Sensor aus, mit dem ich aktuell messen möchte. (Falls jemand seine Logindaten nicht bekanntgeben möchte, kann man auch direkt die Zugangsdaten für den MQTT-Zugang des Device eingeben, das ist natürlich viel umständlicher, aber man muss die Zugangsdaten nicht eingeben).

Ab sofort höre ich jedesmal, wenn ein Paket angekommen ist (die App erfährt das über MQTT wirklich sofort) einen Ton.

Also habe ich eine kleine Magnetfußantenne für 868 MHz neben meine APRS-Antenne auf’s Auto montiert und die App bei meiner heutigen Ausfahrt mitlaufen lassen. Die Stromversorgung über 12V Anschluss auf einen Verteiler mit USB-Hub war zum Glück für Amateurfunkzwecke schon vorhanden und musste ich nur mehr dazustecken.

Es hat super funktioniert! Beim Starten des Motors ist sofort das erste Klingeln am Smartphone hörbar gewesen.

Nach einer kurzen Ausfahrt hat sich folgendes Bild ergeben:

An die Farbgebung muss man sich noch gewöhnen, zum Glück ist eine Legende dabei. Die besten Signalstärken sind rot, die schlechtesten grün und türkis/blau.

Erfreulicher Weise hat mich auch der Gateway von Peter im 2. Bezirk ein paar Mal empfangen.

Zum Vergleich: links die heutige Route über APRS protokolliert und rechts die Punkte, an denen LoRa-Pakete angekommen sind:

LoRa Sensor mittels Arduino und LoRa Shield

Über einen Freund bin ich vor ein paar Wochen auf das Thema LoRa bzw. LoRaWAN aufmerksam geworden.

Vor allem seit ich The Things Network (https://www.thethingsnetwork.org) kenne und somit über die Community eine Möglichkeit besteht, die Technologie sinnvoll zu nutzen, bin ich interessiert mich damit mehr zu beschäftigen.

Nachtrag Juli 2017: wir haben mit dem Aufbau einer Community bei The Things Network in Wien begonnen. Das Ziel ist die Schaffung eines freien und offenen Netzes für IoT. Nachdem ich mehrfach auf meinen Blog hin angeschrieben wurde, es den Personen aber nicht bewusst war, dass sich hier was tut, möchte ich auf folgende Links verweisen: folgt uns auf Twitter (@TTN_Vienna), für Updates und Infos zu den nächsten Treffen oder besucht die Wiener Community Seite!

Ein LoRa Sensor ist ein Endgerät, das über das LoRa-Protokoll in ein Netzwerk Informationen funkt. Empfangen werden die Pakete üblicherweise von einem Gateway. Bis zur Auswertung der Pakete sind noch Network Server und Application Server nötig, die in meinem Fall über TTN (The Things Network) bereitgestellt werden.

Da ich auch mit Freunden einen Gateway bauen möchte, brauchen wir natürlich einen LoRa Sensor, um unseren Gateway zu testen. Als günstige Variante habe ich Arduino + LoRa Shield für Arduino gefunden.

Nachtrag Juli 2017: wir haben mit dem Aufbau einer Community bei The Things Network in Wien begonnen. Das Ziel ist die Schaffung eines freien und offenen Netzes für IoT. Nachdem ich mehrfach auf meinen Blog hin angeschrieben wurde, es den Personen aber nicht bewusst war, dass sich hier was tut, möchte ich auf folgende Links verweisen: folgt und auf Twitter (@TTN_Vienna) für Updates und Infos zu den nächsten Treffen oder besucht die Wiener Community Seite!

Zutaten

Falls jemand entspannt an das Projekt herangeht und mit 5-6 Wochen Lieferzeit aus Shenzhen (China) kein Problem hat, gibt es das LoRa Shield auch kostengünstiger (€ 18,70 am 1.4.2017) über Tindie zu kaufen. Hier beachtet bitte, dass Shipping (+ € 6,12 nach Österreich) und ggf. Zoll dazukommen.

Bitte beachtet bei Bestellungen immer, dass ihr die 868 MHz-Variante auswählt! Nur diese darf in der EU betrieben werden bzw. wird hier funktionieren!

Von der Vorgehensweise halte ich mich an diese Anleitungen:

  1. ein tolles Youtube-Video, das genau den hier beschriebenen Aufbau erklärt: LoRa Node with Arduino and Dragino Shield connected to TTN LoRaWAN von Andreas Spiess
  2. Software (Arduino Sketch) “Hello World” von https://github.com/SensorsIot/LoRa
  3. LMIC library von IBM, angepasst für Arduino: wird vom Arduino Sketch benötigt

Vielen Dank an die Kollegen von TTN Zürich, die diese Anleitungen und Programme zur Verfügung stellen!

Zusammenbau

Das LoRa Shield muss nun nur mehr auf den Arduino gesteckt werden. Die Antenne wird an den SMA-Anschluss geschraubt.

Konfiguration

Nun lädt man den Arduino Sketch (“Hello World”, siehe Link oben) ins Arduino IDE und muss ein paar Werte anpassen. Dazu erstellt man eine “Application” in der Console von TTN und legt ein Gerät (“Device”) an. Eine Over-The-Air-Activation (OTAA) ist nicht möglich, daher muss man manuell ABP wählen und die Werte vom Webinterface abschreiben. Diese werden von TTN automatisch generiert.

  1. NWKSKEY: der Network Session Key muss im korrekten Format in die geschwungenden Klammern { } eingefügt werden.
  2. APPSKEY: ebenso der Application Session Key und zum Schluss die
  3. DEVADDR, also die Geräteadresse im korrekten Format.

TTN bietet im Webinterface übrigens die Werte bereits im richtigen Format an. Im Zweifelsfall muss man auf “< >” klicken, dann werden die Werte in anderen Formaten dargestellt und können mit copy & paste übernommen werden. Das gewünschte Format ist “msb”.

Ansonsten musste ich keine weiteren Änderungen am Code durchführen.

Trotzdem habe ich den zu übertragenden Text von “HI” auf “stefan test” geändert: dazu habe ich die Payload in der Variable “message[]” in Zeile 57 angepasst:

  // Payload to send (uplink)
  static uint8_t message[] = "stefan test";

Nun habe ich den Sketch kompiliert und auf den Arduino übertragen. Unmittelbar darauf hat er begonnen, alle 20 Sekunden kurz zu blinken, wodurch ich mich bestätigt gefühlt habe, dass es funktioniert und nun alle 20 Sekunden die Meldung “stefan test” mittels LoRa übertragen wird.

Überprüfen am Gateway

Einen Gateway hatten wir parat und er hat sofort die Pakete empfangen. Über die “Traffic” Funktion in der TTN Console kann man die ankommenden Pakete gleich sehen.

Man sieht hier mehrere Pakete, die im Abstand von ca. 25 Sekunden ankommen. Die Frequenz wechselt bei jedem Paket, weil mehrere Kanäle genutzt werden: 868,1 – 868,5 – 868,3 usw.

Folgendes JSON Objekt mit allen Details erhält man aus der TTN Console beim Gateway Traffic:

{
  "gw_id": "eui-b827ebfffe6f377d",
  "payload": "QI4cASaAaAABhVJosx+GBwUwHBqp4DGG",
  "f_cnt": 104,
  "lora": {
    "spreading_factor": 9,
    "bandwidth": 125,
    "air_time": 205824000
  },
  "coding_rate": "4/5",
  "timestamp": "2017-03-29T05:57:06.352Z",
  "rssi": -25,
  "snr": 11.2,
  "dev_addr": "26011C8E",
  "frequency": 868100000
}

Es enthält sämtliche Details zur Übertragung. Ein paar Werte möchte ich kurz hervorheben:

  • gw_id: zeigt die ID des Gateways, der das Paket empfangen hat
  • payload: sind die übertragenen Daten in verschlüsselter Form
  • f_cnt: ist der Counter und gibt die Anzahl der Pakete wider
  • lora.spreading_factor: zeigt hier den Spreading Factor 9, der im Sketch eingestellt ist
  • rssi: zeigt die Signalstärke des empfangenen Pakets am Gateway an (hier: -25 dbm)
  • snr: das Signal/Rausch-Verhältnis
  • dev_addr: die Geräteadresse, die von TTN vergeben wurde und ich als DEVADDR im Sketch hinterlegt habe.
  • frequency gibt die Frequenz in Hertz an

Wir sehen, dass das Paket einwandfrei übertragen wurde und sogar sehr gut (-25 dbm) empfangen wurde. Bei diesem Test war der Abstand vom Sensor zum Gateway aber auch im Bereich von 5 Metern.

Optimierungen

Als Spreading Factor ist 9 eingestellt. Um die Reichweite zu erhöhen, kann man auch zB. SF12 einstellen. Das geht im Arduino Sketch auf Zeile 90:

  // Set data rate and transmit power for uplink (note: txpow seems to be ignored by the library)
  LMIC_setDrTxpow(DR_SF9, 14);

Falls man die Pakete weniger oft übertragen möchte (alle 20 Sekunden ist zum Testen super, aber dauerhaft verbraucht es zu viel Airtime), kann das in Zeile 39 anpassen:

// Schedule TX every this many seconds (might become longer due to duty
// cycle limitations).
const unsigned TX_INTERVAL = 20;

WLAN Hotspots: automatisch mittels App einloggen

Ich habe diese App seit Monaten gesucht! Für mein Privathandy habe ich nämlich einen Wertkartenvertrag ohne mobile Datennutzung. Damit bin ich nicht nur im Ausland auf Hotspots angewiesen.

WIFin heißt das Ding. Es ist gratis und hier im Google Play Store zu finden.

Update 3.9.2016: die App heißt nun Neer WiFi, ist aber weiterhin unter dem oben genannten Link zu erhalten.

Screenshot_20160829-174937Screenshot_20160829-174946Die App erkennt WLANs, bei denen vor Akivierung des Internetzugangs noch Nutzungsbedingungen akzeptiert werden müssen. Gängige Captive Portal-Lösungen erkennt die App automatisch und versucht sie freizuschalten – aber erst sobald man das möchte. In Zukunft führt die App die nötigen Schritte dann von selbst für die der App bekannten SSIDs aus.

Es ist schon super, wenn man mit der Schnellbahn fährt und alle 2-3 Stationen synct das Handy mit dem Gratis WLAN am Bahnsteig… Das Ganze funktioniert so flott, dass man quasi mit dem Einfahren in die Station auch schon surfen könnte.

Konfigurieren eines Hotspots

Wenn ein WLAN genutzt wird, das die App noch nicht kennt, zeigt sie dies an.

Screenshot_20160829-174959Indem man auf diese Meldung tippt wird für das aktuelle WLAN eine Konfiguration angelegt. Im ersten Feld fragt die App, ob eine spezielle URL aufgerufen werden soll. Im Zweifelsfall drückt man einfach auf “continue” und lässt das Feld leer.

Screenshot_20160829-175004Die App analysiert nun im Hintergrund die “Landing Page”, wie die Seite auch genannt wird, auf denen die Nutzungsbedingungen präsentiert werden. Meist ist diese Seite mit einem Button zu bestätigen und manchmal ist auch ein Hakerl zu setzen, um seine Zustimmung zu den Bedingungen zu bestätigen. Die App führt ggf. beide Aktionen aus bestätigt dies mit einer Meldung: “We’re done doing the Math, the rest is history!”. Mit dieser Siegesmeldung bestätigt die App, dass der Internetzugang freigeschaltet ist.

Screenshot_20160829-175018In Zukunft erscheint eine Meldung sobald man sich wieder mit dem WLAN verbindet. Unmittelbar darauf bestätigt die App selbstständig die Nutzungsbedingungen und man ist online.

Im Hauptmenü kann man die SSIDs, zu denen es Konfigurationen gibt, anzeigen und ggf. die Profile/Konfigurationen wieder löschen.

Eine Status-Seite gibt Auskunft zu grundlegenden Parametern der Internet-Verbindung.

Beta Programm

Es gibt ein Beta-Programm, zu dem man sich über’s entsprechende Menü anmelden kann. In der Beta-App habe ich bisher keine Unterschiede festgestellt.

Gleiche SSID aber anderes Captive Portal schlägt fehl

Es gibt Hotspot-Anbieter, die auf verschiedenen Standorten unterschiedliche Captive Portal-Produkte einsetzen, die mit unterschiedlicher Methode funktionieren. Damit hat die App Probleme. Sie erlernt die Methode, die bei der ersten Verbindung erkannt wurde, und versucht auf diesem Weg bei allen gleichnamigen zukünftigen Hotspots vorzugehen. An Standorten, die ein bißerl anders funktionieren, ist sie manchmal erfolglos.

Rechtlicher Gedanke

Die Nutzungsbedingungen haben einen Zweck: der Benutzer soll informiert werden und aufgefordert worden, nichts Unrechtes über dieses Netzwerk zu tätigen; gleichzeitig hält sich der Betreiber in mehrfacher Hinsicht schadlos. Durch das automatisierte Akzeptieren der Nutzungsbedingungen hat man diesen Bedingungen vielleicht nicht rechtsgültig zugestimmt? Selbst wenn man beim ersten “Anlernen” der Landing Page in der App die Bedingungen gelesen hat, wird man Änderungen ebendieser vermutlich nicht erkennen können. Ich empfehle also, an Standorten, die man besucht, immer wieder bewusst die Nutzungsbedingungen zu reviewen. Welche SSIDs das sind, zeigt die App ja an…

Sichere SMS?

Ich werde oft gefragt, ob ich WhatsApp verwende. Das tu ich nicht, vor allem aus der Überlegung, dass WhatsApp ursprünglich keine zuverlässige Verschlüsselung bzw. Sicherheit geboten hat.

Mittlerweile hat sich die Situation geändert: WhatsApp wurde von Facebook übernommen und WhatsApp bietet nun Verschlüsselung an. Ein Umstieg ist für mich trotzdem kein Thema.

Bitte beachtet, dass ich in diesem Artikel meine persönliche Wahl beschreibe, die ich gerne als Empfehlung weitergebe. Ich habe damit schließlich gute Erfahrungen gemacht. Es gibt in diesem Themenkreis  auch andere Produkte und Lösungen, die eine Berechtigung haben. Ich möchte mit diesem Artikel keine Übersicht über die verfügbaren Lösungen schaffen, sondern meine konkrete Auswahl erklären und begründen.

Was sind also die Alternativen, für die ich mich entschieden habe?

Ich sehe zwei Lösungen die ich hier im Dunstkreis von Instant Messaging, SMS & text messages, Austausch von Video-, Foto-, Dokument-, Standortinformationen oder Kontaktdaten erwähnen würde.

Threema

Als viele User begonnen haben WhatsApp zu nutzen, war mir – wie oben erwähnt – die Verschlüsselung zu unsicher oder hat überhaupt gefehlt, wodurch ich auf Threema als Alternative aufmerksam wurde.

Threema umfasst die für mich wichtigen Funktionen und Eigenschaften. Es wurde einem Schweizer Unternehmen geschaffen, das von Anfang an auf Ende-zu-Ende-Verschlüsselung nach Industriestandards Wert gelegt hat. Eine genaue Beschreibung der Vorteile findet man naturgemäß auf der Webseite von Threema: https://threema.ch/de/

Signal / SecureText

SecureText konkurriert nicht automatisch mit WhatsApp oder Threema. Es ist eigentlich ein Ersatz für die SMS App am lokalen Smartphone. Eingehende SMS-Nachrichten können – entsprechende Konfiguration vorausgesetzt – von SecureText empfangen werden. Sie werden auch über SecureText beantwortet.

Der Clou dabei: wenn der/die Empfänger/in einer SMS auch SecureText installiert hat (das erkennt SecureText automatisch an der Handynummer), wird die Nachricht stark verschlüsselt über das Internet versendet und nicht als SMS. SecureText zeigt das über ein Symbol an (ein verschlossenes Schloss beim Sendeknopf weist auf eine sichere Übertragung über das Internet hin).

Was mir an SecureText gut gefällt ist, dass es ein schöner Ersatz für die Standard-SMS-App ist, keinen Zusatzaufwand produziert und dennoch

  1. Kosten spart (keine SMS-Kosten, wenn nicht nötig, sondern Versand über’s Internet – auch im Ausland interessant)
  2. im Hintergrund automatisch verschlüsselt – wenn es der/die Empfänger/in unterstützt.

SecureText wurde mittlerweile zu “Signal” umbenannt und ist unter diesem Namen in den App Stores kostenfrei zu finden.

Gibt es auch Nachteile?

Durchaus. Wobei das teilweise auch auf WhatsApp und andere zutrifft.

Kosten

Es wurde schon oft diskutiert: sichere Apps dürfen etwas kosten. Oder umgekehrt gedacht: woran verdienen die Unternehmen, die kostenlose Apps verteilen? Da liegt immer der Verdacht nahe, dass es die Inhalte der User sind, die den Wert darstellen und kommerziell genutzt werden.

Diejenigen, die wirklich so leiwand sind, dass sie gute Produkte kostenfrei zur Verfügung stellen, sind meistens auch so leiwand, dass sie den Source Code zur Verfügung stellen. Und das hat wirklich einen Mehrwert, weil man dann die Sicherheit nachvollziehen kann.

Threema kostet aktuell CHF 2,00 (oder 0,0048 BTC, BitCoins)  auf der Homepage oder € 2,49 im Google Play Store. Bei iOS löhnt man € 2,99 im Apple App Store.

SecureText (heißt jetzt: Signal) ist kostenlos erhältlich.

Proprietär

WhatsApp-Benutzer können nur mit WhatsApp-Benutzern Nachrichten austauschen. Threema-Benutzer können nur mit Threema-Benutzern Nachrichten austauschen. Das ist weitreichend durch die Technologie vorgegeben.

Es zahlt sich also aus, mal im Freundeskreis zu fragen, welche Apps genutzt werden und ob eine Änderung zu Threema denkbar wäre. Die Antwort muss man dann mit den eigenen Sicherheitsbedenken abzuwägen.

Im Zweifelsfall kann man ja mehrere Messaging Apps installieren. Das ist aber nicht mein Weg.

kein Internet = keine Nachrichten

Das ist mir im Fall von Threema unangenehm aufgefallen. Da kann aber Threema eigentlich nichts dafür. Aus Sicht der Nutzbarkeit möchte ich trotzdem darauf hinweisen:

  1. Mein Handy (eigentlich: Smartphone) ist oft tagelang über das Firmen-VPN verbunden. Aus dem Firmen-VPN kann aber leider weder Threema noch SecureText verschlüsselte Nachrichten ins Internet senden oder von dort empfangen. Die Sicherheitssysteme des Unternehmens unterbinden das.
    Die Nachrichten “hängen” also lange in meinem Handy rum, bis ich irgendwann zB. bei einem öffentlichen Hotspot mit direktem (ungefilterten) Internetzugang befinde. Und dann geht’s rund: plötzlich kommen zahlreiche Nachrichten  aus den letzten Stunden an und meine Nachrichten gehen erst jetzt raus.
    Wenn jemand mit dem Smartphone eh immer oder zumindest regelmäßig direkt mit dem Internet verbunden ist, hat er/sie das Problem aber wahrscheinlich nicht.
  2. Ich bin ja recht engagiert bei Internetprojekten tätig. Oft geht es darum, einen Internetzugang herzustellen (= den gibt es also noch nicht). Und wenn da ein Kollege am Dach ein Problem per Threema beschreibt, kann es sein, dass ich die Nachricht erst erhalte, sobald das Problem behoben ist und die Internetverbindung für uns beide wieder klappt. Das ist zwar auch eine Erkenntnis, war aber nicht hilfreich.
    In solchen Fällen ist eine klassische SMS immer noch gut. Man kann im SecureText das auch einstellen, dass man nun lieber eine SMS versenden möchte, als eine verschlüsselte Nachricht – auch wenn der/die Empfänger/in damit umgehen könnte.
  3. mir fallen da noch mehrere Beispiele ein: im fernen Ausland nutzt man üblicherweise keine permanente mobile Datenverbindung. Entsprechend kommen also auch dort die Nachrichten nicht sofort durch. SMS würden sofort ankommen und der Empfang auch keine – oder geringe? – Kosten verursachen.

Fazit: kein internet = keine Nachrichten. Das sollte einem bewusst sein.

Nachtrag / Update

Ich wurde von mehreren Seiten auf diesen Blogbeitrag angesprochen. Der wesentliche Input war, dass WhatsApp mittlerweile die Verschlüsselung von Signal übernommen hat. Im Gegenzug hat Google eine Alternative (“Allo”) gelauncht, die zweifelhafter Weise nur bei Nutzung des Inkognito-Modus verschlüsselt.

2. Nachtrag (August 2016)

Mittlerweile hat Whatsapp angekündigt, weitere Nutzungsdaten und auch die Telefonnummern der User an Facebook weiterzureichen, um damit genauere Profile zu ermöglichen. Widerstand scheint zwecklos, es gibt jedoch die Möglichkeit, die Reichweite der Nutzung dieser Daten einzuschränken – ganz lässt sich die Weitergabe nicht verhindern.

Ich freue mich, dass seit der Ankündigung von WhatsApp/Facebook viele meiner Kommunikationspartner und Freunde zu den in diesem Beitrage beschriebenen Systemen gewechselt sind, die ich auch nutze.

Linux: GoPro Videos für einfache Bearbeitung mit ffmpeg konvertieren

Ich habe mir vor ein paar Wochen eine GoPro Hero 4 Black Edition gekauft und natürlich muss ich seither bei jeder Gelegenheit filmen. Da ich zu Hause nur Linux-Systeme verwende, kann ich zur Verarbeitung der Videos nicht auf das GoPro-Studio zurückgreifen. Auch die von GoPro verwendeten Codecs machen die Sache nicht einfacher.

gopro-ffmpegEinen gute Strategie dafür habe ich auf Github von KonradIT gefunden: https://gist.github.com/KonradIT/ee685aee15ba1c3c44b4#file-convert-multiple-files-md

Ich musste das Script bei mir etwas abändern, damit es funktioniert, aber mit dem Ergebnis bin ich sehr zufrieden. Das Script konvertiert mittels ffmpeg alle .MP4-Dateien aus dem lokalen Verzeichnis in .mov-Dateien mit mpeg4, die von gängigen Programmen angezeigt oder weiterbearbeitet werden können.

Hier das angepasste Script:

for i in *.MP4;
  do name=`echo $i | cut -d'.' -f1`;
  echo $name;
  ffmpeg -i $i -sameq -strict experimental -vcodec mpeg4 $name.mov;
done

Nachtrag Juli 2020: ich habe obiges Script nun im Sommer 2020 probiert. Die Option “-sameq” wurde mittlerweile von ffmpeg entfernt. Ich habe es durch “-qscale 0” ersetzt. Für mich hat diese abgeänderte Version des Scripts gut funktioniert:

for i in *.MP4;
do name=`echo $i | cut -d'.' -f1`;
echo $name;
ffmpeg -i $i -qscale 0 -strict experimental -vcodec mpeg4 $name.mov;
done

Dieser Konvertierungsvorgang dauert zwar ziemlich lange – bei mir zirka die 6-7fache Spieldauer des Videos, aber es kann im Hintergrund laufen und beseitigt meine Probleme mit fast allen Programmen.

Mein Beispielvideo habe ich mit 2,7k Auflösung (2704×1520) und 50 fps erstellt. Es hat eine Länge von 40,58 Sekunden und ist 305 MB groß.
Der Konvertierungsvorgang hat 4 Minuten 35 Sekunden gedauert (Prozessor Quad Intel(R) Core(TM)2 Quad CPU Q6600  @ 2.40GHz). Die Ergebnisdatei (.mov-Datei) ist 210 MB groß.

Durch hinzufügen des Parameters “-threads 8” lassen sich mehrere Prozesse zur Konvertierung von ffmpeg nutzen, also mehrere CPU-Kerne, falls verfügbar. Auf meinem System reduziert sich die Dauer damit um ca. 20%-23%.

APRS Smartbeaconing bewährt sich bei mir nicht

AP510 mit SmartBeaconing, zu Fuß + mit Straßenbahn unterwegs
AP510 mit SmartBeaconing, zu Fuß + mit Straßenbahn unterwegs

SmartBeaconing ist eine gute Idee: statt per APRS seine Position alle x Sekunden auszusenden und damit das APRS-Netz unnötig zu belasten, wird die Position nur gesendet, sobald es das System “smart” findet: bei Richtungsänderungen, wesentlichen Geschwindigkeitsänderungen, etc.

Das entlastet das Netz hinsichtlich der Anzahl an Meldungen, die direkt oder über Digipeating übertragen werden und erhöht die Wahrscheinlichkeit für andere Benutzer, dass Airtime für deren Aussendung frei ist.

AP510 im Rucksack in der Straßenbahn (Antenne ist hier testweise eine Nagoya NA-771)
AP510 im Rucksack in der Straßenbahn (Antenne ist hier testweise eine Nagoya NA-771)

Ich habe überall SmartBeaconing verwendet. Schließlich bin ich großteils im Stadtgebiet von Wien und in der näheren Umgebung unterwegs und dort ist die Dichte an APRS-Empfängern & -Digipeatern sehr hoch.

AP510 APRS Tracker am Boot auf der Adria bei Kroatien im Juni 2015
AP510 APRS Tracker am Boot auf der Adria bei Kroatien im Juni 2015

Leider hat sich SmartBeaconing für mich nicht bewährt: obwohl ich mit 5 Watt über eine externe Magnetfußantenne (Nagoya UT-106UV) vom Autodach aus sende, werden nur 30-40% meiner Meldungen aufgenommen. Und das reicht nicht, um die Strecke annähernd korrekt abzubilden. Vor allem, wenn eine Richtungsänderung nur alle 1-2 Minuten passiert, hinterlasse ich nur alle 5 Minuten einen Punkt auf der Map bei dieser schlechten Erfolgsquote der Übertragung.

Ich habe daher SmartBeaconing deaktiviert und sende im Moment stur alle 30 Sekunden. Damit bekomme ich ausreichend Übertragungen zusammen, um die Route gut abzubilden. Gleichzeitig ist mir bewusst, dass dadurch das Netz stärker belastet wird. Da ich aber nicht viel mit dem Auto unterwegs bin, denke ich, dass es zumutbar ist

APRS Strecke mit Argent OpenTracker USB ohne SmartBeaconing
APRS Strecke mit Argent OpenTracker USB ohne SmartBeaconin