Schlagwort: Code

Pool Überwachung

Pool
Überwachung

Erfassung und Bereitstellung der wichtigsten Wasserwerte im lokalen Netzwerk. Gemessen werden pH-Wert, Redox-Potential und Temperatur.
Über eine offene REST API können die Daten in verschiedenen Systemen weiter genutzt werden, alternativ wird eine Webinterface zur Anzeige und Konfiguration bereit gestellt.

EzoGateway

Open source UWP App, to brings the Atlas Scientific EZO™ devices in the Internet of Things. Per REST API you can fetch live measdata and calibrate connected sensors. Ideal for monitoring water quality in the pool.

Project on Github

Hardware

  • Raspberry Pi

    Als Basis dient ein Raspberry Pi mit Windows 10 IoT als Betriebssystem.
    Neben allen benötigten Hardware-Ressourcen, bringt das Raspberry mehr als ausreichend Rechenleistung mit, ist für den Hobbyanwender leicht konfigurierbar und kostet mit 30 Euro kein Vermögen.

  • Atlas Scientific EZO™ Module

    Die etwas diffizile Aufgabe der Wandlung der Ausgangssignale von ph- und Redox-Elektrode übernehmen die EZO™ Module der Firma Atlas Scientific. Diese Module implementieren nicht nur die Digitalisierung, sondern bieten auch Funktionalität zur Kalibrierung und zur Temperaturkompensation.
  • EzoGateway HAT

    a 100przt product

    Um die EZO™ Module sauber mit dem Raspberry Pi zu verbinden kommt eine HAT Erweiterung zum Einsatz. Zwei der auf dem HAT vorhandenen EZO™ Sockel sind elektrisch isoliert und somit für die Module zur pH- und Redox-Potential-Messung geeignet. Zudem verfügt das HAT über eine Spannungsversorgung und eine Mehrkanal 1-Wire-Bridge zum Anschluss günstiger Digital-Temperatursensoren.
  • Elektroden

    Als Elektroden zur pH-Wert- und Redox-Potential-Messung können alle gängigen Typen verwendet werden. Um Fehler zu vermeiden sollten sie jedoch bereits vom Hersteller mit einem BNC-Stecker einschließlich entsprechend langer Leitung versehen sein.
  • Temperaturfühler

    Die eingesetzte EZO™ RTD Schaltung unterstützt PT100 und PT1000 Widerstandsthermometer (RTD). Da der Anschluss am EZO™ Modul nur zweidrahtig erfolgt sollte jedoch unbedingt ein PT1000 verwendet werden, dieser muss auch mit einem BNC-Stecker versehen sein.
    Alternativ können günstige 1-wire Temperaturen am EzoGateway HAT genutz werden.

Software

Windows 10 IoT Core

Als Betriebssystem kommt Windows 10 IoT Core zum Einsatz. Dies ist frei verfügbar und lässt sich schnell und unkompliziert auf dem Raspberry Pi einrichten.
EzoGateway ist als UWP App in Visual Studio entwickelt.


EzoGateway – WebUI

Per Weboberfläche können wichtige Systemeinstellungen vorgenommen werden, Kalibrierungen durchgeführt werden und die aktuellen Messdaten in Echtzeit1 angezeigt werden.

1 Aktualisierung der Messwerte Wandlerbedingt mit ca. 900 ms


EzoGateway – API

Die Bedienung des EzoGateway kann vollständig über die integrierte REST API erfolgen. Neben den grundlegenden Funktionen, Messungen zu initiieren und die Messwerte auszugeben, lassen sich Systemzustände abfragen, Kalibrierungen durchführen, Einstellungen vornehmen und vieles mehr.

Das EzoGateway ist ein DIY Projekt, bestehend aus Hardware und Software, zur Messung der Wasserwerte pH, Redox-Potential (zur Rückführung auf ausreichend Chlor im Wasser) und der Temperatur, wie sie üblicherweise im privaten Pool von interesse sind.

pH-Wert und Redox-Potential messen

pH-Wert und
Redox-Potential
messen

