NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@thomas-braun Ich habe ein völlig neues Verzeichnis angelegt und neue Dateien eingefügt...
-
@rene55 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Die Dateien, die das Script jetzt schreibt sind 'root:root'. Ist das so richtig
Vermutlich nicht. Das skript darf nur Rechte im Kontext des users schreiben der es aufruft. Das kommt noch von dem falschen Besitzer des files.
-
@gezi70 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ich habe ein völlig neues Verzeichnis angelegt und neue Dateien eingefügt...
Hört sich schwer nach Desktop-Betrieb an...
-
pi@raspberrypi:~ $ mv /home/iobroker/wetterstation* /home/pi/wetterstation mv: das Verschieben von '/home/iobroker/wetterstation.conf' nach '/home/pi/wetterstation/wetterstation.conf' ist nicht möglich: Keine Berechtigung mv: das Verschieben von '/home/iobroker/wetterstation.sh' nach '/home/pi/wetterstation/wetterstation.sh' ist nicht möglich: Keine Berechtigung mv: das Verschieben von '/home/iobroker/wetterstation.sub' nach '/home/pi/wetterstation/wetterstation.sub' ist nicht möglich: Keine Berechtigung
-
@Thomas-Braun Kann ich gerade nicht so nachvollziehen.
pi@raspberrypi:~/weather $ ls -la total 136 drwxr-xr-x 3 pi pi 4096 Jan 4 00:00 . drwxr-xr-x 4 pi pi 4096 Jan 2 10:37 .. -rw-r--r-- 1 root root 9377 Jan 3 23:59 20220103_station.log -rw-r--r-- 1 root root 1594 Jan 4 14:38 20220104_station.log drwxr-xr-x 2 pi pi 4096 Jan 3 15:25 Version:2.10.1 -rw-r--r-- 1 pi pi 6075 Jan 3 15:43 wetterstation.conf -rwxr--r-- 1 pi pi 15867 Jan 3 15:03 wetterstation.sh -rw-r--r-- 1 pi pi 65396 Jan 3 15:45 wetterstation.sub -rwxr--r-- 1 pi pi 16659 Jan 3 15:05 ws_updater.sh
Das Script läuft doch als pi.
-
@gezi70 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
/home/pi/wetterstation
ls -la /home/pi/wetterstation
-
@thomas-braun läuft jetzt, danke
-
-
@thomas-braun Ich habs gerade gesehen. Im HTOP wird das Script als root ausgeführt - das erklärt die Ablage der neuen Files als root. Dann muss bei der Erstellung des systemd was falsch sein - nur was?
Irgendwo muss ein Knoten sein. Starte ich das Script von Hand läuft es als pi - beim Schreiben des Logfiles gibt es dann 'Permission denied'. -
@rene55 That's my fault
Geändert habe ich es schon lange, aber irgendwie vergessen zu kommunizieren. Der systemd lädt beim booten den Service per default unter "root".
Deswegen habe ich im ws_updater den Service so anlegen lassen:[Unit] Description=Service für ioBroker Wetterstation [Service] User=$(whoami) Group=$(whoami) ExecStart=${DIR}/wetterstation.sh [Install] WantedBy=multi-user.target
whoami ("wer_bin_ich") wird dabei durch den aktuell angemeldeten Usernamen ersetzt.
Muss ich wohl hier einen Mini-Patch bereitstellen der es patcht, oder ihr (betrifft alle, außer diejenigen die den Service mittels ws_updater anlegen ließen) editiert es selbst hinein:sudo nano /etc/systemd/system/wetterstation.service
Dann unter "Service" die beiden ZeilenUser= Group=
ergänzen und mit eurem Loginnamen befüllen und speichern.
Service restarten:systemctl restart wetterstation
Dann läuft es im User-Kontext.
Eben noch geändert: siehe WiKi (fast ganz unten) -
@sborg Super. Gefixt, Script läuft als 'pi' und schreibt auch Logs als 'pi'. Mercy
-
Mit was für ein Editor öffne ich das ?
Das war´s auch schon mit der Konfiguration des Skriptes. Anlegen der Datenobjekte im ioBroker: Wir öffnen wetterstation.js aus dem Paket mit einem Texteditor, kopieren uns den gesamten Inhalt in die Zwischenablage und wechseln zum ioBroker. Dort wählen wir "Skripte" und legen per Klick auf das "+" ein neues Javascript vom Typ "Javascript" an. Speicherort (unter common) und Bezeichnung sind frei wählbar. In dieses leere Skript fügen wir nun den Inhalt der Zwischenablage ein. Falls eine andere Instanz des Javascript-Adapters oder eine andere Datenobjektstruktur benutzt wird, muss noch let DP="javascript.0.Wetterstation." angepasst (identische Einstellung wie in der wetterstation.conf unter PRE_DP) werden. Beachtet unbedingt den Punkt hinter "Wetterstation"! Falls das Gateway und/oder Zusatzsensoren (DP40/50/60/70/100/200/250/300 bzw. deren WHxxx-Derivate) benutzt werden muss deren Anzahl nun noch eingetragen werden.
-
nano
ist vermutlich der einfachste Editor auf Kommandozeile. -
@thomas-braun sagte in [Linux Shell-Skript] WLAN-Wetterstation:
nano
ist vermutlich der einfachste Editor auf Kommandozeile.Dann müsstw ich die Skriptdatei (wetterstation.js)auch in den Ordner verschieben?
-
@andre105 Irgendein Verzeichnis im /home des users. Der Pfad dorthin wird ja in der service-Datei angegeben.
-
Habe den Skript angelegt,gestartet und wieder gestoppt.
Jetzt in Putty den Befehl ausgefürt.
andre105@iobroker:~/wetter$ ./wetterstation.sh --debug wetterstation: ERROR #000 - Config-Version mismatch! benutzt: Settings benötigt wird: V2.10.0 andre105@iobroker:~/wetter$
Was ist das für ein Fehler?
-
@andre105 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
benutzt: Settings benötigt wird: V2.10.0
Du hast offenbar die 1. Zeile der wetterstation.conf etwas verwurstelt. Die darf keinesfalls verändert werden, da hierüber geprüft wird ob die Versionen der Dateien zueinander passen.
In deinem Wetter-Verzeichnis:head -n 1 wetterstation.conf
Dann muss das dabei herauskommen (Format und Leerzeichen sind wichtig) :
### Settings V2.10.0 -----------------------------------------------------------
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@andre105 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
benutzt: Settings benötigt wird: V2.10.0
Du hast offenbar die 1. Zeile der wetterstation.conf etwas verwurstelt. Die darf keinesfalls verändert werden, da hierüber geprüft wird ob die Versionen der Dateien zueinander passen.
In deinem Wetter-Verzeichnis:head -n 1 wetterstation.conf
Dann muss das dabei herauskommen (Format und Leerzeichen sind wichtig) :
### Settings V2.10.0 -----------------------------------------------------------
Ja stimmt.
Jetzt kam dieses bei raus.
WLAN-Wetterstation V2.10.1 - (c)2019-2021 by SBorg Config-Version: V2.10.0 Sub-Version : V2.10.1 'bc' installiert: [✓] 'jq' installiert: [✓] [sudo] Passwort für andre105: ┌────────────────────────────────────────────────────────────┐ │ │ │ "netcat" ist nicht in der benötigten Version installiert! │ │ │ │ Soll er nun installiert werden? [J/N]: j │ │ │ └────────────────────────────────────────────────────────────┘ Paketlisten werden gelesen… Fertig Abhängigkeitsbaum wird aufgebaut… Fertig Statusinformationen werden eingelesen… Fertig Die folgenden NEUEN Pakete werden installiert: netcat-openbsd 0 aktualisiert, 1 neu installiert, 0 zu entfernen und 14 nicht aktualisiert. Es müssen 41,1 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 114 kB Plattenplatz zusätzlich benutzt. Holen:1 http://ftp.de.debian.org/debian bullseye/main amd64 netcat-openbsd amd64 1.217-3 [41,1 kB] Es wurden 41,1 kB in 0 s geholt (104 kB/s). Vormals nicht ausgewähltes Paket netcat-openbsd wird gewählt. (Lese Datenbank ... 43532 Dateien und Verzeichnisse sind derzeit installiert.) Vorbereitung zum Entpacken von .../netcat-openbsd_1.217-3_amd64.deb ... Entpacken von netcat-openbsd (1.217-3) ... netcat-openbsd (1.217-3) wird eingerichtet ... update-alternatives: /bin/nc.openbsd wird verwendet, um /bin/nc (nc) im automatischen Modus bereitzustellen Trigger für man-db (2.9.4-2) werden verarbeitet ... Connection to 192.168.178.64 8087 port [tcp/*] succeeded!
WLAN-Wetterstation V2.10.1 - (c)2019-2021 by SBorg Config-Version: V2.10.0 Sub-Version : V2.10.1 'bc' installiert: [✓] 'jq' installiert: [✓] 'nc' in der Openbsd-Variante installiert: [✓] 'netcat' in Openbsd-Variante aktiv, alles korrekt [✓] Connection to 192.168.178.64 8087 port [tcp/*] succeeded! Messwerteblock: Nicht alle Werte werden unterstützt (abhängig vom Modell der Wetterstation und dem verwendeten Protokol l)! Temperatur Innen : °C Temperatur Aussen : °C Taupunkt : °C Gefühlte Temperatur : °C Luftfeuchte Innen : % Luftfeuchte Aussen : % Windgeschwindkeit : km/h Windböengeschwindkeit : km/h max. Windböe : km/h Windrichtung : ° Windrichtung : Luftdruck absolut : hPa Luftdruck relativ : hPa Regenrate : mm/h Regenstatus : Regen seit Regenbeginn : mm Regen Stunde : mm Regen Tag : mm Regen Woche : mm Regen Monat : mm Regen Jahr : mm Regen Gesamt : mm Sonnenstrahlung : W/m² UV-Index : Zeitstempel : Firmware : Batteriestand: : Gateway-Modell : Zusatzsensoren: Datenstring für ioBroker: DATA von Wetterstation: Debug VAR: Installationsverzeichnis: /home/andre105/wetter IPP: 192.168.178.64:8087 WS_PORT: 6969 WS_POLL: 30 PRE_DP: javascript.0.We tterstation WEB: HTTP WS_PROT: Ecowitt DP40/50/60/70/100/200/250/300: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 WH31: 0 Script-Version: V2.10.1 Config-Version: V2.10.0 Sub-Version: V2.10.1 Kommunikationsfehler! andre105@iobroker:~/wetter$
-
@thomas-braun Ich habe mal wieder drin rum gemehrt und nichts geht mehr:
Ich wollte ein anderes Verzeichnis in /home/pi anlegen und habe die Dateien dort hinein kopiert.
Nach Anpassen der ExecStart Datei auf den neuen Pfad findet das system trotz der genauen Angabe die Datei wetterstation.sh nicht. Es kommen keine Daten mehr rein... Wie kann ich nochmal von vorne anfangen?pi@raspberrypi:~ $ ./wetterstation.sh --data -bash: ./wetterstation.sh: Datei oder Verzeichnis nicht gefunden
und beim Ausführen im Verzeichnis:
pi@raspberrypi:~/Wetterscript $ ./wetterstation.sh --data -bash: ./wetterstation.sh: Keine Berechtigung
-
Jetzt geht es wieder. Ich hatte vergessen den TCP Port in der Config einzutragen. Dann kanns auch nicht gehen...