NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@thomas-braun sagte in [Linux Shell-Skript] WLAN-Wetterstation:
getfacl /home/iobroker/wetterstation.sh
pi@pi-iobroker:/home/iobroker $ ls -la insgesamt 128 drwxr-xr-x 4 iobroker iobroker 4096 Okt 5 09:44 . drwxr-xr-x 4 root root 4096 Okt 4 16:56 .. -rw-r--r-- 1 iobroker iobroker 220 Apr 18 2019 .bash_logout -rw-r--r-- 1 iobroker iobroker 3523 Mai 7 16:42 .bashrc drwx------ 3 iobroker iobroker 4096 Okt 5 07:45 .config drwxr-xr-x 4 iobroker iobroker 4096 Okt 5 09:56 .npm -rw-r--r-- 1 iobroker iobroker 807 Apr 18 2019 .profile -rw-r--r-- 1 iobroker iobroker 5738 Okt 5 07:49 wetterstation.conf -rwxr-xr-x 1 iobroker iobroker 14766 Okt 5 07:42 wetterstation.sh -rw-r--r-- 1 iobroker iobroker 63070 Okt 5 07:42 wetterstation.sub -rwxr-xr-x 1 iobroker iobroker 8421 Okt 4 17:11 ws_updater.sh pi@pi-iobroker:/home/iobroker $ file wetterstation.sh wetterstation.sh: Bourne-Again shell script, UTF-8 Unicode text executable, with CRLF line terminators pi@pi-iobroker:/home/iobroker $ dos2unix wetterstation.* -bash: dos2unix: Kommando nicht gefunden. pi@pi-iobroker:/home/iobroker $ ls -la /home/iobroker/wetterstation.sh -rwxr-xr-x 1 iobroker iobroker 14766 Okt 5 07:42 /home/iobroker/wetterstation.sh pi@pi-iobroker:/home/iobroker $ getfacl /home/iobroker/wetterstation.sh getfacl: Entferne führende '/' von absoluten Pfadnamen # file: home/iobroker/wetterstation.sh # owner: iobroker # group: iobroker user::rwx group::r-x other::r-x Skript SH_VER="V2.9.0" CONF_V="V2.8.0" SUBVER="V2.9.0" #Installationsverzeichnis feststellen DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" #Config-Version prüfen VER_CONFIG=$(cat "${DIR}/wetterstation.conf"|grep '### Setting'|cut -d" " -f3) if [ $CONF_V != $VER_CONFIG ]; then echo -e "wetterstation: \e[31mERROR #000 - Config-Version mismatch!\n" echo -e "benutzt: $VER_CONFIG\t benötigt wird: $CONF_V$WE" exit 1 fi #Sub-Version prüfen SUB_CONFIG=$(cat "${DIR}/wetterstation.sub"|grep '### Subroutinen'|cut -d" " -f3) if [ $SUBVER != $SUB_CONFIG ]; then echo -e "wetterstation: \e[31mERROR #001 - Subroutinen-Version mismatch!\n" echo -e "benutzt: $SUB_CONFIG\t benötigt wird: $SUBVER$WE" exit 1 fi
MfG
Wastl -
@langer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
UTF-8 Unicode text executable, with CRLF line terminators
Das sollte auf Unix-Format umgestellt werden. Die Zeilensprünge sind zwischen Windows und Unix unterschiedlich.
Und bitte nochmal genau in die erste Zeile des skripts schauen, für gewöhnlich ist da die sog. shebang aufgeführt.
#! /bin/bash
sollte da drin wohl stehen.
-
-
@langer Das ist wohl den meisten schon mal passiert. Du hast die Datei wahrscheinlich mal mit einem Windows-Editor zumindest betrachtet (oder editiert) und dann gespeichert.
Das geht natürlich auch unter Windows, nur sollte man dann den passenden Editor nutzen. Ich nehme gerne den Notepad++
Der belässt die Datei im Ursprungsformat (Linux mit LF) bzw. kann sie mit Bordmitteln auch wieder gerade rücken
-
@langer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Nach dos2unix funktioniert alles!!!!!
1000 mal Danke..
MfG
WastlFreut mich. Habe nicht daran gedacht, dass man dos2unix nachinstallieren muss. Aber damit funktioniert es meistens.
-
Mal ein "kleineres" Update unter der Haube
Ich habe versucht so ziemlich alles nachzustellen und zu berücksichtigen, aber ich kann halt nicht alle Linux-Distris berücksichtigen (nutze aber nur Standards, sollte also mit jeder funktionieren). Es kann also durchaus noch haken und irgendwann habe ich auch leicht den Überblick verloren was ich schon getestet habe oder ev. vergessen habe.
So unscheinbar es auch aussieht, war es, gerade wegen der ganzen Testerei, doch ein klein wenig Arbeit...Ab sofort kann man über den WS-Updater installieren, updaten, Service einrichten und die Konfiguration patchen.
Bitte jetzt nicht einfach downloaden und probieren, dass wird nicht so richtig funktionieren. Muss jetzt aber erst mal kurz wech...I'm back...
Für zukünftige und die aktuelle V2.9.0 gibt es nun im "latest" immer eine WLAN-Wetterstation.zip :
https://github.com/SBorg2014/WLAN-Wetterstation/releases/latest
Diese beinhaltet alles was man braucht, aber ohne die ganzen Sourcen (die man aber trotzdem noch herunter laden kann).
Wenn dann alles funktioniert werde ich auch dementsprechend die WiKi anpassen, aber die alte Installation funktioniert weiter und wird auch zukünftig weiter funktionieren, ebenso wie Updates.Einzige Prämisse: automatische Updates müssen per URL angestoßen werden. Ich kann schlecht ein aktiv laufendes Skript gleichzeitig durch eine neue Version ersetzen ("der sich selbst abschleppende Abschleppwagen"). Unter Linux geht das zwar meistens, aber garantiert ist das nicht, also IMO kein gangbarer Weg.
Ich habe explizit darauf verzichtet die URL zu schrinken, da ich kein Freund davon bin wenn man einen Link anklicken soll und nicht sofort dessen Ziel erkennen kann
Ausführung immer im [zukünftigen] Verzeichnis des WLAN-Wetterstation Skriptes!
Update :
bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh)
Sollte bei bereits installierter V2.9.0 nur liefern (andernfalls wird das Update angeboten):
Hilfe:
bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh) -h
oder wenn bereits gedownloaded./ws_updater.sh -h
(Die Parameter dürften selbsterklärend sein)
Geplant ist noch ein neuer Datenpunkt der dann auf ein neues Update hinweist.
Falls wer eine Test-VM oä. hat, wäre gerade die Neuinstallation interessant. Zumindest auf meiner PiHole-VM lief es durch. Dazu ein Verzeichnis anlegen wo es hin soll, dann im Verzeichnis:bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh) --install
...und wie immer bei allem: das tut nicht als User root Not!
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Falls wer eine Test-VM oä. hat, wäre gerade die Neuinstallation interessant
hab ich (Ubuntu 20.04)
Zwar mit root gemacht (weil ich als Linuxlaie auf die Schnelle nicht gefunden hab, wie man richtig einen User anlegt und in Gruppen zuweist).
Fehler zeigt es mir an.
root@Webserver:~/wetter# bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh) --install ┌───────────────────────┐ │ │ │ WS-Updater V2.9.0 │ │ │ └───────────────────────┘ 'bc' installiert: [✗] 'jq' installiert: [✗] Möchten Sie WLAN-Wetterstation im aktuellen Verzeichnis installieren? [J/N]: J Hole Daten von GitHub... /dev/fd/63: line 308: jq: command not found Aktuelle Version: /dev/fd/63: line 310: jq: command not found Lade Datei von GitHub herunter... curl: no URL specified! curl: try 'curl --help' or 'curl --manual' for more information Entpacke Dateien... /dev/fd/63: line 314: unzip: command not found Lösche Dateidownload... rm: cannot remove 'tmp.zip': No such file or directory Dateien ausführbar setzen... chmod: cannot access 'ws_updater.sh': No such file or directory chmod: cannot access 'wetterstation.sh': No such file or directory Soll WLAN-Wetterstation nun als Service eingerichtet werden? [J/N]: Jsudo: setrlimit(RLIMIT_CORE): Operation not permitted sudo: setrlimit(RLIMIT_CORE): Operation not permitted Aktiviere den Service nun... sudo: setrlimit(RLIMIT_CORE): Operation not permitted sudo: setrlimit(RLIMIT_CORE): Operation not permitted Created symlink /etc/systemd/system/multi-user.target.wants/wetterstation.service -> /etc/systemd/system/wetterstation.service. Konfiguration nun öffnen? [J/N]: Jcat: /root/.selected_editor: No such file or directory /dev/fd/63: line 327: wetterstation.conf: command not found Nun mittels des Javascriptes 'wetterstation.js' die Datenpunkte im ioBroker anlegen! Fertig [ Nein=Abbruch ]? [J/N]: J/dev/fd/63: line 335: jn_abfrage\n\e[1;37m Einmaligen Testdurchlauf im Debug-Modus starten...(empfiehlt sich)?: command not found /dev/fd/63: line 336: ./wetterstation.sh: No such file or directory /dev/fd/63: line 339: jn_abfrage\n\e[1;37m WLAN-Wetterstation Service nun starten?: command not found sudo: setrlimit(RLIMIT_CORE): Operation not permitted Fertig... Wenn der Testlauf ausgeführt wurde und erfolgreich verlief, sollten nun aktuelle Daten der Wetterstation in den Datenpunkten stehen ;-)
-
@negalein Danke für das testen, damit hatte ich aber nicht gerechnet
Fällt dir bei 'bc' und 'jq' etwas auf?Teste es dann bitte jetzt noch einmal, er sollte nun abbrechen --> dann 'bc' installieren
nochmal versuchen --> jetzt müsste er beim 'jq' abbrechen --> installieren --> nun sollte es lüppenMit 'root' habe ich halt volle Rechte auf deinem System (unabhängig ob du es lokal oder per URL startest).
Sollte also bspw. mein Acc bei GitHub gehackt werden und der baut was weiß ich ein, kann er als 'root' dir 10 Waschmaschinen bestellen... (https://wiki.ubuntuusers.de/adduser/) -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Fällt dir bei 'bc' und 'jq' etwas auf?
bc
jqaber noch Fehler
root@Webserver:~/wetter# bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh) --install ┌───────────────────────┐ │ │ │ WS-Updater V2.9.0 │ │ │ └───────────────────────┘ 'bc' installiert: [✗] Bitte zuerst 'bc' installieren [sudo apt install bc] root@Webserver:~/wetter# sudo apt install bc sudo: setrlimit(RLIMIT_CORE): Operation not permitted Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: bc 0 upgraded, 1 newly installed, 0 to remove and 151 not upgraded. Need to get 86.3 kB of archives. After this operation, 231 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu focal/main amd64 bc amd64 1.07.1-2build1 [86.3 kB] Fetched 86.3 kB in 0s (175 kB/s) Selecting previously unselected package bc. (Reading database ... 17495 files and directories currently installed.) Preparing to unpack .../bc_1.07.1-2build1_amd64.deb ... Unpacking bc (1.07.1-2build1) ... Setting up bc (1.07.1-2build1) ... Processing triggers for install-info (6.7.0.dfsg.2-5) ... Processing triggers for man-db (2.9.1-1) ... root@Webserver:~/wetter# bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh) --install ┌───────────────────────┐ │ │ │ WS-Updater V2.9.0 │ │ │ └───────────────────────┘ 'bc' installiert: [✓] 'jq' installiert: [✗] Bitte zuerst 'jq' installieren [sudo apt install jq] root@Webserver:~/wetter# sudo apt install jq sudo: setrlimit(RLIMIT_CORE): Operation not permitted Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libjq1 libonig5 The following NEW packages will be installed: jq libjq1 libonig5 0 upgraded, 3 newly installed, 0 to remove and 151 not upgraded. Need to get 313 kB of archives. After this operation, 1062 kB of additional disk space will be used. Do you want to continue? [Y/n] Y Get:1 http://archive.ubuntu.com/ubuntu focal/universe amd64 libonig5 amd64 6.9.4-1 [142 kB] Get:2 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 libjq1 amd64 1.6-1ubuntu0.20.04.1 [121 kB] Get:3 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 jq amd64 1.6-1ubuntu0.20.04.1 [50.2 kB] Fetched 313 kB in 0s (885 kB/s) Selecting previously unselected package libonig5:amd64. (Reading database ... 17512 files and directories currently installed.) Preparing to unpack .../libonig5_6.9.4-1_amd64.deb ... Unpacking libonig5:amd64 (6.9.4-1) ... Selecting previously unselected package libjq1:amd64. Preparing to unpack .../libjq1_1.6-1ubuntu0.20.04.1_amd64.deb ... Unpacking libjq1:amd64 (1.6-1ubuntu0.20.04.1) ... Selecting previously unselected package jq. Preparing to unpack .../jq_1.6-1ubuntu0.20.04.1_amd64.deb ... Unpacking jq (1.6-1ubuntu0.20.04.1) ... Setting up libonig5:amd64 (6.9.4-1) ... Setting up libjq1:amd64 (1.6-1ubuntu0.20.04.1) ... Setting up jq (1.6-1ubuntu0.20.04.1) ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for libc-bin (2.31-0ubuntu9) ... root@Webserver:~/wetter# bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh) --install ┌───────────────────────┐ │ │ │ WS-Updater V2.9.0 │ │ │ └───────────────────────┘ 'bc' installiert: [✓] 'jq' installiert: [✓] Möchten Sie WLAN-Wetterstation im aktuellen Verzeichnis installieren? [J/N]: J Hole Daten von GitHub... Aktuelle Version: V2.9.0 vom 25.08.2021 Lade Datei von GitHub herunter... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 630 100 630 0 0 2316 0 --:--:-- --:--:-- --:--:-- 2316 100 35355 100 35355 0 0 64871 0 --:--:-- --:--:-- --:--:-- 663k Entpacke Dateien... /dev/fd/63: line 318: unzip: command not found Lösche Dateidownload... Dateien ausführbar setzen... chmod: cannot access 'ws_updater.sh': No such file or directory chmod: cannot access 'wetterstation.sh': No such file or directory Soll WLAN-Wetterstation nun als Service eingerichtet werden? [J/N]: J Wetterstation-Service existiert bereits! Konfiguration nun öffnen? [J/N]: Jcat: /root/.selected_editor: No such file or directory /dev/fd/63: line 331: wetterstation.conf: command not found Nun mittels des Javascriptes 'wetterstation.js' die Datenpunkte im ioBroker anlegen! Fertig [ Nein=Abbruch ]? [J/N]: J/dev/fd/63: line 339: jn_abfrage\n\e[1;37m Einmaligen Testdurchlauf im Debug-Modus starten...(empfiehlt sich)?: command not found /dev/fd/63: line 340: ./wetterstation.sh: No such file or directory /dev/fd/63: line 343: jn_abfrage\n\e[1;37m WLAN-Wetterstation Service nun starten?: command not found sudo: setrlimit(RLIMIT_CORE): Operation not permitted Fertig... Wenn der Testlauf ausgeführt wurde und erfolgreich verlief, sollten nun aktuelle Daten der Wetterstation in den Datenpunkten stehen ;-)
-
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
/dev/fd/63: line 318: unzip: command not found
Ok, da muss ich noch prüfen ob 'unzip' installiert ist, aber nu erst mal zu Abend spachteln gehen
Dachte eigentlich zumindest dass wäre standardmäßig installiert. -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
aber nu erst mal zu Abend spachteln gehen
Mahlzeit
-
@negalein Danke, Rest vom Mittagessen
...new version Online...bin aber für Heute raus, läute jetzt den Fernsehabend ein
-
@sborg nu, bei mich sagts:
bascht das so? -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
..new version Online
weiter gehts auf der Test-VM
Ich komme bis hier
Mit
J
bestätigtDann kommt das
und steht bis dann irgendwann das kommt (vermutlich, weil ich wegen obigem Fehler nicht in die Konfig komme
-
Ich plane mir eine Froggit HP1000SE Pro anzuschaffen.
Ein Grund dafür ist unter anderem das super Wetterstations-Skript hier, um die Daten in den iobroker zu bekommen.Jetzt habe ich die ganze Historie des Skripts nicht mitbekommen, wenn ich es aber richtig verstanden habe, fängt das Skript die Daten der Wetterstation per netcat ab und pumpt sie mittels curl über den Simple RESTful API Adapter in den iobroker.
Das Skript ist ja ein Shell-Skript und es gibt das Shell-Kommando "iobroker state set <id> <value> [<ack>]", um Datenpunkte im iobroker zu setzen.
Jetzt stellt sich die naheliegende Frage, ob es nicht Sinn machen würde das Shell-Kommando statt dem curl-Aufruf zu nutzen. Dann wäre man auch unabhängig von einem zusätzlichen Adapter.
Gibt es da einen bestimmten Grund oder ist es historisch einfach so gewachsen?Und ich hätte noch eine zweite Frage:
Ich nutze aktuell den MySQL Adapter, um historische Daten im iobroker zu sammeln, weil ich MySQL für anderen Themen eh schon am laufen hatte.
Gibt es eine Chance das Wetterstatistik Skript zu erweitern, so dass man auch die Daten aus MySQL nutzen könnte?
Man kann die Daten ähnlich wie bei der InfluxDB in Javascript auch mittels sendTo abfragen, Beispiel:sendTo('sql.0', 'query', 'SELECT id FROM iobroker.datapoints WHERE name="'+DP+'"', function (result) { ....
Danke
-
@SBorg
Und noch eine Frage:
Ich wollte mir von der Froggit HP1000SE Pro die Single Sensor Edition holen.
Da sind die Sensoren DP300, DP40 und DP80 enthalten, die, wie ich gerade gesehen habe, nicht bei den unterstützten Sensoren dabei sind.
Ist es möglich diese im Skript hinzuzufügen? Und falls ja, welche Informationen werden benötigt?
Ich könnte da gerne unterstützen, sobald ich die WS habe.
Falls die Antwort nein ist, dann müsste ich nochmal drüber nachdenken, weil das Skript eins der Kaufkriterien für mich ist.
Ansonsten wäre das Skript für mich leider gar nicht nutzbar. -
@da_woody sagte in [Linux Shell-Skript] WLAN-Wetterstation:
bascht das so?
Jepp, sieht gut aus
[OT] btw: bin "etwas" hinterher mit YT schauen, aber warst du das mit der Klemsia bei Andy? Dann Glückwunsch
-
@negalein Du hast offensichtlich keinen "Default-Editor" angegeben. Eigentlich könnte ich auch 'nano wetterstation.conf' aufrufen, aber nicht jeder hat 'nano' und nicht jeder kennt sich notfalls mit 'vi' aus. Deswegen nehme ich den Editor den der User ausgewählt hat...
Hmm, da muss ich mir mal Gedanken machen, aber wahrscheinlich geht es dann nur so: kein Editor definiert --> nimm 'vi' (oder falls vorhanden 'nano')
Unicode will er offensichtlich bei dir auch nicht für die "Haken"......und "setrlimit" scheint auch ein Problem bei dir zu sein (hat aber nix mit dem Skript zu tun ) :https://forum.andronix.app/t/fix-sudo-setrlimit-rlimit-core-operation-not-permitted/53
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Du hast offensichtlich keinen "Default-Editor" angegeben
nachgeholt. Ist jetzt Nano und Wetterkonfig wird geöffnet.
...und "setrlimit" scheint auch ein Problem bei dir zu sein
auch nachgeholt.
Jetzt läuft alles durch.
Verbindung baut er nicht auf, da ich bewusst die IP nicht geändert habe. Sonst funkt mir der Test in die fertige rein. -
@viper4iob sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Das Skript ist ja ein Shell-Skript und es gibt das Shell-Kommando "iobroker state set <id> <value> [<ack>]", um Datenpunkte im iobroker zu setzen.
Jetzt stellt sich die naheliegende Frage, ob es nicht Sinn machen würde das Shell-Kommando statt dem curl-Aufruf zu nutzen. Dann wäre man auch unabhängig von einem zusätzlichen Adapter.Hi erst mal
Ich sag mal Jein. Prinzipiell bräuchte man die API nicht unbedingt, aber wir sind mittlerweile bei >(möglichen) 100 Messwerte, ohne die die ich noch zusätzlich generiere. Die alle einzeln abzusetzen müllt die Kommunikation nicht nur zu, es könnte auch zeitlich mit dem folgenden Datenpaket eng werden. Per API werden die weitestgehend in einem Paket gesendet.@viper4iob sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Gibt es eine Chance das Wetterstatistik Skript zu erweitern, so dass man auch die Daten aus MySQL nutzen könnte?
Pauschal ja, da es unter einer handvoll Abfragen sind (glaube 2 oder 3). Allerdings funktionieren ein paar Zusatzfunktionen des Shell-Skriptes ebenfalls per Influx.
Ich will keine Werbung für Influx machen, aber Influx ist dafür einfach die bessere Wahl, da es eine Timeline-Datenbank ist und dafür optimiert. Du hast halt den fortlaufenden Zeitstrahl und dann immer einen Messwert. MySQL bläht das dann extrem auf, ist aber die 1. Wahl wenn man mehrere Querreferenzierungen braucht wie zB. Filmsammlung "ich möchte alle Filme vor 2005 mit Clint Eastwood und John Wayne". Da versagt Influx völlig.
Soll trotzdem kein K.O.-Kriterium gegen MySQL sein, nur muss ich da auch die Zeit für finden, und das ist kein 5 Minuten Job.@viper4iob sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Da sind die Sensoren DP300, DP40 und DP80 enthalten, die, wie ich gerade gesehen habe, nicht bei den unterstützten Sensoren dabei sind.
Ist es möglich diese im Skript hinzuzufügen? Und falls ja, welche Informationen werden benötigt?Ich sehe nichts spezielles was es verhindern würde. Allerdings sieht man es erst wenn auch Daten der Sensoren vorliegen. Bisher liefen aber alle und die drei sind nichts super spezielles. Ich brauche dann einfach nur mal einen Datenstring (
./wetterstation.sh --data
) mit den eingerichteten/aktivierten Sensoren, mehr nicht. Dann sind die auch zügig drin