Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Entwicklung
  4. Aqualink Pool Automation in iobroker integrieren

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    431

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    358

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    959

Aqualink Pool Automation in iobroker integrieren

Geplant Angeheftet Gesperrt Verschoben Entwicklung
38 Beiträge 9 Kommentatoren 5.0k Aufrufe 6 Beobachtet
  • Ä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.
  • NegaleinN Negalein

    @hexagon

    Hallo

    welchen Typ benötigen diese DP?

    javascript.0.iAquaLink.IdToken
    javascript.0.iAquaLink.IdToken_clean
    0_userdata.0.Pool.Pooldata

    H Offline
    H Offline
    Hexagon
    schrieb am zuletzt editiert von
    #22

    @negalein

    Alle DPs => Typ: "String" und Rolle: "State"
    Am besten alle DP in 0_userdata.0.xxxx vorab anlegen.

    NegaleinN 1 Antwort Letzte Antwort
    0
    • H Hexagon

      @negalein

      Alle DPs => Typ: "String" und Rolle: "State"
      Am besten alle DP in 0_userdata.0.xxxx vorab anlegen.

      NegaleinN Offline
      NegaleinN Offline
      Negalein
      Global Moderator
      schrieb am zuletzt editiert von
      #23

      @hexagon

      ich bekomm einen Fehler.
      Ist nicht ersichtlich woher.

      javascript.0	14:59:13.580	info	Start JavaScript script.js.Pool.iAqualink (Javascript/js)
      javascript.0	14:59:13.589	info	registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
      javascript.0	14:59:14.322	error	Fehler:
      

      ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
      ° Node.js Fixer ---> iob nodejs-update
      ° Fixer ---> iob fix

      H 1 Antwort Letzte Antwort
      0
      • NegaleinN Negalein

        @hexagon

        ich bekomm einen Fehler.
        Ist nicht ersichtlich woher.

        javascript.0	14:59:13.580	info	Start JavaScript script.js.Pool.iAqualink (Javascript/js)
        javascript.0	14:59:13.589	info	registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
        javascript.0	14:59:14.322	error	Fehler:
        
        H Offline
        H Offline
        Hexagon
        schrieb am zuletzt editiert von
        #24

        @negalein

        Zeile 29: Richtige bzw. eigene Serien Nr. verwendet ?

        NegaleinN 1 Antwort Letzte Antwort
        0
        • H Hexagon

          @negalein

          Zeile 29: Richtige bzw. eigene Serien Nr. verwendet ?

          NegaleinN Offline
          NegaleinN Offline
          Negalein
          Global Moderator
          schrieb am zuletzt editiert von
          #25

          @hexagon sagte in Aqualink Pool Automation in iobroker integrieren:

          Zeile 29: Richtige bzw. eigene Serien Nr. verwendet ?

          ahhhhh, übersehn

          jetzt kommen Daten, aber mit Warn.

          DP werden befüllt

          javascript.0	15:35:55.780	info	Start JavaScript script.js.Pool.iAqualink (Javascript/js)
          javascript.0	15:35:55.789	info	registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
          javascript.0	15:35:56.600	info	Daten erfolgreich in ioBroker gespeichert.
          javascript.0	15:35:56.600	info	idToken extrahiert:
          javascript.0	15:35:56.886	info	
          {
            state: {
              reported: {
                aws: [Object],
                vr: 'V85E4',
                vr_esp: 'V85E4',
                equipment: [Object],
                schedules: [Object]
              }
            },
            deviceId: 'JT22008430',
            ts: 1747056956
          }
          javascript.0	15:35:56.889	warn    at script.js.Pool.iAqualink:45:5
          

          ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
          ° Node.js Fixer ---> iob nodejs-update
          ° Fixer ---> iob fix

          H 1 Antwort Letzte Antwort
          0
          • NegaleinN Negalein

            @hexagon sagte in Aqualink Pool Automation in iobroker integrieren:

            Zeile 29: Richtige bzw. eigene Serien Nr. verwendet ?

            ahhhhh, übersehn

            jetzt kommen Daten, aber mit Warn.

            DP werden befüllt

            javascript.0	15:35:55.780	info	Start JavaScript script.js.Pool.iAqualink (Javascript/js)
            javascript.0	15:35:55.789	info	registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
            javascript.0	15:35:56.600	info	Daten erfolgreich in ioBroker gespeichert.
            javascript.0	15:35:56.600	info	idToken extrahiert:
            javascript.0	15:35:56.886	info	
            {
              state: {
                reported: {
                  aws: [Object],
                  vr: 'V85E4',
                  vr_esp: 'V85E4',
                  equipment: [Object],
                  schedules: [Object]
                }
              },
              deviceId: 'JT22008430',
              ts: 1747056956
            }
            javascript.0	15:35:56.889	warn    at script.js.Pool.iAqualink:45:5
            
            H Offline
            H Offline
            Hexagon
            schrieb am zuletzt editiert von Hexagon
            #26

            @negalein

            ok prima, jetzt kannst du mit entsprechenden Filterungen weitere Datenpunkte befüllen, je nachdem was du benötigst:

            Beispiel für ORP Werte:

            // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
            let sourceObject = "0_userdata.0.Pool.Pooldata";
            // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
            let targetObject = "0_userdata.0.Pool.Pooldata_ORP";
            // JSON-String aus ioBroker-Objekt abrufen
            getState(sourceObject, function (err, state) {
                if (err || !state || !state.val) {
                    console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                    return;
                }
                try {
                    // JSON-String in ein Objekt konvertieren
                    let jsonObject = JSON.parse(state.val);
                    
                    // `sns_2` extrahieren
                    let sns_2 = jsonObject.state.reported.equipment.swc_0.sns_2.value;
                    if (sns_2) {
                        console.log("sns_2 extrahiert:", sns_2);
                        // sns_2 in das neue ioBroker-Objekt speichern
                        setState(targetObject, sns_2, true);
                    } else {
                        console.log("Kein sns_2 gefunden!");
                    }
                } catch (error) {
                    console.log("Fehler beim Parsen des JSON-Strings:", error);
                }
            });
            
            
            NegaleinN 1 Antwort Letzte Antwort
            0
            • H Hexagon

              @negalein

              ok prima, jetzt kannst du mit entsprechenden Filterungen weitere Datenpunkte befüllen, je nachdem was du benötigst:

              Beispiel für ORP Werte:

              // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
              let sourceObject = "0_userdata.0.Pool.Pooldata";
              // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
              let targetObject = "0_userdata.0.Pool.Pooldata_ORP";
              // JSON-String aus ioBroker-Objekt abrufen
              getState(sourceObject, function (err, state) {
                  if (err || !state || !state.val) {
                      console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                      return;
                  }
                  try {
                      // JSON-String in ein Objekt konvertieren
                      let jsonObject = JSON.parse(state.val);
                      
                      // `sns_2` extrahieren
                      let sns_2 = jsonObject.state.reported.equipment.swc_0.sns_2.value;
                      if (sns_2) {
                          console.log("sns_2 extrahiert:", sns_2);
                          // sns_2 in das neue ioBroker-Objekt speichern
                          setState(targetObject, sns_2, true);
                      } else {
                          console.log("Kein sns_2 gefunden!");
                      }
                  } catch (error) {
                      console.log("Fehler beim Parsen des JSON-Strings:", error);
                  }
              });
              
              
              NegaleinN Offline
              NegaleinN Offline
              Negalein
              Global Moderator
              schrieb am zuletzt editiert von
              #27

              @hexagon sagte in Aqualink Pool Automation in iobroker integrieren:

              ok prima, jetzt kannst du mit entsprechenden Filterungen weitere Datenpunkte befüllen, je nachdem was du benötigst:

              Danke

              hast du auch noch für pH, Chlorination und Temp?

              ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
              ° Node.js Fixer ---> iob nodejs-update
              ° Fixer ---> iob fix

              H 1 Antwort Letzte Antwort
              0
              • NegaleinN Negalein

                @hexagon sagte in Aqualink Pool Automation in iobroker integrieren:

                ok prima, jetzt kannst du mit entsprechenden Filterungen weitere Datenpunkte befüllen, je nachdem was du benötigst:

                Danke

                hast du auch noch für pH, Chlorination und Temp?

                H Offline
                H Offline
                Hexagon
                schrieb am zuletzt editiert von Hexagon
                #28

                @negalein

                ORP Wert entspricht bereits dem Chlorinator

                Für PH Wert ist es genau das gleiche nur der Sensor 1 => sns_1:
                Die Kommastelle kannst du dann mit dem VIS Editor entsprechend setzen.

                // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                let sourceObject = "0_userdata.0.Pool.Pooldata";
                // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                let targetObject = "0_userdata.0.Pool.Pooldata_PH";
                // JSON-String aus ioBroker-Objekt abrufen
                getState(sourceObject, function (err, state) {
                    if (err || !state || !state.val) {
                        console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                        return;
                    }
                    try {
                        // JSON-String in ein Objekt konvertieren
                        let jsonObject = JSON.parse(state.val);
                        
                        // `sns_1` extrahieren
                        let sns_1 = jsonObject.state.reported.equipment.swc_0.sns_1.value;
                        if (sns_1) {
                            console.log("sns_1 extrahiert:", sns_1);
                            // sns_1 in das neue ioBroker-Objekt speichern
                            setState(targetObject, sns_1, true);
                        } else {
                            console.log("Kein sns_1 gefunden!");
                        }
                    } catch (error) {
                        console.log("Fehler beim Parsen des JSON-Strings:", error);
                    }
                });
                

                Nach diesem Muster kannst du dir auch die Temp Werte bauen.

                NegaleinN 1 Antwort Letzte Antwort
                0
                • H Hexagon

                  @negalein

                  ORP Wert entspricht bereits dem Chlorinator

                  Für PH Wert ist es genau das gleiche nur der Sensor 1 => sns_1:
                  Die Kommastelle kannst du dann mit dem VIS Editor entsprechend setzen.

                  // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                  let sourceObject = "0_userdata.0.Pool.Pooldata";
                  // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                  let targetObject = "0_userdata.0.Pool.Pooldata_PH";
                  // JSON-String aus ioBroker-Objekt abrufen
                  getState(sourceObject, function (err, state) {
                      if (err || !state || !state.val) {
                          console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                          return;
                      }
                      try {
                          // JSON-String in ein Objekt konvertieren
                          let jsonObject = JSON.parse(state.val);
                          
                          // `sns_1` extrahieren
                          let sns_1 = jsonObject.state.reported.equipment.swc_0.sns_1.value;
                          if (sns_1) {
                              console.log("sns_1 extrahiert:", sns_1);
                              // sns_1 in das neue ioBroker-Objekt speichern
                              setState(targetObject, sns_1, true);
                          } else {
                              console.log("Kein sns_1 gefunden!");
                          }
                      } catch (error) {
                          console.log("Fehler beim Parsen des JSON-Strings:", error);
                      }
                  });
                  

                  Nach diesem Muster kannst du dir auch die Temp Werte bauen.

                  NegaleinN Offline
                  NegaleinN Offline
                  Negalein
                  Global Moderator
                  schrieb am zuletzt editiert von
                  #29

                  @hexagon sagte in Aqualink Pool Automation in iobroker integrieren:

                  ORP Wert entspricht bereits dem Chlorinator

                  schaut in der App so aus
                  166845d5-78e8-42a5-939f-3e2c67a6a0d2-image.png

                  Meinte Salzelektrolysegerät (Pumpe)

                  sns_3 ist dann die Temp?

                  oder wie finde ich das raus?

                  ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                  ° Node.js Fixer ---> iob nodejs-update
                  ° Fixer ---> iob fix

                  H 1 Antwort Letzte Antwort
                  0
                  • NegaleinN Negalein

                    @hexagon sagte in Aqualink Pool Automation in iobroker integrieren:

                    ORP Wert entspricht bereits dem Chlorinator

                    schaut in der App so aus
                    166845d5-78e8-42a5-939f-3e2c67a6a0d2-image.png

                    Meinte Salzelektrolysegerät (Pumpe)

                    sns_3 ist dann die Temp?

                    oder wie finde ich das raus?

                    H Offline
                    H Offline
                    Hexagon
                    schrieb am zuletzt editiert von Hexagon
                    #30

                    @negalein

                    Schau dir die Werte im DP Pooldata an:
                    0_userdata.0.Pool.Pooldata

                    Dort sollten alle Daten ersichtlich sein:

                    Beispiel Temperatur:

                    "sns_3": {
                                "sensor_type": "Water temp",
                                "state": 1,
                                "value": 25
                    
                    NegaleinN 3 Antworten Letzte Antwort
                    0
                    • H Hexagon

                      @negalein

                      Schau dir die Werte im DP Pooldata an:
                      0_userdata.0.Pool.Pooldata

                      Dort sollten alle Daten ersichtlich sein:

                      Beispiel Temperatur:

                      "sns_3": {
                                  "sensor_type": "Water temp",
                                  "state": 1,
                                  "value": 25
                      
                      NegaleinN Offline
                      NegaleinN Offline
                      Negalein
                      Global Moderator
                      schrieb am zuletzt editiert von
                      #31

                      @hexagon sagte in Aqualink Pool Automation in iobroker integrieren:

                      Dort sollten alle Daten ersichtlich sein:

                      ahhh, ich war blind. hab nur die ersten paar zeilen gesehn.

                      und die gewünschten pack ich alle in das Script von dir?

                      ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                      ° Node.js Fixer ---> iob nodejs-update
                      ° Fixer ---> iob fix

                      1 Antwort Letzte Antwort
                      0
                      • H Hexagon

                        @negalein

                        Schau dir die Werte im DP Pooldata an:
                        0_userdata.0.Pool.Pooldata

                        Dort sollten alle Daten ersichtlich sein:

                        Beispiel Temperatur:

                        "sns_3": {
                                    "sensor_type": "Water temp",
                                    "state": 1,
                                    "value": 25
                        
                        NegaleinN Offline
                        NegaleinN Offline
                        Negalein
                        Global Moderator
                        schrieb am zuletzt editiert von
                        #32

                        @hexagon

                        die Pumpe scheint so auf:

                                  "filter_pump": {
                                    "state": 1,
                                    "type": 1
                                  },
                        

                        Binde ich die dann so ein?

                        // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                        let sourceObject = "0_userdata.0.Pool.Pooldata";
                        // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                        let targetObject = "0_userdata.0.Pool.Pooldata_Pumpe";
                        // JSON-String aus ioBroker-Objekt abrufen
                        getState(sourceObject, function (err, state) {
                            if (err || !state || !state.val) {
                                console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                return;
                            }
                            try {
                                // JSON-String in ein Objekt konvertieren
                                let jsonObject = JSON.parse(state.val);
                                
                                // `sns_2` extrahieren
                                let sns_2 = jsonObject.state.reported.equipment.swc_0.filter_pump.value;
                                if (sns_2) {
                                    console.log("sns_2 extrahiert:", filter_pump);
                                    // sns_2 in das neue ioBroker-Objekt speichern
                                    setState(targetObject, filter_pump, true);
                                } else {
                                    console.log("Kein filter_pump gefunden!");
                                }
                            } catch (error) {
                                console.log("Fehler beim Parsen des JSON-Strings:", error);
                            }
                        });
                        

                        Und alle 4 in 1 Script?

                        const axios = require('axios');
                        // Daten für die POST-Anfrage
                        const daten = {
                            api_key: "EOOEMOW4YR6QNB11",
                            email: "xxxxxxxx@xxxxxx.xx",
                            password: "xxxxxxxxxxx"
                        };
                        // Erste Anfrage zur Authentifizierung
                        axios.post('https://prod.zodiac-io.com/users/v1/login', daten, {
                            headers: {
                                'Host': 'prod.zodiac-io.com',
                                'accept': 'application/json',
                                'Content-Type': 'application/json',
                                'accept-encoding': 'gzip',
                                'user-agent': 'okhttp/3.12.0'
                            }
                        }).then((response) => {
                            setState('0_userdata.0.iAquaLink.IdToken', JSON.stringify(response.data), true);
                            console.log('Daten erfolgreich in ioBroker gespeichert.');
                            // Extrahieren des idTokens
                            let jsonObject = response.data;
                            let idToken = jsonObject.userPoolOAuth.IdToken;
                            if (idToken) {
                                console.log("idToken extrahiert:", idToken);
                                setState('0_userdata.0.iAquaLink.IdToken_clean', idToken, true);
                                // Zweite Anfrage unter Verwendung des idTokens
                                const options = {
                                    method: 'GET',
                                    url: 'https://prod.zodiac-io.com/devices/v1/JT22005060/shadow',
                                    headers: {
                                        'Host': 'prod.zodiac-io.com',
                                        'accept': 'application/json',
                                        'authorization': idToken,
                                        'accept-encoding': 'gzip',
                                        'user-agent': 'okhttp/3.12.0'
                                    }
                                };
                                return axios.request(options);
                            } else {
                                throw new Error("Kein idToken gefunden!");
                            }
                        }).then(response => {
                            console.log(response.data);
                            setState('0_userdata.0.iAquaLink.Pooldata', response.data, true);
                        }).catch(error => {
                            console.error('Fehler:', error);
                        });
                        
                        // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                        let sourceObject = "0_userdata.0.Pool.Pooldata";
                        // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                        let targetObject = "0_userdata.0.Pool.Pooldata_PH";
                        // JSON-String aus ioBroker-Objekt abrufen
                        getState(sourceObject, function (err, state) {
                            if (err || !state || !state.val) {
                                console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                return;
                            }
                            try {
                                // JSON-String in ein Objekt konvertieren
                                let jsonObject = JSON.parse(state.val);
                                
                                // `sns_1` extrahieren
                                let sns_1 = jsonObject.state.reported.equipment.swc_0.sns_1.value;
                                if (sns_1) {
                                    console.log("sns_1 extrahiert:", sns_1);
                                    // sns_1 in das neue ioBroker-Objekt speichern
                                    setState(targetObject, sns_1, true);
                                } else {
                                    console.log("Kein sns_1 gefunden!");
                                }
                            } catch (error) {
                                console.log("Fehler beim Parsen des JSON-Strings:", error);
                            }
                        });
                        
                        // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                        let sourceObject = "0_userdata.0.Pool.Pooldata";
                        // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                        let targetObject = "0_userdata.0.Pool.Pooldata_ORP";
                        // JSON-String aus ioBroker-Objekt abrufen
                        getState(sourceObject, function (err, state) {
                            if (err || !state || !state.val) {
                                console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                return;
                            }
                            try {
                                // JSON-String in ein Objekt konvertieren
                                let jsonObject = JSON.parse(state.val);
                                
                                // `sns_2` extrahieren
                                let sns_2 = jsonObject.state.reported.equipment.swc_0.sns_2.value;
                                if (sns_2) {
                                    console.log("sns_2 extrahiert:", sns_2);
                                    // sns_2 in das neue ioBroker-Objekt speichern
                                    setState(targetObject, sns_2, true);
                                } else {
                                    console.log("Kein sns_2 gefunden!");
                                }
                            } catch (error) {
                                console.log("Fehler beim Parsen des JSON-Strings:", error);
                            }
                        });
                         
                        // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                        let sourceObject = "0_userdata.0.Pool.Pooldata";
                        // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                        let targetObject = "0_userdata.0.Pool.Pooldata_Pumpe";
                        // JSON-String aus ioBroker-Objekt abrufen
                        getState(sourceObject, function (err, state) {
                            if (err || !state || !state.val) {
                                console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                return;
                            }
                            try {
                                // JSON-String in ein Objekt konvertieren
                                let jsonObject = JSON.parse(state.val);
                                
                                // `sns_2` extrahieren
                                let sns_2 = jsonObject.state.reported.equipment.swc_0.filter_pump.value;
                                if (sns_2) {
                                    console.log("sns_2 extrahiert:", filter_pump);
                                    // sns_2 in das neue ioBroker-Objekt speichern
                                    setState(targetObject, filter_pump, true);
                                } else {
                                    console.log("Kein filter_pump gefunden!");
                                }
                            } catch (error) {
                                console.log("Fehler beim Parsen des JSON-Strings:", error);
                            }
                        });
                        

                        ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                        ° Node.js Fixer ---> iob nodejs-update
                        ° Fixer ---> iob fix

                        1 Antwort Letzte Antwort
                        0
                        • H Hexagon

                          @negalein

                          Schau dir die Werte im DP Pooldata an:
                          0_userdata.0.Pool.Pooldata

                          Dort sollten alle Daten ersichtlich sein:

                          Beispiel Temperatur:

                          "sns_3": {
                                      "sensor_type": "Water temp",
                                      "state": 1,
                                      "value": 25
                          
                          NegaleinN Offline
                          NegaleinN Offline
                          Negalein
                          Global Moderator
                          schrieb am zuletzt editiert von
                          #33

                          @hexagon

                          Guten Morgen

                          hab einen Fehler.
                          Kannst du bitte mal drüberschaun?

                          javascript.0	08:51:34.699	info	Start JavaScript script.js.Pool.iAqualink (Javascript/js)
                          javascript.0	08:51:34.700	error script.js.Pool.iAqualink compile failed: at script.js.Pool.iAqualink:79
                          
                          const axios = require('axios');
                          // Daten für die POST-Anfrage
                          const daten = {
                              api_key: "EOOEMOW4YR6QNB11",
                              email: "xxxxxxxxx@xxxxxxx.at",
                              password: "xxxxxxxxx"
                          };
                          // Erste Anfrage zur Authentifizierung
                          axios.post('https://prod.zodiac-io.com/users/v1/login', daten, {
                              headers: {
                                  'Host': 'prod.zodiac-io.com',
                                  'accept': 'application/json',
                                  'Content-Type': 'application/json',
                                  'accept-encoding': 'gzip',
                                  'user-agent': 'okhttp/3.12.0'
                              }
                          }).then((response) => {
                              setState('0_userdata.0.iAquaLink.IdToken', JSON.stringify(response.data), true);
                              console.log('Daten erfolgreich in ioBroker gespeichert.');
                              // Extrahieren des idTokens
                              let jsonObject = response.data;
                              let idToken = jsonObject.userPoolOAuth.IdToken;
                              if (idToken) {
                                  console.log("idToken extrahiert:", idToken);
                                  setState('0_userdata.0.iAquaLink.IdToken_clean', idToken, true);
                                  // Zweite Anfrage unter Verwendung des idTokens
                                  const options = {
                                      method: 'GET',
                                      url: 'https://prod.zodiac-io.com/devices/v1/JT22005060/shadow',
                                      headers: {
                                          'Host': 'prod.zodiac-io.com',
                                          'accept': 'application/json',
                                          'authorization': idToken,
                                          'accept-encoding': 'gzip',
                                          'user-agent': 'okhttp/3.12.0'
                                      }
                                  };
                                  return axios.request(options);
                              } else {
                                  throw new Error("Kein idToken gefunden!");
                              }
                          }).then(response => {
                              console.log(response.data);
                              setState('0_userdata.0.iAquaLink.Pooldata', response.data, true);
                          }).catch(error => {
                              console.error('Fehler:', error);
                          });
                          
                          // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                          let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                          // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                          let targetObject = "0_userdata.0.iAquaLink.Pooldata_PH";
                          // JSON-String aus ioBroker-Objekt abrufen
                          getState(sourceObject, function (err, state) {
                              if (err || !state || !state.val) {
                                  console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                  return;
                              }
                              try {
                                  // JSON-String in ein Objekt konvertieren
                                  let jsonObject = JSON.parse(state.val);
                                  
                                  // `sns_1` extrahieren
                                  let sns_1 = jsonObject.state.reported.equipment.swc_0.sns_1.value;
                                  if (sns_1) {
                                      console.log("sns_1 extrahiert:", sns_1);
                                      // sns_1 in das neue ioBroker-Objekt speichern
                                      setState(targetObject, sns_1, true);
                                  } else {
                                      console.log("Kein sns_1 gefunden!");
                                  }
                              } catch (error) {
                                  console.log("Fehler beim Parsen des JSON-Strings:", error);
                              }
                          });
                          
                          // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                          let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                          // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                          let targetObject = "0_userdata.0.iAquaLink.Pooldata_ORP";
                          // JSON-String aus ioBroker-Objekt abrufen
                          getState(sourceObject, function (err, state) {
                              if (err || !state || !state.val) {
                                  console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                  return;
                              }
                              try {
                                  // JSON-String in ein Objekt konvertieren
                                  let jsonObject = JSON.parse(state.val);
                                  
                                  // `sns_2` extrahieren
                                  let sns_2 = jsonObject.state.reported.equipment.swc_0.sns_2.value;
                                  if (sns_2) {
                                      console.log("sns_2 extrahiert:", sns_2);
                                      // sns_2 in das neue ioBroker-Objekt speichern
                                      setState(targetObject, sns_2, true);
                                  } else {
                                      console.log("Kein sns_2 gefunden!");
                                  }
                              } catch (error) {
                                  console.log("Fehler beim Parsen des JSON-Strings:", error);
                              }
                          });
                           
                          // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                          let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                          // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                          let targetObject = "0_userdata.0.iAquaLink.Pooldata_Pumpe";
                          // JSON-String aus ioBroker-Objekt abrufen
                          getState(sourceObject, function (err, state) {
                              if (err || !state || !state.val) {
                                  console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                  return;
                              }
                              try {
                                  // JSON-String in ein Objekt konvertieren
                                  let jsonObject = JSON.parse(state.val);
                                  
                                  // `sns_2` extrahieren
                                  let sns_2 = jsonObject.state.reported.equipment.swc_0.filter_pump.value;
                                  if (sns_2) {
                                      console.log("sns_2 extrahiert:", filter_pump);
                                      // sns_2 in das neue ioBroker-Objekt speichern
                                      setState(targetObject, filter_pump, true);
                                  } else {
                                      console.log("Kein filter_pump gefunden!");
                                  }
                              } catch (error) {
                                  console.log("Fehler beim Parsen des JSON-Strings:", error);
                              }
                          });
                           
                          
                          

                          ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                          ° Node.js Fixer ---> iob nodejs-update
                          ° Fixer ---> iob fix

                          H 1 Antwort Letzte Antwort
                          0
                          • NegaleinN Negalein

                            @hexagon

                            Guten Morgen

                            hab einen Fehler.
                            Kannst du bitte mal drüberschaun?

                            javascript.0	08:51:34.699	info	Start JavaScript script.js.Pool.iAqualink (Javascript/js)
                            javascript.0	08:51:34.700	error script.js.Pool.iAqualink compile failed: at script.js.Pool.iAqualink:79
                            
                            const axios = require('axios');
                            // Daten für die POST-Anfrage
                            const daten = {
                                api_key: "EOOEMOW4YR6QNB11",
                                email: "xxxxxxxxx@xxxxxxx.at",
                                password: "xxxxxxxxx"
                            };
                            // Erste Anfrage zur Authentifizierung
                            axios.post('https://prod.zodiac-io.com/users/v1/login', daten, {
                                headers: {
                                    'Host': 'prod.zodiac-io.com',
                                    'accept': 'application/json',
                                    'Content-Type': 'application/json',
                                    'accept-encoding': 'gzip',
                                    'user-agent': 'okhttp/3.12.0'
                                }
                            }).then((response) => {
                                setState('0_userdata.0.iAquaLink.IdToken', JSON.stringify(response.data), true);
                                console.log('Daten erfolgreich in ioBroker gespeichert.');
                                // Extrahieren des idTokens
                                let jsonObject = response.data;
                                let idToken = jsonObject.userPoolOAuth.IdToken;
                                if (idToken) {
                                    console.log("idToken extrahiert:", idToken);
                                    setState('0_userdata.0.iAquaLink.IdToken_clean', idToken, true);
                                    // Zweite Anfrage unter Verwendung des idTokens
                                    const options = {
                                        method: 'GET',
                                        url: 'https://prod.zodiac-io.com/devices/v1/JT22005060/shadow',
                                        headers: {
                                            'Host': 'prod.zodiac-io.com',
                                            'accept': 'application/json',
                                            'authorization': idToken,
                                            'accept-encoding': 'gzip',
                                            'user-agent': 'okhttp/3.12.0'
                                        }
                                    };
                                    return axios.request(options);
                                } else {
                                    throw new Error("Kein idToken gefunden!");
                                }
                            }).then(response => {
                                console.log(response.data);
                                setState('0_userdata.0.iAquaLink.Pooldata', response.data, true);
                            }).catch(error => {
                                console.error('Fehler:', error);
                            });
                            
                            // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                            let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                            // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                            let targetObject = "0_userdata.0.iAquaLink.Pooldata_PH";
                            // JSON-String aus ioBroker-Objekt abrufen
                            getState(sourceObject, function (err, state) {
                                if (err || !state || !state.val) {
                                    console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                    return;
                                }
                                try {
                                    // JSON-String in ein Objekt konvertieren
                                    let jsonObject = JSON.parse(state.val);
                                    
                                    // `sns_1` extrahieren
                                    let sns_1 = jsonObject.state.reported.equipment.swc_0.sns_1.value;
                                    if (sns_1) {
                                        console.log("sns_1 extrahiert:", sns_1);
                                        // sns_1 in das neue ioBroker-Objekt speichern
                                        setState(targetObject, sns_1, true);
                                    } else {
                                        console.log("Kein sns_1 gefunden!");
                                    }
                                } catch (error) {
                                    console.log("Fehler beim Parsen des JSON-Strings:", error);
                                }
                            });
                            
                            // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                            let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                            // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                            let targetObject = "0_userdata.0.iAquaLink.Pooldata_ORP";
                            // JSON-String aus ioBroker-Objekt abrufen
                            getState(sourceObject, function (err, state) {
                                if (err || !state || !state.val) {
                                    console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                    return;
                                }
                                try {
                                    // JSON-String in ein Objekt konvertieren
                                    let jsonObject = JSON.parse(state.val);
                                    
                                    // `sns_2` extrahieren
                                    let sns_2 = jsonObject.state.reported.equipment.swc_0.sns_2.value;
                                    if (sns_2) {
                                        console.log("sns_2 extrahiert:", sns_2);
                                        // sns_2 in das neue ioBroker-Objekt speichern
                                        setState(targetObject, sns_2, true);
                                    } else {
                                        console.log("Kein sns_2 gefunden!");
                                    }
                                } catch (error) {
                                    console.log("Fehler beim Parsen des JSON-Strings:", error);
                                }
                            });
                             
                            // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                            let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                            // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                            let targetObject = "0_userdata.0.iAquaLink.Pooldata_Pumpe";
                            // JSON-String aus ioBroker-Objekt abrufen
                            getState(sourceObject, function (err, state) {
                                if (err || !state || !state.val) {
                                    console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                    return;
                                }
                                try {
                                    // JSON-String in ein Objekt konvertieren
                                    let jsonObject = JSON.parse(state.val);
                                    
                                    // `sns_2` extrahieren
                                    let sns_2 = jsonObject.state.reported.equipment.swc_0.filter_pump.value;
                                    if (sns_2) {
                                        console.log("sns_2 extrahiert:", filter_pump);
                                        // sns_2 in das neue ioBroker-Objekt speichern
                                        setState(targetObject, filter_pump, true);
                                    } else {
                                        console.log("Kein filter_pump gefunden!");
                                    }
                                } catch (error) {
                                    console.log("Fehler beim Parsen des JSON-Strings:", error);
                                }
                            });
                             
                            
                            
                            H Offline
                            H Offline
                            Hexagon
                            schrieb am zuletzt editiert von
                            #34

                            @negalein

                            Der Pfad in Zeile 120 stimmt nicht.
                            Es gibt unter filter_pump kein "value" sondern nur "state" oder "type"

                            Zudem hast du im Rest vom script alles auf "sns_2" belassen. sns_2 verwendest du bereits für ORP. Du willst aber jetzt den Status der Pumpe auslesen. Also => sns_2 in filter_pump umbenennen.

                            NegaleinN 1 Antwort Letzte Antwort
                            0
                            • H Hexagon

                              @negalein

                              Der Pfad in Zeile 120 stimmt nicht.
                              Es gibt unter filter_pump kein "value" sondern nur "state" oder "type"

                              Zudem hast du im Rest vom script alles auf "sns_2" belassen. sns_2 verwendest du bereits für ORP. Du willst aber jetzt den Status der Pumpe auslesen. Also => sns_2 in filter_pump umbenennen.

                              NegaleinN Offline
                              NegaleinN Offline
                              Negalein
                              Global Moderator
                              schrieb am zuletzt editiert von
                              #35

                              @hexagon sagte in Aqualink Pool Automation in iobroker integrieren:

                              Es gibt unter filter_pump kein "value" sondern nur "state" oder "type"

                              Danke

                              muss ich dann let filter_pump = jsonObject.state.reported.equipment.swc_0.filter_pump.state; verwenden, um zu sehen, ob die Pumpe läuft?

                              ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                              ° Node.js Fixer ---> iob nodejs-update
                              ° Fixer ---> iob fix

                              H 1 Antwort Letzte Antwort
                              0
                              • NegaleinN Negalein

                                @hexagon sagte in Aqualink Pool Automation in iobroker integrieren:

                                Es gibt unter filter_pump kein "value" sondern nur "state" oder "type"

                                Danke

                                muss ich dann let filter_pump = jsonObject.state.reported.equipment.swc_0.filter_pump.state; verwenden, um zu sehen, ob die Pumpe läuft?

                                H Offline
                                H Offline
                                Hexagon
                                schrieb am zuletzt editiert von
                                #36

                                @negalein

                                genau, und darunter ebenfalls alles noch umbenennen wo sns_2 auftaucht.

                                NegaleinN 1 Antwort Letzte Antwort
                                1
                                • H Hexagon

                                  @negalein

                                  genau, und darunter ebenfalls alles noch umbenennen wo sns_2 auftaucht.

                                  NegaleinN Offline
                                  NegaleinN Offline
                                  Negalein
                                  Global Moderator
                                  schrieb am zuletzt editiert von Negalein
                                  #37

                                  @hexagon sagte in Aqualink Pool Automation in iobroker integrieren:

                                  genau, und darunter ebenfalls alles noch umbenennen wo sns_2 auftaucht.

                                  es kommt noch immer der Error

                                  javascript.0	15:35:21.966	info	Start JavaScript script.js.Pool.iAqualink (Javascript/js)
                                  javascript.0	15:35:21.967	error	script.js.Pool.iAqualink compile failed: at script.js.Pool.iAqualink:79
                                  
                                  const axios = require('axios');
                                  // Daten für die POST-Anfrage
                                  const daten = {
                                      api_key: "EOOEMOW4YR6QNB11",
                                      email: "mail",
                                      password: "pwd"
                                  };
                                  // Erste Anfrage zur Authentifizierung
                                  axios.post('https://prod.zodiac-io.com/users/v1/login', daten, {
                                      headers: {
                                          'Host': 'prod.zodiac-io.com',
                                          'accept': 'application/json',
                                          'Content-Type': 'application/json',
                                          'accept-encoding': 'gzip',
                                          'user-agent': 'okhttp/3.12.0'
                                      }
                                  }).then((response) => {
                                      setState('0_userdata.0.iAquaLink.IdToken', JSON.stringify(response.data), true);
                                      console.log('Daten erfolgreich in ioBroker gespeichert.');
                                      // Extrahieren des idTokens
                                      let jsonObject = response.data;
                                      let idToken = jsonObject.userPoolOAuth.IdToken;
                                      if (idToken) {
                                          console.log("idToken extrahiert:", idToken);
                                          setState('0_userdata.0.iAquaLink.IdToken_clean', idToken, true);
                                          // Zweite Anfrage unter Verwendung des idTokens
                                          const options = {
                                              method: 'GET',
                                              url: 'https://prod.zodiac-io.com/devices/v1/JT22008430/shadow',
                                              headers: {
                                                  'Host': 'prod.zodiac-io.com',
                                                  'accept': 'application/json',
                                                  'authorization': idToken,
                                                  'accept-encoding': 'gzip',
                                                  'user-agent': 'okhttp/3.12.0'
                                              }
                                          };
                                          return axios.request(options);
                                      } else {
                                          throw new Error("Kein idToken gefunden!");
                                      }
                                  }).then(response => {
                                      console.log(response.data);
                                      setState('0_userdata.0.iAquaLink.Pooldata', response.data, true);
                                  }).catch(error => {
                                      console.error('Fehler:', error);
                                  });
                                  
                                  // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                                  let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                                  // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                                  let targetObject = "0_userdata.0.iAquaLink.Pooldata_PH";
                                  // JSON-String aus ioBroker-Objekt abrufen
                                  getState(sourceObject, function (err, state) {
                                      if (err || !state || !state.val) {
                                          console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                          return;
                                      }
                                      try {
                                          // JSON-String in ein Objekt konvertieren
                                          let jsonObject = JSON.parse(state.val);
                                          
                                          // `sns_1` extrahieren
                                          let sns_1 = jsonObject.state.reported.equipment.swc_0.sns_1.value;
                                          if (sns_1) {
                                              console.log("sns_1 extrahiert:", sns_1);
                                              // sns_1 in das neue ioBroker-Objekt speichern
                                              setState(targetObject, sns_1, true);
                                          } else {
                                              console.log("Kein sns_1 gefunden!");
                                          }
                                      } catch (error) {
                                          console.log("Fehler beim Parsen des JSON-Strings:", error);
                                      }
                                  });
                                  
                                  // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                                  let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                                  // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                                  let targetObject = "0_userdata.0.iAquaLink.Pooldata_ORP";
                                  // JSON-String aus ioBroker-Objekt abrufen
                                  getState(sourceObject, function (err, state) {
                                      if (err || !state || !state.val) {
                                          console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                          return;
                                      }
                                      try {
                                          // JSON-String in ein Objekt konvertieren
                                          let jsonObject = JSON.parse(state.val);
                                          
                                          // `sns_2` extrahieren
                                          let sns_2 = jsonObject.state.reported.equipment.swc_0.sns_2.value;
                                          if (sns_2) {
                                              console.log("sns_2 extrahiert:", sns_2);
                                              // sns_2 in das neue ioBroker-Objekt speichern
                                              setState(targetObject, sns_2, true);
                                          } else {
                                              console.log("Kein sns_2 gefunden!");
                                          }
                                      } catch (error) {
                                          console.log("Fehler beim Parsen des JSON-Strings:", error);
                                      }
                                  });
                                   
                                  // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                                  let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                                  // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                                  let targetObject = "0_userdata.0.iAquaLink.Pooldata_Pumpe";
                                  // JSON-String aus ioBroker-Objekt abrufen
                                  getState(sourceObject, function (err, state) {
                                      if (err || !state || !state.val) {
                                          console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                          return;
                                      }
                                      try {
                                          // JSON-String in ein Objekt konvertieren
                                          let jsonObject = JSON.parse(state.val);
                                          
                                          // `filter_pump` extrahieren
                                          let filter_pump = jsonObject.state.reported.equipment.swc_0.filter_pump.value;
                                          if (filter_pump) {
                                              console.log("filter_pump extrahiert:", filter_pump);
                                              // filter_pump in das neue ioBroker-Objekt speichern
                                              setState(targetObject, filter_pump, true);
                                          } else {
                                              console.log("Kein filter_pump gefunden!");
                                          }
                                      } catch (error) {
                                          console.log("Fehler beim Parsen des JSON-Strings:", error);
                                      }
                                  });
                                   
                                  // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                                  let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                                  // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                                  let targetObject = "0_userdata.0.iAquaLink.Pooldata_Temp";
                                  // JSON-String aus ioBroker-Objekt abrufen
                                  getState(sourceObject, function (err, state) {
                                      if (err || !state || !state.val) {
                                          console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                          return;
                                      }
                                      try {
                                          // JSON-String in ein Objekt konvertieren
                                          let jsonObject = JSON.parse(state.val);
                                          
                                          // `Water temp` extrahieren
                                          let Water temp = jsonObject.state.reported.equipment.swc_0.Water temp.value;
                                          if (Water temp) {
                                              console.log("Water temp extrahiert:", Water temp);
                                              // Water temp in das neue ioBroker-Objekt speichern
                                              setState(targetObject, Water temp, true);
                                          } else {
                                              console.log("Kein Water temp gefunden!");
                                          }
                                      } catch (error) {
                                          console.log("Fehler beim Parsen des JSON-Strings:", error);
                                      }
                                  });
                                  

                                  EDIT: das steht im ioB Log

                                  
                                  javascript.0
                                  2025-05-13 15:39:33.464	error	at processImmediate (node:internal/timers:485:21)
                                  
                                  javascript.0
                                  2025-05-13 15:39:33.464	error	at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/main.js:1732:17)
                                  
                                  javascript.0
                                  2025-05-13 15:39:33.464	error	at /opt/iobroker/node_modules/iobroker.javascript/main.js:2322:17
                                  
                                  javascript.0
                                  2025-05-13 15:39:33.464	error	at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:2224:37)
                                  
                                  javascript.0
                                  2025-05-13 15:39:33.464	error	at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1956:21)
                                  
                                  javascript.0
                                  2025-05-13 15:39:33.464	error	at new Script (node:vm:117:7)
                                  
                                  javascript.0
                                  2025-05-13 15:39:33.464	error	SyntaxError: Identifier 'sourceObject' has already been declared
                                  
                                  javascript.0
                                  2025-05-13 15:39:33.464	error	^
                                  
                                  javascript.0
                                  2025-05-13 15:39:33.464	error	let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                                  
                                  javascript.0
                                  2025-05-13 15:39:33.464	error	script.js.Pool.iAqualink compile failed: at script.js.Pool.iAqualink:79
                                  

                                  muss da zwischen Token und sns Abfrage eine Pause rein?

                                  ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                                  ° Node.js Fixer ---> iob nodejs-update
                                  ° Fixer ---> iob fix

                                  NegaleinN 1 Antwort Letzte Antwort
                                  0
                                  • NegaleinN Negalein

                                    @hexagon sagte in Aqualink Pool Automation in iobroker integrieren:

                                    genau, und darunter ebenfalls alles noch umbenennen wo sns_2 auftaucht.

                                    es kommt noch immer der Error

                                    javascript.0	15:35:21.966	info	Start JavaScript script.js.Pool.iAqualink (Javascript/js)
                                    javascript.0	15:35:21.967	error	script.js.Pool.iAqualink compile failed: at script.js.Pool.iAqualink:79
                                    
                                    const axios = require('axios');
                                    // Daten für die POST-Anfrage
                                    const daten = {
                                        api_key: "EOOEMOW4YR6QNB11",
                                        email: "mail",
                                        password: "pwd"
                                    };
                                    // Erste Anfrage zur Authentifizierung
                                    axios.post('https://prod.zodiac-io.com/users/v1/login', daten, {
                                        headers: {
                                            'Host': 'prod.zodiac-io.com',
                                            'accept': 'application/json',
                                            'Content-Type': 'application/json',
                                            'accept-encoding': 'gzip',
                                            'user-agent': 'okhttp/3.12.0'
                                        }
                                    }).then((response) => {
                                        setState('0_userdata.0.iAquaLink.IdToken', JSON.stringify(response.data), true);
                                        console.log('Daten erfolgreich in ioBroker gespeichert.');
                                        // Extrahieren des idTokens
                                        let jsonObject = response.data;
                                        let idToken = jsonObject.userPoolOAuth.IdToken;
                                        if (idToken) {
                                            console.log("idToken extrahiert:", idToken);
                                            setState('0_userdata.0.iAquaLink.IdToken_clean', idToken, true);
                                            // Zweite Anfrage unter Verwendung des idTokens
                                            const options = {
                                                method: 'GET',
                                                url: 'https://prod.zodiac-io.com/devices/v1/JT22008430/shadow',
                                                headers: {
                                                    'Host': 'prod.zodiac-io.com',
                                                    'accept': 'application/json',
                                                    'authorization': idToken,
                                                    'accept-encoding': 'gzip',
                                                    'user-agent': 'okhttp/3.12.0'
                                                }
                                            };
                                            return axios.request(options);
                                        } else {
                                            throw new Error("Kein idToken gefunden!");
                                        }
                                    }).then(response => {
                                        console.log(response.data);
                                        setState('0_userdata.0.iAquaLink.Pooldata', response.data, true);
                                    }).catch(error => {
                                        console.error('Fehler:', error);
                                    });
                                    
                                    // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                                    let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                                    // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                                    let targetObject = "0_userdata.0.iAquaLink.Pooldata_PH";
                                    // JSON-String aus ioBroker-Objekt abrufen
                                    getState(sourceObject, function (err, state) {
                                        if (err || !state || !state.val) {
                                            console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                            return;
                                        }
                                        try {
                                            // JSON-String in ein Objekt konvertieren
                                            let jsonObject = JSON.parse(state.val);
                                            
                                            // `sns_1` extrahieren
                                            let sns_1 = jsonObject.state.reported.equipment.swc_0.sns_1.value;
                                            if (sns_1) {
                                                console.log("sns_1 extrahiert:", sns_1);
                                                // sns_1 in das neue ioBroker-Objekt speichern
                                                setState(targetObject, sns_1, true);
                                            } else {
                                                console.log("Kein sns_1 gefunden!");
                                            }
                                        } catch (error) {
                                            console.log("Fehler beim Parsen des JSON-Strings:", error);
                                        }
                                    });
                                    
                                    // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                                    let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                                    // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                                    let targetObject = "0_userdata.0.iAquaLink.Pooldata_ORP";
                                    // JSON-String aus ioBroker-Objekt abrufen
                                    getState(sourceObject, function (err, state) {
                                        if (err || !state || !state.val) {
                                            console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                            return;
                                        }
                                        try {
                                            // JSON-String in ein Objekt konvertieren
                                            let jsonObject = JSON.parse(state.val);
                                            
                                            // `sns_2` extrahieren
                                            let sns_2 = jsonObject.state.reported.equipment.swc_0.sns_2.value;
                                            if (sns_2) {
                                                console.log("sns_2 extrahiert:", sns_2);
                                                // sns_2 in das neue ioBroker-Objekt speichern
                                                setState(targetObject, sns_2, true);
                                            } else {
                                                console.log("Kein sns_2 gefunden!");
                                            }
                                        } catch (error) {
                                            console.log("Fehler beim Parsen des JSON-Strings:", error);
                                        }
                                    });
                                     
                                    // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                                    let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                                    // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                                    let targetObject = "0_userdata.0.iAquaLink.Pooldata_Pumpe";
                                    // JSON-String aus ioBroker-Objekt abrufen
                                    getState(sourceObject, function (err, state) {
                                        if (err || !state || !state.val) {
                                            console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                            return;
                                        }
                                        try {
                                            // JSON-String in ein Objekt konvertieren
                                            let jsonObject = JSON.parse(state.val);
                                            
                                            // `filter_pump` extrahieren
                                            let filter_pump = jsonObject.state.reported.equipment.swc_0.filter_pump.value;
                                            if (filter_pump) {
                                                console.log("filter_pump extrahiert:", filter_pump);
                                                // filter_pump in das neue ioBroker-Objekt speichern
                                                setState(targetObject, filter_pump, true);
                                            } else {
                                                console.log("Kein filter_pump gefunden!");
                                            }
                                        } catch (error) {
                                            console.log("Fehler beim Parsen des JSON-Strings:", error);
                                        }
                                    });
                                     
                                    // Name des Quell-Objekts im ioBroker, das den JSON-String enthält
                                    let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                                    // Name des Ziel-Objekts, in das das idToken gespeichert werden soll
                                    let targetObject = "0_userdata.0.iAquaLink.Pooldata_Temp";
                                    // JSON-String aus ioBroker-Objekt abrufen
                                    getState(sourceObject, function (err, state) {
                                        if (err || !state || !state.val) {
                                            console.log("Fehler beim Abrufen des JSON-Strings oder Objekt ist leer.");
                                            return;
                                        }
                                        try {
                                            // JSON-String in ein Objekt konvertieren
                                            let jsonObject = JSON.parse(state.val);
                                            
                                            // `Water temp` extrahieren
                                            let Water temp = jsonObject.state.reported.equipment.swc_0.Water temp.value;
                                            if (Water temp) {
                                                console.log("Water temp extrahiert:", Water temp);
                                                // Water temp in das neue ioBroker-Objekt speichern
                                                setState(targetObject, Water temp, true);
                                            } else {
                                                console.log("Kein Water temp gefunden!");
                                            }
                                        } catch (error) {
                                            console.log("Fehler beim Parsen des JSON-Strings:", error);
                                        }
                                    });
                                    

                                    EDIT: das steht im ioB Log

                                    
                                    javascript.0
                                    2025-05-13 15:39:33.464	error	at processImmediate (node:internal/timers:485:21)
                                    
                                    javascript.0
                                    2025-05-13 15:39:33.464	error	at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/main.js:1732:17)
                                    
                                    javascript.0
                                    2025-05-13 15:39:33.464	error	at /opt/iobroker/node_modules/iobroker.javascript/main.js:2322:17
                                    
                                    javascript.0
                                    2025-05-13 15:39:33.464	error	at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:2224:37)
                                    
                                    javascript.0
                                    2025-05-13 15:39:33.464	error	at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1956:21)
                                    
                                    javascript.0
                                    2025-05-13 15:39:33.464	error	at new Script (node:vm:117:7)
                                    
                                    javascript.0
                                    2025-05-13 15:39:33.464	error	SyntaxError: Identifier 'sourceObject' has already been declared
                                    
                                    javascript.0
                                    2025-05-13 15:39:33.464	error	^
                                    
                                    javascript.0
                                    2025-05-13 15:39:33.464	error	let sourceObject = "0_userdata.0.iAquaLink.Pooldata";
                                    
                                    javascript.0
                                    2025-05-13 15:39:33.464	error	script.js.Pool.iAqualink compile failed: at script.js.Pool.iAqualink:79
                                    

                                    muss da zwischen Token und sns Abfrage eine Pause rein?

                                    NegaleinN Offline
                                    NegaleinN Offline
                                    Negalein
                                    Global Moderator
                                    schrieb am zuletzt editiert von
                                    #38

                                    @Hexagon

                                    kannst du dir das noch anschaun?

                                    @negalein sagte in Aqualink Pool Automation in iobroker integrieren:

                                    es kommt noch immer der Error

                                    @negalein sagte in Aqualink Pool Automation in iobroker integrieren:

                                    muss da zwischen Token und sns Abfrage eine Pause rein?

                                    ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                                    ° Node.js Fixer ---> iob nodejs-update
                                    ° Fixer ---> iob fix

                                    1 Antwort Letzte Antwort
                                    0

                                    Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                                    Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                                    Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                                    Registrieren Anmelden
                                    Antworten
                                    • In einem neuen Thema antworten
                                    Anmelden zum Antworten
                                    • Älteste zuerst
                                    • Neuste zuerst
                                    • Meiste Stimmen


                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    572

                                    Online

                                    32.8k

                                    Benutzer

                                    82.8k

                                    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