Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. [Linux Shell-Skript] WLAN-Wetterstation

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

[Linux Shell-Skript] WLAN-Wetterstation

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
linuxshell-scriptwetterstationwlan-wetterstation
5.7k Beiträge 153 Kommentatoren 3.8m Aufrufe 135 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • SBorgS SBorg

    @langer sagte in [Linux Shell-Skript] WLAN-Wetterstation:

    1. Könnte man zB. am 01.01.2022 eine komplette Monatsstruktur anlegen, also 01 - 12 und mit jeweils mit einem json füllen der nur "0" als Wert enthält?
    2. Wenn Du um 01:03 Deine Statistik erstellst, auch für den laufenden Monat einen json erstellst bzw. Aktualisierst?
    3. Das gleiche für das laufende Jahr?
    4. Das gleiche für die Rekordwerte?

    Pauschal ja, aber da ich ein massives Zeitproblem habe aktuell leider nicht.
    #1 ist eher unkritisch, dass sollte sich auch zeitnah lösen lassen, da es max. nur eine handvoll Quellcode ist.
    #2-4 birgt leider noch ein weiteres Problem (bei #2 nicht so dramatisch). #3 + #4 sind, gerade zum Ende des Jahres bei vielen Datensätzen, eigentlich ein absolutes "Killerfeature" für Pi-Nutzer. Der braucht da 2-3 Minuten unter JS dafür, dabei laggt dann das ganze System. Unter Linux dauert die Abfrage unter 2 Sekunden, dann wäre aber ein Teil der Statistik im JS-Teil, der andere im Wetterstation-Skript...
    Das schreit dann schon wieder fast nach einer Wetterstatistik.sh, gerade weil es dann eigentlich nur Abfragen gegen die InfluxDB sind, wobei das für #4 eigentlich nicht gilt...
    ...und wo ich gerade tippe, #4? Das sind Allzeitwerte, also bspw. die höchste jemals gemessene Außentemperatur von 43.1° gemessen am 15.07.2020
    Solange es jetzt nicht über 43.1°C wird (oder du den Wert löschst) wird sich da nix mehr weiter tun ;)
    Sonst bitte Stellungnahme in dreifacher, schriftlicher Ausführung mit Durchschlag auf Normblatt 08/15 DIN A4 quer, gelocht mit Schrägstanzung :joy:

    L Offline
    L Offline
    Langer
    schrieb am zuletzt editiert von
    #3119

    @sborg

    Danke für Deine schnelle Antwort, leider ist mir das Normblatt 08/15 DIN A4 quer, gelocht mit Schrägstanzung ausgegangen:white_frowning_face:

    Aber Spaß bei Seite, ich habe bzw. bin ja dabei mit Javascript die Tabellen wie im Screenshot zu sehen, zu erstellen.
    Meine Frage: Wenn ich also am zB. 1.1.2022 im laufe des Tages mein Script laufen lasse, der die Dummy Monate 02 - 12.2022 erstellt, kommt Dein Programm mit dem Vorhanden sein der Dummy Monate zurecht?

    Die Aktualisierung des laufenden Monats, der Rekordwerte und des laufenden Jahres läuft ja schon bei mir.
    Wenn Dein Programm dies beinhalten würde währe es halt für alle verfügbar.

    Bei Fragen, geht es auch ohne Normblätter!!

    MfG
    Wastl

    SBorgS 1 Antwort Letzte Antwort
    0
    • SBorgS SBorg

      @viper4iob Dann haben sie es wohl irgendwann geändert (ich glaube es gab in den letzten 14 Tagen vier neue Versionen).
      Mir ist es allerdings auch nicht aufgefallen, da ich es eben auch zusätzlich alle 12 Stunden schreiben lasse.

      V Offline
      V Offline
      viper4iob
      schrieb am zuletzt editiert von viper4iob
      #3120

      @sborg

      Noch ein kleiner Punkt zum Thema Grafana, und zwar die Windrose.
      Ich hatte mich gewundert, warum diese bei wenig Wind, wo sich also auch seltener die Windrichtung ändert, immer Wind aus 0° angezeigt wird:

      2021-11-11_14-49-46__Window.jpg
      Nun ist es so, dass hier das DB Abfrage Intervall 1 Minute ist, dass heißt Grafana liest für jede Minute einen Wert aus der InfluxDB aus.
      Wenn aber kein Wert verfügbar ist, wird dieser mit null gefüllt. Und null wird aber scheinbar von der Windrose als 0° interpretiert.
      Ich lasse die Werte vom iobroker nur bei Änderungen in die DB schreiben, weil sich der Wert im Normalfall sehr häufig ändert, außer bei geringem Wind.
      Wenn sich jetzt also z.B. 5 min lang die Richtung nicht ändert, dann habe ich einen realen Wert und 4 null-Werte, was mir das Gesamtbild der Windrose verfälscht.

      Ich habe jetzt statt fill(null) fill(previous) eingestellt, was das Bild meiner Meinung nach verbessert. Und es entspricht ja auch dem, was die Windfahne macht, sie bleibt so stehen bis sie ihre Richtung wieder ändert:
      2021-11-11_14-49-00__Window.jpg

      Man könnte jetzt natürlich auch im iobroker den Wert minütlich schreiben lassen, würde aber am Ende zum gleichen Ergebnis führen.

      SBorgS 1 Antwort Letzte Antwort
      0
      • L Langer

        @sborg

        Danke für Deine schnelle Antwort, leider ist mir das Normblatt 08/15 DIN A4 quer, gelocht mit Schrägstanzung ausgegangen:white_frowning_face:

        Aber Spaß bei Seite, ich habe bzw. bin ja dabei mit Javascript die Tabellen wie im Screenshot zu sehen, zu erstellen.
        Meine Frage: Wenn ich also am zB. 1.1.2022 im laufe des Tages mein Script laufen lasse, der die Dummy Monate 02 - 12.2022 erstellt, kommt Dein Programm mit dem Vorhanden sein der Dummy Monate zurecht?

        Die Aktualisierung des laufenden Monats, der Rekordwerte und des laufenden Jahres läuft ja schon bei mir.
        Wenn Dein Programm dies beinhalten würde währe es halt für alle verfügbar.

        Bei Fragen, geht es auch ohne Normblätter!!

        MfG
        Wastl

        SBorgS Offline
        SBorgS Offline
        SBorg
        Forum Testing Most Active
        schrieb am zuletzt editiert von
        #3121

        @langer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
        :blush:

        kommt Dein Programm mit dem Vorhanden sein der Dummy Monate zurecht?

        Sollte nichts ausmachen. Wenn es die DPs schon gibt legt er sie halt einfach nicht nochmals an.
        Du müsstest nur, wenn du es nutzt, das AutoDelete um ein Jahr erhöhen als du wirklich willst, sonst löscht er wg. der "falschen" Zeitstempel die Daten zu früh (bspw. wird dann der Dezember bereits im Januar angelegt und ist dann lt. Zeitstempel im Dezember 11 Monate alt ;) ).

        LG SBorg ( SBorg auf GitHub)
        Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

        L 1 Antwort Letzte Antwort
        0
        • V viper4iob

          @sborg

          Noch ein kleiner Punkt zum Thema Grafana, und zwar die Windrose.
          Ich hatte mich gewundert, warum diese bei wenig Wind, wo sich also auch seltener die Windrichtung ändert, immer Wind aus 0° angezeigt wird:

          2021-11-11_14-49-46__Window.jpg
          Nun ist es so, dass hier das DB Abfrage Intervall 1 Minute ist, dass heißt Grafana liest für jede Minute einen Wert aus der InfluxDB aus.
          Wenn aber kein Wert verfügbar ist, wird dieser mit null gefüllt. Und null wird aber scheinbar von der Windrose als 0° interpretiert.
          Ich lasse die Werte vom iobroker nur bei Änderungen in die DB schreiben, weil sich der Wert im Normalfall sehr häufig ändert, außer bei geringem Wind.
          Wenn sich jetzt also z.B. 5 min lang die Richtung nicht ändert, dann habe ich einen realen Wert und 4 null-Werte, was mir das Gesamtbild der Windrose verfälscht.

          Ich habe jetzt statt fill(null) fill(previous) eingestellt, was das Bild meiner Meinung nach verbessert. Und es entspricht ja auch dem, was die Windfahne macht, sie bleibt so stehen bis sie ihre Richtung wieder ändert:
          2021-11-11_14-49-00__Window.jpg

          Man könnte jetzt natürlich auch im iobroker den Wert minütlich schreiben lassen, würde aber am Ende zum gleichen Ergebnis führen.

          SBorgS Offline
          SBorgS Offline
          SBorg
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #3122

          @viper4iob Was euch immer so alles auffällt :blush:

          LG SBorg ( SBorg auf GitHub)
          Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

          1 Antwort Letzte Antwort
          0
          • SBorgS SBorg

            @langer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
            :blush:

            kommt Dein Programm mit dem Vorhanden sein der Dummy Monate zurecht?

            Sollte nichts ausmachen. Wenn es die DPs schon gibt legt er sie halt einfach nicht nochmals an.
            Du müsstest nur, wenn du es nutzt, das AutoDelete um ein Jahr erhöhen als du wirklich willst, sonst löscht er wg. der "falschen" Zeitstempel die Daten zu früh (bspw. wird dann der Dezember bereits im Januar angelegt und ist dann lt. Zeitstempel im Dezember 11 Monate alt ;) ).

            L Offline
            L Offline
            Langer
            schrieb am zuletzt editiert von
            #3123

            @sborg

            Nochmals Danke für die schnelle Antwort.

            Ich habe AutoDelete_Data, AutoReset_Jahresstatistik jeweils auf 0 und Reset_Jahresstatistik auf false, also dürfte doch nichts passieren, oder?

            MfG
            Wastl

            G SBorgS 2 Antworten Letzte Antwort
            0
            • L Langer

              @sborg

              Nochmals Danke für die schnelle Antwort.

              Ich habe AutoDelete_Data, AutoReset_Jahresstatistik jeweils auf 0 und Reset_Jahresstatistik auf false, also dürfte doch nichts passieren, oder?

              MfG
              Wastl

              G Offline
              G Offline
              G.Hawk
              schrieb am zuletzt editiert von
              #3124

              Hallo
              Kann mir jemand sagen warum der Datenpunkt Maximaltemperatur Tag sich immer wieder aktualisiert mit der normalen Außentemperatur?

              Wenn die Außentemperatur runter geht übernimmt er leicht zeitversetzt auch diesen Wert.

              Muss ich da irgendwas ändern oder einstellen?

              SBorgS 1 Antwort Letzte Antwort
              0
              • L Langer

                @sborg

                Nochmals Danke für die schnelle Antwort.

                Ich habe AutoDelete_Data, AutoReset_Jahresstatistik jeweils auf 0 und Reset_Jahresstatistik auf false, also dürfte doch nichts passieren, oder?

                MfG
                Wastl

                SBorgS Offline
                SBorgS Offline
                SBorg
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #3125

                @langer sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                also dürfte doch nichts passieren, oder?

                Eigentlich nicht, aber nutzt du BackitUp? Sonst notfalls sicherheitshalber am 31.12. ein Backup per Hand ziehen, man weiß ja nie ... ;)

                LG SBorg ( SBorg auf GitHub)
                Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                1 Antwort Letzte Antwort
                0
                • G G.Hawk

                  Hallo
                  Kann mir jemand sagen warum der Datenpunkt Maximaltemperatur Tag sich immer wieder aktualisiert mit der normalen Außentemperatur?

                  Wenn die Außentemperatur runter geht übernimmt er leicht zeitversetzt auch diesen Wert.

                  Muss ich da irgendwas ändern oder einstellen?

                  SBorgS Offline
                  SBorgS Offline
                  SBorg
                  Forum Testing Most Active
                  schrieb am zuletzt editiert von
                  #3126

                  @martin-0 sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                  Muss ich da irgendwas ändern oder einstellen?

                  Jein, zwar nicht speziell, aber da der Wert nur per InfluxDB ermittelt wird, muss Influx natürlich aktiviert und korrekt eingerichtet sein.

                  LG SBorg ( SBorg auf GitHub)
                  Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                  G 1 Antwort Letzte Antwort
                  0
                  • SBorgS SBorg

                    @martin-0 sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                    Muss ich da irgendwas ändern oder einstellen?

                    Jein, zwar nicht speziell, aber da der Wert nur per InfluxDB ermittelt wird, muss Influx natürlich aktiviert und korrekt eingerichtet sein.

                    G Offline
                    G Offline
                    G.Hawk
                    schrieb am zuletzt editiert von
                    #3127

                    @sborg 👍🏻

                    1 Antwort Letzte Antwort
                    0
                    • SBorgS Offline
                      SBorgS Offline
                      SBorg
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von
                      #3128

                      Wie immer keine Werbung, Provision, Affiliate-Link oä., einfach nur falls wer sucht:

                      https://www.voelkner.de/products/981930/Eurochron-EFWS-2900-Funk-Wetterstation-Vorhersage-fuer-12-bis-24-Stunden.html?offer=283c00e4ef914501edc1fbc36863d452&ref=0&utm_source=newsletter&cc_code=ffc0ea2c00220153b57e6c61d7bae9e1&utm_medium=e-mail&utm_campaign=ve4540

                      Eurochron EFWS 2900 Funk-Wetterstation mit Gutscheinrabatt etc. inkl. Versand 105,95 €
                      Ist mal ein echter Schnapper ;)

                      LG SBorg ( SBorg auf GitHub)
                      Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                      V 1 Antwort Letzte Antwort
                      1
                      • SBorgS SBorg

                        Wie immer keine Werbung, Provision, Affiliate-Link oä., einfach nur falls wer sucht:

                        https://www.voelkner.de/products/981930/Eurochron-EFWS-2900-Funk-Wetterstation-Vorhersage-fuer-12-bis-24-Stunden.html?offer=283c00e4ef914501edc1fbc36863d452&ref=0&utm_source=newsletter&cc_code=ffc0ea2c00220153b57e6c61d7bae9e1&utm_medium=e-mail&utm_campaign=ve4540

                        Eurochron EFWS 2900 Funk-Wetterstation mit Gutscheinrabatt etc. inkl. Versand 105,95 €
                        Ist mal ein echter Schnapper ;)

                        V Offline
                        V Offline
                        viper4iob
                        schrieb am zuletzt editiert von viper4iob
                        #3129

                        @sborg

                        Ich wollte die OpenSenseMap Registrierung über das Skript durchführen: ./wetterstation.sh --osem_reg.
                        Nur leider bricht diese gleich mit folgendem Fehler ab:
                        2021-11-17_09-00-40__esx – VMware ESXi.jpg

                        So sieht die conf aus:
                        2021-11-17_09-10-34__esx – VMware ESXi.jpg

                        Die Zeile, die den Fehler erzeugt, ist diese:
                        2021-11-17_09-13-03__esx – VMware ESXi.jpg

                        Jetzt habe ich mich gefragt, wo dieser OSEM_USER her kommt, der hier geprüft wird, in der conf gibt es nur einen senseBox_USER, und die Abfrage am Terminal durch read kommt erst nach dieser Prüfung. Und ich konnte auch keine Stelle finden, an der der senseBox_USER aus der conf ausgelesen und in den OSEM_USER geschrieben wird.
                        Und selbst wenn im OSEM_USER an der Stelle den Inhalt aus senseBox_USER hätte, müsste dann das Prüfen auf den Leerstring vielleicht eher so aussehen if [ ! -z $OSEM_USER ];?
                        Nun weiß ich auch nicht, ob nur ich damit ein Problem habe, weil das ws_update Skript bei mir auch nicht richtig läuft, wo das patchen schief geht und ich immer noch nicht weiß warum.
                        Aber vielleicht ist es ja hier ein anderes Problem ;-)

                        SBorgS 1 Antwort Letzte Antwort
                        1
                        • V viper4iob

                          @sborg

                          Ich wollte die OpenSenseMap Registrierung über das Skript durchführen: ./wetterstation.sh --osem_reg.
                          Nur leider bricht diese gleich mit folgendem Fehler ab:
                          2021-11-17_09-00-40__esx – VMware ESXi.jpg

                          So sieht die conf aus:
                          2021-11-17_09-10-34__esx – VMware ESXi.jpg

                          Die Zeile, die den Fehler erzeugt, ist diese:
                          2021-11-17_09-13-03__esx – VMware ESXi.jpg

                          Jetzt habe ich mich gefragt, wo dieser OSEM_USER her kommt, der hier geprüft wird, in der conf gibt es nur einen senseBox_USER, und die Abfrage am Terminal durch read kommt erst nach dieser Prüfung. Und ich konnte auch keine Stelle finden, an der der senseBox_USER aus der conf ausgelesen und in den OSEM_USER geschrieben wird.
                          Und selbst wenn im OSEM_USER an der Stelle den Inhalt aus senseBox_USER hätte, müsste dann das Prüfen auf den Leerstring vielleicht eher so aussehen if [ ! -z $OSEM_USER ];?
                          Nun weiß ich auch nicht, ob nur ich damit ein Problem habe, weil das ws_update Skript bei mir auch nicht richtig läuft, wo das patchen schief geht und ich immer noch nicht weiß warum.
                          Aber vielleicht ist es ja hier ein anderes Problem ;-)

                          SBorgS Offline
                          SBorgS Offline
                          SBorg
                          Forum Testing Most Active
                          schrieb am zuletzt editiert von
                          #3130

                          @viper4iob Kannst du auch nicht finden, klassicher C&P-Fehler.

                          Die einfache *if variable; ..." funktioniert schon, denn alles was "nicht leer ist" liefert hier ein true und die Bedingung wird wahr. Ich habe es jetzt aber auf die eher geläufige [ "$var" != "" ] Variante geändert (+ nun mit der richtigen Variablen :innocent: ).

                          BugFix V2.10.1 steht auf GitHub im "master"; einfach "sh" und "sub" tauschen (ggf. Service neu starten)
                          Enthält noch kleinere Schönheitskorrekturen.

                          LG SBorg ( SBorg auf GitHub)
                          Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                          V 1 Antwort Letzte Antwort
                          1
                          • SBorgS SBorg

                            @viper4iob Kannst du auch nicht finden, klassicher C&P-Fehler.

                            Die einfache *if variable; ..." funktioniert schon, denn alles was "nicht leer ist" liefert hier ein true und die Bedingung wird wahr. Ich habe es jetzt aber auf die eher geläufige [ "$var" != "" ] Variante geändert (+ nun mit der richtigen Variablen :innocent: ).

                            BugFix V2.10.1 steht auf GitHub im "master"; einfach "sh" und "sub" tauschen (ggf. Service neu starten)
                            Enthält noch kleinere Schönheitskorrekturen.

                            V Offline
                            V Offline
                            viper4iob
                            schrieb am zuletzt editiert von viper4iob
                            #3131

                            @sborg said in [Linux Shell-Skript] WLAN-Wetterstation:

                            @viper4iob Kannst du auch nicht finden, klassicher C&P-Fehler.

                            Die einfache *if variable; ..." funktioniert schon, denn alles was "nicht leer ist" liefert hier ein true und die Bedingung wird wahr. Ich habe es jetzt aber auf die eher geläufige [ "$var" != "" ] Variante geändert (+ nun mit der richtigen Variablen :innocent: ).

                            BugFix V2.10.1 steht auf GitHub im "master"; einfach "sh" und "sub" tauschen (ggf. Service neu starten)
                            Enthält noch kleinere Schönheitskorrekturen.

                            Danke, für das schnelle Beheben.
                            Mein Linux versucht aber bei if variable; den Inhalt als Kommando auszuführen, wenn dort etwas gesetzt ist und bei einem Leerstring, liefert es true zurück. Hier ein kleiner Test, 2 identische Skripte, bei einem ist die Variable OSEM_USER leer und bei dem anderen gesetzt:

                            2021-11-17_10-59-52__esx – VMware ESXi.jpg

                            So ist es besser lesbar:

                            viper@kubix:/opt/wetterstation$ cat test_leer.sh
                            #!/bin/bash
                            
                            OSEM_USER=
                            if $OSEM_USER; then echo -e "\n${RE} [FEHLER:]   ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!\n";fi
                            viper@kubix:/opt/wetterstation$
                            viper@kubix:/opt/wetterstation$
                            viper@kubix:/opt/wetterstation$ cat test_gesetzt.sh
                            #!/bin/bash
                            
                            OSEM_USER=ahg123
                            if $OSEM_USER; then echo -e "\n${RE} [FEHLER:]   ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!\n";fi
                            viper@kubix:/opt/wetterstation$
                            viper@kubix:/opt/wetterstation$
                            viper@kubix:/opt/wetterstation$ ./test_leer.sh
                            
                             [FEHLER:]   ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!
                            
                            viper@kubix:/opt/wetterstation$
                            viper@kubix:/opt/wetterstation$
                            viper@kubix:/opt/wetterstation$ ./test_gesetzt.sh
                            ./test_gesetzt.sh: Zeile 5: ahg123: Befehl nicht gefunden
                            viper@kubix:/opt/wetterstation$
                            viper@kubix:/opt/wetterstation$ bash --version
                            GNU bash, Version 5.0.17(1)-release (x86_64-pc-linux-gnu)
                            
                            SBorgS 1 Antwort Letzte Antwort
                            0
                            • V viper4iob

                              @sborg said in [Linux Shell-Skript] WLAN-Wetterstation:

                              @viper4iob Kannst du auch nicht finden, klassicher C&P-Fehler.

                              Die einfache *if variable; ..." funktioniert schon, denn alles was "nicht leer ist" liefert hier ein true und die Bedingung wird wahr. Ich habe es jetzt aber auf die eher geläufige [ "$var" != "" ] Variante geändert (+ nun mit der richtigen Variablen :innocent: ).

                              BugFix V2.10.1 steht auf GitHub im "master"; einfach "sh" und "sub" tauschen (ggf. Service neu starten)
                              Enthält noch kleinere Schönheitskorrekturen.

                              Danke, für das schnelle Beheben.
                              Mein Linux versucht aber bei if variable; den Inhalt als Kommando auszuführen, wenn dort etwas gesetzt ist und bei einem Leerstring, liefert es true zurück. Hier ein kleiner Test, 2 identische Skripte, bei einem ist die Variable OSEM_USER leer und bei dem anderen gesetzt:

                              2021-11-17_10-59-52__esx – VMware ESXi.jpg

                              So ist es besser lesbar:

                              viper@kubix:/opt/wetterstation$ cat test_leer.sh
                              #!/bin/bash
                              
                              OSEM_USER=
                              if $OSEM_USER; then echo -e "\n${RE} [FEHLER:]   ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!\n";fi
                              viper@kubix:/opt/wetterstation$
                              viper@kubix:/opt/wetterstation$
                              viper@kubix:/opt/wetterstation$ cat test_gesetzt.sh
                              #!/bin/bash
                              
                              OSEM_USER=ahg123
                              if $OSEM_USER; then echo -e "\n${RE} [FEHLER:]   ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!\n";fi
                              viper@kubix:/opt/wetterstation$
                              viper@kubix:/opt/wetterstation$
                              viper@kubix:/opt/wetterstation$ ./test_leer.sh
                              
                               [FEHLER:]   ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!
                              
                              viper@kubix:/opt/wetterstation$
                              viper@kubix:/opt/wetterstation$
                              viper@kubix:/opt/wetterstation$ ./test_gesetzt.sh
                              ./test_gesetzt.sh: Zeile 5: ahg123: Befehl nicht gefunden
                              viper@kubix:/opt/wetterstation$
                              viper@kubix:/opt/wetterstation$ bash --version
                              GNU bash, Version 5.0.17(1)-release (x86_64-pc-linux-gnu)
                              
                              SBorgS Offline
                              SBorgS Offline
                              SBorg
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von
                              #3132

                              @viper4iob Witzig, oder auch nicht... ;)

                              Mache mal spaßeshalber den Gegentest direkt in der Console:

                              a=1
                              test $a && echo "Gesetzt" || echo "Nö"
                              
                              test $b && echo "Gesetzt" || echo "Nö"
                              

                              LG SBorg ( SBorg auf GitHub)
                              Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                              V 1 Antwort Letzte Antwort
                              0
                              • SBorgS SBorg

                                @viper4iob Witzig, oder auch nicht... ;)

                                Mache mal spaßeshalber den Gegentest direkt in der Console:

                                a=1
                                test $a && echo "Gesetzt" || echo "Nö"
                                
                                test $b && echo "Gesetzt" || echo "Nö"
                                
                                V Offline
                                V Offline
                                viper4iob
                                schrieb am zuletzt editiert von
                                #3133

                                @sborg said in [Linux Shell-Skript] WLAN-Wetterstation:

                                a=1 test $a && echo "Gesetzt" || echo "Nö" test $b && echo "Gesetzt" || echo "Nö"

                                Erst direkt in der Konsole, dann als Skript:

                                viper@kubix:/opt/wetterstation$ a=1
                                viper@kubix:/opt/wetterstation$ test $a && echo "Gesetzt" || echo "Nö"
                                Gesetzt
                                viper@kubix:/opt/wetterstation$
                                viper@kubix:/opt/wetterstation$ test $b && echo "Gesetzt" || echo "Nö"
                                Nö
                                viper@kubix:/opt/wetterstation$ ./test.sh
                                Gesetzt
                                Nö
                                
                                
                                V 1 Antwort Letzte Antwort
                                0
                                • V viper4iob

                                  @sborg said in [Linux Shell-Skript] WLAN-Wetterstation:

                                  a=1 test $a && echo "Gesetzt" || echo "Nö" test $b && echo "Gesetzt" || echo "Nö"

                                  Erst direkt in der Konsole, dann als Skript:

                                  viper@kubix:/opt/wetterstation$ a=1
                                  viper@kubix:/opt/wetterstation$ test $a && echo "Gesetzt" || echo "Nö"
                                  Gesetzt
                                  viper@kubix:/opt/wetterstation$
                                  viper@kubix:/opt/wetterstation$ test $b && echo "Gesetzt" || echo "Nö"
                                  Nö
                                  viper@kubix:/opt/wetterstation$ ./test.sh
                                  Gesetzt
                                  Nö
                                  
                                  
                                  V Offline
                                  V Offline
                                  viper4iob
                                  schrieb am zuletzt editiert von viper4iob
                                  #3134

                                  @viper4iob
                                  Ich glaube ich habs:

                                  if $OSEM_USER;...
                                  if [ $OSEM_USER ];...
                                  

                                  Ersteres führt zu oben genannten Problem, mit eckigen Klammern geht es.

                                  EDIT
                                  Hier nochmal alles:

                                  viper@kubix:/opt/wetterstation$ cat test_leer.sh
                                  #!/bin/bash
                                  
                                  OSEM_USER=
                                  if [ $OSEM_USER ]; then echo -e "\n${RE} [FEHLER:]   ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!\n";fi
                                  viper@kubix:/opt/wetterstation$
                                  viper@kubix:/opt/wetterstation$
                                  viper@kubix:/opt/wetterstation$
                                  viper@kubix:/opt/wetterstation$ cat test_gesetzt.sh
                                  #!/bin/bash
                                  
                                  OSEM_USER=ahg123
                                  if [ $OSEM_USER ]; then echo -e "\n${RE} [FEHLER:]   ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!\n";fi
                                  viper@kubix:/opt/wetterstation$
                                  viper@kubix:/opt/wetterstation$
                                  viper@kubix:/opt/wetterstation$ ./test_leer.sh
                                  viper@kubix:/opt/wetterstation$
                                  viper@kubix:/opt/wetterstation$
                                  viper@kubix:/opt/wetterstation$ ./test_gesetzt.sh
                                  
                                   [FEHLER:]   ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!
                                  
                                  viper@kubix:/opt/wetterstation$
                                  
                                  
                                  SBorgS 1 Antwort Letzte Antwort
                                  0
                                  • V viper4iob

                                    @viper4iob
                                    Ich glaube ich habs:

                                    if $OSEM_USER;...
                                    if [ $OSEM_USER ];...
                                    

                                    Ersteres führt zu oben genannten Problem, mit eckigen Klammern geht es.

                                    EDIT
                                    Hier nochmal alles:

                                    viper@kubix:/opt/wetterstation$ cat test_leer.sh
                                    #!/bin/bash
                                    
                                    OSEM_USER=
                                    if [ $OSEM_USER ]; then echo -e "\n${RE} [FEHLER:]   ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!\n";fi
                                    viper@kubix:/opt/wetterstation$
                                    viper@kubix:/opt/wetterstation$
                                    viper@kubix:/opt/wetterstation$
                                    viper@kubix:/opt/wetterstation$ cat test_gesetzt.sh
                                    #!/bin/bash
                                    
                                    OSEM_USER=ahg123
                                    if [ $OSEM_USER ]; then echo -e "\n${RE} [FEHLER:]   ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!\n";fi
                                    viper@kubix:/opt/wetterstation$
                                    viper@kubix:/opt/wetterstation$
                                    viper@kubix:/opt/wetterstation$ ./test_leer.sh
                                    viper@kubix:/opt/wetterstation$
                                    viper@kubix:/opt/wetterstation$
                                    viper@kubix:/opt/wetterstation$ ./test_gesetzt.sh
                                    
                                     [FEHLER:]   ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!
                                    
                                    viper@kubix:/opt/wetterstation$
                                    
                                    
                                    SBorgS Offline
                                    SBorgS Offline
                                    SBorg
                                    Forum Testing Most Active
                                    schrieb am zuletzt editiert von
                                    #3135

                                    @viper4iob Trotzdem sehr eigenartig, da "test" die Vereinfachung von "if - then - else" ist und in der Console funktioniert, im Skript dann aber wieder nicht.

                                    Memo to me: Also sicherheitshalber, wenn faul, dann zumindest in [] oder gleich die Langvariante nehmen... ;)

                                    LG SBorg ( SBorg auf GitHub)
                                    Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                                    V 1 Antwort Letzte Antwort
                                    0
                                    • SBorgS SBorg

                                      @viper4iob Trotzdem sehr eigenartig, da "test" die Vereinfachung von "if - then - else" ist und in der Console funktioniert, im Skript dann aber wieder nicht.

                                      Memo to me: Also sicherheitshalber, wenn faul, dann zumindest in [] oder gleich die Langvariante nehmen... ;)

                                      V Offline
                                      V Offline
                                      viper4iob
                                      schrieb am zuletzt editiert von viper4iob
                                      #3136

                                      @sborg said in [Linux Shell-Skript] WLAN-Wetterstation:

                                      @viper4iob Trotzdem sehr eigenartig, da "test" die Vereinfachung von "if - then - else" ist und in der Console funktioniert, im Skript dann aber wieder nicht.

                                      Memo to me: Also sicherheitshalber, wenn faul, dann zumindest in [] oder gleich die Langvariante nehmen... ;)

                                      Naja, das Kommando test hat in der Konsole und im Skript das gleiche Ergebnis geliefert.
                                      Aber die Kombination aus dem if-Statement ohne Klammern scheint problematisch zu sein.

                                      In der Konsole passiert genau der gleiche Fehler, Vergleich if ohne und mit []:

                                      viper@kubix:/opt/wetterstation$ OSEM_USER=
                                      viper@kubix:/opt/wetterstation$ echo $OSEM_USER
                                      
                                      viper@kubix:/opt/wetterstation$ if $OSEM_USER; then echo "gesetzt";fi
                                      gesetzt
                                      viper@kubix:/opt/wetterstation$ if [ $OSEM_USER ]; then echo "gesetzt";fi
                                      viper@kubix:/opt/wetterstation$
                                      viper@kubix:/opt/wetterstation$
                                      viper@kubix:/opt/wetterstation$ OSEM_USER=zgh123
                                      viper@kubix:/opt/wetterstation$ echo $OSEM_USER
                                      zgh123
                                      viper@kubix:/opt/wetterstation$ if $OSEM_USER; then echo "gesetzt";fi
                                      zgh123: Befehl nicht gefunden.
                                      viper@kubix:/opt/wetterstation$ if [ $OSEM_USER ]; then echo "gesetzt";fi
                                      gesetzt
                                      viper@kubix:/opt/wetterstation$
                                      
                                      
                                      V 1 Antwort Letzte Antwort
                                      0
                                      • V viper4iob

                                        @sborg said in [Linux Shell-Skript] WLAN-Wetterstation:

                                        @viper4iob Trotzdem sehr eigenartig, da "test" die Vereinfachung von "if - then - else" ist und in der Console funktioniert, im Skript dann aber wieder nicht.

                                        Memo to me: Also sicherheitshalber, wenn faul, dann zumindest in [] oder gleich die Langvariante nehmen... ;)

                                        Naja, das Kommando test hat in der Konsole und im Skript das gleiche Ergebnis geliefert.
                                        Aber die Kombination aus dem if-Statement ohne Klammern scheint problematisch zu sein.

                                        In der Konsole passiert genau der gleiche Fehler, Vergleich if ohne und mit []:

                                        viper@kubix:/opt/wetterstation$ OSEM_USER=
                                        viper@kubix:/opt/wetterstation$ echo $OSEM_USER
                                        
                                        viper@kubix:/opt/wetterstation$ if $OSEM_USER; then echo "gesetzt";fi
                                        gesetzt
                                        viper@kubix:/opt/wetterstation$ if [ $OSEM_USER ]; then echo "gesetzt";fi
                                        viper@kubix:/opt/wetterstation$
                                        viper@kubix:/opt/wetterstation$
                                        viper@kubix:/opt/wetterstation$ OSEM_USER=zgh123
                                        viper@kubix:/opt/wetterstation$ echo $OSEM_USER
                                        zgh123
                                        viper@kubix:/opt/wetterstation$ if $OSEM_USER; then echo "gesetzt";fi
                                        zgh123: Befehl nicht gefunden.
                                        viper@kubix:/opt/wetterstation$ if [ $OSEM_USER ]; then echo "gesetzt";fi
                                        gesetzt
                                        viper@kubix:/opt/wetterstation$
                                        
                                        
                                        V Offline
                                        V Offline
                                        viper4iob
                                        schrieb am zuletzt editiert von viper4iob
                                        #3137

                                        @SBorg

                                        Zum Thema zurück :-)
                                        Ich habe jetzt die sh und sub Dateien bei mir aktualisiert.
                                        Nun scheitere ich aber am Punkt 2 des Install Guides genau an der gleichen Stelle.
                                        Das Skript bricht ab, weil nun wirklich ein user gesetzt ist und man kann dann sie SenseBox nicht registrieren.

                                        Die Registrierungsmail habe ich zwischen den beiden Aufrufen bestätigt.

                                         Alle Eingaben korrekt [J/N]: J
                                        
                                        
                                         Lege neuen SenseBox-User an... OK
                                         Speichere User und Passwort in wetterstation.conf ab... OK
                                         Vor dem fortfahren nun bitte zuerst die Email-Adresse verifizieren (Email von OpenSenseMap im Posteingang)...
                                        viper@kubix:/opt/wetterstation$ ./wetterstation.sh --osem_reg
                                        
                                         [FEHLER:]   ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!
                                        
                                        viper@kubix:/opt/wetterstation$
                                        

                                        Ich denke diese if-Abfrage, ob der user schon vorhanden ist, sollte erst kommen, wenn man die Frage nach dem Einrichten eines neuen Users mit Ja bestätigt hat, also nach hier:

                                        echo -en "\n$WE Neuen SenseBox-User registrieren [${GR}Ja/Nein${WE}]: $GE"
                                                read JN
                                                if [ ! $JN ]; then JN="Nein"; fi
                                                if [ $JN == "Ja" ]; then
                                        
                                        
                                        da_WoodyD 1 Antwort Letzte Antwort
                                        0
                                        • V viper4iob

                                          @SBorg

                                          Zum Thema zurück :-)
                                          Ich habe jetzt die sh und sub Dateien bei mir aktualisiert.
                                          Nun scheitere ich aber am Punkt 2 des Install Guides genau an der gleichen Stelle.
                                          Das Skript bricht ab, weil nun wirklich ein user gesetzt ist und man kann dann sie SenseBox nicht registrieren.

                                          Die Registrierungsmail habe ich zwischen den beiden Aufrufen bestätigt.

                                           Alle Eingaben korrekt [J/N]: J
                                          
                                          
                                           Lege neuen SenseBox-User an... OK
                                           Speichere User und Passwort in wetterstation.conf ab... OK
                                           Vor dem fortfahren nun bitte zuerst die Email-Adresse verifizieren (Email von OpenSenseMap im Posteingang)...
                                          viper@kubix:/opt/wetterstation$ ./wetterstation.sh --osem_reg
                                          
                                           [FEHLER:]   ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!
                                          
                                          viper@kubix:/opt/wetterstation$
                                          

                                          Ich denke diese if-Abfrage, ob der user schon vorhanden ist, sollte erst kommen, wenn man die Frage nach dem Einrichten eines neuen Users mit Ja bestätigt hat, also nach hier:

                                          echo -en "\n$WE Neuen SenseBox-User registrieren [${GR}Ja/Nein${WE}]: $GE"
                                                  read JN
                                                  if [ ! $JN ]; then JN="Nein"; fi
                                                  if [ $JN == "Ja" ]; then
                                          
                                          
                                          da_WoodyD Online
                                          da_WoodyD Online
                                          da_Woody
                                          schrieb am zuletzt editiert von
                                          #3138

                                          @viper4iob sorry wenn ich dich falsch verstehe, aber wenn du in der config den user schon drinnen hast, dann brauchst du ja keinen neuen user anlegen...

                                          gruß vom Woody
                                          HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                                          SBorgS V 2 Antworten Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          782

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe