NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@crunchip & (@SBorg )
Erstmal vielen Dank für Deinen klasse View! Bin auch neu mit Grafana und hatte mir echt geholfen da rein zu kommen!
Aber sagt mal, wie habe Ihr in Influxdb denn die Datenaufzeichnung eingestellt? Hatte da grundsätzlich "nur bei Änderungen" aufzeichenen eingestellt. Nun hatte ich aber Nachts auch noch Werte im View für UV-Index von 0,xxx und auch 0,xxxx Watt/m² im Plusbereich... Habe nun mal für entsprechende Datenpunkte "Minimale Differenz zum letzten Wert" auf 0,1 eigestellt - nun schaltet es auch das Licht im View auf NULL...
Anbei mal Screenshots von der Regenrate bevor ich die auf 0,1 geändert hatte - die stand noch auf 0,9 im View obwohl es seit Stunden keinen Niederschlag mehr gab...
Nur Kosmetik und Erbsenzählerei... Heute hatte es in Schleswig-Holstein geschneit und gehagelt (kommt ja mittlerweile selten vor ). Aber macht es vielleicht Sinn die Variabeln/Datenpunkte mal namentlich von Regen auf "Niederschlag" zu ändern...?
-
@lemuba sieht bei mir so aus
-
Ok, habe verstanden... Bei Dir scheint die Sonne noch mind. 30 Minuten länger als bei mir und es wird erst dann Dunkel
Dafür stehe ich aber mit 0,1 nicht so lange im wie DuDarüber muss ich jetzt nochmal schlafen...
-
Ich verstehe gerade nicht den Wert der berechneten Regen-Jahresgenmenge von 4,5mm...? Wird da nicht einfach jede Regenmenge im aktuellen Jahr aufaddiert, müsste also mind. 7.1mm ergeben?
-
@lemuba auch nicht länger als bei dir, es werden bei mir nur Werte zwischen geschrieben, bis eine Änderung eintrifft
Vllt liegt es an deinen Settings in Influx, hab da nen Schreibintervall von 60 sec -
Das verstehe ich gerade nicht - wo hast Du den Schreibintervall von 60 Sek. eingestellt? Kann ja eigentlich nur in der wetterstation.sh sein? Somit kommen dann im Broker alle 60 Sek. die aktualisierten Werte an.
Ich interpretiere Deine Einstellungen dann wie folgt:
Wenn Du dann im influxdb Adapter 1800 eigestellt hast, kann Folgendes passieren:- UV Index bei Sonnenuntergang 0,9, aber ggf. erst 1800Sek,/eine halbe Stunde später, die aktualisierten Werte (Null, weil Nacht) in influxdb und somit in der Grafana Anzeige/View...?
Edit: Sehe gerade, im influxdb Adapter kann man auch noch einen Schreibintervall entstellen - verstehe nur gerade noch nicht die Gesamtzusammenhänge...
-
@lemuba Grafana selbst hat einen einstellbaren Schreibintervall.
Den Schreibintervall deiner InfluxDb stellst du in der Instanz selbst ein. Dort könntest du auch einstellen, Werte sammeln und nur alle x Minuten zu senden.
Die 1800sec ist die Zeit, indem zusätzlich ein Wert geschrieben wird, falls sich über längeren Zeitraum der eigentliche Wert nicht ändern sollte. -
Ok, gesehen - aber Du meinst sicherlich "Influxdb" selbst hat einen einstellbaren Schreibintervall...?
Weil Grafana selber liest doch nur aus Influxdb...? -
@lemuba sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Nur Kosmetik und Erbsenzählerei... Heute hatte es in Schleswig-Holstein geschneit und gehagelt (kommt ja mittlerweile selten vor ). Aber macht es vielleicht Sinn die Variabeln/Datenpunkte mal namentlich von Regen auf "Niederschlag" zu ändern...?
Jein. Einen Datenpunkt benennt man möglichst nicht mehr um, gerade wenn es eigentlich nur Kosmetik ist. Denk da mal an die ganzen Javascripte, Blocklys, VIS... die da ggf. von den Usern darauf schon verweisen. Die müssten dann alle geändert werden.
Aber in der wetterstation.conf kann sich ja jeder die Datenpunkte benennen wie er möchte.So heißen aber nur rein die Datenpunkte, denn wie du es in der Anzeige (VIS, Grafana...) benennst ist ja völlig unabhängig davon. So könnte der reine Datenpunkt auch "Käsekuchen" heißen, in der VIS lässt du dann "Kirschtorte" anzeigen und in Grafana "Schweinshaxe mit Sauerkraut"
Die Benennung dort ist nur dazu da, um die Datenpunkte eindeutig identifizieren zu können. Wären die bspw. durchnummeriert, könnte man mit Messwert #11 wahrscheinlich erst mal recht herzlich wenig anfangen.
Ändere also einfach in Grafana die Bezeichnungen auf Niederschlagsmenge und alles ist gut@lemuba sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ich verstehe gerade nicht den Wert der berechneten Regen-Jahresgenmenge von 4,5mm...? Wird da nicht einfach jede Regenmenge im aktuellen Jahr aufaddiert, müsste also mind. 7.1mm ergeben?
Nur wenn das Skript genau so lange läuft wie die Station. Wenn die Station bspw. schon einen Tag die Regenmenge sammelte, schreibt sie die Jahresregenmenge um 0:00 Uhr und nullt die Tagesmenge. Lässt du nun das Skript laufen fängt es bei 0mm an, die Station hat aber schon einen "Vorsprung" durch den 1. Wert.
Du müsstest also einmalig die kumulierte Jahresregenmenge korrekt setzen (also auf 7.1 mm). Ab dann kann erst die Berechnung stimmen, da der bis dahin gefallene/gemessene Regen schlichtweg fehlt. siehe auch im WiKi -
Super, Danke! Die FAQ im WIKI hatte ich leider übersehen.
Ich lass meine VM/Dietpi nun mal ein paar Tage durchlaufen und schaue ob das Script stabil ohne Crontab/reboot arbeitet.
-
Ich bin jetzt von der Raspberry auf die Synology VMM umgezogen ( DietPi ) und es funktioniert alles.
Was mich stutzig macht ist der pkill Befehl mit dem Prozessnamen , er killt den Prozess nicht :
pkill -9 wetterstation.sh
Andere Befehle wie kill , killall , oder pkill -9 wetterstation .* gehen auch nicht .
laut Ausgabe von ps -e , läuft der Prozess immer noch und die Daten werden empfangen /gesendet .
.
Erst wenn der Befehl mit dem Namen wetterstation.s ausgefüht wird , ist der Prozess auch gekillt .
pkill -9 wetterstation.s
Dieses habe ich auch auf der Raspberry ausprobiert und auch dort das gleiche .
Hier sind zwei verschiedene Systeme und bei beiden das gleiche ....!!?
Kann das sein , das es dann so richtig ist wie ich es rausgefunden habe oder !!?? -
Auf meiner Dietpi VM funktioniert killall einwandfrei, allerding ohne den parameter -9 wie ich meine.
Also >killall wetterstation.shpkill dagegen funktioniert nicht.
Starten tue ich das Script nach Ende des Bootvorgangs wie hier beschrieben:
https://forum.iobroker.net/post/402255Ich wollte auch nochmal im Ibroker ein Blockly basteln, welches den Zeitstempel auf Änderungen prüft und dann ggf. über exec die wetterstation.sh neu startet und mir darüber ggf. auch ne Telegram Nachricht sendet.
https://forum.iobroker.net/topic/2892/ssh-befehle-als-skript-in-iobroker-ausführen/5
-
@Glasfaser Eigentlich sollte es wetterstation.sh heißen. Da sich Linux aber nicht sehr für die Endungen interessiert, läuft es trotzdem auch wenn die Endung nur "s" ist. Wahrscheinlich hast du in der crontab beim starten einfach das "h" vergessen.
Dann müssen aber auch die Aufrufe mit wetterstation.s und nicht wetterstation.sh erfolgen
Dann der nächste Fallstrick: "kill" funktioniert nur mit den PIDs (=Nummer bei Ausgabe durch ps), nicht mit den Prozessnamen
killall wetterstation.sh sollte aber immer funktionieren. "-9" funktioniert allerdings nicht (steht oben irgendwo falsch, sorry), dass müsste -s 9 lauten, ist aber eh die Standardeinstellung, kann man also weglassen.
...und um es noch verwirrender zu machen: pkill funktioniert nicht mit dem Asterisk wenn man im Verzeichnis mit dem Shell-Skript steht. Wenn also bspw. die wetterstation.sh in /home/iobroker liegt und ihr steht im Verzeichnis /home/iobroker, funktioniert ein "pkill -9 wetterstation.*" nicht!Alle noch ggf. vorhandenen restlichen Klarheiten beseitigt?
...und nein, ist echt kein Aprilscherz -
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
..und nein, ist echt kein Aprilscherz
Nein .. ist wirklich kein Aprilscherz !!!
Das war mein Fehler mit " pkill -9 wetterstation .* gehen auch nicht ." ich stand im Verzeichniss , habe ich vergessen zu wechseln beim Testen ......
Ich habe es auf der Synology neu aufgesetzt und natürlich keine Rechtschreibfehler im Cronetab wie das "h" vergessen .
Deshalb habe ich es mir auf der Raspberry angeschaut und dort das gleiche .
Der Prozess kommt immer mit " wetterstation.s "
.
.
@lemuba
mit crontab -e funktioniert der Eintrag bei mir ( starten und auch pkill )@reboot /home/iobroker/wetterstation.sh & 2 0 * * * pkill -9 wetterstation.* && /home/iobroker/wetterstation.sh &
-
@Glasfaser sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Nein .. ist wirklich kein Aprilscherz !!!
Ich meinte auch nicht dich, sondern meine Antwort
@Glasfaser sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Der Prozess kommt immer mit " wetterstation.s "
Nicht immer, kommt auf deinen "ps" an (bzw. die Parameter). Standardmäßig schneidet der nach 15 Zeichen die Ausgabe (ist eine Tabelle) ab, deswegen fehlt dein "h". Ich hätte jetzt nach der Ausgabe von
ps -aux | grep wetter
gefragt, denn da schneidet er nix ab und deswegen steht da auch korrekt wetterstation.sh.Warum aber es 1x mittels crontab funktioniert und mal nicht, ehrlich gesagt keine Ahnung, aber DietPi & Co. sind halt abgespeckte Linux-Varianten. Da kenne ich mich nicht wirklich damit aus
-
ist ja nur witzig das der Prozess nicht gekillt wir mit pkill -9 wetterstation.sh sondern nur mit pkill -9 wetterstation.* .
Aber Egal ... es funktioniert alles auf der Synology VMM mit DietPi ,
so spare ich mir eine Raspberry .Danke @SBorg für die Aufklärung
-
Habe dann eben mal die V1.0.1 alpha released. Läuft seit 1 Woche absolut stabil. Warum alpha? Nun, sie macht nix kaputt, aber mangels Regen konnte ich die neue Funktion auch nicht testen. Die wäre dann aber binär: tut, oder tut halt eben nicht
Neuerung: Regenstatus
Die Stufen sind (noch) fest hinterlegt, wenn ihr die konfigurierbar wollt sagt Bescheid- =0 l/m² in einer Stunde = --
- <1 l/m² in einer Stunde = leichter Regen
- <4 l/m² in einer Stunde = mäßiger Regen
- <10 l/m² in einer Stunde = starker Regen
- >=10 l/m² in einer Stunde = Starkregen
Da es einen neuen Datenpunkt gibt, alle Dateien ersetzen, conf konfigurieren + js ersetzen und einmalig ausführen
-
@Glasfaser sagte in [Linux Shell-Skript] WLAN-Wetterstation:
ist ja nur witzig das der Prozess nicht gekillt wir mit pkill -9 wetterstation.sh sondern nur mit pkill -9 wetterstation.* .
Kann ich mir eigentlich nur so erklären, dass der pkill bei DietPi geringfügig (man erinnere sich nur an nc) anders arbeitet und bei wetterstation.sh nur den einen Prozess erwischt (den von netcat, nur wird der alle xx Sekunden neu gestartet). Bei "*" macht er halt alles platt, was ja durch die Angabe des Asterisk eigentlich auch gewollt ist.
-
Wollte nur mal eben umziehen .... aber das daraus soetwas wird habe ich mir nicht gedacht .
Aber Ende des Liedes .... es funktioniert .
Und danke nochmal für deine Unterstützung
-
@Glasfaser sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Wollte nur mal eben umziehen ....
"nur, schnell, kurz..." sind Begriffe die ich im Bereich der EDV/IT schon lange nicht mehr benutze
"Schatz, nur schnell noch was checken..." 2h später: "Kommst du jetzt endlich..."
...und immer gerne