Ich pack das hier nochmal rein, bin bei Freifunk Rhein-Neckar.
Problem 1: Ich wuerde immer mal wieder ganz gerne wissen, wieviele Clients auf meinem AP sind, da hier gelegentlich das Wifi wegschmiert und sich nicht mehr alleine faengt (Gluon 1.1.0, haben ja einige hier das Problem).
Problem 2: Der Freifunkrouter haengt hier in einer DMZ zwischen zweimal NAT, kann also direkt ins LAN keine MQTT-Topics publishen, nach draussen geht.
Da ich im Moment so ziemlich alles was irgendwie (sinnvoll) machbar ist auf MQTT umstelle, fehlt mir ein MQTT-Client/Publisher auf dem Freifunkrouter. Die kleinen 841er haben ja mittlerweile kein opkg mehr drauf, da sowieso kein Platz mehr ist, wie krieg ich da also Mosquitto zum laufen? Und wenn, wie krieg ich die Daten ins LAN?
Mosquitto als Broker laeuft auf einem Raspberry Pi hier im Haus, habe auch noch einen eigenen Broker draussen, Problem Speicherknappheit auf dem 841er bleibt.
Loesung: ich hole mir die Infos per ssh und „publishe“ mit mosquitto_pub vom Broker auf sich selbst. Diesen kann ich dann direkt per MQTT abfragen (prima APP fuer Android MQTT Dash) und wenn noetig kann ich auch noch per Node-Red den ganzen Scheiss in eine Datenbank schreiben (InfluxDB ist mein Freund), Grafana koennte das auswerten, mit Node-Red kann man ja noch jede Menge andere Sachen mit den Daten anstellen.
Hahaha…genau das macht ja Freifunk schon mit Grafana, direkter Zugriff per MQTT tut da aber nicht.
- Zertifikatsbasierte Authentifizierung auf dem 841er einrichten.
clients.sh
im Ordner /etc/config/ anlegen, zeigt die verbundenen Clients an
batctl tl | grep -cE "\[....W.\]+"
-
diese mit chmod +x
clients.sh
ausfuehrbar machen -
auf dem Raspberry Pi ein ssh-Skript
clientmqtt.sh
ablegen, welches sich mit dem FF-Router 192.168.0.15 verbindet, das obigeclients.sh
ausfuehrt und den Wert, der zum Pi zurueckgegeben wird selbst per mosquitto_pub auf den Broker 10.0.0.252 schickt.#!/bin/bash
anzahl=$(ssh root@192.168.0.15 -t /etc/config/clients.sh)
#echo $anzahl
/usr/bin/mosquitto_pub -h 10.0.0.252 -t anzahl -m $anzahl -
Dieses Skript per cronjob alle 10 Minuten (oder nach belieben) auf dem Pi starten.
crontab -e
*/10 * * * * /root/skripte/clientmqtt.sh
Sind die Daten auf dem Broker, kann man mit diesen machen, was man will. Ich moechte auf MQTT nicht mehr verzichten, ein grossartiges Protokoll, Node-Red dazu und alles ist machbar ohne grosses Geschiss.
Anmerkdungen sind willkommen, hat jemand Mosquitto auf seinem Router laufen?
Ich hatte noch mit bish-bosh GitHub - raphaelcohn/bish-bosh: MQTT shell script client, for bash, dash, BusyBox ash and others. Gives you MQTT on anything Unix like, from embedded routers to AIX servers with almost no dependenices. herumprobiert, lief aber mit Busybox nicht richtig, hat das jemand gerissen bekommen?