Alfred und anounced - respondd basics

Fortsetzung der Diskussion von FF-Router inklusive Thermometer:

@fkyle @adorfer @ReneSch : alfred funktioniert in etwa so

  • es gibt 255 IDs … die ersten 65 sind von batman un dbatman-vis belegt, für Freifunk werden die 158 (nodeinfo) die 159 (statistics) und die 160 (gps) belegt.
  • Freifunk foo macht noch ein gzip in die Pipe rein, daher benötigt man entweder alfred-json (bspw. dann alfred-json -z -r 159 ) oder auf den kleinen Plasteroutern diesen Hinweisen folgen um das auf den geräten zu dechiffrieren : [decode alfred stuff][1]
    bspw. so
alfred -r 159 | grep -o -E '\\x1f\\x8b\\x08.+\\x00\\x00'| sed -e 's/\\"/"/g' -e 's/\\/\\\\/g' | while read a; do echo -e $a|gzip -d ;done
  • senden geht via echo foo | alfred -s 110 in dem Fall foo auf der ID 110.

  • auslesen irgendwo aus dem Batman Netz geht via alfred -r 110

  • Daten brauchen ein paar Sekunden zum Propagieren und werden 10 Minuten gespeichert, danach verfallen sie - und müssen daher neu gesendet werden - intervalle von 5 Minuten sind ganz gut

  • im neueren gluon mit announced funktioniert das ein wenig anders … da benutzt du gluon-neighbour-info um Daten auszulesen : wo das genau ging weis ich gerade auch nicht mehr. (Datei Verzeichnis Baum ähnlich /proc )
    … eine erste Idee könnte dir entweder die gluon-Doku liefern oder der Prozessaufruf

# ps |grep respondd
 2069 root      2028 S    /usr/bin/respondd -g ff02::2:1001 -p 1001 -d /lib/gluon/respondd -i br-client -i ibss0 -i mesh-vpn

# gluon-neighbour-info -p1001 -r statistics
# oder 
# gluon-neighbour-info -p1001 -r nodeinfo

Du hast also die Wahl die Info mit in die statistics einzupacken, dann „könnte“ man die auch im meshviewer mit auswerten … ich mein, Daten in die Welt hinaus zu schicken via alfred , oder via neighbour-info Verfügbar haben bringt sie nochlange nicht irgendwo hin - sichtbar.

hoffe das hat schonmal bisserl geholfen - es gibt einfach nix über gute man-pages : es lohnt sich da ein bisserl einzusteigen und zu versuchen zu verstehen was uns die jeweiligen macher der Programme sagen wollen :slight_smile:
https://downloads.open-mesh.org/batman/manpages/alfred.8.html
http://gluon.readthedocs.io/en/v2016.1.4/features/monitoring.html

und zu guter Letzt … die Status-page … kann man hier editieren und
lib/gluon/status-page/www/cgi-bin
dort steht bisher (s.obere bsp.)

exec gluon-neighbour-info -d ::1 -p 1001 -t 1 -c 1 -r nodeinfo

man könnte da etwas in der Art hinzufügen …

exec cat /tmp/temperatur

wie genau das dann funktioniert weis ich grad auch nicht, das bsp. wird nicht funktionieren, du bist da aber an der richtigen stelle. Wenn du das rausgefunden hast wäre eine kurze notiz sicher gut.
Du möchtest nu sicher darauf achten das du nur im arbeitsspeicher regelmässig schreibst (daher auslesen via cat /tmp…) . Du kannst natürlich auch die Werte vom Sensor direkt in die statuspage einbringen …
Spannendes Projekt in jedem Fall

[edit: sehe gerade das der ursprungsthread „alt“ war … aber nichts desto trotz gilt die Anleitung , und hilft sicher jemenschen]
[1]: start [Wiki]

2 Likes

hier bisserl live example

