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 so ganz einfach 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 https://play.google.com/store/apps/details?id=net.routix.mqttdash&hl=de )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.
2. Ordner/etc/config/
auf dem FF-Router erstellen (in der Hoffnung, dass dieser ein Update ueberlebt, lieg ich da richtig?
Edith: adorfer schreibt hier, dass unbekannte Dateien in /etc/config wohl beim update erhalten bleiben: https://forum.freifunk.net/t/wie-herausfinden-ob-eine-einstellung-updatefest-ist/3154/7 -
clients.sh
in 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 grossen Geschiss.
Anmerkdungen sind willkommen, hat jemand Mosquitto auf seinem Router laufen?
Ich hatte noch mit bish-bosh https://github.com/raphaelcohn/bish-bosh herumprobiert, lief aber mit Busybox nicht richtig.