Zum Inhalt springen

Geronimo: Unterschied zwischen den Versionen

Aus Opennet
Inhalt gelöscht Inhalt hinzugefügt
lastseen für v2 erwähnt
Ersetze irreführende Versionsnummer durch HTTP-API-Verweis
 
(13 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
|description=Geronimo
|description=Geronimo
|nextMeeting=nur bei Bedarf
|nextMeeting=nur bei Bedarf
|members=[[Benutzer:Matthias M|Matthias M.]], [[Benutzer:Lars|Lars]], Vally
|members=[[Benutzer:Matthias M|Matthias M.]], [[Benutzer:Lars|Lars]]
|kontakt=[mailto:admin@opennet-initiative.de admin@opennet-initiative.de]
|kontakt=[mailto:admin@opennet-initiative.de admin@opennet-initiative.de]
|logo=Geronimo Logo.png
|logo=Geronimo Logo.png
Zeile 10: Zeile 10:
Geronimo ist ein zentrales Framework für die Sammlung und Verteilung Opennet-relevanter Informationen. Der Fokus liegt auf der Verwendbarkeit durch Dienste.
Geronimo ist ein zentrales Framework für die Sammlung und Verteilung Opennet-relevanter Informationen. Der Fokus liegt auf der Verwendbarkeit durch Dienste.


Status:
Geronimo v1 ist aktuell in Betrieb. Geronimo v2 ist in Entwicklung.
* Geronimo (alt, auslaufender Betrieb, keine HTTP-API) wird genutzt von:

** alte [[Openlayers|Karte]]: https://opennet-initiative.de/map
== Geronimo v1 ==
** Wiki: https://on-i.de/wiki/Extension:APData

* [[Geronimo/v2|Geronimo]] (neu, mit HTTP-API, aktiv in Betrieb und Entwicklung) wird genutzt von:
Geronimo ist ein zentrales Informationsframework, das insbesondere die Kartendarstellung unterstützt.
** API zur Abfrage von Routing- und Geräteinformationen: https://api.opennet-initiative.de/
* Datenquelle [[Ondataservice]] (per [[OLSR]] AP Infos sammeln)
** neue [[Openlayers|Karte]]: https://map.opennet-initiative.de/
* Karten-Darstellung mit verbesserter [[Openlayers]] Karte
** Kartendarstellung auf der Status-Seite jedes AP
* Export nach [[Freifunk]] Nodelist API per ''geronimo_freifunknodelist.sh''

=== Ziele ===
* Vereinheitlichung der Daten (AP namen, Daten , ...)
* Zusammenfassung aller Informationsquellen (OLSR, ondataservice, Wiki, ...)
* lose Kopplung (REST API, Erweiterbarkeit, ...)
* flexible Datengenerierung
* Speicherung Langzeitinfos

=== To do ===
* <s>Ablösung der Minikarte (Anzeigen der Nachbarn)</s>
* <s>Datenmenge reduzieren </s>
* <s>leere Felder weglassen in final weglassen</s>
* UGW Erreichbarkeit je AP berechnen und anzeigen
* Wiki auswerten
** ein ressourcenschonender Wiki-Reader ist in der Entwicklung
** Ansprechpartner, Standort, Foto des APs aus Wiki finden
** [[:Vorlage:accesspoint]] für verteilte Wartung der Daten einführen
* Kanal/SSID Ansicht für Links
** zur Zeit nicht sinnvoll machbar, da viele APs keine Daten per [[OLSR]] liefern, was wohl an veralteter Firmware liegt
* UGW Erreichbarkeit eines Knotens
* Formatierung mit pylint prüfen
* Code cleanup
* Openlayers schrumpfen
* Wifidog Funkkegel anpassbar machen
* Zeitliche Dimension einführen, ggF. rrdtools dadurch ersetzen oder anzapfen

=== Architektur ===
Der Quellcode liegt in einem [https://dev.opennet-initiative.de/browser/on_geronimo GIT Repository] und ist komplett in Python geschrieben. Er gliedert sich in zwei Hauptmodule:
* geronimo.py - Backend, das die Daten zusammensammelt
* geronimoCGI.py - HTTP Frontend ([http://cherrypy.org CherryPy]), dass an Apache gekoppelt wird

Der Datenaustausch erfolgt über die Dateien nodes.cache, links.cache (Pickle Framework) und die interne Repräsentation über einfache Objekte (siehe primitives.py). Die Backend Module, welche die Daten einsammeln liegen unter /helpers (zur Zeit nur Wiki, ondataservice DB und OLSR lastseen CSV) und diese werden über config.ini mit den richtigen Pfaden versorgt.

Das Frontend liefert derzeit geoJSON und kann wie folgt aufgerufen werden:
<pre>
http://www.opennet-initiative.de/api/node/neighbours?ip=192.168.1.59
http://www.opennet-initiative.de/api/nodes/online/
http://www.opennet-initiative.de/api/nodes/offline/
http://www.opennet-initiative.de/api/links/online/
</pre>
Letztere können auch mit einer Suchbox mit Mercator Koordinaten gefiltert werden
<pre>
http://www.opennet-initiative.de/api/links/online?bbox=11.925507659912,54.040317086552,12.314492340088,54.119673430674
</pre>
Das ganze wird durch eine verbesserte Version der [[Openlayers]] Karte im Browser angezeigt und liegt unter ./src/www.

=== Datenfluss ===
Ein cronjob ruft regelmäßig geronimo.py auf. Dort wird zunächst das lastseen Verzeichnis gelesen und ermittelt welche APs wann online waren. Danach wird eine Liste der APs aus dem Wiki generiert ([[Opennet Nodes]]) und alle APs mit wichtigen Details aus [[ondataservice]] ergänzt. Zum Schluss wird das ganze in die Cache Dateien geschrieben.

Wenn nun per Openlayers dir Karte angezeigt wird, wird die aktuelle BBOX bestimmt und ein Call auf den API-Services gemacht (je Layer). Über WSGI und Cherrypy wird dann aus der geronimoCGI.py dann der entsprechende Einstiegspunkt gewählt und abgearbeitet. Dabei werden die Cache-Dateien gelesen und je nach Anforderung nachgefiltert, sowie als JSON formatiert und ausgegeben. Openlayers parst dieses wieder auf Client-Seite und wendet basierend auf den Eigenschaften der Objekte die definierten Stile an.

=== Server-Installation ===
Der Dienst läuft derzeit auf dem WWW Server ([[Server/on-v6]]) und ist unter '''/var/www/geronimo/src''' zu finden.

In der '''config.ini''' sind die Pfade entsprechend der lokalen Einrichtung zu setzen. Das Unterverzeichnis ./www muss dann dem '''Apache''' zugänglich und über diesen statisch freigegeben werden. Außerdem muss eine zusätzliche URL (z.Z. www.on-i.de/api/) per WSGI mit geronimoCGI.py verknüpft werden. Diese öffentliche URL muss anschließend in ./www/index.html als BASE_URL=* eingetragen werden.

== Geronimo v2 ==
* Vorgedanken und Funktionsumfang: [[Geronimo/Planungv2]]

=== Erreichbarkeit ===
Der Dienst ist über die Basis-URL http://api.opennet-inititiative.de/ zu erreichen.

=== Funktionsumfang ===
Aktuell werden folgende Datenquellen eingelesen:
* Wiki (AP-Liste mit Besitzern und Positionen)
* ondataservice (Hardware, Firmware, Systemzustand, Netzwerkschnittstellen)

Geplante weitere Datenquellen:
* olsr (Links und Verbindungsqualität)
* lastseen (Zeitstempel der letzten Sichtbarkeit eines Knotens)

=== Server-Einrichtung ===
Aktuell läuft ein experimenteller API-Dienst unter dem Nutzer-Account ''web-api'' auf [[Server/yurika]]. In seinem Nutzer-Account läuft ein Django-Server auf Port 8000 (aktuell im manuellen Betrieb), der von dem lokalen apache-Webserver via Proxy-Modul abgefragt wird.


== Siehe auch ==
== Siehe auch ==

Aktuelle Version vom 3. Februar 2025, 14:10 Uhr

Team

Geronimo
Treffen: nur bei Bedarf
Geronimo
Mitglieder:
Matthias M., Lars
Kontakt:
admin@opennet-initiative.de


Überblick

Geronimo ist ein zentrales Framework für die Sammlung und Verteilung Opennet-relevanter Informationen. Der Fokus liegt auf der Verwendbarkeit durch Dienste.

Status:

Siehe auch