• Du musst dich registrieren, bevor du Beiträge verfassen kannst. Klicke auf Jetzt registrieren!, um den Registrierungsprozess zu starten. Registrierte User surfen werbefrei, können Suchen durchführen und sehen die volle Darstellung des Forums!!!

Browser IOT-Fernvisualisierung Platformunabhängig

satdast

Militanter Veganer
Hallo zusammen,

da ich schon länger von einen Bekannte gelöchert wurde, habe ich mir erlaubt per Python und Cronjob eine Fernvisualisierung per Initialstate zu basteln.

Übertragen werden nur die aktiven Sensoren ohne Fehler bzw. aktive Pitmaster.

Zu finden ist das ganze unter Github https://github.com/satdast/WlanThermoInitialstate.

das ganze jede minute aufgerufen ergibt eine ganz ansehnliche Visu.
2017-08-31 15_25_31-WlanThermo – Initial State.png


Nachtrag:
Der Gratis Account visualisiert die letzten 24h danach werden die Daten automatisch gelöscht!

Die Idee dahinter war die, dass wir keine Türe des Heimnetzwerkes öffnen wollten und somit pushen wir die Daten auf eine IOT-Plattform.


LG und viel Spass damit.
 

Anhänge

  • 2017-08-31 15_25_31-WlanThermo – Initial State.png
    2017-08-31 15_25_31-WlanThermo – Initial State.png
    61,8 KB · Aufrufe: 500
OP
OP
satdast

satdast

Militanter Veganer
Die Ausgabe erfolgt im Browser, und ist passiv.
d.h.: die Daten werden vom WlanThermo an die Plattform gesendet, so müssen keine Freigaben am eigenen Netzwerk eingerichtet werden. Die initiale Idee hab ich von einem Freund dem wir einen WlanThermo zum Geburtstag geschenkt hatten er mach gerne Longjobs und ist dabei öfter mal mit dem Boot auf dem See, und wollte eine Visu auf dem Boot haben. Er hat aber von IT keine Ahnung und möchte sein Netzwerk nicht anrühren.

Zur Implentierung:
Vorbereitung:
das ganze funktioniert so, dass bei Initialstate ein Konto eröffnet werden muss.
Hier reicht die kostenlose Variante völlig aus.

Danach muss noch ein sogenanntes Bucket angelegt werden. Bei mir hat es den Namen "WlanThermo".
2017-09-03 06_04_01-WlanThermo.png


In den Bucket settings sind dann die AccesKeys zu finden. diese benötigen wird dann im Script.
2017_09_03_05_43_11_WlanThermo.png

Die Seite bleibt vorerst noch leer, die die Datenfelder bei Standardeinstellung automatisch generiert werden.

Danach eine Datei mit dem Namen WlanThermoInitialstate.py erzeugen und den Code reinkopieren.

Jetzt müssen wir noch die Daten des StreamBuckets in das Script eingeben.
Code:
# --------- User Settings ---------
BUCKET_NAME = "xxxxxxxxx"
BUCKET_KEY = "xxxxxxxx"
ACCESS_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxx"
einfach per Copy Paste die xxxxx Sequenzen ersetzen.

Das war es jetzt mit der Vorbereitung, jetzt folgt die Implementierung.

Mit WinSCP oder einem ähnlichen Tool wird die Datei, dann in das Verzeichniss /home/pi hochgeladen.

danach ein Terminal öffnen:
und folgenden Befehl ausführen um die nötigen Module nach zu installieren:
Code:
sudo \curl -sSL https://get.initialstate.com/python -o - | sudo bash
Diese Befehl installiert die Schnittstelle zu Initialstate.

Das Script kann jetzt mit diesem Befehl getestet werden:

Code:
python /home/pi/WlanThermoInitialstate.py
Nach dem Ausführen sollten im Bucket die ersten Felder sichtbar werden.
Dies sollte auch ohne Fühler funktionieren, da ja die CPU-Auslastung und Temperatur auch übertragen werden.

Jetzt müssen wir noch den WlanThermo dazu bringen, dass er das Script regelmäßig aufruft:
mit
Code:
sudo crontab -e
öffnen wir den Editor für die Zyklischen aufrufe.

hier muss folgende Zeile eingefügt werden:

Code:
* * * * * /usr/bin/python /home/pi/WlanThermoInitialstate.py

