4 Commits
v1.4 ... main

Author SHA1 Message Date
c1328
5cb66fe2f6 Update README with systemd service setup details
Added instructions for service configuration and monitoring.
2026-02-05 22:53:27 +01:00
c1328
34020a03e2 Document systemd service for Meshtastic Decryptor
Added systemd service setup instructions for Meshtastic Decryptor.
2026-02-05 22:50:59 +01:00
c1328
6062c2aff7 Implement channel database and argument parsing
Added channel database and command line argument handling for channel selection.
2026-02-05 22:44:52 +01:00
c1328
204be1227d Fix formatting and improve clarity in README.md 2026-02-05 22:22:58 +01:00
2 changed files with 65 additions and 14 deletions

View File

@@ -266,9 +266,48 @@ Das Skript arbeitet hybrid:
Dieses Setup optimiert die Erfassung von Gruppen-Kanälen und Positionsdaten. Direktnachrichten (DMs) werden aufgrund der Ende-zu-Ende-Verschlüsselung (PKC) bewusst nicht unterstützt. Für private Kommunikation im ioBroker empfiehlt sich die Nutzung eines separaten, privaten Kanals.
Prototypisch gibt es folgendes Script, welches verschlüsselte Direktnachrichten, die an Nodes aus der eigenen DB gerichtet sind und verschlüsselt über MQTT daherkommen über Lora weiterleitet: https://github.com/c1328/meshtastic-cli-iobroker-mqtt/blob/main/mqtt-pki-downlink.py
Prototypisch gibt es folgendes Script, welches verschlüsselte Direktnachrichten, die an Nodes aus der eigenen DB gerichtet sind und verschlüsselt über MQTT daherkommen, über Lora weiterleitet: https://github.com/c1328/meshtastic-cli-iobroker-mqtt/blob/main/mqtt-pki-downlink.py
Das Script sollte als systemd eingerichtet werden, dass schreibt es seinen Status in das MQTT topic ```service/PKIdownlink/#```
Das Script sollte als systemd eingerichtet werden, dann schreibt es seinen Status in das MQTT topic ```service/PKIdownlink/#```
```bash
# Service Konfiguration anlegen
vi /etc/systemd/system/meshtastic-decryptor@.service
# mit folgendem Inhalt:
[Unit]
Description=Meshtastic Decryptor Service for Channel %I
After=network.target
[Service]
# %I (the part after @) is passed as an argument to the script
ExecStart=/usr/bin/python3 /home/meshtastic/mqtt-json-decryptor.py %I
WorkingDirectory=/home/meshtastic
User=meshtastic
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
```
```bash
# Systemd neu laden
systemctl daemon-reload
# Kanäle starten
systemctl start meshtastic-decryptor@Kanal0
systemctl start meshtastic-decryptor@Kanal1
systemctl start meshtastic-decryptor@Kanal2
# Autostart aktivieren
sudo systemctl enable meshtastic-decryptor@Kanal0
sudo systemctl enable meshtastic-decryptor@Kanal1
sudo systemctl enable meshtastic-decryptor@Kanal2
# Schauen ob alles läuft
journalctl -u "meshtastic-decryptor@*" -f
```
Hier ist gerne Rückmeldung erwünscht, ob das zuverlässig funktioniert.

View File

@@ -1,23 +1,35 @@
import sys
import json
import time
import logging
import paho.mqtt.client as mqtt
from meshtastic_mqtt_json import MeshtasticMQTT
# --- CONFIGURATION ---
LOCAL_BROKER = "mqtt"
LOCAL_PORT = 1883
LOCAL_USER = "<username>"
LOCAL_PASS = "<password>"
# --- CHANNEL DATABASE ---
# Add all your channels here
CHANNELS = {
"Puig": {"index": 0, "key": "BASE64_KEY_1"},
"Default": {"index": 1, "key": "BASE64_KEY_2"},
"Privat": {"index": 2, "key": "BASE64_KEY_3"}
}
# Channel Details
CHANNEL_NAME = "<channel>" # Name of the channel (e.g., "Puig")
CHANNEL_INDEX = 0 # Channel index on the hardware (usually 0)
CHANNEL_KEY = "<key>" # Base64 encryption key
REGION = "EU_868"
# Get channel name from command line argument
if len(sys.argv) < 2 or sys.argv[1] not in CHANNELS:
print(f"Usage: python3 decryptor.py <channel_name>")
print(f"Available channels: {', '.join(CHANNELS.keys())}")
sys.exit(1)
# Path Configuration for ioBroker Monitoring
ENCRYPTED_ROOT = f"msh/{REGION}/2/e/"
CHANNEL_NAME = sys.argv[1]
CHANNEL_INDEX = CHANNELS[CHANNEL_NAME]["index"]
CHANNEL_KEY = CHANNELS[CHANNEL_NAME]["key"]
# --- REST OF CONFIGURATION ---
LOCAL_BROKER = "mqtt"
LOCAL_PORT = 1883
LOCAL_USER = "user"
LOCAL_PASS = "pass"
REGION = "EU_868"
ENCRYPTED_ROOT = f"msh/{REGION}/2/e/"
SERVICE_BASE_PATH = f"service/Decryptor/{CHANNEL_NAME}"
# --- LOGGING SETUP ---