Hmm... Ich sehe nicht ganz wo der Vorteil von "select" wäre(?).
Damit würde auch die Kompatibilität zu Windows flöten gehen, wenn ich das richtig verstehe (auch wenn das wahrscheinlich wirklich niemand braucht).
Das mit dem Logging ist quick and dirty, das wird noch verbessert, klar.
Ich nutze aber auch die Gelegenheit, um endlich Python zu lernen. Meiner einer ist noch mit Perl aufgewachsen.
Und ich bin begeistert, wie schnell und einfach sich damit sowas umsetzen lässt.
Meine Zielsetzung war, eben ohne POST oder sowas auszukommen. Wirklich reines low-level TCP, keine zusätzlichen Application Protocol Schichten wie http o.ä....
Die Spindel halt so gut wie's eben geht entlasten.
Erste Tests bestätigen, das funktioniert ganz gut. Was ich unterschätzt hatte, ist die Zeit, die die Spindel benötigt, sich überhaupt erst mal wieder mit dem WLAN zu verbinden.
Das kann man leider nicht ändern. Aber zumindest spart man sich die Zeit, bis ein Remote Server antwortet. Das macht schon deutlich was aus.
Ich hatte die iSpindel jetzt mal 48 Stunden am Laufen, mit 1 Minute Update Intervall, und das Ergebnis ist zwar nicht überragend toll, aber doch ermutigend, weiter zu machen.
Kommende Woche wird sie mal im Chronical versenkt und dann mache ich mich mal an ein Excel .NET Add-In, um die Daten zu visualisieren.
Wenn alles passt, erweitere ich die Doku und lade die Sachen ins Repo hoch. Sollte klappen, bevor die Platinen da sind (und der PETling wieder erhältlich ist...
).
MySQL, PostgreSQL oder auch SQLite sollte ziemlich egal sein. Auf dem Pi3 läuft MySQL super gut, von daher konzentriere ich mich erst mal darauf, denn das kenne ich gut, auch wenn's für diesen Anwendungsfall Overkill ist.
Wer sich's schon mal anschauen mag, hier wäre der aktuelle Stand:
In MySQL ist dazu eine Tabelle nach folgendem Schema zu erzeugen; auch dazu werde ich natürlich beizeiten ein Script nachliefern, momentan ist das noch händisch zu machen:
Code: Alles auswählen
CREATE TABLE `Data` (
`Timestamp` datetime NOT NULL,
`Name` varchar(64) COLLATE ascii_bin NOT NULL,
`ID` varchar(64) COLLATE ascii_bin NOT NULL,
`Angle` double NOT NULL,
`Temperature` double NOT NULL,
`Battery` double NOT NULL,
PRIMARY KEY (`Timestamp`,`Name`,`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=ascii COLLATE=ascii_bin COMMENT='iSpindle Data'
Die Datenbank heißt "iSpindle", die Tabelle "Data".
Wie gesagt, ich schnüre da natürlich beizeiten ein benutzerfreundliches Paket draus.