Die EZO™ Serie von Atals Scientific umfasst verschiedene Messumformer zur Medienanalyse. Die Module verfügen über eine digitale Schnittstelle, welche wahlweise im UART oder I2C Modus betrieben werden kann. Über ein schlankes und gut dokumentiertes Protokoll können die Module schnell an die eigene Hardware adaptiert werden. Atals Scientific liefert neben der eigenetlichen Modul-Dokumentation einige Codebespiele für verschiedene Plattformen.

Als C# Enthusiast fehlte mir allerdings eine entsprechende .NET Implementierung. Aus diesem Grund ist die Bibliothek Rca.EzoDeviceLib entstanden. Die Bibliothek bildet den kompletten Funktionsumfang der EZO™ Module ab und nimmt den Anwender somit die gesamte Hardware-Kommunikation ab. Die EzoDeviceLib ist als UWP Dll angelegt und eigent sich somit für den Einsatz auf Windows IoT Systemen, wie dem Rasperry Pi.

Download

Der Sourcecode von Rca.EzoDeviceLib steht auf GitHub, zum freien Download zur Verfügung und wird auf Nuget als fertiges kompiliertes Paket angeboten.

Rca.EzoDeviceLib

Rca.EzoDeviceLib Nuget Paket

Stromausfall-Regel

Stromausfall Regel

Mit “Opferlampe” nach Stromausfall alle Leuchtmittel wieder abschalten

Philips Hue Leuchtmittel sind nach dem anschalten der Stromversorgung immer an, bzw. leuchte in einer definierten Farbe und Helligkeit. Dies hat Vor- und Nachteile. Ein großer Nachteil macht sich zum Beispiel nach einem Stromausfall bemerkbar, denn dann leuchten alle Installierten Leuchtmittel, auch wenn es gerade mitten in der Nacht ist oder man für ein paar Wochen im Urlaub ist. Mit einer einfachen Regel lassen sich jedoch alle Leuchtmittel des Systems nach einem Stromausfall wieder abschalten. Benötigt wird dazu lediglich eine “Opferlampe”.

Die Funktionsweise ist recht einfach. Man installiert irgendwo eine sogenannte Opferlampe, welche ein ganz normales Philips Hue Leuchtmittel ist (Color, White, E14 oder E27 spielt dabei keine Rolle). Opfern daher, weil man sie für nichts anderes verwenden kann. Diese Lampe wird also in keine Szene eingebunden und auch nie an geschaltet. Nur nach einem Stromausfall wird sie angehen, bedingt durch die Tatsache das Leuchtmittel nach einschalten der Spannung eben immer angehen. Überwacht man (respektive eine Regel) nun genau diese Lampe, kann eine Aktion ausgelöst werden.

Wenn die eigene favorisierte App keine Möglichkeit bietet individuelle Regeln anzulegen und man auch deswegen nicht eine andere App verwenden möchte kann die Regel händisch angelegt werden. Dazu bedarf es nur den auf der Bridge integrierten API Debugger (Clip Debugger). Mithilfe dessen man vollen Zugriff auf die Programmierschnitstelle (API) der Bridge hat.

Inhalt / Vorgehensweise

IP der Bridge ermitteln

Clip API Debugger aufrufen

Anlegen eines Bridge-Users

ID der Opferlampe ermitteln

Regel erstellen

1. IP der Bridge ermitteln

Die IP der eigenen Bridge wird in den verschiedenen Apps (iConnectHue, all4hue, etc.) angezeigt. Oder man liest sie direkt am eigenen Router aus.

2. Clip API Debugger aufrufen

Der API Debugger lässt sich direkt über die IP der Bridge im Browser über folgende URL aufrufen. Der Platzhalter <IP der Bridge> ist durch die in Schritt 1 ermittelte IP der eigenen Bridge zu ersetzen.
http://<IP der Bridge>/debug/clip.html
Dies sollte man der Einfachheit halber am besten mit einem Computer machen. Ein Smartphone würde sicherlich auch gehen, nur wäre die Eingabe der nachfolgenden Befehle dann unter Umständen nicht so einfach möglich. Wichtig ist nur, dass sich der Computer im selben Netzwerk wie die Bridge befindet und ein aktueller Internetbrowser verwendet wird.

3. Anlegen eines Bridge-Users