0 root@rauberhaus:/lib/gluon# gluon-neighbour-info -p1001 -r statistics
{"clients":{"total":1,"wifi":1,"wifi24":1,"wifi5":0},"traffic":{"rx":{"packets":2246261,"bytes":176034489},"tx":{"packets":11039,"bytes":2034897,"dropped":9},"forward":{"packets":30212,"bytes":6526543},"mgmt_rx":{"packets":3396125,"bytes":306221494},"mgmt_tx":{"packets":880156,"bytes":180713604}},"gateway":"02:00:00:24:00:07","mesh_vpn":{"groups":{"backbone":{"peers":{"sn8":null,"sn1":null,"sn10":null,"sn4":null,"sn3":{"established":46614.205},"sn7":null,"sn5":null,"sn9":null,"sn2":null,"sn11":{"established":46613.719}}}}},"node_id":"e8de27f90908","rootfs_usage":0.8,"memory":{"total":28588,"free":2800,"buffers":1272,"cached":3236},"uptime":46687.55,"idletime":38160.089999999994,"loadavg":0.34,"processes":{"running":1,"total":46}}
0 root@rauberhaus:/lib/gluon# gluon-neighbour-info -p1001 -r nodeinfo
{"software":{"autoupdater":{"branch":"support","enabled":false},"batman-adv":{"version":"2013.4.0","compat":14},"fastd":{"version":"v18","enabled":true},"firmware":{"base":"gluon-v2016.1-91-g271e864","release":"v2016.1.3.b"},"status-page":{"api":1}},"network":{"addresses":["fe80::eade:27ff:fef9:908","2001:bf7:2810:ff42:eade:27ff:fef9:908","fdf0:9bb:7814:a630:eade:27ff:fef9:908"],"mesh":{"bat0":{"interfaces":{"wireless":["ea:e1:28:f9:09:08"],"tunnel":["ea:e2:27:f9:09:08"]}}},"mac":"e8:de:27:f9:09:08"},"location":{"latitude":48.01898,"longitude":7.818146,"altitude":222},"owner":{"contact":"info@rauberhaus.de"},"system":{"role":"node","site_code":"fffr"},"node_id":"e8de27f90908","hostname":"rauberhaus","hardware":{"model":"TP-Link TL-WR841N\/ND v9","nproc":1}}
#
#
0 root@rauberhaus:/lib/gluon# echo -n "foo bar um $(date)" | alfred -s 123
0 root@rauberhaus:/lib/gluon# alfred -r 123
{ "e8:de:27:f9:09:08", "foo bar um Sat Apr 30 12:54:48 CEST 2016" },
1 Like

ein Package, welche mehr oder minder „frei“ (konfigurierbar) Sachen aus /proc /top oder wo auch immer holt und dann in die Respondd-Pakete einbaut, so dass sie beim Kartenserver-Backend zumindest schonmal in einer der json-files liegen:

Würde extrem helfen.

Derzeit ist das c-Code und ohne Patches im Gluon-Core(?) nicht zu machen, oder?

Pakete können einfach Objektdateien nach /lib/gluon/respondd legen um weitere Daten zu übermitteln. Dafür sind keine Patches in Gluon nötig. Hier als Beispiel der Code für die batman-adv Daten (das ist etwas umfangreicher)

https://github.com/freifunk-gluon/gluon/blob/master/package/gluon-mesh-batman-adv-core/src/respondd.c

und hier ein einfaches Beispiel, das die Version der Statuspage-API zurückgibt:

https://github.com/freifunk-gluon/gluon/blob/master/package/gluon-status-page-api/src/respondd.c

2 Likes

Wenn ich das richtig verstehe, dann braucht es „nur“ ein Package mit einem C-Programm, welches aus einer Datei-Struktur aus /tmp aus $verzeichnis/$datei/$inhalt Dinge übermittelt.

ich verweise mal quer hierdrauf : dort dürfte das gleiche „Problem“ zu lösen sein …
(nämlich: wie bekomme ich weitere Info in alfred nodeinfo /statistics und damit letztlich in die Karten oder die Statuspage)

1 Like