NEWS
EZOGateway; Watermonitoring
-
@paul53 Danke fürs feedback
-
@paul53 sagte in EZOGateway; Watermonitoring:
@JohnnyBahama sagte:
über den SIMPLE-API Adapter einbinden, ist der Gedankengang richtig?
Die Simple-API des ioBrokers erlaubt den Zugriff auf ioBroker-Datenpunkte über das Netzwerk von außen. Auf die Daten des EZOGateways sollte man per request() (Javascript-Adapter) zugreifen können.
const url = 'http://<IP address>/api/fetch'; // IP-Adresse eintragen ! const idTemp = '0_userdata.0.EZO.Temperatur'; const idPH = '0_userdata.0.EZO.PH-Wert'; const idRedox = '0_userdata.0.EZO.Redox-Potential'; schedule('* * * * *', function() { // jede Minute request(url, function(error, response, result) { let obj = JSON.parse(result); setState(idTemp, obj['1'].Value, true); setState(idPH, obj['2'].Value, true); setState(idRedox, obj['3'].Value, true); }); });
Ich versuche das gerade einzubinden, aber irgendwie klappt das nicht so. Mit IP Adresse ist sicherlich die vom EZO gemeint. Nur egal ob mit oder ohne port, ich komme zu keiner Verbindung.
Mit Port kommt folgende Meldung: Request error: Error: connect EHOSTUNREACH
Ohne Port fügt er selbstständig den Port 80 hinzu, was dann zur gleichen Meldung führt.
Zusätzlich wirft er noch das aus: Error in request callback: SyntaxError: Unexpected token u in JSON at position 0
Muss ich in zeile 6 noch etwas eintragen? Was muss gemacht werden für std intervall?
Die Objekte werden auch nicht angelegt, denke mal das passiert erst,sobald der erste Wert kommt oder?Momentan sind noch keine Sensoren angeschlossen, um Fehler zu vermeiden.
-
@JohnnyBahama sagte:
Unexpected token u in JSON at position 0
Weil nichts in result geliefert wird. Mach eine zusätzliche Abfrage:
request(url, function(error, response, result) { if(!error && result) { let obj = JSON.parse(result); setState(idTemp, obj['1'].Value, true); setState(idPH, obj['2'].Value, true); setState(idRedox, obj['3'].Value, true); } });
@JohnnyBahama sagte in EZOGateway; Watermonitoring:
Die Objekte werden auch nicht angelegt, denke mal das passiert erst,sobald der erste Wert kommt oder?
Die Datenpunkte müssen manuell im Tab "Objekte" angelegt werden.
-
@paul53
Ist das so richtig?
Objekte sind jetzt unter 0_userdata.0 angelegt.
Das Skript von dir mit in das erste kopieren oder in ein eigenes?
Bin nicht so bewandert in der Prgrammiersprache. Habe es momentan zusammen.const url = 'http://192.******.61:591/api/fetch'; // <-IP-Adresse vom EZO const idTemp = '0_userdata.0.EZO.Temperatur'; const idPH = '0_userdata.0.EZO.PH-Wert'; const idRedox = '0_userdata.0.EZO.Redox-Potential'; schedule('* * * * *', function() { // jede Minute request(url, function(error, response, result) { let obj = JSON.parse(result); setState(idTemp, obj['1'].Value, true); setState(idPH, obj['2'].Value, true); setState(idRedox, obj['3'].Value, true); }); }); request(url, function(error, response, result) { if(!error && result) { let obj = JSON.parse(result); setState(idTemp, obj['1'].Value, true); setState(idPH, obj['2'].Value, true); setState(idRedox, obj['3'].Value, true); } });
Neue Meldung: Error in request callback: TypeError: Cannot read property 'Value' of undefined
-
const url = 'http://192.******.61:591/api/fetch'; // <-IP-Adresse vom EZO const idTemp = '0_userdata.0.EZO.Temperatur'; const idPH = '0_userdata.0.EZO.PH-Wert'; const idRedox = '0_userdata.0.EZO.Redox-Potential'; schedule('* * * * *', function() { // jede Minute request(url, function(error, response, result) { if(!error && result) { let obj = JSON.parse(result); setState(idTemp, obj['1'].Value, true); setState(idPH, obj['2'].Value, true); setState(idRedox, obj['3'].Value, true); } }); });
-
@JohnnyBahama Läuft das EzoGateway ordnungsgemäß? Einfach mal die URL direkt im Browser aufrufen. Da sollten dir die Messwerte schon mal im JSON Format angezeigt werden, so zum Beispiel:
URL: http://<IP EzoGateway>:<Port EzoGateway>/api/fetch
{ "1": { "Name": "Temperature", "Timestamp": "2020-08-28T12:38:37.2146236+02:00", "Value": -1025.858, "Unit": "Celsius", "Symbol": "\u00b0C" }, "2": { "Name": "PH value", "Timestamp": "2020-08-28T12:38:37.2146236+02:00", "Value": 3.938, "Unit": "", "Symbol": "" }, "3": { "Name": "Redox potential", "Timestamp": "2020-08-28T12:38:37.2146236+02:00", "Value": -373.2, "Unit": "Millivolt", "Symbol": "mV" } }
Damit die Messwerte automatisch aktualisiert werden muss der Cyclic Updater in den Settings aktiviert werden. Oder man muss zyklisch den ACQ Befehl auslösen.
-
@100prznt Nein. Wenn ich die Url eingebe dann bekomme ich folgendes:
{ "reason": "No measurement data acquired." }
Wenn die Daten von dem Live View genommen werden, dann geht es nicht. Oberfläche ist da, es werden aber keine Werte angezeigt. Detaillierte Probleme mit dem EzoGateway habe ich dir im Pool Forum geschrieben.
Den Cycle Updater habe ich aktiviert. By the way, der Intervall ist in sek oder? -
@JohnnyBahama Es gab in der Tat ein Problem bei der Hardwareinitialisierung, welches genau dann aufgetreten ist, wenn nicht alle EZO Module bestückt waren, bzw. die Reihenfolge hier nicht gepasst hat. Diesen Fehler habe ich gerade behoben, installiere dazu bitte das Release 0.4.26-beta.
Der Intervall des Cyclic Updaters wird in Sekunden angegeben, korrekt.
Grüße Elias
-
@100prznt sagte in EZOGateway; Watermonitoring:
@JohnnyBahama Es gab in der Tat ein Problem bei der Hardwareinitialisierung, welches genau dann aufgetreten ist, wenn nicht alle EZO Module bestückt waren, bzw. die Reihenfolge hier nicht gepasst hat. Diesen Fehler habe ich gerade behoben, installiere dazu bitte das Release 0.4.26-beta.
Der Intervall des Cyclic Updaters wird in Sekunden angegeben, korrekt.
Grüße Elias
Ich nähere mich dem Ziel. Im EZOGateway funktioniert soweit alles mit dem Script von @paul53 kommen auch Werte an. Bei PH ist alles super, nur bei REDOX geht der Wert nicht höher als 100. Wie kann ich das ändern?
-
@JohnnyBahama sagte:
Wert nicht höher als 100. Wie kann ich das ändern?
common.max des Datenpunktes ?
-
@paul53 sagte in EZOGateway; Watermonitoring:
@JohnnyBahama sagte:
Wert nicht höher als 100. Wie kann ich das ändern?
common.max des Datenpunktes ?
Danke. Hab ich irgendwie übersehen den Punkt.
Somit funktioniert alles wie gewollt und ich kann es weiter verarbeiten.Danke auch an @100prznt für die letzte Woche mit all den "Problemen" die ich hatte und das du dir die Zeit genommen hast, dass so umzustricken, dass es unter anderen Umständen läuft.
-
Macht ihr mittlerweile etwas mit den ermittelten Daten z.B. Dosieranlage ansteuern. Gruß
-
Hiermit wird der Datenpunkt erzeugt.
var url = "http://192.168.178.141/api/fetch"; var idTemp = "javascript.0.EzoGateway.Temperatur"; var idPH = "javascript.0.EzoGateway.pH_Wert"; var idRedox = "javascript.0.EzoGateway.Redox_Potential"; // Erzeugen der Objekte in ioBroker createState(idTemp, 0, { name: 'Temperatur', desc: 'Temperatur', type: 'number', role: 'value', unit: '°C' }); createState(idPH, 0, { name: 'pH_Wert', desc: 'pH Wert', type: 'number', role: 'value', unit: '' }); createState(idRedox, 0, { name: 'Redox_Potential', desc: 'Redox potential', type: 'number', role: 'value', unit: 'mV' }); // schedule('* * * * *', function() { //every minute schedule("*/2 * * * * *", function() { // every 2s request(url, function(error, response, result) { if (result) { let obj = JSON.parse(result); setState(idTemp, obj['1'].Value, true); setState(idPH, obj['2'].Value, true); setState(idRedox, obj['3'].Value, true); } else { var errorMessage = "(" + error + ") ERROR bei Abfrage von: " + url; log(errorMessage, "warn"); } }); });```
-
Hallo zusammen, spanendes Thema.
Ich habe mich da mal etwas eingelesen und hätte ein Paar Fragen.
Welche Sensoren benutzt ihr?
Die für Verbraucher- (41€Redox) (32€ PH)oder
Laborqualität (94€ Redox) (61€ PH)?
Preislich ist das ja ein schon ein Unterschied.Jetzt fehlt mir noch die Dosierpumpen welche auch nochmal mit 200€ aufschlagen würden.
Rechne ich das mal zusammen ist das Leider nicht ganz günstig, für den Preis bekommt man ja fast schon Fertig montierte Anlagen. Naja ioBroker würde dann leider wegfallen. Oder habt ihr noch andere Vorteile für die Config?
Whitebox T3 für Raspberry Pi 81€
EZO pH Circuit 32€
PH Sonde Laborqualität 61€
EZO Redox Circut 32€
Redox Sonde 94€
Raspi + Netzteil 35€
Verteilerkasten, Kalibrierlösungen etc. 100€Sind dann so ca. 435€ ohne dosieranlagen.
Gruß Christian
-
@cvidal Ich nutze Sonden JUMO (BlackLine) liegen preislich eher im von dir letzteren genannten Bereich. Mit "günstigen" Sonden habe ich keine guten Erfahrungen gemacht, hab hier über die Jahre ein ganzes Arsenal angesammelt.
Dosierpumpen hab ich von AliExpress, in der 24 V Version ist man hier im kleinen zweistelligen Eurobereich dabei.
Unterm Strich ist das Ganze natürlich nicht günstig und stellt preislich auch keine Alternative zu einfachen Dosieranlagen dar. Mein Hauptansinnen bei der Entwicklung war die Flexibilität und Möglichkeit der vollständigen Integration in eine übergeordnete Umgebung (z.B. ioBroker).
Beste Grüße
Elias -
@cvidal Richtig, es ist nicht günstig. Der Vorteil der sich mir bietet ist die Steuerung der Salzanlage (Chlorinator) mit Gegenkrontolle, ob die Pumpe wirklich läuft bevor er sich einschaltet und natürlich die Satistik. Feste Zeiten wollte ich nicht, da das Risiko zu hoch ist in meiner Region das es ein paar Tage nicht so gutes Wetter gibt und der Pool dann über-chlort wird. Ph kontrolliere ich zwar auch, aber letztes Jahr hat sich gezeigt, dass ich nur einmal nachjustieren musste, daher spare ich mir automatische dosierung hier, mach ich dann per Pushover Message von Hand.
Bei den Sensoren habe ich die ATLAS Industrial grade im Angebot für 90€ geholt, da die 4 Jahre halten soll und seltener kalibriert werden müssen (Werde ich dieses Jahr sehen).
Am Ende ist es der gleiche Preis, ob ich jedes Jahr eine neue hole oder die Industrie grade. Ich wollte halt so wenig arbeit wie möglich mit dem Pool haben.Auch bei fertigen Anlagen kann man wenig Geld ausgeben Ph803w und Dosierpumpen oder halt mehrere tausende für ein und dieselbe Funktion.
Da der Ph803w neu ist, wäre es interessant, ob man den in den Broker eingebunden bekommt, denn dann wäre das die günstigste Variante und würde selbst die RaspLösung unterbieten.
By the way, du hast das Temp circuit board vergessen, was für die Kalibrierung benötigt wird, um den Korrekturwert einfließen zu lassen.
Edit: Sehe unten den Kommentar zum anderem thread, wo es anscheinend geht. Jetzt musst du für dich entscheiden, womit du leben kannst.
-
@johnnybahama Guck mal hier, Adapter für den PH803w ist gerade in Arbeit: https://forum.iobroker.net/topic/42553/ph-messung Mir gefällt das Teil aber nicht, der verbaute Messverstärker ist leider nicht besonders hochwertig, was sich in der Nichtwiederholbarkeit, Genauigkeit, Stabilität und vor allem im thermischen Drift zeigt.
Ach ja das EZO GW geht auch mit nem 2 Euro DS18B20 als Temperaturreferenz
Beste Grüße
Elias -
@100prznt Hätte mich auch gewundert, wenn da noch keiner gefragt hat. Es ist wie bei allem, Geld ist der Faktor, wo man seine Preis/Leistungs Grenze zieht. Vor allem seit letztem Jahr, wenn man den Quick up pool bei Aldi für 100€ geschossen hat, will man nicht soviel Geld darein stecken und gibt sich mit der "günstigen" Lösung zufrieden.
Mein Board wird diese Saison zum ersten Mal eingesetzt. Bin gespannt, letzten Winter haben wir beide das ja zum laufen gebracht. Warte auf meine Rohre, um es zusammen zu stecken.Aber den circuit brauche ich doch trotzdem oder?
Hatte das auch bei Atlas gesehen, dass die den DS18 für viel Geld auch anbieten. -
@johnnybahama sagte in EZOGateway; Watermonitoring:
Aber den circuit brauche ich doch trotzdem oder?
Hatte das auch bei Atlas gesehen, dass die den DS18 für viel Geld auch anbieten.Man braucht eine 1-Wire/I2C bridge. gibt es fertig auf einen kleinen Breakout-Board, welches man mit 4 Pins direkt an die GPIO Header oder den zusätzlichen Stecker auf dem Tentacle anschließen kann. Kostenpunkt 2 Euro. Auf meiner alten EzoGW Platine ist der diese Bridge fest verbaut.
DS18B20 werden mittlerweile von den Chinesen im großen still "kopiert", bekommt man daher auch in Deutschland für ein zwei Taler. Gibt leider auch "schlechte Fälschungen", der Großteil ist von den Toleranzen her aber brauchbar für die Anwendung zur Temperaturkompensation.
Beste Grüße
Elias -
@zeroqool besser spät als nie. Momentan warte ich noch auf die letzten Rohrteile. Irgendwie hat sich jetzt jeder einen Pool zugelegt und Corona hat auch geholfen, das kein Material verfügbar ist.
Ziel ist es den Salzanlage zu steuern und dadurch die Filteranlage nicht unnötig laufen zu lassen, wenn schlecht Wetter ist.