Um Änderungen auf der Bridge vornehmen zu können bedarf es eines authentifizieren Users. Ein neuer User lässt sich mit folgenden Kommando anlegen. Zu spezifizieren ist ein Gerätename und ein “App-Name”. Als “App-Name” kann zum Beispiel mein_clip_user gewählt werden, wichtig ist das der Name keine Sonder- und/oder Leerzeichen enthält. Beim Gerätename kann zum Beispiel der Name des verwendeten Computer angegeben werden (ist aber nicht zwingend), im Beispiel unten ist Mein Computer angegeben. Der resultierende String (“mein_clip_user#Mein Computer”) setzt sich aus beiden Angaben zusammen, die Trennung erfolgt mit dem #-Zeichen, dieses Schema ist dringend einzuhalten.

URL (CLIP)
/api

Body
{“devicetype”:”mein_clip_user#Mein Computer”}

Method
POST

Als Antwort bekommt man zuerst eine Fehlermeldung mit dem Hinweis “link button not pressed”. Betätigt man nun den Bridge-Button und sendet die Anfrage POST erneut, bekommt man einen Username zugewisen. Diesen Username sollte man sich notieren, er kann auch für zukünftige Bridge-Zugriffe verwendet werden.

4. ID der Opferlampe ermitteln

Mit folgenden Kommando kann man eine Liste aller Leuchtmittel abrufen. Der Platzhalter <Username> ist durch den in Schritt 3 zugewiesenen Username zu ersetzen.

URL (CLIP)
/api/<Username>/lights

Body

Method
GET

In der Antwort auf das /lights Kommando sucht man nun nach der ID der Opferlampe. Die ID steht je vor dem Datenblock der entsprechenden Leuchtmittel. Im Datenblock selbst findet man den vergebenen Name. Die Antwort könnte beispielhaft wie folgt aussehen:

{
“1”: {
“state”: {
“on”: true,
“bri”: 144,
“hue”: 13088,
“sat”: 212,
“xy”: [0.5128,0.4147],
“ct”: 467,
“alert”: “none”,
“effect”: “none”,
“colormode”: “xy”,
“reachable”: true
},
“type”: “Extended color light”,
“name”: “Meine hue Lampe”,
“modelid”: “LCT001”,
“swversion”: “66009461”
},
“2”: {
“state”: {
“on”: false,
“bri”: 0,
“hue”: 0,
“sat”: 0,
“xy”: [0,0],
“ct”: 0,
“alert”: “none”,
“effect”: “none”,
“colormode”: “hs”,
“reachable”: true
},
“type”: “Extended color light”,
“name”: “Opferlampe”,
“modelid”: “LCT001”,
“swversion”: “66009461”
}
}

Im Beispiel oben hat das Leuchtmittel mit dem Name “Opferlampe” (“name”: “Opferlampe”,) also die ID 2.

5. Regel erstellen

Nun muss noch die eigentliche Regel angelegt werden. Eine Regel besteht immer aus Bedingungen und auszuführenden Aktionen. Bedingung ist in unserem Fall die eingeschaltete Opferlampe. Dazu wird der “On-State” abgefragt und auf “true” geprüft. Aktion wäre – alle Leuchtmittel im System ausschalten. Für den einfachen Zugriff auf alle Leuchtmittel im System gibt es auf der Bridge eine Gruppe mit der ID 0, diese ist immer vorhanden und muss nicht explizit angelegt werden, für diese Gruppe wird in der Regel-Aktion der “On-State” auf “false” gesetzt.

URL (CLIP)
/api/<Username>/rules

Body
Siehe unten

Method
POST

Der Body der anzulegenden Regel sieht wie folgt aus. Die ID der Opferlampe muss entsprechend angepasst werden. Im Code unten ist 42 als ID angegeben.

{
“name”:”Stromausfall”,
“conditions”:
[
{“address”:”/lights/42/state/on”,”operator”:”eq”,”value”:”true”}
],
“actions”:
[
{“address”:”/groups/0/action”,”method”:”PUT”, “body”:{“on”: false}}
]
}

Wenn die Regel erfolgreich angelegt wurde erhält man eine Bestätigung mit der ID der neuen Regel.

Weiterführende Links

Facebook-Gruppe über das Philips Hue System sowie kompatible Soft- und Hardware.

Umfangreiche Anleitung zur Verwendung des integrierten CLIP API Debuggers der Hue Bridge

Copyright © 2020 Elias Ruemmler All Rights Reserved.