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

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Linux Shell-Skript] WLAN-Wetterstation

    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      Rushmed Most Active @SBorg last edited by

      @sborg Ah ok, da steht bei mir was drin.

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

        @sborg
        Ich habe die 2.11.1 Version laufen und nun auch den DP100 integriert. Es funktioniert fast alles: Es fehlen nur die Datenpunkte

        Info.Temp_Aussen_24h_max und ..min

        Bildschirmfoto 2022-03-01 um 16.03.29.png

        Wo kann der Fehler liegen? Die Wetterstation läuft schon ein paar Tage.

        R 1 Reply Last reply Reply Quote 0
        • R
          Rushmed Most Active @MartyBr last edited by

          @martybr Liegt daran dass du noch keine 365 Tage loggst.

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

            @rushmed Ich dachte, dass sind die Tageshöchst- oder Tagesmindesttemperaturen. Dann lasse ich das mal weitere 363 Tage laufen 😇

            R 1 Reply Last reply Reply Quote 0
            • R
              Rushmed Most Active @MartyBr last edited by Rushmed

              @martybr Sorry, meine aussage bezog sich auf die DPs mit 365t.
              Bei mir siehts so aus, ich hab aber vor Kurzem alle Daten zurückgesetzt.
              49934952-d9a6-40da-a38f-17f0c436d189-grafik.png

              Edit: Ich seh gerade, da stimmt was nicht mit den heutigen min-, max-Werten
              e20710f4-0cb4-405a-a16c-03407abd0f7c-grafik.png

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

                @rushmed Vielleicht ist da ein Problem in dem Script. Welcher Version setzt du ein?

                R 1 Reply Last reply Reply Quote 0
                • R
                  Rushmed Most Active @MartyBr last edited by

                  @martybr Beide Scripte sind aktuell.

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

                    @rushmed
                    Ich setze die 2.11.1 ein. Welche zwei Scripte setzt du ein? Auch das Statistik-Script?

                    R 1 Reply Last reply Reply Quote 0
                    • R
                      Rushmed Most Active @MartyBr last edited by

                      @martybr
                      wetterstation-statistik.js V1.0.1
                      wetterstation.sh V2.11.1

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

                        @rushmed
                        Ich habe nun auch das Statistik-Script in der aktuellen Version 1.0.1 installiert. Es liefert leider immer den Fehler

                        Fehler beim Lesen der InfluxDB: Invalid call
                        

                        Hast du den String in

                          //InfluxDB abfragen (Regen +1min Startverzögerung wg. ev. Ungenauigkeit der Systemzeit des Wetterstation-Displays)
                                    sendTo('influxdb.'+INFLUXDB_INSTANZ, 'query', 
                                    'select * FROM "' + WET_DP + '.Aussentemperatur" WHERE time >= ' + (start *1000000) + ' AND time <= ' + (end *1000000)
                                     + '; select * FROM "' + WET_DP + '.Wind_max" WHERE time >= '  + (start *1000000) + ' AND time <= ' + (end *1000000)
                                     + '; select * FROM "' + WET_DP + '.Regen_Tag" WHERE time >= ' + ((start+72000) *1000000) + ' AND time <= ' + (end *1000000)
                                 , function (result) {
                                     //Anlegen der Arrays + befüllen mit den relevanten Daten
                                    if (result.error) {
                                       console.error('Fehler beim Lesen der InfluxDB: '+result.error);
                                       Statusmeldung('Fehler beim Lesen der InfluxDB: '+result.error);
                                    } else {
                                        //console.log('Rows: ' + JSON.stringify(result.result[2]));
                                        for (let i = 0; i < result.result[0].length; i++) { temps[i] = result.result[0][i].value; }
                                        for (let i = 0; i < result.result[1].length; i++) { wind[i] = result.result[1][i].value; }
                                        for (let i = 0; i < result.result[2].length; i++) { regen[i] = result.result[2][i].value; }
                                    }    
                        

                        auf InfluxDB V2 angepasst?

                        Edit:
                        Habe folgende Log-Einträge:

                        
                        javascript.0
                        2022-03-02 09:18:07.870	info	Stop script script.js.Wetterstation.Statistik_Wetterstation
                        
                        javascript.0
                        2022-03-02 09:16:00.189	warn	TypeError: Reduce of empty array with no initial value at Array.reduce (<anonymous>) at Object.cb (script.js.Wetterstation.Statistik_Wetterstation:741:43) at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5809:71) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:322:37) at processImmediate (internal/timers.js:464:21)
                        
                        javascript.0
                        2022-03-02 09:16:00.185	warn	States system pmessage io.messagebox.system.adapter.javascript.0 {"command":"query","message":{"result":[],"error":"Invalid call"},"from":"system.adapter.influxdb.0","callback":{"message":"select * FROM \"0_userdata.0.Wetterstation.Aussentemperatur\" WHERE time >= 1646089200000000000 AND time <= 1646175599000000000; select * FROM \"0_userdata.0.Wetterstation.Wind_max\" WHERE time >= 1646089200000000000 AND time <= 1646175599000000000; select * FROM \"0_userdata.0.Wetterstation.Regen_Tag\" WHERE time >= 1646089272000000000 AND time <= 1646175599000000000","id":1,"ack":true,"time":1646208960014},"_id":61369237} Reduce of empty array with no initial value
                        
                        javascript.0
                        2022-03-02 09:16:00.184	error	script.js.Wetterstation.Statistik_Wetterstation: Fehler beim Lesen der InfluxDB: Invalid call
                        
                        influxdb.0
                        2022-03-02 09:16:00.158	error	queries: Error: 3 Error happened while processing 3 queries
                        
                        influxdb.0
                        2022-03-02 09:16:00.158	warn	Error in query " select * FROM "0_userdata.0.Wetterstation.Regen_Tag" WHERE time >= 1646089272000000000 AND time <= 1646175599000000000": HttpError: error @1:2-1:8: undefined identifier selecterror @1:11-1:15: undefined identifier FROMerror @1:55-1:60: undefined identifier WHEREerror @1:61-1:65: (v:A) => time is not Equatableerror @1:89-1:92: undefined identifier ANDerror @1:93-1:97: (v:A) => time is not Equatable
                        
                        influxdb.0
                        2022-03-02 09:16:00.151	warn	Error in query " select * FROM "0_userdata.0.Wetterstation.Wind_max" WHERE time >= 1646089200000000000 AND time <= 1646175599000000000": HttpError: error @1:2-1:8: undefined identifier selecterror @1:11-1:15: undefined identifier FROMerror @1:54-1:59: undefined identifier WHEREerror @1:60-1:64: (v:A) => time is not Equatableerror @1:88-1:91: undefined identifier ANDerror @1:92-1:96: (v:A) => time is not Equatable
                        
                        influxdb.0
                        2022-03-02 09:16:00.141	warn	Error in query "select * FROM "0_userdata.0.Wetterstation.Aussentemperatur" WHERE time >= 1646089200000000000 AND time <= 1646175599000000000": HttpError: error @1:1-1:7: undefined identifier selecterror @1:10-1:14: undefined identifier FROMerror @1:61-1:66: undefined identifier WHEREerror @1:67-1:71: (v:A) => time is not Equatableerror @1:95-1:98: undefined identifier ANDerror @1:99-1:103: (v:A) => time is not Equatable
                        
                        1 Reply Last reply Reply Quote 0
                        • SBorg
                          SBorg Forum Testing Most Active last edited by

                          Die 365Tage lassen wir mal außen vor, da muss man halt schon mindestens ein Jahr loggen 😉
                          Da aber "Heute" und "letzte 24h" im 15 Minuten-Raster generiert werden, liegen diese spätestens zur nächsten vollen (00, 15, 30 oder 45) Viertelstunde vor.
                          "Heute" ist allerdings um Mitternacht ein Sonderfall, da bedingt durch die Usereinstellungen wie viel Datenpunkte im RAM gehalten werden sollen, es nicht sichergestellt ist, dass wirklich schlag 0:00 Uhr auch schon ein Wert der Außentemperatur vorliegt (für "letzte 24h" wird immer mal ein Wert vorliegen, notfalls steht dann halt "(null)" da). Es könnte dann also sein, dass bis zum nächsten Update um 0:15 Uhr oftmals kein Messwert vorliegt/angezeigt wird.
                          Deswegen wird, falls kein Min-/Max-Wert ermittelt werden konnte, einfach die aktuelle Außentemperatur angezeigt. Würde in dem Fall ja stimmen, denn wenn ich nur einen Messwert habe, stellt der Min-, Max- und Durchschnittstemperatur gleichermaßen dar. Erst wenn ich einen davon abweichenden Messwert erhalte sind die drei unterschiedlich.

                          Lange Rede, kurzer Sinn. Das Fehlerbild zeigt eindeutig, das ihr keine Verbindung zur InfluxDB habt, deswegen sind die "24h" nur "(null)" (=kein Wert gelesen) und die Min-/Max-Temp identisch, da er auch hier nix aus der InfluxDB lesen konnte aber dann dafür die akt. Außentemperatur nutzt...

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

                            @sborg Das ist ja genau die Frage. Mit dem folgenden Code kann ich auf dem Influx-Server die Daten abrufen:

                            influx query 'from(bucket:"iobroker") |> range(start:-15m) |> filter(fn: (r) => r._measurement == "proxmox.0.node_pve.cpu")|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")'
                            

                            Da bekomme ich auch Ergebnisse. Ich habe nun versucht, den Code im Statistik-Script anzupassen. Ich bekomme leider immer wieder Script Fehler:

                                       //InfluxDB abfragen (Regen +1min Startverzögerung wg. ev. Ungenauigkeit der Systemzeit des Wetterstation-Displays)
                                        sendTo('influxdb.'+INFLUXDB_INSTANZ, 'query', 
                                        ' FROM(bucket:"iobroker")' |> range(start:-1h) |> filter(fn: (r) => r["_measurement"] == WET_DP +".Aussentemperatur")|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")'
                                         + '; FROM(bucket:"iobroker")' |> range(start:-1h) |> filter(fn: (r) => r["_measurement"] == WET_DP +".Wind_max")|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")'
                                         + '; FROM(bucket:"iobroker")' |> range(start:-1h) |> filter(fn: (r) => r["_measurement"] == WET_DP +".Regen_Tag")|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")'
                                     , function (result) {
                                         //Anlegen der Arrays + befüllen mit den relevanten Daten
                                        if (result.error) {
                                           console.error('Fehler beim Lesen der InfluxDB: '+result.error);
                                           Statusmeldung('Fehler beim Lesen der InfluxDB: '+result.error);
                                        } else {
                                            //console.log('Rows: ' + JSON.stringify(result.result[2]));
                                            for (let i = 0; i < result.result[0].length; i++) { temps[i] = result.result[0][i].value; }
                                            for (let i = 0; i < result.result[1].length; i++) { wind[i] = result.result[1][i].value; }
                                            for (let i = 0; i < result.result[2].length; i++) { regen[i] = result.result[2][i].value; }
                                        }            
                            

                            Vielleicht kann mir hier ein Fachmann helfen?

                            J 1 Reply Last reply Reply Quote 0
                            • R
                              Rushmed Most Active @SBorg last edited by

                              Ich nutze InfluxDB 2.1.1.
                              In der Conf habe ich die Zugangsdaten zu meiner auf V1 gemappten DB eingetragen die ich auch für den Zugriff mit Grafana nutze.

                               #InfluxDB-Konfiguration / ohne InfluxDB alles leer lassen
                                #IP und Port der API [xxx.xxx.xxx.xxx:xxxxx]
                                 INFLUX_API=192.168.178.20:8086
                                #Name, User und Passwort der InfluxDB-Datenbank
                                 INFLUX_DB=ioBroker_db
                                 INFLUX_USER=USERNAME
                                 INFLUX_PASSWORD=PASSWORD
                              

                              Reichen denn diese Zugangsdaten wirklich?
                              Um mit Grafana auf die gemappte DB zugreifen zu können muss zusätzlich:
                              13251bf0-7696-4bbd-83f5-130f7be00371-grafik.png
                              eingestellt werden, wobei Value = Token MYTOKEN ist.

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

                                @rushmed Ich habe es genauso gemacht. Die Datenbank habe ich auf V1 gemalt und
                                influx v1 dbrp list
                                hat das erfolgreiche Mapping gezeigt.
                                Setzt du das unveränderte Statistik-Script ein?

                                R 1 Reply Last reply Reply Quote 0
                                • R
                                  Rushmed Most Active @MartyBr last edited by

                                  @martybr ja

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

                                    @rushmed Und es liefert Werte? Bei mir bricht es ab.
                                    Ich habe keine Idee mehr 😞

                                    R 1 Reply Last reply Reply Quote 0
                                    • R
                                      Rushmed Most Active @MartyBr last edited by

                                      @martybr Du hast Recht. Ich hab das voll übersehen. Die Werte sind noch von vor meine Umstellung auf Influx2.

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

                                        @rushmed
                                        Du kannst den Status hier ablesen:

                                        0_userdata.0.Statistik.Wetter.Control.Statusmeldung

                                        R 1 Reply Last reply Reply Quote 0
                                        • R
                                          Rushmed Most Active @MartyBr last edited by

                                          @martybr Fehler beim Lesen der InfluxDB: Invalid call

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

                                            @rushmed Wie bei mir. Das Script scheint nur bei Influx Version 1 zu laufen. Ich hatte weiter oben mal einen Versuch eingestellt, die Abfrage auf Influx Version zu ändern. Bekommen aber immer einen Error beim Speichern.
                                            Die Abfragen hatte ich mir aus der Weboberfläche Influx geholt. Dort funktionieren sie und liefern Daten.
                                            Ich komme da mit dem Script nicht weiter, vielleicht kann sich das jemand mal anschauen.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            linux shell-script wetterstation wlan-wetterstation
                                            141
                                            5469
                                            3249843
                                            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