Travelnerding: glorified wifi extender und LoRa mesh im mexikanischen Jungle

in #deutsch2 years ago

Flashback Dezember 2021: Der Nerd ist im Jungle. Also im wahrsten Sinne des Wortes, hier in Mexiko. Es ist so schön hier, kein covid-Bullshit (Einreise ohne Test, keine Impf QR Codes, jedes menschliche Wesen mit Peso oder Kreditkarte ist in den Lokalen (herzlich!) willkommen, Masken trägt man nur im Supermarkt) und das Wetter und Essen ist auch geiler als in 2G Deutschland. Die Menschen sind herzlich, man gibt sich die Hand und umarmt sich. Corona ist hier einfach ein Bier, und das schmeckt sogar halbwegs. Dem Nerd gefällt das. Hochrisikogebiet my ass. Eins ist eher Bayern, das habe ich glücklicherweise verlassen.

meshtastic_20221227_191555.jpg

Aber es gibt natürlich viel an Infrastruktur nachzuholen. Das ist mir bewusst und die Nähe zur Natur ist es mir mehr als wert, zu improvisieren.
Wie ich hier schon vor zwei Jahren schrieb, reise ich ja nie ohne Raspis. Neu im Gepäck sind nun Meshtastic Nodes. Die ermöglichen Kommunikation auch über weitere Distanzen. Mein Setup sieht so aus:

  1. Pi3 als Controller

  2. T-beam board basiertes Meshtastic node

  3. Pi zero w als glorifizierte wlan-Karte für den uplink

  4. & 2) doppelt für die remote Station

Los geht's!
Die pi3 waren schon als Accesspoint/Repeater/Router eingerichtet und haben die adb tools installiert, für ein Oculus Go Projekt und zum befreien von alten android phones. Das ist fein, denn die Meshtastic app gibt's nicht mehr im Play Store und muss per sideloading installiert werden.

Dann brauche ich noch tools für meshtastic:
apt install python3-pip
pip3 install --upgrade meshtastic
https://github.com/meshtastic/Meshtastic-device/releases/download/v1.2.45.b674054/firmware-1.2.45.b674054.zip

https://meshtastic.org/docs/getting-started/flashing-esp32
pip3 install --upgrade esptool

Firmware auspacken, mit esptool die connectivity überprüfen, dann flashen
./device-install.sh -f firmware-tbeam-1.2.45.b674054.bin

Dann ist das Ding einsatzbereit, nimmt am public mesh teil und spricht mit dem Raspi via python shell

meshtastic shell

root@augenblicke-demo:~/meshtastic# meshtastic --info
Connected to radio

Owner: Unknown 5784 (?84)
My info: { "myNodeNum": 4064630660, "numBands": 13, "firmwareVersion": "1.2.45.b674054", "rebootCount": 1, "messageTimeoutMsec": 300000, "minAppVersion": 20200, "maxChannels": 8 }
Nodes in mesh:  {'num': 4064630660, 'user': {'id': '!f2455784', 'longName': 'Unknown 5784', 'shortName': '?84', 'macaddr': 'CDryRVeE', 'hwModel': 'TBEAM', 'raw': id: "!f2455784" long_name: "Unknown 5784" short_name: "?84" macaddr: "\010:\362EW\204" hw_model: TBEAM }, 'position': {'raw': }, 'lastReceived': {'from': 4064630660, 'to': 4294967295, 'decoded': {'portnum': 'NODEINFO_APP', 'payload': b'\n\t!f2455784\x12\x0cUnknown 5784\x1a\x03?84"\x06\x08:\xf2EW\x840\x04', 'wantResponse': True, 'user': {'id': '!f2455784', 'longName': 'Unknown 5784', 'shortName': '?84', 'macaddr': 'CDryRVeE', 'hwModel': 'TBEAM', 'raw': id: "!f2455784" long_name: "Unknown 5784" short_name: "?84" macaddr: "\010:\362EW\204" hw_model: TBEAM }}, 'id': 2047933770, 'hopLimit': 3, 'priority': 'BACKGROUND', 'raw': from: 4064630660 to: 4294967295 decoded { portnum: NODEINFO_APP payload: "\n\t!f2455784\022\014Unknown 5784\032\003?84\"\006\010:\362EW\2040\004" want_response: true } id: 2047933770 hop_limit: 3 priority: BACKGROUND , 'fromId': '!f2455784', 'toId': '^all'}, 'lastHeard': None, 'snr': None, 'hopLimit': 3}

Preferences: { "phoneTimeoutSecs": 900, "lsSecs": 300 }

Channels:
  PRIMARY psk=default { "modemConfig": "Bw125Cr48Sf4096", "psk": "AQ==" }

Primary channel URL: https://www.meshtastic.org/d/#CgUYAyIBAQ

für meine Zwecke lege ich noch einen persönlichen secondary channel und den admin-channel für remote Verwaltung an:

root@augenblicke-demo:~/meshtastic# meshtastic --ch-add schlafhacking
Connected to radio
Writing modified channels to device
meshtastic --ch-add admin

Nun richte ich den zweiten node ein und füge ihn zum mesh und dem erstellten admin Channel hinzu
meshtastic --seturl <url-des-mesh, redacted for security>

Es scheint, dass GPS per default aus ist, das will ich hier aber haben. Also schalte ich es ein.
meshtastic --set location_share LocEnabled
meshtastic --set gps_operation GpsOpMobile
meshtastic --set gps_update_interval 10

Nun können die beiden Pi's miteinander reden bzw. ein Android Phones mit der Meshtastic App.

P.S. Dieser Post lag nun über ein Jahr als Entwurf im Peak Frontend. Der Content ist von Anfang Dezember 2021, aber noch relevant, weil das heute #freenerding darauf basieren wird