Seite 5 von 7

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Dienstag 10. April 2018, 00:35
von Tozzi
Servus zusammen,

seit Mitte März gibt es ein neues Raspberry Modell, den Pi 3B Plus.
Die wichtigsten Neuerungen: Etwa 20% schnellere CPU (für uns weitgehend uninteressant), aber auch ein neues integriertes WLAN Modul, welches nun auch im 5 GHz Band verbindet.

Leider funktioniert das noch nicht mit dem aktuellen Image.
Ich habe mir einen bestellt und werde es hoffentlich diese Woche noch schaffen, ein neues, aktuelles Image hochzuladen.
Wurde ja eh langsam Zeit. Ich will aber noch möglichst viele Bugfixes vorher fertigstellen.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Donnerstag 19. April 2018, 14:26
von mrhyde
Ich habe es jetzt geschafft, die Daten vom lokalen Server der auf meiner QNAP 453A NAS in einem Container läuft in die reguläre MYSQL Datenbank zu bringen.

Somit kann dann der standard APAche Server einfach drauf zugreifen. Die Datne werden dann in meinem Wordpress blog dargestellt und ich kann von überall drauf zugreifen. Das ganze könnte ich dann auch noch mit Passwort schützen.

Hier mal ein link:
https://mrhyde.spdns.eu/WordPress/brewi ... eller-sud/

Details werde ich noch beschreiben. Ich muss erstmal auf eine Dienstreise und kann dann von unterwegs den Gärprozess verfolgen :-)

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Donnerstag 19. April 2018, 19:24
von Tozzi
Sehr schön, das gefällt mir sehr. :thumbup

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Mittwoch 9. Mai 2018, 12:57
von Sura
Ich würde den ja gerne mal testen, aber irgendwie finde ich nur reihenweise tote Links. Könntest du die mal updaten, Stefan?

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Mittwoch 9. Mai 2018, 13:12
von mrhyde
Das ist alles auch unter den links zur normalen ISpindel zu finden:

http://www.ispindel.de/#ispindel-tcp-server

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Mittwoch 9. Mai 2018, 18:40
von Tozzi
Sura hat geschrieben:
Mittwoch 9. Mai 2018, 12:57
Ich würde den ja gerne mal testen, aber irgendwie finde ich nur reihenweise tote Links. Könntest du die mal updaten, Stefan?
Das Repo mit Anleitung zur Installation auf einem bestehenden Raspbian System findest Du unter:
https://github.com/DottoreTozzi/iSpindel-TCP-Server

Das aktuelle Image zum flashen (funktioniert dann out-of-the-box) ist hier zu finden:
https://sschreiber.de/download/Raspi-iS ... Latest.zip
oder hier:
https://www.dropbox.com/s/ocy8cn6gfowpx ... 0.zip?dl=0

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Mittwoch 9. Mai 2018, 19:03
von Sura
Super, danke. Dann werde ich mir das mal anschauen :)

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Mittwoch 9. Mai 2018, 20:36
von Tozzi
Prima! Verbesserungsvorschläge und Bug Reports sind immer willkommen.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Donnerstag 10. Mai 2018, 08:07
von Sura
Dauert aber noch ein paar Tage, die Spindeln schwimmen grade noch ;)

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Mittwoch 15. August 2018, 22:00
von ctiedtke
Guten Abend zusammen,

ich bin jetzt auch stolzer Besitzer eines Raspberrypi und einer iSpindel und habe den Server als Komplettimage von Stephan aufgesetzt. Nach 2 Tagen sich durchlesen und zusammensetzen der Informationen aus dem git von Dottore Tozzi und dem Forum hier hat es super geklappt. Da ich mich ein wenig mit Linux auskenne konnte ich mir viele Verfahrensschritt beim aufsetzen irgendwie aus den Beschreibungen zusammen suchen und letztendlich die Schlussfolgerungen daraus ziehen. Man brauch aber echt Geduld, aber das sollte für uns Brauer ja kein Problem sein :Wink :Drink . So viel Ahnung von Computer habe ich jetzt auch nicht, aber ich habe mich dadurch "gewurschtelt". Für den "einfachen" User müsste wahrscheinlich noch eine gut beschriebene Doku her um die Scheu vor diesem DIY Projekt zu nehmen. Ich finde das ist ein tolles Projekt und sollte weiter verfolgt werden. Vielen Dank an alle die daran beteiligt sind und ihre Freizeit darin investieren!!! Wenn es Probleme gibt bei mir melde ich mich einfach nochmal.
Eine Frage hätte ich da noch: Ich habe die Spindel gerade in einem Holunder Cider versenkt, ich nehme jetzt diese Werte zum kalibrieren. Und/Oder ist es sinnvoll nochmal einen echten Sud mit richtiger Würze dafür zu nehmen? Vielen Dank nochmal!

