genau, und darunter ebenfalls alles noch umbenennen wo sns_2 auftaucht.
NEWS
Best posts made by Hexagon
-
RE: Aqualink Pool Automation in iobroker integrieren
Latest posts made by Hexagon
-
RE: Aqualink Pool Automation in iobroker integrieren
genau, und darunter ebenfalls alles noch umbenennen wo sns_2 auftaucht.
-
RE: Aqualink Pool Automation in iobroker integrieren
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.
-
RE: Aqualink Pool Automation in iobroker integrieren
Schau dir die Werte im DP Pooldata an:
0_userdata.0.Pool.PooldataDort sollten alle Daten ersichtlich sein:
Beispiel Temperatur:
"sns_3": { "sensor_type": "Water temp", "state": 1, "value": 25
-
RE: Aqualink Pool Automation in iobroker integrieren
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.
-
RE: Aqualink Pool Automation in iobroker integrieren
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); } });
-
RE: Aqualink Pool Automation in iobroker integrieren
Zeile 29: Richtige bzw. eigene Serien Nr. verwendet ?
-
RE: Aqualink Pool Automation in iobroker integrieren
Alle DPs => Typ: "String" und Rolle: "State"
Am besten alle DP in 0_userdata.0.xxxx vorab anlegen. -
RE: Aqualink Pool Automation in iobroker integrieren
Besten Dank für die Info.
Anhand dieser konnte ich per Javascript die Pool-Daten auslesen und im iobroker als object ablegen. Danach habe ich mit weiteren scripts die entsprechenden Daten ausgefiltert und diese ebenfalls in ein Object abgelegt.const axios = require('axios'); // Daten für die POST-Anfrage const daten = { api_key: "EOOEMOW4YR6QNB11", email: "xxxxxxxxxxxx", password: "xxxxxxxxxxxx" }; // 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('javascript.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('javascript.0.iAquaLink.IdToken_clean', idToken, true); // Zweite Anfrage unter Verwendung des idTokens const options = { method: 'GET', url: 'https://prod.zodiac-io.com/devices/v1/serialnumberxxxxxx/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.Pool.Pooldata', response.data, true); }).catch(error => { console.error('Fehler:', error); });