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 @Boronsbruder last edited by

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

      setz mal wget davor

      dietpi@DietPi:/home/iobroker$ dietpi@DietPi:/home/iobroker$ wget https://ws.awekas.at/weatherstation/updateweatherstation.php?ID=xxxxxx&PASSWORD=xxxxxx&dateutc=2025-07-12+12:44:06&tempf=64.0&humidity=71&winddir=51&uv=0&windspeedmph=1.3&absbaromin=28.394&baromin=29.832&solarradiation=73.28&windgustmph=2.2&dailyrainin=0.020&indoortempf=75.9&indoorhumidity=77&softwaretype=IOWS
      [1] 11700
      [2] 11701
      [3] 11702
      [4] 11703
      [5] 11704
      [6] 11705
      [7] 11706
      [8] 11707
      -bash: dietpi@DietPi:/home/iobroker$: Datei oder Verzeichnis nicht gefunden
      [9] 11708
      [10] 11709
      [11] 11710
      [12] 11711
      [13] 11712
      [14] 11713
      [15] 11714
      [1]   Exit 127                dietpi@DietPi:/home/iobroker$ wget https://ws.awekas.at/weatherstation/updateweatherstation.php?ID=xxxxxx
      [2]   Fertig                  PASSWORD=xxxxxxx
      [3]   Fertig                  dateutc=2025-07-12+12:44:06
      [4]   Fertig                  tempf=64.0
      [5]   Fertig                  humidity=71
      [6]   Fertig                  winddir=51
      [7]   Fertig                  uv=0
      [8]   Fertig                  windspeedmph=1.3
      [9]   Fertig                  absbaromin=28.394
      [10]   Fertig                  baromin=29.832
      [11]   Fertig                  solarradiation=73.28
      [12]   Fertig                  windgustmph=2.2
      [13]   Fertig                  dailyrainin=0.020
      [14]-  Fertig                  indoortempf=75.9
      dietpi@DietPi:/home/iobroker$ [1] 10790
      -bash: [1]: Kommando nicht gefunden.
      [15]+  Fertig                  indoorhumidity=77
      dietpi@DietPi:/home/iobroker$ [2] 10791
      -bash: [2]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [3] 10792
      -bash: [3]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [4] 10793
      -bash: [4]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [5] 10794
      -bash: [5]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [6] 10795
      -bash: [6]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [7] 10796
      -bash: [7]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [8] 10797
      -bash: [8]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [9] 10798
      -bash: [9]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [10] 10799
      -bash: [10]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [11] 10800
      -bash: [11]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [12] 10801
      -bash: [12]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [13] 10802
      -bash: [13]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [14] 10803
      -bash: [14]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [15] 10804
      -bash: [15]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [2]   Fertig                  PASSWORD=0fmE7V%25Cm9vJT
      -bash: [2]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [3]   Fertig                  dateutc=2025-07-12+12:44:06
      -bash: [3]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [4]   Fertig                  tempf=64.0
      -bash: [4]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [5]   Fertig                  humidity=71
      -bash: [5]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [6]   Fertig                  winddir=51
      -bash: [6]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [7]   Fertig                  uv=0
      -bash: [7]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [8]   Fertig                  windspeedmph=1.3
      -bash: [8]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [9]   Fertig                  absbaromin=28.394
      -bash: [9]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [10]   Fertig                  baromin=29.832
      -bash: [10]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [11]   Fertig                  solarradiation=73.28
      -bash: [11]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ [12]   Fertig                  windgustmph=2.2
      -bash: [12]: Kommando nicht gefunden.
      dietpi@DietPi:/home/iobroker$ dietpi@DietPi:/home/iobroker$
      -bash: dietpi@DietPi:/home/iobroker$: Datei oder Verzeichnis nicht gefunden
      
      
      Boronsbruder 1 Reply Last reply Reply Quote 0
      • Boronsbruder
        Boronsbruder @Negalein last edited by Boronsbruder

        @negalein
        Nur mal zur Info.
        Laut der Awekas-Seite hat mein Skript (V3.4.0) auch seit heute morgen 09:53 keine Daten mehr empfangen...

        Sorry, der teil hinter wget muss in Anführungzeichen

        wget "https://ws.awekas.at/weatherstation/updateweatherstation.php?ID=xxxxxxxxxx&PASSWORD=xxxxxxxxxxx&dateutc=2025-07-12+12:44:06&tempf=64.0&humidity=71&winddir=51&uv=0&windspeedmph=1.3&absbaromin=28.394&baromin=29.832&solarradiation=73.28&windgustmph=2.2&dailyrainin=0.020&indoortempf=75.9&indoorhumidity=77&softwaretype=IOWS"
        
        

        Bei mir kommt im Browser als auch über wget ein Zertifikatsfehler:

        b64f9ab1-d278-46b7-ae2b-e3487981b703-grafik.png

        Negalein 2 Replies Last reply Reply Quote 0
        • Negalein
          Negalein Global Moderator @Boronsbruder last edited by

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

          Laut der Awekas-Seite hat mein Skript (V3.4.0) auch seit heute morgen 09:53 keine Daten mehr empfangen...

          bin ich GsD nicht allein

          --2025-07-12 15:10:01--  https://ws.awekas.at/weatherstation/updateweatherstation.php?ID=xxxxxx&PASSWORD=xxxxxxx&dateutc=2025-07-12+12:44:06&tempf=64.0&humidity=71&winddir=51&uv=0&windspeedmph=1.3&absbaromin=28.394&baromin=29.832&solarradiation=73.28&windgustmph=2.2&dailyrainin=0.020&indoortempf=75.9&indoorhumidity=77&softwaretype=IOWS
          Auflösen des Hostnamens ws.awekas.at (ws.awekas.at)… 195.189.4.166
          Verbindungsaufbau zu ws.awekas.at (ws.awekas.at)|195.189.4.166|:443 … verbunden.
          FEHLER: Dem Zertifikat von »ws.awekas.at« wird nicht vertraut.
          FEHLER: Das Zertifikat von »ws.awekas.at« ist abgelaufen.
          Das ausgestellte Zertifikat ist nicht mehr gültig.
          
          1 Reply Last reply Reply Quote 0
          • Negalein
            Negalein Global Moderator @Boronsbruder last edited by Negalein

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

            Bei mir kommt im Browser als auch über wget ein Zertifikatsfehler:

            bekomm ich auch bei beiden.

            bei meinem Cousin (3398) gehts. Der schickt das aber über diese Awekas-Box

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

              @negalein

              Es kann sein, dass die Awekasbox Zertifikatsfehler ignoriert

              Negalein 2 Replies Last reply Reply Quote 0
              • Negalein
                Negalein Global Moderator @Boronsbruder last edited by

                @boronsbruder

                kann im Script so ein Fehler ignoriert werden?

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

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

                  @negalein

                  Es kann sein, dass die Awekasbox Zertifikatsfehler ignoriert

                  https://www.awekas.at/for2/index.php?thread/20072-tls-zertifikat-ws-awekas-at-abgelaufen/

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

                    @negalein
                    Jo, die Zeile 2035 der wetterstation.sub in

                    local MESSAGE=$(wget -qO- --tries=1 --timeout=15 "${AWEKAS_URL}" --no-check-certificate)
                    

                    ändern.

                    Edith: Und natürlich den Dienst neustarten...

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

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

                      Jo, die Zeile 2035 der wetterstation.sub in

                      Danke, läuft wieder 🙂

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

                        @vmi
                        Das Problem mit den Sensoren ist eigentlich hausgemacht. Am Anfang haben sie wohl selbst nicht gedacht, dass es mal mehr wie eine handvoll Sensoren geben wird. Deswegen haben sie die Bezeichnungen stellenweise mehrmals verwendet. Das kann ich im Nachgang aber dann nicht mehr unterscheiden. Um nicht immer alles abzufragen (alte Sensoren liefern zB. nicht immer eine Batteriespannung, oder Sensor X keine Luftfeuchte etc.) gibt es die Unterscheidung. Wenn man also einen "falsches" Sensormodul auswählt was aber die gleiche Kennung wie das richtige Modul nutzt, funktioniert es trotzdem, nur bleibt ggf. ein oder mehrere Werte einfach leer.

                        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:

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

                          Kommen die Daten jetzt noch immer regelmäßig an?

                          nein, seit Mittwoch 19 Uhr tot

                          Dann stelle es wieder zurück, ev. geht es wieder und war ein längeres Problem bei Windy bzgl. Österreich.
                          Ich kann es nicht nachstellen und habe außer Geocaching keine Idee mehr. Hast du einen VPN und könntest notfalls den Zugang auf bspw. Deutschland verbiegen?

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

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

                            jetzt hab ich mir mal die wetterstation.conf angesehen und festgestellt das bei den Zusatzsensoren die WS80, WH40H und WH/WN32 nicht explizit aufgeführt sind.

                            Liegt schlichtweg daran, dass noch keiner einen der Sensoren hatte. Da ich keinen Support von Ecowitt habe, weiß ich einfach nicht wie die Bezeichner lauten. Wenn du/jemand den String postet kann ich sie auch implementieren 🙂

                            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:

                              ich kann seit heute Vormittag nichts mehr an Awekas schicken.

                              Hatte ich schon Samstag Morgen bei Awekas gemeldet und geht seit aktuell ca. 4 Stunden wieder.

                              1 Reply Last reply Reply Quote 0
                              • S
                                Shakira1972 @Shakira1972 last edited by

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

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

                                @sborg meinte die Kommandozeile ./wetterstation.sh --data ausführen und die Ausgabe der Sensoren, ohne den ganzen Krismkrams darum, posten:

                                Ok, ich hoffe das sind nun die richtigen Werte...

                                soilmoisture1=50&soilad1=240&soilmoisture2=47&soilad2=249&soilmoisture3=35&soilad3=196&soilmoisture4=46&soilad4=245&soilmoisture5=50&soilad5=260&soilmoisture6=47&soilad6=247&soilmoisture7=41&soilad7=225&soilmoisture8=38&soilad8=222&soilmoisture9=50&soilad9=250&soilmoisture10=48&soilad10=238&soilmoisture11=58&soilad11=282&soilmoisture12=52&soilad12=248&soilmoisture13=54&soilad13=257&soilmoisture14=50&soilad14=239&soilmoisture15=53&soilad15=255&soilmoisture16=56&soilad16=261
                                

                                Wenn ich das richtig verstehe, dann zeigt es hier, im Gegensatz zu den Werten in IoBroker, die richtigen Werte an.
                                Aktuell in IoBroker:
                                0f813add-e6a0-44ac-87c8-12eedcfdb69f-image.png
                                Danke für Eure Hilfe!

                                Niemand eine Idee, woran es liegen könnte?
                                Danke
                                Shaki

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

                                  @Shakira1972

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

                                  Da ich einen gedanklichen Fehler bei der V3.5.0 bei der Erhöhung der Sensoranzahl auf 16 Stück beim DP100 hatte:

                                  Neues Bugfix-Release des Wetterstation WLAN-Skriptes auf GitHub V3.5.1

                                  • ~ Fix falsche Messwerte bei DP100 Sensor Nr.1 wenn mehr als 10 Sensoren vorhanden sind

                                  Wie immer zu finden im GitHub


                                  Update-Routine von Vorgängerversion:

                                  • aktuellen WS-Updater nutzen

                                    wget -O ws_updater.sh https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh
                                  • ./ws_updater.sh im Installationsverzeichnis ausführen
                                  • Menüpunkt "4" wählen und die Fragen beantworten

                                  Update enthält lediglich einen Fix für mehr als 9 Stück DP100 Sensoren, ist also optional.

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

                                    @boronsbruder Super, hat funktioniert!
                                    Danke!

                                    R 1 Reply Last reply Reply Quote 0
                                    • R
                                      Rand @Shakira1972 last edited by

                                      Leicht OT, aber vieleicht hilft es ja jemanden 🙂

                                      Hatte ja nach einem Weg gesucht den WFC01 auszulesen und nun ein einfaches JS basteln lassen:

                                      const gwIp = '192.168.x.y'; // Replace with your actual GW2000 IP
                                      const deviceId = 13443;      // Your WFC01 device ID
                                      const model = 1;             // Always 1 for WFC01
                                      const request = require('request');
                                      
                                      const enableLogging = true;
                                      const statePrefix = 'javascript.0.WFC01';
                                      
                                      function logDebug(msg) {
                                          if (enableLogging) log(msg);
                                      }
                                      
                                      function createAndSetState(id, value, unit = '', type = 'number') {
                                          const fullId = `${statePrefix}.${id}`;
                                          if (!existsState(fullId)) {
                                              createState(fullId, value, {
                                                  type: type,
                                                  read: true,
                                                  write: false,
                                                  unit: unit
                                              });
                                              logDebug(`Created state: ${fullId}`);
                                          }
                                          setState(fullId, value, true);
                                          logDebug(`Updated ${fullId} → ${value}${unit}`);
                                      }
                                      
                                      const options = {
                                          url: `http://${gwIp}/parse_quick_cmd_iot`,
                                          method: 'POST',
                                          headers: {
                                              'Content-Type': 'application/json'
                                          },
                                          body: JSON.stringify({
                                              command: [{
                                                  cmd: "read_device",
                                                  id: deviceId,
                                                  model: model
                                              }]
                                          }),
                                          timeout: 5000
                                      };
                                      
                                      logDebug('Sending POST request to WFC01...');
                                      request(options, (error, response, body) => {
                                          if (error) {
                                              logDebug(`Request error: ${error}`);
                                              return;
                                          }
                                      
                                          if (response.statusCode !== 200) {
                                              logDebug(`Unexpected status code: ${response.statusCode}`);
                                              logDebug(`Response body: ${body}`);
                                              return;
                                          }
                                      
                                          if (!body) {
                                              logDebug('Empty response body');
                                              return;
                                          }
                                      
                                          try {
                                              const data = JSON.parse(body);
                                              logDebug(`Parsed JSON data: ${JSON.stringify(data)}`);
                                      
                                              const d = data.command[0];
                                      
                                              createAndSetState('flow_velocity', parseFloat(d.flow_velocity), 'L/min');
                                              createAndSetState('water_total', parseFloat(d.water_total), 'L');
                                              createAndSetState('water_status', parseInt(d.water_status));
                                              createAndSetState('water_temp', parseFloat(d.water_temp), '°C');
                                              createAndSetState('battery', parseInt(d.wfc01batt));
                                              createAndSetState('signal', parseInt(d.rssi));
                                              createAndSetState('warning', parseInt(d.warning));
                                              createAndSetState('run_time', parseInt(d.run_time), 's');
                                      
                                          } catch (e) {
                                              logDebug(`JSON parse error: ${e.message}`);
                                          }
                                      });
                                      
                                      

                                      Habs ohne >request< nicht hinbekommen, da hat er den call nicht sauber gemacht.
                                      Die Infos dazu stammen aus dem Ecowitt API document welches sie auf Anfrage verschicken (Local IOT API 20240828.docx in meinem Fall).

                                      S 2 Replies Last reply Reply Quote 0
                                      • S
                                        Solardach @Rand last edited by

                                        @rand Hallo !
                                        Vielen Dank für das Skript, 👍 👏
                                        Danach hatte ich schon länger gesucht.
                                        Ich habe es installiert und läuft bei mir mit der WS3900A Wetterstation als Gateway.
                                        Den Punkt "happen_water" habe ich noch dazu gesetzt.

                                        water volume when water program starts. (L = water_total - happen_water)

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          Solardach @Rand last edited by

                                          @rand
                                          Das Problem mit dem Skript ist, das es keinen Trigger gibt.
                                          Es werden nur einmalig beim Skript Start die Werte eingelesen und das wars.
                                          Vieleicht kann man noch einen Trigger mit einbauen ?

                                          R 1 Reply Last reply Reply Quote 0
                                          • R
                                            Rand @Solardach last edited by Rand

                                            @solardach

                                            Klar, danke, hätte vieleicht vorher prüfen sollen ob alles tut, aber es war spät;)
                                            Es wird auch ohne saubere Werte angelegt (nur als State, das habe ich auch noch gemacht (machen lassen ;))

                                            Edit: So Water_happen sollte mit drin sein, hat es beim ersten durchlauf gestern scheinbar ignoriert, aber ist auch bei mir vorhanden.

                                            const gwIp = '192.168.x.y'; // Replace with your actual GW2000 IP
                                            const deviceId = 13443;        // Your WFC01 device ID
                                            const model = 1;               // Always 1 for WFC01
                                            const request = require('request');
                                            
                                            const enableLogging = true;
                                            const statePrefix = 'javascript.0.WFC01';
                                            
                                            // Define what to create
                                            const fieldDefinitions = {
                                                flow_velocity:  { unit: 'L/min', type: 'number', role: 'value.flow' },
                                                water_total:    { unit: 'L',     type: 'number', role: 'value.total' },
                                                happen_water:   { unit: 'L',     type: 'number', role: 'value.total' },
                                                water_volume:   { unit: 'L',     type: 'number', role: 'value.volume' },
                                                water_status:   {                type: 'number', role: 'value.status' },
                                                water_temp:     { unit: '°C',    type: 'number', role: 'value.temperature' },
                                                battery:        {                type: 'number', role: 'value.battery' },
                                                signal:         {                type: 'number', role: 'value.signal' },
                                                warning:        {                type: 'number', role: 'value.warning' },
                                                run_time:       { unit: 's',     type: 'number', role: 'value.interval' }
                                            };
                                            
                                            function logDebug(msg) {
                                                if (enableLogging) log(msg);
                                            }
                                            
                                            // Delete + recreate state with correct role/type/unit (once)
                                            function recreateState(id, value, unit = '', type = 'number', role = 'value') {
                                                const fullId = `${statePrefix}.${id}`;
                                                if (!existsState(fullId)) {
                                                    createState(fullId, value, {
                                                        type: type,
                                                        role: role,
                                                        read: true,
                                                        write: false,
                                                        unit: unit
                                                    });
                                                    logDebug(`Created state: ${fullId}`);
                                                }
                                                setState(fullId, value, true);
                                                logDebug(`Updated ${fullId} → ${value}${unit}`);
                                            }
                                            
                                            function queryDevice() {
                                                const options = {
                                                    url: `http://${gwIp}/parse_quick_cmd_iot`,
                                                    method: 'POST',
                                                    headers: { 'Content-Type': 'application/json' },
                                                    body: JSON.stringify({
                                                        command: [{
                                                            cmd: "read_device",
                                                            id: deviceId,
                                                            model: model
                                                        }]
                                                    }),
                                                    timeout: 5000
                                                };
                                            
                                                logDebug('Sending POST request to WFC01...');
                                                request(options, (error, response, body) => {
                                                    if (error) {
                                                        logDebug(`Request error: ${error}`);
                                                        return;
                                                    }
                                            
                                                    if (response.statusCode !== 200) {
                                                        logDebug(`Unexpected status code: ${response.statusCode}`);
                                                        logDebug(`Response body: ${body}`);
                                                        return;
                                                    }
                                            
                                                    if (!body) {
                                                        logDebug('Empty response body');
                                                        return;
                                                    }
                                            
                                                    try {
                                                        const data = JSON.parse(body);
                                                        const d = data.command[0];
                                            
                                                        logDebug(`Parsed JSON data: ${JSON.stringify(d)}`);
                                            
                                                        recreateState('flow_velocity', parseFloat(d.flow_velocity),  ...Object.values(fieldDefinitions.flow_velocity));
                                                        recreateState('water_total', parseFloat(d.water_total),      ...Object.values(fieldDefinitions.water_total));
                                                        recreateState('happen_water', parseFloat(d.happen_water),    ...Object.values(fieldDefinitions.happen_water));
                                                        recreateState('water_status', parseInt(d.water_status),      ...Object.values(fieldDefinitions.water_status));
                                                        recreateState('water_temp', parseFloat(d.water_temp),        ...Object.values(fieldDefinitions.water_temp));
                                                        recreateState('battery', parseInt(d.wfc01batt),              ...Object.values(fieldDefinitions.battery));
                                                        recreateState('signal', parseInt(d.rssi),                    ...Object.values(fieldDefinitions.signal));
                                                        recreateState('warning', parseInt(d.warning),                ...Object.values(fieldDefinitions.warning));
                                                        recreateState('run_time', parseInt(d.run_time),              ...Object.values(fieldDefinitions.run_time));
                                            
                                                        // Calculate water volume used during current watering run
                                                        const total = parseFloat(d.water_total);
                                                        const happen = parseFloat(d.happen_water);
                                                        const volume = total - happen;
                                            
                                                        if (!isNaN(volume) && volume >= 0 && volume < 10000) {
                                                            recreateState('water_volume', parseFloat(volume.toFixed(2)), ...Object.values(fieldDefinitions.water_volume));
                                                        } else {
                                                            logDebug(`Skipped invalid water volume: ${volume}`);
                                                        }
                                            
                                                    } catch (e) {
                                                        logDebug(`JSON parse error: ${e.message}`);
                                                    }
                                                });
                                            }
                                            
                                            // Initial call on script start
                                            queryDevice();
                                            
                                            // Schedule query every 60 seconds
                                            schedule("*/1 * * * *", () => {
                                                queryDevice();
                                            });
                                            
                                            
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            716
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            linux shell-script wetterstation wlan-wetterstation
                                            147
                                            5568
                                            3346359
                                            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