NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@gezi70 Dann musst du aber noch den Service stoppen und das Startfile bearbeiten (dann sogar mit sudo )
systemctl stop wetterstation
sudo nano /etc/systemd/system/wetterstation.service
(dort den Pfad anpassen)ExecStart=/home/sborg/script/wetterstation.sh
systemctl start wetterstation
-
@sborg Läuft wieder, danke.
Was mache ich jetzt mit den Dateien im Ordner iobroker? Kann ich die jetzt einfach löschen? -
@SBorg zum Thema 'root': Bei mir sind alle Dateien 'pi:pi'. Ich hab seit gestern auf dem Raspberry das Log mitlaufen. Die Dateien, die das Script jetzt schreibt sind 'root:root'. Ist das so richtig (? @Thomas-Braun)?
-
Ich würde vorschlagen:
cd ~ mkdir wetterstation mv /home/iobroker/wetterstation* /home/pi/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?