Edit: Ach ja ich habe den Rasp Solo laufen ohne Ubidots. Die Fernabfrage läuft über VNC auf meinem MacMini. XQuartz habe ich geteste und lief echt schleppend außerdem hatte XQuartz Problem mit der Browser Darstellung von Chromium.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Mittwoch 15. August 2018, 22:14
von Tozzi
Freut mich dass es klappt!
Ich habe das Projekt leider in letzter Zeit etwas vernachlässigen müssen. :redhead
Aber ich mach weiter, versprochen.

Zu deiner Frage:
Für eine erste Kalibrierung ist das schon OK. Wirst ja dann sehen, wie weit das in Bierwürze abweicht.
Letztlich geht es ja vor allem um den Trend der Kurve. Ein ganz exaktes Messinstrument wird die iSpindel nie sein können, dazu gibt es einfach zu viele Faktoren wie Kräusen und so weiter.

Nachtrag: Ja, VNC ist optimal. RDP geht auch (Microsoft Remote Desktop).
Oder halt einfach die Diagramme per http remote aufrufen.
XQuartz ist super für einzelne Applikationen, aber einen ganzen Desktop würde ich da auch nicht drauf laufen lassen wollen.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Samstag 18. August 2018, 09:01
von ggansde
Moin,
wie kann ich schnell und einfach ALLE Messwerte aus der Datenbank löschen?
VG, Markus

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Samstag 18. August 2018, 09:11
von mrhyde
Am besten wäre vermutlich phpmyadmin. Dort kann man Falle Zeilen anwählen und einfach löschen. Ggf kann man dort sogar einzelne Messwerte löschen.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Samstag 18. August 2018, 09:19
von ggansde
Moin,
danke, ich möchte aber alle Daten auf einmal löschen und mich nicht durch zig Seiten phpadmin wälzen. Die Spindel läuft seit drei Monaten, das sind tausende Messwerte.
VG, Markus

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Samstag 18. August 2018, 09:28
von ggansde
Moin,
habe es hinbekommen, über phpMyAdmin "leeren".
VG, Markus

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Samstag 18. August 2018, 17:20
von Tozzi
Genau. Oder SQL Klausel eingeben:
DELETE FROM Data;

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Sonntag 19. August 2018, 13:38
von mrhyde
Gibt es eigentlich derzeit eine funktionierende Variante, wo man vom TCP Server die Settings der Spindel per remote config verändern kann? Da wurde ja mal etwas gestartet.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Sonntag 19. August 2018, 19:19
von Tozzi
Das war angedacht, ist aber noch nicht verwirklicht. Sam arbeitet firmwareseitig noch dran, die Anpassungen am Server sind minimal.

//Nachtrag: Ich sehe gerade, er hat da schon was funktionsfähiges.
Muss ich mir baldigst ansehen. :redhead

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Sonntag 19. August 2018, 22:26
von clmnsk
Tozzi hat geschrieben:
Sonntag 19. August 2018, 19:19
Das war angedacht, ist aber noch nicht verwirklicht. Sam arbeitet firmwareseitig noch dran, die Anpassungen am Server sind minimal.

