NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@Rushmed Na supi
Dann ist es wie ich es mir schon dachte. Im 30 Sekunden-Takt genügt ja auch (Batterielebensdauer), aber trotzdem blöd, dass man dann in der APP auch bis zu 16 Sekunden runter stellen kann. Ich ändere dann mal das Mindestintervall auf 30 Sekunden ab. -
Sagt mal was ist denn jetzt die schlauste Art meine Wetterdaten zu loggen wenn ich die immer am Jahresende in Excel aufbereiten will?
Mit dem History Adapter sehe ich da noch keinen Weg. -
@Rushmed
ich verwende den Datenexport von weathercloud, komprimiere je Tag und je Monat und erstelle so die Jahres/Monats/Tagesstatistiken und Verläufe -
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Eine Möglichkeit wäre, wenn es bspw. immer um 23:59, 0:00 oder 0:01 auftritt (also regelmäßig), dass Skript anzuhalten und neu zu starten:
crontab -e
unter "@reboot /home/iobroker/wetterstation.sh &" noch eine weiteren cronjob anfügen:
2 0 * * * pkill -9 wetterstation.* && /home/iobroker/wetterstation.sh &
(wieder darauf achten, dass noch eine Leerzeile folgt!)
speichern --> fertig
also etwa so:> @reboot /home/iobroker/wetterstation.sh & > 2 0 * * * pkill -9 wetterstation.* && /home/iobroker/wetterstation.sh &
/home/iobroker natürlich anpassen, 2 0 * * * ggf. anpassen, bedeutet "jeden Tag um 0:02 Uhr"
funktioniert tadellos, seither keine Verbindungsabbrüche mehr
-
@Latzi Dann kommt das so ins WiKi.
Ich hätte ja noch gerne den Batteriestatus, aber der wird leider nicht übertragen (was sollte auch Wunderground mit diesem "Messwert" anfangen...?).
Mir schwebt aber noch ein DP ala "Kommunikationsfehler" vor. Wenn bspw. 5x hintereinander keine korrekten Messwerte übertragen wurden, wird der DP "true". Dann kann man darauf triggern und in der VIS anzeigen lassen oder was auch immer...
So bekäme man bspw. auch zeitnah leere Batterien mit -
@SBorg gute Idee
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Wenn bspw. 5x hintereinander keine korrekten Messwerte übertragen wurden
PS: Das setzt voraus, dass nc durchlaufen wird, ich bin mir nicht sicher was eigentlich gegen Mitternacht passiert, wenn keine Daten mehr kommen.
-
@Latzi Ich habe da schon ein Konstrukt. Aktuell starte ich 5 Sekunden vor dem Ende des Poll-Intervalls den nc. Kommt ein Datenpaket (egal ob gültig oder nicht) beendet sich der nc von alleine und die empfangenen Daten werden ausgewertet.
Meine neue Idee ist nun, dass ich den nc nur max. 10 Sekunden laufen lasse und dann automatisch beende. Dabei gibt es zwei Szenarien:- es kommt innerhalb der 10 Sekunden ein Datenpaket
- es kommt kein Datenpaket und der nc wird terminiert
Ich prüfe nun das Datenpaket, ob es zB. "/weatherstation/updateweatherstation.php?ID=[Bezeichnung]" enthält, dann dürfte es zumindest ein Datenpaket mit Wetterdaten sein (ev. wird alle zz Stunden xyz geschickt, wann und wohin uns nicht interessiert) und ob es eine Mindestlänge von 400 Zeichen (je nach ID, Passwortlänge + Messwerten sind +/- 430 Zeichen normal) hat.
-
@Rushmed sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Sagt mal was ist denn jetzt die schlauste Art meine Wetterdaten zu loggen wenn ich die immer am Jahresende in Excel aufbereiten will?
Mit dem History Adapter sehe ich da noch keinen Weg.Ich nutze dafür eine influxDB. Das kann man auch schön visualisieren, hinein/hinaus zoomen, scrollen usw (mangels Wetterstation halt mit den Daten):
Die Daten kann man sich dann komfortabel "von bis" zB. als CSV exportieren, sortieren,...
-
Hi,
habe meine Sainlogic heute bekommen und wollte gleich mal in ioBroker einbinden.
Leider bekomme ich bei der Scriptausführung eine Fehlermeldung wo ich nicht weiter weiß.Listening on [0.0.0.0] (family 2, port 8096) nc: getnameinfo: Temporary failure in name resolution (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error
Einstellungen alles laut Wiki und dennoch wir die Wetterstation anscheinend nicht erreicht.
Am RaspPi 4 läuft der ioBroker und auch das Script.Hoffe jemand kann mir auf die Sprünge helfen.
ERLEDIGT:
Der DNS Eintrag des Raspberry Pi war ein externer server. Nachdem ich nun noch meine Router IP in den DNS-Eintrag dazugefügt habe, findet nc nun die Wetterstation und es kommen Daten an!Grüße
Tritor -
@SBorg
Das sieht sehr nice aus, gibts da ne gute Anleitung?
Hab influxDB inkl. ioBroker Adapter (grün) jetzt laufen aber im FLOT kommen keine Werte an. -
@tritor sagte in [Linux Shell-Skript] WLAN-Wetterstation:
ERLEDIGT:
Der DNS Eintrag des Raspberry Pi war ein externer server. Nachdem ich nun noch meine Router IP in den DNS-Eintrag dazugefügt habe, findet nc nun die Wetterstation und es kommen Daten an!Sehr gut! Welche Wetterstation?
-
@Rushmed
Sainlogic 7 in 1 WiFi Weather Station, Model WS3500 -
@Rushmed sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@SBorg
Das sieht sehr nice aus, gibts da ne gute Anleitung?
Hab influxDB inkl. ioBroker Adapter (grün) jetzt laufen aber im FLOT kommen keine Werte an.Das ist mittels Grafana erstellt und wird dann wie FLOT als iFrame dargestellt. Anleitung hatte ich keine, hab es nach dem "try and error"-Prinzip gelernt
@crunchip hat da auch mal was in Grafana gebaut: https://forum.iobroker.net/post/356736bzgl. Daten: Aaarrrgghh, hab den k*ck schon befürchtet. Der History-Adapter schreibt schon nix wenn ack=false ("bestätigt"), der InfluxDB auch...
Die Daten einzeln in den ioB zu schreiben dauert einfach zu lange (da geht ack=true). Per iobroker setstate... geht es ebenfalls, dauert aber auch wieder zu lange (15x aufrufen). Bliebe noch es direkt in die InfluxDB zu schreibenWer einen (auch kostenlosen) GitHub-Acc hat, kann auch gerne voten, bei genügend Interesse passiert auch was^^:
https://github.com/ioBroker/ioBroker.simple-api/issues/29 -
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
bzgl. Daten: Aaarrrgghh, hab den k*ck schon befürchtet. Der History-Adapter schreibt schon nix wenn ack=false ("bestätigt"), der InfluxDB auch...
Die Daten einzeln in den ioB zu schreiben dauert einfach zu lange (da geht ack=true). Per iobroker setstate... geht es ebenfalls, dauert aber auch wieder zu lange (15x aufrufen). Bliebe noch es direkt in die InfluxDB zu schreibenÜber History bekomm ich in FLOT Daten, aber halt mit influx nicht!?
-
"Lustig", dann muss sich in letzter Zeit etwas geändert haben. Aber die Influx bleibt bei mir auch leer. Er legt zwar die Serie an, schreibt aber keinerlei Daten hinein. Setze ich den DP mittels iobroker state set "javascript.0...." 123 true geht es (true entspricht ack=true).
Die neue V0.1.2 steht bald zum Beta-Test bereit. Die muss vorher getestet werden, da ich hier ohne Station nicht mehr sicher bin ob auch alles funktioniert und es nicht mehr simulieren kann.
-
Bei mir funzt influx jetzt, die Daten kommen an. Ich hatte nen Fehler gemacht.
-
Hallo,
Ich habe IoBroker auf einer Synology DS im Doker (Image Buanet) laufen und wollte jetzt meine Wetterstation (Sainlogic WS3500) direkt abfragen.
Hab mal die ersten Schritte nach der Anleitung auf github installiert.
Bei der Installation von bc mit "sudo apt-get install -y bc" kommt immer die Meldung "Paket bc kann nicht gefunden werden".
Was mache ich da falsch? -
Es klappt wunderbar mit der Froggit WH4000 SE.
Lediglich der Zeitstempel passt nicht, aber das liegt an der Quelle.
Vielen Dank für das Skript. -
@gerald123 Das wird dann schwierig. "bc" gibt es dann nicht für die Synology/Distri. Ohne geht es aber nicht, denn damit wird die Umrechnung der Maßeinheiten auf das metrische System durchgeführt. Versuche mal im Terminal "gcc" ob da was passiert. Wenn das funktioniert, oder es sich nachinstallieren lässt, könntest du aus den Quellen von "bc" mit einem Befehl dir bc für die Synology selbst "bauen". https://www.gnu.org/software/bc/ und http://www.c-howto.de/tutorial/einfuehrung/compiler/linux/
-
@SBorg Danke für den Vorschlag werde ich am Abend mal Testen.
Kann ich nicht die Umrechnung erst im IoBroker machen und dadurch den bc Befehl weglassen?