speichern und schließen und das ganze sollte funktionieren.:-)

Jetzt kann nach belieben die Seite eingerichtet werden.
Meine PC Ansicht:
HMI_PC-Browser.png


sieht am Smartphone dann so aus:

Screenshot_20170903-063126.png
 

Anhänge

  • 2017_09_03_05_43_11_WlanThermo.png
    2017_09_03_05_43_11_WlanThermo.png
    30,6 KB · Aufrufe: 469
  • 2017-09-03 06_04_01-WlanThermo.png
    2017-09-03 06_04_01-WlanThermo.png
    23,8 KB · Aufrufe: 479
  • HMI_PC-Browser.png
    HMI_PC-Browser.png
    57,5 KB · Aufrufe: 508
  • Screenshot_20170903-063126.png
    Screenshot_20170903-063126.png
    132,4 KB · Aufrufe: 469
OP
OP
satdast

satdast

Militanter Veganer
Ich habe gerade noch eine Optimierung in Abreit da ich es geschafft habe die Anzahl der Freien Events zu sprengen. Ich werde das ganze nochmals von vorne Angehen und die Daten nur bei Änderung übertragen. Damit nicht so viele Events generiert werden .

Also wer das Verwenden möchte den bitte ich noch um etwas Geduld.:whip:
 

Bjoern

Grillkaiser
10+ Jahre im GSV
Und ich hatte gestern noch gerechnet und gedacht dass man da ja nicht allzu weit mit kommt.
 
OP
OP
satdast

satdast

Militanter Veganer
So jetzt, habe ich das ganze nochmals von vorne gestartet.

Es gibt jetzt 2 Dateien welche auf den Pi kopiert werden müssen.
im Readme.md sind noch ein paar Infos zu finden.

die 1. WlanThermoInitialstate.py ist das Pythonscript wie besprochen
die 2. WlanThermoInitialstate.cfg beinhaltet verschiedene Einstellungen für das Script. Wie zum Beispiel die Streaming Access Codes.

eine 3. Datei wird beim 1. Aufruf des Scripts angelegt. Dies ist der Zwischenspeicher des Script um die Änderungen zu erkennen.

Zu finden ist das ganze unter Github https://github.com/satdast/WlanThermoInitialstate.

Also viel Spass damit.
 

Makkoo

Fleischesser
5+ Jahre im GSV
Hi,
erstmal gute Arbeit!
Ich habe dieses Skript gestern getestet und da lief es ohne Probleme heute habe ich die neue Version von github geladen und installiert und nun bekomme ich folgende Fehlermeldung:
pi@wlanthermo:~ $ python /home/pi/WlanThermoInitialstate.py
File "/home/pi/WlanThermoInitialstate.py", line 92
SyntaxError: Non-ASCII character '\xc3' in file /home/pi/WlanThermoInitialstate.py on line 92, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details


In der cfg habe ich alles eingetragen wie bei alten Version :
[Initialstate]
BUCKET_NAME = "Wlanthermo"
BUCKET_KEY = "UKM3C....."
ACCESS_KEY = "woGduGb2g0RGodl......"

[Local]
Temp_File = ./WTdata.json

[Options]
notSendCPU = FALSE
notSendPit = FALSE

[WlanThermo]
URL = http://localhost/app.php


Ich würde mich über ein Antwort freuen
 

Bjoern

Grillkaiser
10+ Jahre im GSV
Schreibe mal:
Code:
# coding=utf-8
in die 2. Zeile am Anfang der .py Datei.
 

Makkoo

Fleischesser
5+ Jahre im GSV
Schreibe mal:
Code:
# coding=utf-8
in die 2. Zeile am Anfang der .py Datei.

habe ich gemacht:
jetzt erscheint dies hier:

pi@wlanthermo:~ $ python /home/pi/WlanThermoInitialstate.py
File not exists!
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 253 , in __ship_buffer
self.ship_messages(messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 186 , in ship_messages
self.ship_to_api("/api/events", messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 160 , in ship_to_api
__ship(3)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 157 , in __ship
raise ex
Exception: ship exception

Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 253 , in __ship_buffer
self.ship_messages(messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 186 , in ship_messages
self.ship_to_api("/api/events", messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 160 , in ship_to_api
__ship(3)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 157 , in __ship
raise ex
Exception: ship exception

Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 164 , in __create_bucket
self.ship_to_api("/api/buckets", {'bucketKey': new_bucket_key, 'bucketName': new_bucket_name})
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 160 , in ship_to_api
__ship(3)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 157 , in __ship
raise ex
Exception: ship exception

Exception in thread Thread-9:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 253 , in __ship_buffer
self.ship_messages(messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 186 , in ship_messages
self.ship_to_api("/api/events", messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 160 , in ship_to_api
__ship(3)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 157 , in __ship
raise ex
Exception: ship exception

Exception in thread Thread-8:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 253 , in __ship_buffer
self.ship_messages(messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 186 , in ship_messages
self.ship_to_api("/api/events", messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 160 , in ship_to_api
__ship(3)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 157 , in __ship
raise ex
Exception: ship exception
Exception in thread Thread-11:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 253 , in __ship_buffer
self.ship_messages(messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 186 , in ship_messages
self.ship_to_api("/api/events", messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 160 , in ship_to_api
__ship(3)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 157 , in __ship
raise ex
Exception: ship exception
Exception in thread Thread-7:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 253 , in __ship_buffer
self.ship_messages(messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 186 , in ship_messages
self.ship_to_api("/api/events", messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 160 , in ship_to_api
__ship(3)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 157 , in __ship
raise ex
Exception: ship exception



Exception in thread Thread-6:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 253 , in __ship_buffer
self.ship_messages(messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 186 , in ship_messages
self.ship_to_api("/api/events", messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 160 , in ship_to_api
__ship(3)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 157 , in __ship
raise ex
Exception: ship exception

Exception in thread Thread-4:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 253 , in __ship_buffer
self.ship_messages(messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 186 , in ship_messages
self.ship_to_api("/api/events", messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 160 , in ship_to_api
__ship(3)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 157 , in __ship
raise ex
Exception: ship exception

Exception in thread Thread-5:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 253, in __ship_buffer
self.ship_messages(messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 186, in ship_messages
self.ship_to_api("/api/events", messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 160, in ship_to_api
__ship(3)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 157, in __ship
raise ex
Exception: ship exception

Exception in thread Thread-12:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 253, in __ship_buffer
self.ship_messages(messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 186, in ship_messages
self.ship_to_api("/api/events", messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 160, in ship_to_api
__ship(3)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 157, in __ship
raise ex
Exception: ship exception

Daten senden nicht moeglich!
Exception in thread Thread-10:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 253, in __ship_buffer
self.ship_messages(messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 186, in ship_messages
self.ship_to_api("/api/events", messages)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 160, in ship_to_api
__ship(3)
File "/usr/local/lib/python2.7/dist-packages/ISStreamer/Streamer.py", line 157, in __ship
raise ex
Exception: ship exception

Ist dies Korrekt?
 

Bjoern

Grillkaiser
10+ Jahre im GSV
In Zeile 121
Code:
streamer = Streamer(bucket_name=BUCKET_NAME, bucket_key=BUCKET_KEY, access_key=ACCESS_KEY)
zu
Code:
streamer = Streamer(bucket_name=BUCKET_NAME, bucket_key=BUCKET_KEY, access_key=ACCESS_KEY, debug_level=1)
ändern. Danach purzelt vielleicht eine etwas sinnvollere Meldung raus.
 
OP
OP
satdast

satdast

Militanter Veganer
@Makkoo,
sorry für die Verzögerung!
der Fehler liegt in der Config. Ich hatte selbst den gleichen Fehler gemacht. :oops:

lösch mal die " in der Konfig raus
und ändere den Pfad für die Zischenspeicherdatei nach /home/pi/WTdata.json

Zusätzlich gibt es noch ein Update in der ScriptDatei.
Diese bitte neu laden.

so sollte das dann aussehen.
Code:
[Initialstate]
BUCKET_NAME = Wlanthermo
BUCKET_KEY = UKM3C.....
ACCESS_KEY = woGduGb2g0RGodl......

[Local]
Temp_File = /home/pi/WTdata.json

[Options]
notSendCPU = FALSE
notSendPit = FALSE

[WlanThermo]
URL = http://localhost/app.php

Sorry ich hatte vergessen darauf hin zu weisen.
Die Readme.md habe ich entsprechend ergänzt.

@Bjoern,

Danke für die Korrektur. Ist bereits gemerged.
 
Oben Unten