//Nachtrag: Ich sehe gerade, er hat da schon was funktionsfähiges.
Muss ich mir baldigst ansehen. :redhead
Im Moment fragt er nur das interval ab.
Das basiert auf dem HTTP Endpunkt von Ubidots.
Ich würde mir da ein komplettes JSON wünschen, mit dem alle Werte der Config geändert werden könnten.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Sonntag 19. August 2018, 23:20
von Tozzi
Ja, das wäre klasse. Ich hab's mir inzwischen auch angesehen.
So bringt's im Moment eigentlich noch nichts.
Bei TCP Verbindung geben wir ja sowieso eine Antwort mit (in meinem Fall momentan halt einfach NAK oder ACK).
Die wird momentan noch ignoriert.
Das könnte aber genauso gut ein JSON sein.
Ich hau ihn nochmal an drauf. Das wär schon was, was man brauchen kann.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Montag 20. August 2018, 07:41
von mrhyde
Danke für das reinschauen. Mich würde natürlich auch eher die Änderug der Korrelation,... interessieren, als das Interval.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Montag 20. August 2018, 13:22
von clmnsk
Tozzi hat geschrieben:
Sonntag 19. August 2018, 23:20
Ja, das wäre klasse. Ich hab's mir inzwischen auch angesehen.
So bringt's im Moment eigentlich noch nichts.
Bei TCP Verbindung geben wir ja sowieso eine Antwort mit (in meinem Fall momentan halt einfach NAK oder ACK).
Die wird momentan noch ignoriert.
Das könnte aber genauso gut ein JSON sein.
Ich hau ihn nochmal an drauf. Das wär schon was, was man brauchen kann.
Jo, ich glaube aber, dass eine Verarbeitung einer Antwort bei jedem Request zu rechenintensiv wäre.
Deshalb wollte er es wohl mit einem eigenen Endpunkt, der dann deutlich seltener aufgerufen wird, haben.
Könnte natürlich auch kombiniert sein und die Antwort eben nur dann verarbeiten.

In jedem Fall sollten mehr Werte als der Intervall zu ändern sein.
Ich hab auch nochmal unter die Issue geschrieben.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Samstag 15. September 2018, 02:35
von Tozzi
Kurzes Update zum Thema "Remote Config":

Sam hat eine neue Firmware gebastelt, und ich werde im Lauf der nächsten Tage eine neue Version des Python Skripts zugänglich machen, sobald alle Tests abgeschlossen sind.
Zu diesem Anlass werde ich auch neue Raspi Images basteln.

(OT Nebenbemerkung: Ich empfehle bei Neuanschaffung nach wie vor den Raspberry Pi 3 B, ohne "Plus", also nicht die aktuelle Generation. Die neueste Version arbeitet nach wie vor noch nicht stabil und stürzt gerne mal grundlos ab, während mein oller Pi3 im Keller seit einem halben Jahr ohne Update oder Neustart verlässlich läuft.)

Damit werden alle wichtigen Einstellungen künftig auch bei "schwimmender" iSpindel zugänglich sein.
Die Konfiguration der iSpindel erfolgt als Antwort vom Server auf die gesendeten Daten, d.h. bei jedem Aufwachen der iSpindel können neue Settings empfangen werden.
Der Stromverbrauch ändert sich dadurch praktisch nicht; der gemessene Unterschied beträgt nur 1-2 Millisekunden, da die bereits bestehende TCP Verbindung genutzt wird. Die zusätzliche Rechenzeit ist absolut vernachlässigbar bzw. eigentlich kaum messbar.

Hier zeigen sich die Vorteile eines dedizierten, generischen Protokolls nach OSI Level 4, ohne Overhead auf der Application Level Seite.
:Drink

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Sonntag 16. September 2018, 15:32
von irrwisch
Tozzi hat geschrieben:
Samstag 15. September 2018, 02:35
(OT Nebenbemerkung: Ich empfehle bei Neuanschaffung nach wie vor den Raspberry Pi 3 B, ohne "Plus", also nicht die aktuelle Generation. Die neueste Version arbeitet nach wie vor noch nicht stabil und stürzt gerne mal grundlos ab, während mein oller Pi3 im Keller seit einem halben Jahr ohne Update oder Neustart verlässlich läuft.)
Ja jetzt wo du es sagst.. Hat pünktlich heute meine Raspi 3 B Plus den Geist aufgegeben!
Der sollte heute eigentlich mit der iSpindel und deinem lokalen iSpindel Server die heute angesetzte Gärung überwachen :crying
Man muss echt für alles Ersatz vorrätig haben und alles redundant halten. :puzz

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Sonntag 16. September 2018, 18:37
von Tozzi
Ja das mit den neuen Raspis ist ein echtes Problem.
Es gibt im Raspi Forum auch einen ellenlangen Faden dazu.
Ich habe hier 3 Stück von den neuen 3B+ (aus unterschiedlichen Chargen) und alle hängen sich zufällig irgendwann auf.
Bei den älteren 3B passiert das nie.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Sonntag 16. September 2018, 20:33
von ctiedtke
Komisch bei mir ist das noch nicht passiert :Grübel . Ich habe auch den 3B+, der hat sich auch bisher nicht aufgehängt und alles brav aufgezeichnet. Aber ich bleibe mal aufmerksam und guck mal.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Sonntag 16. September 2018, 20:37
von Tozzi
Dann sei froh! Manche scheinen problemlos zu funktionieren. Nur ist die Chance halt recht groß, einen zu erwischen, wo das nicht so ist.
Die Ursache ist wohl auch multifaktoriell und unter anderem abhängig vom Aufbau des Heimnetzwerks.
Wird noch fieberhaft dran geforscht.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Montag 17. September 2018, 20:54
von JackFrost
Hi,

Hast du mal ein „anderes“ Linux probiert ? Ich hab leider nur einen RPi B und noch keine iSpindel sonnst hätte ich das mal mit Gentoo probiert.

Gruß JackFrost

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Montag 17. September 2018, 20:59
von Tozzi
Ja hab ich. Damit ist es meist noch schlimmer.
Raspbian wird ja eng zusammen mit der Hardware entwickelt, da gibt es also auch immer die aktuellsten Kernel Patches (die habe ich bis vor kurzem auch dringend gebraucht). Momentan läuft die aktuelle Version recht stabil, mein Media Server rennt jetzt seit 2 Wochen problemlos.
Es ist nicht sooooo schlimm, aber nervt halt, wenn's passiert, und man ist nicht zuhause (wenn sich der Raspi aufhängt muss man ihn tatsächlich "kalt" neustarten, also Strom ziehen).
Irgendwann ist das mit einem aktuellen Treiber dann gefixt und Vergangenheit.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Dienstag 18. September 2018, 06:31
von irrwisch
Ich glaube mein aktuelles Problem ist ein anderes (wahrscheinlich SD Karte hin)

Der Rpi 3 B+ ist sehr empfindlich was die Spannungsversorgung angeht. Der will stabile 5.1 oder 5.2 V.
Wenn die Spannung unter Last runter geht stürzt er dann gerne ab.
Der funzt fast mit keinem „normalen“ 5V Netzteil. Irgendwann hab ich entnervt das Original Raspberry Netzteil gekauft und damit läuft das Teil.

Vielleicht ist auch das dein Problem. Die Problematik mit der Spannungsversorgung ist auch recht bekannt. Der Pi zeigt oben rechts einen kleinen Blitz an wenn die Versorgungsspannung zu weit runter geht.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Dienstag 18. September 2018, 06:51
von JackFrost
irrwisch hat geschrieben:
Dienstag 18. September 2018, 06:31
Ich glaube mein aktuelles Problem ist ein anderes (wahrscheinlich SD Karte hin)
Ich hab meinen auf Ne USB Festplatte umgestellt da mir die SD Karte wegen zu viel Schreiben kaputt gegangen ist. Leide teilen sich die Festplatte und das Netzwerk den Controller. Mehr als 15 Mib/s sind nicht drin.

Gruß JackFrost

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Dienstag 18. September 2018, 06:55
von irrwisch
Ja ich weiß, SD Karten sind verdammt unzuverlässig.
Eigentlich mag ich den Mist auch nicht.
Hatten auf der Arbeit auch schon massive Probleme mit (industrial grade SLC) SD Karten.

Vllt steig ich mit meiner Brauanlage auch auf nen anderen SBC um. Es gibt mittlerweile schöne Alternativen zum Raspi mit SATA Port. Da kann man dann ne normale SSD dranhängen.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Freitag 21. September 2018, 07:38
von irrwisch
Bei mir war (mal wieder) bloß die SD Karte kaputt. Dieser Consumer Kram ist einfach nicht zuverlässig. Vielleicht lags auch daran, dass CBPI ohne Ende Logfiles schreibt (da kommen schnell hunderte MB zusammen). Eventuell muss ich da mal schauen wie man das abstellen kann..

Jetzt ist auf jeden Fall erstmal alles neu eingerichtet, diesmal mit CraftBeerPi3 statt 2.

@Tozzi: Habe dir auf Github einen Patch gepusht um vom lokalen Server die Daten an CBPI3 weiterzuleiten.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Freitag 21. September 2018, 21:31
von Tozzi
Hab's committed. Danke!
Ich muss mal die Feature Liste überarbeiten. Ist ja doch einiges dazugekommen.

Die SD Karte ist wirklich eine Achillesferse. Es sind nicht nur die Logfiles, es wird auch fleißig geswappt.
Ich benutze grundsätzlich die SD Karten von SanDisk (Ultra). Die sind recht zuverlässig.
Was natürlich hilft, ist, über USB eine billige Hard Disk anzuschließen und Swap sowie Logfiles dorthin auszulagern.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Samstag 22. September 2018, 07:39
von igami
Hallo Stephan,

ist es möglich eine Weiterleitung per MQTT einzubauen?
Ich nutze bei mir FHEM und das wäre dann doch eine schöne Verbindung :)

Grüße
Michael

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Montag 24. September 2018, 19:37
von Tozzi
Hallo Michael,

das ist sicherlich möglich. Ich schau mir das an, sobald ich wieder ein wenig Ruhe habe.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Donnerstag 27. September 2018, 21:35
von barti77
Hi Tozzi,

also zuerst: Vielen Dank für Deinen Einsatz für diese Projekt - wirklich cool! Ich bin leider nicht so bewandert in Sachen Linux und Datenbaken (leider nur Grundkenntnisse). Zu meinem Problem:
Ich habe meine erste iSpindel erfoglreich zusammengesetzt und kalibriert. Die Verbindung zu Ubidots funktioniert einwandfrei. Auch Dein Image läuft gut auf einem Pi und die Daten werden in eine csv Datei geschrieben und an Ubidots weitergeleitet. Unter http://meinePi_IP/iSpindle/ werden alle Diagramme angezeigt, nur leider enthalten die Diagramme keinerlei Daten....

Hast Du einen Tipp was ich falsch mache?

Dank vorab!
Axel

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Donnerstag 27. September 2018, 22:54
von Tozzi
Hi Axel,

hast Du den Namen der Spindel mit angegeben?
Also so z.B.: http://meinePi_IP_IP/iSpindle/plato.php?name=[spindelname]
Ansonsten: Kommen Daten in der Datenbank an?
http://meinePi_IP/phpmyadmin

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Freitag 28. September 2018, 19:48
von barti77
Hi Stephan,

VIELEN DANK - es funktioniert! Der Name der Spindel im URL hat gefehlt - muss ich diesen noch irgendwo hinterlegen in der iSpindle.py ?

Gruss aus der Schweiz!
Axel

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Sonntag 30. September 2018, 13:10
von Tozzi
Nein, den musst Du nirgends hinterlegen.
Der wird nur verwendet um die Daten für die Diagramme auszuwählen.
Daher unbedingt jeder iSpindel einen eindeutigen Namen zuweisen!

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Sonntag 30. September 2018, 14:17
von barti77
Okay - super Danke. Funktioniert einwandfrei!

Gruss,
Axel

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Dienstag 2. Oktober 2018, 06:07
von Tozzi
Falls es jemand testen will:
Die neue Version des Server Scripts ist jetzt auf dem Github verfügbar.
Das README und die INSTALL Anleitungen sind auch angepasst.

Damit kann die iSpindel künftig auch im laufenden Betrieb Änderungen an der Konfiguration empfangen.
Momentan ist das noch limitiert auf das "Intervall" und die passende Firmware hat Sam noch nicht freigegeben.
Wenn das soweit ist, gibt es auch ein neues Image. :thumbup

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Dienstag 2. Oktober 2018, 18:55
von BiBr
Gruß in die Runde.
Ich habe mit dem Bierbrauen Anfang des Jahres angefangen. Klappt soweit ganz gut, zumindest haben sich die Nachbarn, die als Verkoster herhalten müssen, bisher nicht beschwert.
Im Zusammenhang mit den Recherchen zum Bierbrauen bin ich auf die iSpindel gestoßen. Ich habe mir einen Bausatz bestellt zusammengebaut und getestet mit Ubidots. Soweit funktioniert alles.
Nun habe ich mir die Anforderung gestellt, die Daten Local zu halten und auszuwerten. Dabei bin ich auf die Einstellung MQTT gestoßen, die ich ausprobiert habe. Dies funktioniert soweit, allerding erhalte ich nur den Wert tilt.
Eigentlich hatte ich erwartet, dass ich auch die Werte Temperatur, Gravity, Batterie usw. erhalte.
Da sich wirkliche Kenner der Materie in der Runde befinde würde ich gerne die Fragen stellen, mache ich hier etwas falsch, oder habe ich etwas übersehen? Interessieren würde mich wie die Bezeichnungen der Topics für Temperatur, Gravity und Batterie sind? Der Topic für tilt ist wohl ispindel/iSpindel/tilt.
Für Antworten zu diesem Thema wäre ich der Runde sehr dankbar.
Mein Aufbau: PC mit win7, mosquitto als Broker, Fritzbox, iSpindel
Besten Dank im Voraus
Viele Grüße
Otfried

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Dienstag 2. Oktober 2018, 21:22
von Tozzi
Hallo Otfried,

da hast Du Dich ein wenig im Faden geirrt.
Hier geht es um eine lokale Serverlösung auf Basis eines speziellen Python Skripts, prinzipiell plattformunabhängig, aber meist auf einem Raspberry PI im Einsatz.
Es läuft aber auch unter Windows.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Mittwoch 3. Oktober 2018, 08:53
von BiBr
Hallo Stephan,
sorry, habe schon geahnt, dass ich etwas falsch mache. Dass es bereits der Faden ist, konnte ich nicht wissen, da ich hier neu bin. Nichtsdestotrotz, welchen Faden sollte ich bitte aufnehmen?
Danke
Gruß
Otfried

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Mittwoch 3. Oktober 2018, 15:23
von Aeppler
Hallo Otfried,

Hier findest du den entsprechenden threat (Faden). Viel Spaß beim Durchwühlen.

Frag ruhig, alles unproblematisch. In Kombination mit der Forensuche bringt das den gewünschten Erfolg.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Sonntag 7. Oktober 2018, 16:05
von mrhyde
Hallo Stephan,

da es gerade zum Start der Gärung einige Schwankungen beim Winkel und somit der berechnetet Gravity kommen kann habe ich mal einen SQL Select gebastelt, der über einen gewissen Zeitraum (in diesem Fall 1 Stunde / ich sende alle 10 Minuten einen Datenpunkt in die DB) einen gleitenden Mittelwert für den Winkel berechnet. Dabei ergibt sich ein schöner glatter Verlauf des Winkels oder der berechneten Gravity (siehe Bild).
Moving_Average.PNG
Moving_Average.PNG (16.71 KiB) 561 mal betrachtet
Dazu habe ich folgenden Select verwendet und fülle in Wordpress eine Tabelle, wo ich dann Diagramme darstellen kann. Theoretisch müsste das auch mit den sog. Window Funktionen einfacher gehen. Aber meine SQL Version unterstützt das noch nicht.

Code: Alles auswählen

SELECT  Data1.Timestamp, 
        Data1.Angle, 
        Data1.Gravity, 
        Data1.Temperature, 
        (SELECT SUM(Data2.Angle) / COUNT(Data2.Angle) 
        FROM Data AS Data2 
        WHERE TIMESTAMPDIFF(MINUTE, Data2.Timestamp, Data1.Timestamp) BETWEEN 0 and 60 ) AS MV_Angle 
        FROM Data AS Data1 
        WHERE Data1.Timestamp >= (Select max(Data1.Timestamp) FROM Data AS Data1 WHERE Data1.ResetFlag = 1);
Nun würde ich das ganze gerne auch einfach in den php Scripts umsetzen. Dort bin ich aber leider nicht weitergekommen. Wäre es möglich, dass du auch die Option für einen gleitenden Mittelwert in zukünftige Versionen mit einbaust (Angle und Plato4 z.B.)?

Insbesondere beim Winkel sehe ich den Vorteil für eine Kalibrierung, da man nicht auf einen einzelwert angewiesen ist.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Sonntag 7. Oktober 2018, 16:45
von Tozzi
Super, danke!
Das baue ich natürlich ASAP ein!

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Sonntag 7. Oktober 2018, 18:32
von mrhyde
Danke für die schnelle Rückmeldung.

es hat mir einfach keine Ruhe gelassen und ich habe dann den Fehler gefunden. Nun funktioniert es. Es dauert halt ein wenig, bis das Diagramm dargestellt wird.

Ich habe in die common_db_query.php noch zwei weitere Funktionen eingebaut und angle.php bzw. plato4.php noch einmal unter anderem namen in das web verzeichnis kopiert. Dort werden dann die neuen Funktionen (.._ma) aufgerufen.
common_db_query.zip
(2.34 KiB) 8-mal heruntergeladen
Nächster Schritt ist noch einen Parameter zu definieren, wo man die Zeit des gleitenden Mittelwertes per Browser übergeben kann.

Re: iSpindel - Lokaler Server - iSpindle.py

Verfasst: Montag 8. Oktober 2018, 19:36
von mrhyde
Hallo Stephan,

