NEWS
EZOGateway; Watermonitoring
-
Was genau brauchst du denn? Für die einzelnen Komponenten auf Basis des Whiteboxes Tentacle T3 sind im Wiki Bezugsquellen genannt: https://github.com/100prznt/EzoGateway/wiki/Stückliste
Die Hardwarelösung (Platine) ist so leider noch nicht verfügbar.
Grüße Elias
-
@100prznt danke für den input, aber wie komm ich dann zu den ganzen hardware-sachen? gibts die zu kaufen?
-
@homecineplexx sagte in EZOGateway; Watermonitoring:
[...] wie komm ich dann zu den ganzen hardware-sachen? gibts die zu kaufen?
Ja, für den Aufbau mit dem Whitebox Carrieer "Tentacle T3", wie hier auf dem Foto:
Die EZO Module (pH, ORP, RTD) und auch das Tentacle T3 (die fertig aufgebaute Trägerplatine) kannst du direkt bei Whitbox Labs bestellen: https://www.whiteboxes.ch/shop/ oder bei EXP-Tech, siehe Stückliste.
Grüße Elias
-
Danke Elias dass du hier auch nochmal aktiv bist. Ich hatte im Poolforum auch schon mal nachgefragt und genau die Elemente wären es, die ich mir auch zulegen würde.
Da es zu funktionieren scheint, werde ich mir das mal zulegen.Alternativ ohne IObroker wäre das Ph-803 Messgerät, welches Steckdosen schaltet für die Befüllung. Wäre dann nur ein Regelkreis ohne smart.
-
@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.