NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
..und Schal: es braucht sich wirklich keiner deswegen genötigt zu sehen etwas spenden zu müssen. Ich will mich einfach nur bedanken.
Naja, das mach ich gerne. Gute Arbeit soll belohnt werden.
@liv-in-sky dürfte sich auch mal ein Kaffeekonto zulegen. Wäre längst überfällig! -
@liv-in-sky Hi, ich hab dein (neues) Script auch im Einsatz. In der VIS ist bei mir die Tabelle ganz rechts. kann ich die irgendwie besser/schöner positionieren? Oder hab ich da was verbaselt?
LG Rainer -
hast du mal ein bild, was du meinst
-
@liv-in-sky Hier ein Screenshot. Bitte nicht über die angezeigten Daten wundern. Meinem NUC war es gestern nicht so gut :
Sollten wir hierzu den Kanal wechseln?
-
@rene55 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Hier ein Screenshot
Widgets markieren und beliebig verschieben
-
@Negalein Danke. Ich hab mit der VIS noch nicht viel am Hut. Dass das so einfach ist - manOman, ich muss noch viel lernen.
-
@rene55 du meinst rechts auf der seite - und nicht innerhalb der tabelle
das macht man eigentlich durch die breite des widgets - hast du da was geändert - oder evtl hast du beim widget setting was eingestellt
im script gibt es nur const weite - und die sollte auto sein
-
@liv-in-sky Ja genau, das meinte ich. @Negalein hat mir schon geholfen, die Tabelle und die Steuerelemente nach links zu rücken. Geändert habe ich nur die Datenpunkte, die bei mir alle in 0_userdata liegen. Das hat (erstaunlich) gut funktioniert. Auch von mir nochmal Danke für das Script.
-
Ich bin es leid, das ich immer Problem mit den Rechten bekomme.
Nun meine Bitte:
Ich möchte alles neu aufsetzten und beschreibe den Weg den ich gehe. Sollte hier schon ein Fehler bestehen, bitte ich um Hilfe.
Also, ich nehme 3 Pi 4 mit 4gb RAM, 125gb SSD-Platte sowie einen Fujitsu E920 als Anzeige. Als Bildschirm ein 24“ Touch-Screen angeschlossen am Fujitsu.
Alle Pi’s sind so eingestellt das sie von SSD und nicht von einer Micro-SD Karte booten.
1 Pi als Master, die beiden anderen als Slave.
Auf allen Pi’s wird Raspbian aufgespielt mit dem „User“ pi und natürlich einem neuen Password.
Frage 1: der User „pi“ ist doch nicht automatisch „Root“ oder?
Auf allen wird auch „SSH“ freigegeben und „update“ und „upgrade“ ausgeführt.
Mit Putty wird auf allen 3 Pi’s ioBroker installiert und zwar mit folgenden Befehl:curl -sL https://iobroker.net/install.sh | bash -
Auf dem „Master“ wird Multihost freigegeben und auf den „Slaves“ über „connect“ verbunden!
Bei der Installation von Adaptern in ioBroker habe ich bisher keine Probleme gehabt, darum weiter mit der Wetterstation.
Nach der Installationsanleitung auf github habe ich alles gemacht aber keinen Erfolg.Bei „./wetterstation.sh –debug“ bekomme ich folgende Fehlermeldung:
-bash: ./wetterstation.sh: /bin/bash^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden
Bei „sudo systemctl status wetterstation“:
pi@pi-iobroker:/home/iobroker $ sudo systemctl status wetterstation ● wetterstation.service - Service für ioBroker Wetterstation Loaded: loaded (/etc/systemd/system/wetterstation.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Tue 2021-10-05 11:04:52 CEST; 7s ago Process: 14097 ExecStart=/home/iobroker/wetterstation.sh (code=exited, status=203/EXEC) Main PID: 14097 (code=exited, status=203/EXEC) Okt 05 11:04:52 pi-iobroker systemd[1]: Started Service für ioBroker Wetterstation. Okt 05 11:04:52 pi-iobroker systemd[14097]: wetterstation.service: Failed to execute command: No such file or directory Okt 05 11:04:52 pi-iobroker systemd[14097]: wetterstation.service: Failed at step EXEC spawning /home/iobroker/wetterstation.sh: No such file or directory Okt 05 11:04:52 pi-iobroker systemd[1]: wetterstation.service: Main process exited, code=exited, status=203/EXEC Okt 05 11:04:52 pi-iobroker systemd[1]: wetterstation.service: Failed with result 'exit-code'.
Bei „ls -la“ kommt
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
Was bekomme ich da nicht richtig hin?
MfG
Wastl -
Frage 1: der User „pi“ ist doch nicht automatisch „Root“ oder?
Nein, aber der user 'pi' (mit der UserID / uid) 1000 ist als sudoer voreingestellt, der dann per vorangesetztem 'sudo' für den nachfolgenden Befehl die root-Rechte erlangen kann.
Bei „./wetterstation.sh –debug“ bekomme ich folgende Fehlermeldung:
-bash: ./wetterstation.sh: /bin/bash^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefundenDazu musst du im Verzechnis stehen, in dem auch das skript wetterstation ausführbar liegt. Offenbar stehst du nicht im richtigen Verzeichnis oder der user hat keine ausreichenden Rechte an dem skript.
Ich würde den user pi der Gruppe iobroker hinzufügen:
sudo usermod -aG iobroker pi
Danach den pi einmal ausloggen und wieder anmelden.
-
@thomas-braun sagte in [Linux Shell-Skript] WLAN-Wetterstation:
„./wetterstation.sh –debug
Ich stehe im Verzeichnis
pi@pi-iobroker:/home/iobroker $ dir wetterstation.conf wetterstation.sh wetterstation.sub ws_updater.sh pi@pi-iobroker:/home/iobroker $ ./wetterstation.sh –debug -bash: ./wetterstation.sh: /bin/bash^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden pi@pi-iobroker:/home/iobroker $
Also die Reihenfolge der Installation ist somit nicht falsch?
MfG
Wastl -
@langer mach mal anstatt "dir" "ls -la"
file wetterstation.sh
und dann
dos2unix wetterstation.*
könnte vielleicht helfen. Ist aber nur eine Vermutung.
-
Wie sehen die Rechte aus?
ls -la /home/iobroker/wetterstation.sh
bzw.
getfacl /home/iobroker/wetterstation.sh
Und wie sehen die ersten paar Zeilen des skriptes aus?
-
@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 ;-)