ich habe den SQL select noch einmal leicht angepasst, damit mit der Auswahl 'reset=true' am Anfang nicht der Anstieg im Diagramm wie im Beitrag weiter oben zu sehen ist.
Moving_Average_new.PNG
Moving_Average_new.PNG (22.11 KiB) 460 mal betrachtet

Dazu habe ich die Variable 'where_ma' eingefügt. Unten ist das Beispiel für die Plato4 Berechnung zu sehen.

Vermutlich werde ich noch einen Parameter definieren, wo man das Zeitintervall für den gleitenden Mittelwert in Minuten wählen kann. Dann kann man das entsprechend seinen wünschen anpassen. Derzeit kommt es bei mir ganz gut mit 120 Minuten hin.

Code: Alles auswählen

function getChartValuesPlato4_ma($conn, $iSpindleID='iSpindel000', $timeFrameHours=defaultTimePeriod, $reset=defaultReset)
{
    $isCalibrated = 0;  // is there a calbration record for this iSpindle?
    $valAngle = '';
    $valTemperature = '';
    $valDens = '';
    $const1 = 0;
    $const2 = 0;
    $const3 = 0;
    $where_ma='';
   if ($reset)
   {
   	$where="WHERE Data1.Name = '".$iSpindleID."' 
            AND Data1.Timestamp >= (Select max(Timestamp) FROM Data  WHERE ResetFlag = true AND Name = '".$iSpindleID."')";
	$where_ma="Data2.Timestamp >= (Select max(Data2.Timestamp) FROM Data AS Data2  WHERE Data2.ResetFlag = true) AND";
   }  
   else
   {
   	$where ="WHERE Data1.Name = '".$iSpindleID."' 
            AND Data1.Timestamp >= date_sub(NOW(), INTERVAL ".$timeFrameHours." HOUR) 
            AND Data1.Timestamp <= NOW()";
   }  
   $q_sql = mysqli_query($conn, "SELECT UNIX_TIMESTAMP(Data1.Timestamp) as unixtime, Data1.temperature, Data1.angle,
                           (SELECT SUM(Data2.Angle) / COUNT(Data2.Angle)
							FROM Data AS Data2
                            WHERE "
				.$where_ma
				." TIMESTAMPDIFF(MINUTE, Data2.Timestamp, Data1.Timestamp) BETWEEN 0 and 120 ) AS mv_angle
						    FROM Data AS Data1 " 
                           .$where 
                          ." ORDER BY Data1.Timestamp ASC") or die(mysqli_error($conn));
                     
    // retrieve number of rows
    $rows = mysqli_num_rows($q_sql);
    if ($rows > 0)
    {
     // get unique hardware ID for calibration
     $u_sql = mysqli_query($conn, "SELECT ID FROM Data WHERE Name = '".$iSpindleID."' ORDER BY Timestamp DESC LIMIT 1") or die(mysqli_error($conn));
     $rowsID = mysqli_num_rows($u_sql);
     if ($rowsID > 0)
     {
        // try to get calibration for iSpindle hardware ID
        $r_id = mysqli_fetch_array($u_sql);
        $uniqueID = $r_id['ID'];
        $f_sql = mysqli_query($conn, "SELECT const1, const2, const3 FROM Calibration WHERE ID = '$uniqueID' ") or die(mysqli_error($conn));
        $rows_cal = mysqli_num_rows($f_sql);
        if ($rows_cal > 0)
        {
            $isCalibrated = 1;
            $r_cal = mysqli_fetch_array($f_sql);
            $const1 = $r_cal['const1'];
            $const2 = $r_cal['const2'];
            $const3 = $r_cal['const3'];
        }
     }
     // retrieve and store the values as CSV lists for HighCharts
     while($r_row = mysqli_fetch_array($q_sql))
     {
         $jsTime = $r_row['unixtime'] * 1000;
         $angle = $r_row['mv_angle'];
         $dens = $const1 * pow($angle, 2) + $const2 * $angle + $const3;   // complete polynome from database
                         
         $valAngle         .= '['.$jsTime.', '.$angle.'],';
         $valDens          .= '['.$jsTime.', '.$dens.'],';
         $valTemperature   .= '['.$jsTime.', '.$r_row['temperature'].'],';
     }
     // remove last comma from each CSV
     $valAngle         = delLastChar($valAngle);
     $valTemperature   = delLastChar($valTemperature);
     return array($isCalibrated, $valDens, $valTemperature, $valAngle);
    }
 }