NEWS
WLAN-Wetterstation @SBorg Alternative Installation
-
@sborg Info
- habs noch nicht hinbekommen
- brauche neuen OpenWRT Router der alte will nicht mehr
bis bald
-
@sborg Habe den OpenWRT GL-AR300M wieder neu flashen können.
/etc/hosts (192.168.x.x Adresse des Iobrokers) hinzugefügt und etc/lighttpd/lighttpd.conf (Port 80 auf 85) umgelegt.
Die Grundeinstellungen des GL-AR300M wurden beibehalten.
Das Script läuft auf dem Raspberry gemeinsam mit dem Iobroker, die Verbindung zwischen Script und Iobroker ist hergestellt und tut ihren Dienst.
Die Daten an rtupdate.wunderground.com kommen hier an.Mit
pi@......: /.../$ sudo ./wetterstation.sh --debug ist die Welt in OrdnungMit
pi@......: /.../$ ./wetterstation.sh --debug kommt Kommunikationsfehler.Netcat:
pi@......: /.../$ sudo nc -lv 80 --> ist ok
pi@......: /.../$ nc -lv 80 --> nc: permission deniedpi@......: /.../$ sudo systemctl status wetterstation
bringt folgendes Ergebnis:
Wie bekomme ich Zugriff auf den Port 80
Was besagt die Fehlermeldung
Loaded: loaded (/etc/systemd/system/wetterstation.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2023-01-18 12:02:31 CET; 1h 20min ago
Process: 484 ExecStart=/home/iobroker/script/wetterstation.sh (code=exited, status=1/FAILURE)]
Main PID: 484 (code=exited, status=1/FAILURE) -
@guenter Auch wenn es erst mal nicht so aussieht, sieht jetzt gut aus
Bei vielen Linux-Distris benötigen Ports <1024 root-Rechte, deswegen funktioniert alles was du probierst dann auch mittels "sudo".
Du kannst nun zwei Wege gehen:- dem
netcat
quasi root-Rechte einräumen - Port 80 "nach oben verlegen" wo keine root-Rechte mehr nötig sind
Variante "nc" mittels
setcap
:sudo setcap CAP_NET_BIND_SERVICE=+eip /bin/nc.openbsd
Hier muss nur der Pfad zum "nc" angegeben werden (sollte oben eigentlich schon stimmen), allerdings kein Symlink sondern wirklich zur bin vom "nc".
Variante Port verlegen mittels IP-Tables:
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 1080
Hiermit wird der Port 80 auf den Port 1080 geroutet. Noch in der wetterstation.conf wieder auf Protokoll 1|2 umstellen (Ecowitt ist einfach besser) und den Port dort auf bspw. die "1080" von oben ändern.
Dann sollte sich der Service auch korrekt starten lassen, ....hoffentlich
Aus den fehlenden root-Rechten resultiert dann beim Service auch der Fehler
- dem
-
@sborg sagte in WLAN-Wetterstation @SBorg Alternative Installation:
dem netcat quasi root-Rechte einräumen --> scheint zu laufen
Port 80 "nach oben verlegen" wo keine root-Rechte mehr nötig sind --> hat nicht funktioniert ?
wäre aber sicher die bessere Lösung
bei nc -lv 1080 kommt nichts an
Danke bis hier her -
@guenter sagte in WLAN-Wetterstation @SBorg Alternative Installation:
Port 80 "nach oben verlegen" wo keine root-Rechte mehr nötig sind --> hat nicht funktioniert ?
Gedacht, und dann doch falsch gedacht...
Die Variante ist für "externe" Zugriffe. Wie ich aber eben deinen "nc"-Aufruf sah, viel es wie Schuppen von den Haaren. Es muss doch die "localhost"-Variante sein, da wir ja auf dem gleichen Host arbeiten...
Der sollte dann funktionieren:
sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 1080
-
hallo, jetzt brauche ich doch auch nochmal Hilfe. Ich musste meinen Proxmox LXC neu aufsetzen und den PiHole und Wetterstation neu installieren. Beim
./wetterstation.sh --debug
kommen Daten:
Nach Aktivierung des Service kommen allerdings keine Daten mehr.
systemctl status wetterstation
bringt folgenden Fehler:
root@PiHole:/home/Wetterstation# systemctl status wetterstation * wetterstation.service - Service f<C3><BC>r ioBroker Wetterstation Loaded: loaded (/etc/systemd/system/wetterstation.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2023-01-18 19:13:48 UTC; 9h ago Main PID: 2366 (wetterstation.s) Tasks: 4 (limit: 37948) Memory: 6.3M CPU: 8h 52min 33.956s CGroup: /system.slice/wetterstation.service |- 2366 /bin/bash /home/Wetterstation/wetterstation.sh |-2304636 /bin/bash /home/Wetterstation/wetterstation.sh |-2304638 /bin/bash /home/Wetterstation/wetterstation.sh `-2304639 /bin/bash /home/Wetterstation/wetterstation.sh Jan 19 04:52:52 PiHole wetterstation.sh[2304462]: (standard_in) 1: syntax error Jan 19 04:52:53 PiHole wetterstation.sh[2304480]: (standard_in) 1: syntax error Jan 19 04:52:53 PiHole wetterstation.sh[2304498]: (standard_in) 1: syntax error Jan 19 04:52:53 PiHole wetterstation.sh[2304516]: (standard_in) 1: syntax error Jan 19 04:52:53 PiHole wetterstation.sh[2304534]: (standard_in) 1: syntax error Jan 19 04:52:53 PiHole wetterstation.sh[2304552]: (standard_in) 1: syntax error Jan 19 04:52:53 PiHole wetterstation.sh[2304570]: (standard_in) 1: syntax error Jan 19 04:52:53 PiHole wetterstation.sh[2304588]: (standard_in) 1: syntax error Jan 19 04:52:53 PiHole wetterstation.sh[2304606]: (standard_in) 1: syntax error Jan 19 04:52:53 PiHole wetterstation.sh[2304624]: (standard_in) 1: syntax error
Leider reichen meine Linux-Kenntnisse wieder nicht, um den Fehler einzugrenzen. Hast Du einen raschen Tipp?
Vielen Dank
JoPS: bitte weiter lesen...
-
Nachtrag: ich vermute, wie so häufig, ein Rechteproblem. Ich habe den alten Container nochmal installiert und den Inhalt der Datei
/etc/systemd/system/wetterstation.service
angesehen. In der alten steht
[Unit] Description=Service für ioBroker Wetterstation [Service] ExecStart=/home/Wetterstation/wetterstation.sh [Install] WantedBy=multi-user.target
und in der neuen steht
[Unit] Description=Service für ioBroker Wetterstation [Service] User=root Group=root ExecStart=/home/Wetterstation/wetterstation.sh [Install] WantedBy=multi-user.target
Wenn ich nun in der neuen die Einträge für User und Group entferne und neu boote, dann bringt
systemctl status wetterstation
offensichtlich korrekte Ausgaben und es werden einmalig Werte zu ioBroker geschickt. Dann aber nicht mehr und die erneute Prüfung bringt dann wiederum einen Fehler
root@PiHole:~# systemctl status wetterstation * wetterstation.service - Service f<C3><BC>r ioBroker Wetterstation Loaded: loaded (/etc/systemd/system/wetterstation.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2023-01-19 07:14:06 UTC; 20min ago Main PID: 91 (wetterstation.s) Tasks: 5 (limit: 37948) Memory: 13.6M CPU: 30.998s CGroup: /system.slice/wetterstation.service |- 91 /bin/bash /home/Wetterstation/wetterstation.sh |-14817 /bin/bash /home/Wetterstation/wetterstation.sh |-14818 timeout 66 nc -nlvw 1 -p 80 |-14819 sed -n 1 p `-14820 nc -nlvw 1 -p 80 Jan 19 07:14:06 PiHole systemd[1]: Started Service f<C3><BC>r ioBroker Wetterstation. Jan 19 07:14:07 PiHole wetterstation.sh[141]: Connection to 192.168.178.6 8087 port [tcp/*] succeeded! Jan 19 07:15:11 PiHole wetterstation.sh[1208]: jq: error (at <stdin>:0): Cannot iterate over null (null) Jan 19 07:15:11 PiHole wetterstation.sh[1211]: jq: error (at <stdin>:0): Cannot iterate over null (null) Jan 19 07:30:11 PiHole wetterstation.sh[11577]: jq: error (at <stdin>:0): Cannot iterate over null (null) Jan 19 07:30:11 PiHole wetterstation.sh[11580]: jq: error (at <stdin>:0): Cannot iterate over null (null)
Somit leider noch kein Erfolg. Das Rechteproblem hat mit Sicherheit damit zu tun, dass es nicht läuft...
PS: bitte weiter lesen...
-
Ok, ich berichte einfach mal weiter.
Aus irgendeinem Grund habe ich unter den Netzwerk-Einstellungen von Proxmox den DNS falsch eingestellt. Jetzt kommen Daten in ioBroker.
Aber um es weiter strange zu machen, kommen die Daten, obwohl unter WS_poll=30 eingestellt ist, nur jede Minute. Auch eine Änderung von WS_poll=20 bringt hier keine Änderung...
Noch ein letzter Tipp, woran das liegt? Vor der Änderung bzw. dem neu Aufsetzen des Containers unter Proxmox kamen die Daten immer im Abstand von 30 Sekunden.
-
@xxjooo "User + Group" wird automatisch mit dem derzeit aktuell eingeloggtem User angelegt. Da warst du wohl als root eingeloggt. Eigentlich sollte es im User-Context laufen, da es keinerlei root-Rechte braucht.
"WS_POLL" ist ein Relikt aus den ersten Versionen und wird aktuell nur noch dazu benutzt, wie lange auf ein Datenpaket vom Display/Gateway gewartet wird: 2x WS_POLL + 6 Sekunden (bei WS_POLL=30 also 66 Sekunden). Kommt in dieser Zeit kein valides Datenpaket wird der interne Fehlerzähler um eins erhöht. Bei >=10 gibt es dann den "_Kommunikationsfehler". Zwischenzeitlich korrekte Pakete senken den Fehlerzähler wieder um eins.
Das Skript wartet also bis die Station was sendet(egal wann und unabhängig vom WS_POLL). Entweder geht jedes 2. Datenpaket verloren oder du hast das Sendeintervall der Station auf 60 Sekunden stehen.
-
@xxjooo sagte in WLAN-Wetterstation @SBorg Alternative Installation:
ich vermute, wie so häufig, ein Rechteproblem
root@PiHole:~#
Und da wunderst du dich über 'Rechteprobleme'? Die Eier legst du dir doch selber durch das Herumgeturne als root.
-
@sborg
iptables, habe ich auf meinem Raspberry nicht am laufen. Bin auf der Suche nach einer guten Anleitung.
Sorry -
ich kenne viele Deiner Beiträge zu dem Thema und - tatsächlich stimme ich Dir voll und ganz zu. Allerdings ist man häufig faul und viele Dinge sind einfach plötzlich einfacher. Ich nutze z.B. FileZilla, um über SSH auf die Maschine zuzugreifen und um von meinem Windows-Rechner Files dahin zu schieben, oder von da zu holen. Und nach meiner Erfahrung muss ich mich als root auf der Maschine via SSH und FileZilla anmelden, um so was machen zu können, sonst kann ich mich nicht anmelden. Letzteres war eigentlich immer mein Hintergrund, dass ich Dinge als root auf den Weg gebracht habe...
Du bist in diesem Forum der viel gefragteste Linux-König und ich respektiere Deine Meinung. Allein bin ich leider schon zu alt, um alle Feinheiten wie mein oben beschriebenes Problem schnell zu umschiffen - und deshalb einfach wahrscheinlich zu bequem.
Ich möchte kein Verständnis von Dir, sondern erkläre Dir nur meinen Hintergrund.
Und als kleines PS: Es war kein Problem der Rechte...
-
@xxjooo sagte in WLAN-Wetterstation @SBorg Alternative Installation:
viele Dinge sind einfach plötzlich einfacher.
Aber nur vermeintlich. Das perfide am root login ist ja gerade, dass Fehler an der einen Stelle sich erst viel später zeigen. Z. B. durch die 'Rechteprobleme' oder sonstiges 'komisches Verhalten'.
Und nach meiner Erfahrung muss ich mich als root auf der Maschine via SSH und FileZilla anmelden, um so was machen zu können, sonst kann ich mich nicht anmelden. Letzteres war eigentlich immer mein Hintergrund, dass ich Dinge als root auf den Weg gebracht habe...
Nein, muss man NICHT. Man muss sich GAR NICHT als root anmelden.
Nie. Also im Sinne von: Niemals, überhaupt nicht.@apollon77: Denk bitte an den PR. Es ist offensichtlich notwendiger denn je.
-
@xxjooo sagte in WLAN-Wetterstation @SBorg Alternative Installation:
FileZilla
schau dir dazu mal MobaXterm an.
Da gehts auch mit echtem User. -
danke für Deine Einschätzung. Muss noch mal auf die Einstellungen der Station schauen. Nach meiner Einschätzung sollten die sich nicht geändert haben. Wenn ich mich recht erinnere, dann ist das sogar überhaupt nicht einstellbar.
Ich habe heute nebenher nochmal angefangen, den Wetterstationsthread zu lesen und bin bis etwa 250 gekommen. Das dauert mir aber zu lange, bis ich zum Ende komme, deshalb hier noch eine kurze Frage:
Ich erhalte immer wieder unlogische Werte, wie eine Temperatur von -5555°C oder so was. Ich meine irgendwo im thread kurz gelesen zu haben, dass Du die Möglichkeit eingebaut hast, solche unlogischen Werte bei der Auswertung abzufangen - und das find ich jetzt nicht mehr. Wo kann ich das nachlesen? Stimmt das eigentlich, woran ich mich meine zu erinnern? -
vielen Dank, das ist ein guter Hinweis!
-
-
@guenter Nun ja, du kannst auch problemlos den "nc" so laufen lassen wenn es so funktioniert.
Die Methode mittels "iptables" öffnet dann den Port 80 für alle User. Beide Methoden bergen ein (kleines) Sicherheitsrisiko, da aber dein OpenWRT nur im Netzwerk hängt und nicht direkt am WWW, müsste ein potenzieller Angreifer eh zuerst den Router überwinden. Wenn da soweit "dicht ist was dicht sein kann", kommt er nicht zum OpenWRT. Falls doch, dann existiert auch nicht mehr ein echtes Problem bzgl. nc/iptables, dann hast du ein ganz anderes Problem ...iptables lässt sich wie üblich mittels
sudo apt-get install iptables
installieren. -
@xxjooo sagte in WLAN-Wetterstation @SBorg Alternative Installation:
Muss noch mal auf die Einstellungen der Station schauen. Nach meiner Einschätzung sollten die sich nicht geändert haben. Wenn ich mich recht erinnere, dann ist das sogar überhaupt nicht einstellbar.
Kann sein, ich meine mich auch zu erinnern, dass da die Einstellungen nur äußerst rudimentär sind.
Allerdings "höre" ich mit dem Skript nur zu ob/wann was geschickt wird. Ev. verschluckt sich auch der Pi-hole. -
habe jetzt nochmal das Handbuch angeschaut. Da steht tatsächlich, dass alle 60sec. gesendet wird. Auf der Anzeige erkennt man dann aber, dass die Kommunikation mit der Außenstation alle 60sec. stattfindet.
Ich war mir nahezu 100% sicher, dass es zu Anfang alle 30sec. war. So kanns gehen. Nun läuft es jedenfalls wieder.