Hallo Freunde, ich habe in den letzten Wochen daran gearbeitet, ein Binärformat für künftige Entwicklungen, insbesondere in Bezug auf den OpenBikeSensor Lite zu entwerfen. Das hatten wir schon lange mal überlegt aber nie angegangen, nur wird es jetzt langsam nötig, da das Zeilenbasierte CSV eben nicht ausreicht für die Art, wie der OBS-Lite die Daten verarbeiten wird (oder eben gerade nicht verarbeiten kann).
Ich möchte hier nun gern eure Meinung zu meinem Entwurf hören. Ihr könnt ihn direkt auf Github finden: GitHub - openbikesensor/proto
Das ganze basiert auf Protocol Buffers, einer Technik die es einfach macht binäre Formate zu entwickeln, die dann in verschiedenen Programmiersprachen genutzt werden können, und die vor allem auch in Zukunft veränderbar/erweiterbar sind. Gutes Beispiel ist OpenStreetMap, dort unterstützen die meisten Tools das neue, wesentlich kompaktere und schnellere Format .osm.pbf.
Schaut euch meinen Entwurf gern mal an. In der README sind ziemlich klar meine Designideen und -ansprüche beschrieben. Die Formatspezifikationsdatei (openbikesensor.proto
) enthält dann die technischen Details. Ich finde, die lässt sich auch ohne großartige Vorkenntnisse der Sprache ganz gut lesen.
Mit dabei ist auch ein kleines Python-Skript, das von USB lesen und die Abstandswerte ausgeben kann. Das ist relativ einfach zu machen und das gleiche (mit Umweg über eine aufgezeichnete Datei) muss die Auswertungslogik, also das Portal, in Zukunft dann auch unterstützen. Außerdem plane ich ein Konvertierungstool, das aus einer Binärdatei wieder ein CSV machen kann, damit man sich seine Dateien in Excel anschauen und drin rumfummeln kann, wenn man das denn möchte (was im Prinzip leider immer ein Informationsverlust ist, weil die Daten interpretiert und dann in ein zeilenbasiertes Format „reinquetscht“ werden – aber das sollte trotzdem noch gut funktionieren).
Für den OpenBikeSensor Lite wird es dann eine (erstmal eigene, später gern gemeinsame) Firmware geben, die eben Ereignisse in diesem Format generiert für alles, was der Sensor misst, und dann über USB ausgibt. Eine erste Version dieser Firmware habe ich auch veröffentlicht auf meinem privaten Github Account (hier), falls das wen interessiert wie das dann aussieht in C/C++.
Ich freue mich auf euer Feedback. LG Paul