Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [Linux Shell-Skript] WLAN-Wetterstation

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Linux Shell-Skript] WLAN-Wetterstation

    This topic has been deleted. Only users with topic management privileges can see it.
    • Negalein
      Negalein Global Moderator @SBorg last edited by

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

      @viper4iob Ich habe bis dato noch nichts nachteiliges bemerkt. Auch das "umshiften" von größeren Datenmengen innerhalb Influx klappt schnell. Größere Anfragen per Influx-Adapter habe ich allerdings keine, denn ev. hängt es hier auch am Adapter.

      Per JS, Grafana etc. ist alles subjektiv gleich schnell, zumindest nicht spürbar schneller/langsamer.

      Dann hab ich es richtig gemacht.
      Aber beim Import des Dashboard, bei der Abfrage nach der Source, kann ich jeweils nur die Datasource auswählen.
      Nicht jedoch influx für permanent und influx-1w für temporär.

      15ab1b8d-d8db-47cc-a8eb-32024544240d-image.png

      1aad872d-30cf-49c6-821d-4ca1d4f7a00e-image.png

      Oder mach ich wiedermal wo was falsch?

      SBorg 1 Reply Last reply Reply Quote 0
      • SBorg
        SBorg Forum Testing Most Active last edited by

        Ich habe jetzt mal mein Konzept überdacht und überarbeitet.
        Dabei kam dann "tabula rasa" heraus, oder der obligatorische Frühjahrsputz...

        Für meinen Teil werde ich zukünftig nur noch mit einer Influx-Instanz arbeiten die ein Bucket mit einer Retention von xx Tagen (irgendwo so bei ~30-90 Tage [wird sich noch zeigen]) bedient.
        Daraus zieht sich erst mal alles seine Daten was so gebraucht wird (Grafana, JS, NodeRED usw).

        Nicht wichtiges/permanentes (hier rot):
        Bild 001.png

        logge ich überhaupt nicht mehr in Influx, sondern beziehe es per Infinity-Datenquelle per RestAPI direkt aus dem ioB.

        Das was mich längerfristig interessiert (zB. Außentemperatur [für "vor einem Jahr"], der Gaspreisverlauf etc.] shifte ich dann per Influx-Tasks in ein neues Bucket mit einer Retention von "never". Das Bucket lässt sich dann natürlich noch in Grafana & Co. benutzen, man kann aber auch die Datenflut minimieren (zB. beim Regen nicht "1-2-3-4-n... mm" schreiben, sondern gleich den Gesamtwert).

        1 Reply Last reply Reply Quote 0
        • SBorg
          SBorg Forum Testing Most Active @Negalein last edited by

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

          Oder mach ich wiedermal wo was falsch?

          Jein, das ist bisserl blöd in Grafana. Du kannst es da erst auswählen wenn du influx-1w auch wirklich als Datenquelle hinzugefügt hast. In dem Fall hast du dann doch zwei Datenquellen und 2 Buckets aus Sicht von Grafana, auch wenn es technisch gesehen 2 Buckets aus einer Datenquelle sind 🙃

          Negalein 1 Reply Last reply Reply Quote 0
          • Negalein
            Negalein Global Moderator @SBorg last edited by

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

            Du kannst es da erst auswählen wenn du influx-1w auch wirklich als Datenquelle hinzugefügt hast

            Ok, also hier zusätzlich eine Datenquelle (ident mit InfluxDB 2), und diese dann nur für influx-1w verwenden.
            21981f68-2779-4383-aa83-453ebe5f5bf1-image.png

            Und hier bei Default Bucket dann influx-1w eintragen.
            cde932aa-a587-431b-802a-8a8575d3b0e1-image.png

            SBorg 1 Reply Last reply Reply Quote 0
            • V
              viper4iob @SBorg last edited by

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

              @viper4iob Ich habe bis dato noch nichts nachteiliges bemerkt. Auch das "umshiften" von größeren Datenmengen innerhalb Influx klappt schnell. Größere Anfragen per Influx-Adapter habe ich allerdings keine, denn ev. hängt es hier auch am Adapter.

              Per JS, Grafana etc. ist alles subjektiv gleich schnell, zumindest nicht spürbar schneller/langsamer.

              Ok, danke für die Info.
              Werde es als nächstes mit dem neuem Grafana Dashboard von dir testen (danke schon mal im Voraus dafür).
              Dann werde ich sehen, ob es generell an der InfluxDB liegt oder nur am Influx Adapter vom iobroker.

              1 Reply Last reply Reply Quote 0
              • V
                viper4iob last edited by viper4iob

                @SBorg
                Erst einmal wieder ein großes Dankeschön fürs updaten des Wetterstations-Skripts, funktioniert soweit ohne Probleme, auch die Abfrage der Werte per Influx läuft

                Dann generell:
                Ich habe jetzt nochmal ein paar Tests zur Performance der InfluxDB V2 durchgeführt.

                • Auf der Influx DB Web UI habe ich im Data Explorer mal 60 Measurements markiert, die letzten 30 Tage abgefragt und das Ergebnis als Simple Table angezeigt. Der Query hat 0,1 Sekunden gedauert
                • Ich habe das neue Grafana Dashboard importiert, das hat etwas gedauert, weil erstens die Änderung der Variablen bei mir nichts bewirkt hat (habs dann vorm Import in der json angepasst) und dann standen bei vielen Queries noch nicht die Variablen drin, was dann mit einem Suchen/Ersetzen in der json Datei erledigt wurde 😉 . Auf jeden Fall läd das neue Dashboard, das die Daten über die neue Data Source per Flux Sprache und Token abfragt, auch sehr schnell.

                Es sieht also tatsächlich so aus, dass nur der Influx Adapter im iobroker beim Auslesen größerer Datenmengen zumindest bei mir Probleme macht.
                Falls jemand mal Lust hat, bitte folgendes Script im iobroker anlegen, ggf. Influx Instanz / Bucket Namen anpassen und ausführen:

                sendTo('influxdb.0', 'query', 'from(bucket: "iobroker") |> range(start: -24h)', function (result) {
                    if (result.error) {
                        console.error(result.error);
                    } else {
                        // show result
                         //console.log('Rows: ' + JSON.stringify(result));
                         console.log('fertig');
                    }
                });
                

                Das Skript fragt einfach mal die Werte aller Measurements der letzten 24 Stunden ab.
                Danach mal ins iobroker Protokoll gehen und checken wie viel Zeit zwischen dem Skriptstart und der "fertig" Meldung vergangen ist. Bei mir hat das ca. 35 Sekunden gedauert 😑
                Natürlich ist es schwierig das zu vergleichen, weil das sehr davon abhängt wie viele Measurements man hat und wie viele Werte darin gespeichert sind. Ich habe aktuell um die 150 Measurements in der DB.
                Eine Tendenz sollte aber trotzdem sichtbar sein und es würde mich interessieren, ob nur ich ein Problem damit habe oder ob das generell am Adapter liegt.
                Danke schon mal im Voraus.

                Mir ist das Ganze auch nur aufgefallen, weil ich auch den ECharts Adapter zum Anzeigen von Graphen nutze und der zieht die Daten eben aus der Historie über den Influx Adapter des iobrokers.
                Das Laden der Graphen dauert im V2 Modus des Influx Adapters nun deutlich länger als im V1 Modus (Ich kann noch den V1 Modus nutzen, weil ich die User aus v1 mit migriert habe, die dann weiterhin per Basic Auth und InfluxQL abfragen können). Ich habe mehrmals zwischen beiden Modi gewechselt und es ist reproduzierbar.

                SBorg mango1402 Latzi 3 Replies Last reply Reply Quote 0
                • SBorg
                  SBorg Forum Testing Most Active @Negalein last edited by

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

                  Und hier bei Default Bucket dann influx-1w eintragen.

                  Jepp, das ist dann die Zuweisung "nimm für die Datenquelle dieses Bucket"

                  Negalein 1 Reply Last reply Reply Quote 1
                  • SBorg
                    SBorg Forum Testing Most Active @viper4iob last edited by

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

                    fürs updaten des Wetterstations-Skripts, funktioniert soweit ohne Probleme

                    So gut das ich eben einen Fix veröffentlicht habe 😊


                    Neue Version des JavaScriptes Wetterstation-Statistik auf GitHub V2.0.2

                    • ~Bugfix fehlender Vorjahresmonat (Fix Issue #58)

                    Wie immer zu finden im GitHub

                    V 1 Reply Last reply Reply Quote 2
                    • V
                      viper4iob @SBorg last edited by viper4iob

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

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

                      fürs updaten des Wetterstations-Skripts, funktioniert soweit ohne Probleme

                      So gut das ich eben einen Fix veröffentlicht habe 😊


                      Neue Version des JavaScriptes Wetterstation-Statistik auf GitHub V2.0.2

                      • ~Bugfix fehlender Vorjahresmonat (Fix Issue #58)

                      Wie immer zu finden im GitHub

                      Auch hier danke, kann ich aktuell nur nicht nutzen, weil mein Influx Adapter auf V1 läuft, bis ich mir was wegen dem Performance-Problem vom Influx Adapter im V2 Modus überlegt habe (z.B. meine ECharts mit Grafana nachbauen und irgendwie in jarvis einbinden). Ich muss aktuell also erst mal noch das alte Wetterstatistik Skript verwenden 😉

                      1 Reply Last reply Reply Quote 0
                      • mango1402
                        mango1402 @viper4iob last edited by

                        @viper4iob
                        Kann Deine Erfahrung mit V2 nur bestätigen - eCharts wird zur lahmen, unbrauchbaren Krücke.....
                        Ob es jetzt am Influx, eCharts oder dem Influx-Adapter liegt kann ich nicht sagen.

                        Konkret: hab Influx auf einem extra Container laufen, bei einer eCharts Abfrage von 4 Messreihen der letzten 24h geht die CPU-Last vom Influx auf 150%, wenn man Glück hat erscheint mal eine Messreihe.... Wenn man dann noch Auto-Update eingeschaltet hat, ist's vorbei mit der Analyse von Charts.....

                        Die Anzahl der measuremenst dürfte ja keinen Einfluss haben. Mit V1 geht's qasi auch 'in Echtzeit'.

                        1 Reply Last reply Reply Quote 0
                        • G
                          G.Hawk last edited by G.Hawk

                          Hallo
                          Das Skript läuft auf einem Rasberry 4.
                          Bis Vorgestern lief alles wunderbar, dann habe ich probiert ein update zu machen.
                          Jetzt kommen keine Daten mehr rein.

                          ./wetterstation.sh --debug

                          passierte folgendes:

                          DATA von Wetterstation:
                          
                          
                          
                          Debug VAR:
                           Installationsverzeichnis: /home/pi/wetterstation
                           IPP: 192.168.10.13:8087	WS_PORT: 1080		WS_POLL: 30		PRE_DP: 0_userdata.0.Wetterstation
                           WEB: HTTP		WS_PROT: Wunderground
                          
                          Zusatzsensoren:
                           DP10/35/40/50/60/70/100/200/250/300: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 
                           WH31: 0 || WS90: 0
                          
                          Script-Version: V2.21.0	Config-Version: V2.21.0	Sub-Version: V2.21.0
                          
                          Kommunikationsfehler!
                          
                          
                          Kommunikationsfehler! Stimmt die WS_ID in der Konfiguration mit der der WS View-App überein? 
                          
                          pi@raspberrypi:~/wetterstation $ 
                          
                          

                          Also habe ich alles deinstalliert und nochmal von vorn.

                          Bei der Anleitung ist mir aufgefallen das bei dem Befehl

                          chmod +x ws_updater

                          "Datei nicht gefunden kam. Ich habe dann ein .sh eingefügt und dann war die Meldung weg.
                          Ob das richtig war weiß ich nicht genau, aber für mich war es logisch.

                          Die drei Dateien wurden dann automatisch in das Verzeichnis kopiert.
                          Installation ausgeführt.
                          Wetterstation.conf angepasst und per WinSCP rüberkopiert.

                          Dann kam wieder die gleiche Fehlermeldung siehe oben.

                          Bei der Statusüberprüfung kommt das:

                          wetterstation.service - Service für ioBroker Wetterstation
                             Loaded: loaded (/etc/systemd/system/wetterstation.service; enabled; vendor preset: enabl
                             Active: active (running) since Fri 2023-03-03 12:10:51 CET; 16s ago
                           Main PID: 10398 (wetterstation.s)
                              Tasks: 3 (limit: 4915)
                             CGroup: /system.slice/wetterstation.service
                                     |-10398 /bin/bash /home/pi/wetterstation/wetterstation.sh
                                     |-14592 /bin/bash /home/pi/wetterstation/wetterstation.sh
                                     `-14595 
                          
                          Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
                          Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
                          Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
                          Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
                          Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
                          Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
                          Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
                          Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
                          Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
                          Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
                          ~
                          ~
                          ~
                          lines 1-20/20 (END)
                          
                          

                          Kann mir jemand helfen oder habe ich irgendwas vergessen?
                          Gruß

                          SBorg 1 Reply Last reply Reply Quote 0
                          • Boronsbruder
                            Boronsbruder last edited by Boronsbruder

                            @viper4iob
                            @Latzi
                            Na dann
                            12:38:16.606 info javascript.0 (3146202) script.js.common.test_influx: Fertig! Rows: 137548 Dauer: 3061 ms

                            1 Reply Last reply Reply Quote 0
                            • Negalein
                              Negalein Global Moderator @SBorg last edited by

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

                              Jepp, das ist dann die Zuweisung "nimm für die Datenquelle dieses Bucket"

                              Servus

                              Hab jetzt eine 2. Datasource mit den temp. Buckets angelegt.
                              132b6608-188c-41a7-808a-6021f7c5f979-image.png

                              Standard
                              78ae7324-9b49-419a-9f4f-51f2105893f1-image.png

                              Temp
                              b1d3e883-c128-4ed8-bb0f-bd1937260e78-image.png

                              Beim Import des Dashboard beim Konfig Dialog hab ich dann die passenden DS ausgewählt.

                              Allerdings holt er sich keine Daten, da das Bucket nicht übernommen wird.
                              88842e8a-8b03-4ab6-be1e-792bf137e7f8-image.png

                              Query schaut zB so aus:

                              from(bucket: "TempData")
                                |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                                |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Wetterstation.Info.Wolkenbasis")
                                |> filter(fn: (r) => r["_field"] == "value")
                                |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)
                                |> yield(name: "Wolkenbasis")
                              

                              3a6238b1-def0-468f-80e2-7c7054f05d34-image.png

                              Ändere ich im Query das Bucket TempData in iobroker-1w werden die Daten angezeigt.

                              from(bucket: "iobroker-1w")
                                |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                                |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Wetterstation.Info.Wolkenbasis")
                                |> filter(fn: (r) => r["_field"] == "value")
                                |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)
                                |> yield(name: "Wolkenbasis")
                              

                              75d2f02f-e922-4320-9c56-66390f07890a-image.png

                              SBorg 1 Reply Last reply Reply Quote 0
                              • Latzi
                                Latzi @viper4iob last edited by Latzi

                                @viper4iob

                                javascript.0	2023-03-04 07:48:35.120	info	script.js.common.1_1_Test: fertig
                                javascript.0	2023-03-04 07:48:35.119	info	script.js.common.1_1_Test: Rows: 2944
                                javascript.0	2023-03-04 07:48:34.990	info	script.js.common.1_1_Test: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                

                                Abfrage dazu war:

                                sendTo('influxdb.0', 'query', 'from(bucket: "iobroker") |> range(start: -24h) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Aussentemperatur")', function (result) {
                                    if (result.error) {
                                        console.error(result.error);
                                    } else {
                                        // show result
                                         console.log('Rows: ' + JSON.stringify(result.result[0].length));
                                         console.log('fertig');
                                    }
                                });
                                
                                Boronsbruder 1 Reply Last reply Reply Quote 0
                                • Boronsbruder
                                  Boronsbruder @Latzi last edited by

                                  @latzi
                                  Interessant wäre auch die Startzeit des Skripts, dass man sieht wie lange es bis zum fertig dauerte 😉

                                  Latzi 1 Reply Last reply Reply Quote 0
                                  • Latzi
                                    Latzi @Boronsbruder last edited by Latzi

                                    @boronsbruder
                                    Zeit von Zeile 2 - Zeile 3 😉

                                    Edit: geht auch so:

                                    let Startzeit = new Date();
                                    sendTo('influxdb.0', 'query', 'from(bucket: "iobroker") |> range(start: -24h) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Aussentemperatur")', function (result) {
                                        if (result.error) {
                                            console.error(result.error);
                                        } else {
                                            let Endezeit = new Date();
                                            // show result
                                             console.log('Fertig! Rows: ' + JSON.stringify(result.result[0].length) +' Dauer: ' + (Endezeit.getTime()-Startzeit.getTime()) + ' ms');
                                        }
                                    });
                                    

                                    Liefert dann:

                                    10:16:04.177	info	javascript.0 (2815519) script.js.common.1_1_Test: Fertig! Rows: 2924 Dauer: 149 ms
                                    
                                    Boronsbruder M Neuschwansteini 3 Replies Last reply Reply Quote 0
                                    • Boronsbruder
                                      Boronsbruder @Latzi last edited by

                                      @viper4iob
                                      @latzi
                                      Na dann:
                                      12:38:16.606 info javascript.0 (3146202) script.js.common.test_influx: Fertig! Rows: 137548 Dauer: 3061 ms

                                      V 1 Reply Last reply Reply Quote 0
                                      • M
                                        MartyBr @Latzi last edited by

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

                                                                                                                                                                    let Startzeit = new Date();                                                                                                                                                                            sendTo('influxdb.0', 'query', 'from(bucket: "iobroker") |> range(start: -24h) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Aussentemperatur")', function (result) {                                                                                                                                                                                if (result.error) {                                                                                                                                                                                    console.error(result.error);                                                                                                                                                                                } else {                                                                                                                                                                                    let Endezeit = new Date();                                                                                                                                                                                    // show result                                                                                                                                                                                     console.log('Fertig! Rows: ' + JSON.stringify(result.result[0].length) +' Dauer: ' + (Endezeit.getTime()-Startzeit.getTime()) + ' ms');                                                                                                                                                                                }                                                                                                                                                                            });                                            
                                        

                                        Ich habe den Test nun auch gestartet. Influxdb läuft als Docker auf der Sinologie DS920+

                                        	2023-03-04 13:18:44.732	info	Stop script script.js.TEST.Test_Performance_Influxdb
                                        
                                        javascript.0
                                        2023-03-04 13:18:40.244	info	script.js.TEST.Test_Performance_Influxdb: Fertig! Rows: 7228 Dauer: 200 ms
                                        
                                        javascript.0
                                        2023-03-04 13:18:40.044	info	script.js.TEST.Test_Performance_Influxdb: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                        
                                        javascript.0
                                        2023-03-04 13:18:40.035	info	Start javascript script.js.TEST.Test_Performance_Influxdb
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • Neuschwansteini
                                          Neuschwansteini @Latzi last edited by

                                          @latzi

                                          Hier sieht das so aus:

                                          
                                          	javascript.0 (3488667) script.js.common.Test.Influxtestv2: Fertig! Rows: 52 Dauer: 16 ms
                                          
                                          
                                          Latzi mango1402 2 Replies Last reply Reply Quote 0
                                          • Negalein
                                            Negalein Global Moderator last edited by Negalein

                                            @SBorg

                                            wo holst du dir die Daten von 0_userdata.0.VIS.Wetter.Regenvorschauher?


                                            wie sehen bei dir die Alias aus (true wird 1, false wird 0), bzw. wie wandle ich mit einem Alias true in 0, usw.?
                                            a5ec6ae9-5662-44d3-8d33-a4464919a4d3-image.png

                                            SBorg 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            532
                                            Online

                                            31.8k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            linux shell-script wetterstation wlan-wetterstation
                                            143
                                            5478
                                            3306191
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo