Beitrag
von harvey » 28.11.2019, 15:34
Hallo Tom,
als Modifikation Deiner Erweiterung möchte ich eine Erweiterung vorstellen:
Lokale Signalisierung von Schwellwerten über LED/Relaisausgang
Dabei sind möglich:
- Schwellwerte mit Überschreitung und Unterschreitung (Hysterese)
- Schwellwerte als Bereich mit Untergrenze und Obergrenze (inerhalb/ausserhalb)
An den UNI-Sensor werden zur Signalisierung eine LED (optional über LED_ON abschaltbar) und über einen Treiber ein Relais/Halbleiterrelais an zwei Pins angeschlossen.
Dann ist in der Konfiguration (LEVEL_THRESHOLD) auswählbar, ob bei Überschreitung des oberen Schwellwertes ein Alarm ausgelöst wird, bei Unterschreitung des unteren Schwellwertes der Alarm zurückgesetzt wird.
In dieser Einstellung (LEVEL_THRESHOLD = 0) kann der Sensor etwa zur Überwachung von Helligkeit oder Feuchtigkeit arbeiten:
- bei Überschreiten einer Helligkeit wird eine Abdunklung runter gefahren, bei Unterschreitung wieder hoch gefahren
- bei Überschreitung einer Luftfeuchtigkeit wird ein Gebläse zur Lüftung eingeschaltet, bei Unterschreitung wieder ausgeschaltet.
Dies kann auch invertiert werden (INVERT_RELAY = 1), etwa für:
- bei Unterschreitung einer Temperatur wird eine Zusatzheizung eingeschaltet, bei Überschreitung wieder abgeschaltet
Alternativ können die beiden in der Konfiguration eingebbaren Schwellwerte auch einen Bereich (LEVEL_THRESHOLD = 1) beschreiben, mit etwa folgenden Anwendungen:
- Messung ist innerhalb des Bereiches signalisiert in einem Weinkeller, dass die Temperatur im gewünschten Bereich liegt
Dies kann ebenfalls invertiert werden, so dass:
- bei einer Tiefkühltruhe eine Alarmierung ausserhalb der Grenzen erfolgt, also die Tiefkühltruhe zu warm oder zu kalt ist
Die Modifikation erweitert diesen Sensor also dahin, dass eine Berechnung eines Alarms innerhalb des Sensors und nicht über Programme in der CCU stattfindet. Der Sensor meldet wie der Original-Sensor bei jeden (einstellbarem) Intervall die Messwerte und das Ergebnis, misst aber innerhalb des Sendeintervalls einstellbar mehrfach.
Dadurch wird einerseits die CCU nicht mit vielen Paketen (und Verbrauch des Dutycycles) belastet, andererseits werden aber zeitnah Alarmierungen sowohl an die CCU gesendet als auch sofort lokal an der LED und dem Ausgang ausgegeben.
Um den Sketch zu verwenden muss ein eigenes XML verwendet werden. Da ich das ganze nicht als "out_of_the_box_ready" bereit stelle muss der Nutzer also selbst wissen, wie er ein XML in die CCU bringt, also nur etwas für Leute mit intensivem KnowHow!!!
Dazu gehört also noch eine Menge weiterer Arbeit!!!
Die XML-DAtei ist dahin gehend modifiziert, dass weitere Werte (Häufigkeit der Messung in einem Sendeintervall, unterer Schwellwert, oberer Schwellwert, Modus=Schwellwert oder Bereich, Relais invertieren) in der Konfiguration eingestellt wird. Daher ist lediglich die Auswahl des Sensors zur Alarmierung (Temperatur/Helligkeit/Feuchtigkeit/Luftdruck) im Sketch notwendig, es müssen natürlich auch die Sensoren angeschlossen sein. Und die Pins der LED und des Relais sind zu definieren.
Auch die Ausgabe habe ich in der XML-Datei angepasst, so dass nicht verwendete Sensoren auch nicht sichtbar gesetzt werden können. Ebenso können Namen frei vergeben werden, um etwa eine "Temperatur" als "Temperatur Weinkeller" deutlich zu beschreiben.
Wie immer, dies ist ein Snapschuß der Arbeit, sie kann Fehler enthalten. Es handelt sich auch nicht um einen eigenständigen AKTOR-Kanal, der Ausgang wird nur von den Messwerten und den Schwellwerten gesteuert. Trotzdem kann der Stromverbrauch des Ausgangs (Relais) für einen Batteriesensor zu raschem Verbrauch führen.
Bei Fragen ... gerne Fragen!
Vielen Dank an die intensive und konstruktive Diskussion insbesonders über die XML-Datei an Jerome!
Ach ja, Sketch und XML sind angehängt.
cu Harvey
-
Dateianhänge
-
- hwj-sensor6.xml.txt
- (10.95 KiB) 54-mal heruntergeladen
-
- Uni-Sensor6 .ino.txt
- (25.84 KiB) 47-mal heruntergeladen
Homematic raspberrymatic, iobroker, Asksinpp und Arduinos - rund 50 Geräte