NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@rene55 said in [Linux Shell-Skript] WLAN-Wetterstation:
@SBorg schon direkt in den Datenpunkten. Die VIS ist dann eine spätere Baustelle.
Zwei Dinge:
- welche Station hast du genau?
- stoppe bitte mal (
sudo systemctl stop wetterstation
) und poste dann bitte die Ausgabe von./wetterstation.sh --debug
ausgeführt im Installationsverzeichnis
-
@keksn said in [Linux Shell-Skript] WLAN-Wetterstation:
Hallo, ich habe nach wie vor keine Daten bei der Sonnenscheindauer in Grafana und zusätzlich den Fehler not Executed". Im IOBroker habe ich mittlerweile Daten bei der Sonnenscheindauer.
Ich habe auch keine Daten Daten bei Temp. min. max. und seit neuestem auch keine Daten beim Niederschlag.Temp min/max funktioniert nur wenn auch das Statistik-Addon läuft/benutzt wird, da die Station diese Werte nicht liefert.
Allgemeines Influx-/Grafana-Problem bei fehlenden Werten (gerade wenn man ganz "frisch/neu" anfängt: wenn man mittels des Javascripts die Objekte (oder DPs) angelegt hat, werden diese Initial mit Werten (meist "0") befüllt. Erst nach dem Anlegen kann ich jetzt aber auch das Influx-Logging aktivieren. Problem dabei, falls man "log changes only" aktiviert (was man aus Performance-/Platzgründen aber machen sollte), wird erst mit einer Änderung des Wertes (also ungleich "0" bei einem DP der mit "0" befüllt ist) das Logging gestartet. Vorher hat Influx nicht mal die Serie angelegt. Um auch spätere Lücken in Grafana zu vermeiden, sollte man immer ein Turnusmäßiges Schreiben erzwingen. Bspw. "3600" als Eintrag bei "log changes interval" erzwingt alle 3.600 Sekunden (= 1 Stunde ) unabhängig davon ob sich der Wert geändert hat, den aktuellen Wert in die Influx zu schreiben.
Weiterer Knackpunkt ist hier die Option "Automatic" (leider Default-Einstellung) bei speichern als. Oftmals wird dann eine Zahl (number) als Zeichenkette (string) missinterpretiert und die ganze Serie als String angelegt. Damit kommt Grafana später nicht mehr zu Recht. Hier hilft nur im Influx nachschauen ob die entsprechende Serie als "String" angelegt wurde. Falls ja, muss man dann zuerst im ioB auf "Zahl" umstellen und dann leider die gesamte Serie in Influx droppen. Nachträglich kann man eine Datenreihe in Influx nicht mehr von String --> Zahl konvertieren/ändern. -
@sborg
Ich habe eine Froggit WH3000 SE. Das Javascript läuft in einem Docker-Container. Dummerweise reagiert 'systemctl stop' (mit und ohne sudo) bei mir nicht. -
@rene55 said in [Linux Shell-Skript] WLAN-Wetterstation:
systemctl stop
du gibst aber noch den Namen des Services der gestoppt werden soll, oser?
-
@a200 Ja natürlich. Das script heißt auch 'wetterstation.sh' - und läuft und läuft und läuft. Oder gibt es da noch einen Trick (=Wissenslücke) für mich? Ich arbeite im Portainer und als Fehlermeldung bekomme ich:
bash: systemctl: command not found
. -
@rene55 said in [Linux Shell-Skript] WLAN-Wetterstation:
systemctl
mit sudo davor? die Fehlermeldung besagt dass systemctl nicht gefunden werden kann.
-
@a200 Leider geht's auch damit nicht:
bash-5.0# sudo systemctl stop wetterstation bash: sudo: command not found
. -
@rene55 said in [Linux Shell-Skript] WLAN-Wetterstation:
@a200 Leider geht's auch damit nicht:
bash-5.0# sudo systemctl stop wetterstation bash: sudo: command not found
.gib einfach
id
ein
-
bash-5.0# id uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)
-
@a200 welchen docker container benutzt du?
-
@a200 Also mein Docker läuft auf einem Atom mit knapp 3GB RAM und einer SSD. Nach Auskunft des Systems läuft hier die Docker Version 20.10.0 - irgendwann in 2019 aufgesetzt
docker version Client: Docker Engine - Community Version: 20.10.0 API version: 1.40 Go version: go1.13.15 Git commit: 7287ab3 Built: Tue Dec 8 18:59:53 2020 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 19.03.13 API version: 1.40 (minimum version 1.12) Go version: go1.13.15 Git commit: 4484c46d9d Built: Wed Sep 16 17:01:06 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.4.3 GitCommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b runc: Version: 1.0.0-rc92 GitCommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff docker-init: Version: 0.18.0 GitCommit: fec3683
-
@rene55 ok, aber welchen container nutzt du?
docker container ls
-
@a200 Sorry, nicht korrekt gelesen. Also der Container ist aus einem Image erstellt worden nach diesem Dockerfile:
FROM alpine:3.12 RUN apk add --no-cache bc jq curl bash coreutils RUN apk add -U tzdata \ && cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime \ && apk del tzdata \ && rm -rf /var/cache/apk/* RUN mkdir /opt/weather/ WORKDIR /opt/weather #COPY ./source /opt/weather #RUN chmod +x wetterstation.sh #RUN chmod +x wetterstation.sub #RUN chmod +x wetterstation.conf ENTRYPOINT ["bash" , "wetterstation.sh"]
-
@rene55 Dann hat es wenig Sinn einen Service dafür zu erstellen. Du hast einen Minimalcontainer in dem wetterstation läuft. Wenn du den Service nicht brauchst, dann stoppe den Container. Dein Container gibt services/systemctl nicht her. Was möchstest du denn überhaupt machen?
-
@a200 Das ist wirklich eine minimalversion auf Alpine-Basis. Ich (wir = SBorg) suchen nach fehlenden Daten in den datenpunkten. Dazu sollte ich
bitte die Ausgabe von ./wetterstation.sh --debug
bereitstellen - und daran scheitere ich. Macht es Sinn, hier einen neuen Container zu bauen? -
@rene55 entweder du stoppst wetterstation.sh mit kill, oder du baust einen neuen Container bei dem wetterstation.sh nicht automatisch gestartet werden soll (ENTRYPOINT ["bash" , "wetterstation.sh"] anpassen) dann wird wetterstation.sh nicht ausgeführt und du kannst --debug laufen lassen
-
@a200 daran habe ich mich auch schon mal versucht. Wie muss denn dann die Zeile (ENTRYPOINT [ .... ) genau aussehen. Nehme ich nur "wetterstation.sh" raus, läuft der Container nicht.
-
@rene55 Versuchs mal mit ENTRYPOINT ["bash" , "ls"]
-
@a200 Hab ich umgehend versucht, neues Image, neuen Container: Container ist zwar grün, aber die Console startet nicht. Im Log steht :
/bin/ls: /bin/ls: cannot execute binary file
. Ich muss mich dann wohl mal nach einem kompletteren Linux umsehen - irgend eine Idee/Empfehlung? -
@rene55 ich kann das im Moment nicht prüfen und mach es aus dem Kopf. Versuchs mal mit ENTRYPOINT ["bash", "bash"]