Schlagwort-Archive: Arduino

MessageBot Rail Modul HV4

Folgende Artikel zu diesem Projekt können in unserem Web Shop erworben werden.

Alle MessageBot Produkte im Shop

Technische Beschreibung Messagebot HV4
Technische Beschreibung Messagebot HV4
Messagebot Server Software
Messagebot Server Software

Das Message Bot Modul stellt verschiedene Messenger Dienste zur Verfügung, WhatsApp, Telegram, Signal und Simplepush.
Um mehrere MessageBot Module gleichzeitig und zentral zu Verwalten besteht auch die Möglichkeit, die Module an eine eigenständige PC-Server Applikation anzubinden.

Key Features

  • Nachrichten Versand an verschiedene Messenger Dienste:
    WhatsApp, Telegram, Signal und Simplepush sowie Windows Server Applikation
  • PC-Server Management Applikation
  • Schnelle Reaktionsgeschwindigkeit
  • Funktionen und Texte über Web-Interface frei parametrierbar
  • Drei digital Eingänge, Zählereingang Betriebsstatus und Fehlereingang mit konfigurierbare Wirkrichtung (high / low aktiv)
  • Ein High-Side MOSFET Ausgang, konfigurierbare Wirkrichtung (direkt / invers)
  • Mikrokontroller ESP-07S, 4 MB Flash
  • Datenspeicher: F-RAM Technologie für remanente Datenspeicherung
  • Kompakte Bauform Rail Hutschienengehäuse Typ 1-C
  • WLAN nach IEEE 802.11 b/g/n
  • WIFI-Manager
  • NTP Synchronisation über WIFI
  • Integrierter Web-Server mit Kennwort Abfrage
  • OTA (Over the Air) Updatefunktion für Firmware Aktualisierungen

Allgemeines

Das MessageBot Rail Modul HV4 wurde als Counter Modul für einen Spannungsbereich von 12 – 24V entwickelt. Es findet seinen Einsatz somit auch im industriellen Umfeld um Ereignisse oder Stückzahlen zu Zählen und anzuzeigen. Zusätzlich kann der Betriebs- und Fehlerstatus überwacht und im Fehlerfall z.B. die Peripherie abschalten. Eine Fernabschaltung ist ebenfalls über das integrierte Webinterface des Moduls möglich.

Es verfügt über drei 7-24V Eingänge sowie einem High-Side MOSFET-Transistor Ausgang.

Für den Anschluss des Moduls sind sechs Schraubklemmen vorhanden, die Anschlussleitungen mit einem Aderquerschnitt von 0,05 – 2,5mm² aufnehmen können.
Durch seine kompakte Bauform von nur einer TE (18 mm) hat das Modul einen sehr geringen Platzbedarf und ist somit auch gut für den Einsatz in Maschinen oder Verteilung geeignet.

Das Modul besitzt eine interne 750mA PPTC-Selbstrückstellende Sicherung, die das Modul vor einer zu hoher Stromaufnahme schützt.

An der Oberseite des Moduls befindet sich eine SMA-Antennenbuchse. Hier kann je nach Einbausituation die WIFI-Antenne direkt oder mit einem SMA-Verlängerungskabel an eine geeignete Stelle angebracht werden, um immer eine optimale WIFI-Empfangsqualität zu gewährleisten.

Um Daten von einem Mikrokontroller an einen Messenger Dienst zu versenden, wird die WEB-API des jeweiligen Dienstes genutzt.

Das MessageBot Modul unterstütz derzeit folgenden Messanger Dienste:
WhatsApp , Telegram, Signal und Simplepush.

Alternativ besteht die Möglichkeit, die Nachrichtenverwaltung mit einer eigenständigen PC-Server Applikation zu managen. Sie zeigt in einer übersichtlicher Darstellung die Meldungen aller angebundenen MessageBot Module und kann bei Bedarf diese empfangenen Nachrichten auch per E-Mail oder Simplepush an definierte Empfängergruppen weiterleiten. Mit der unlizenzierten Demoversion können maximal drei Module verwaltet werden!

Das MessageBot Modul bildet somit eine Brücke, Signale bzw. Informationen Ihrer Peripherie an einen Messenger Dienst zu versenden oder diese komfortablen über den PC zu verwalten.

Die Kommunikation mit dem WIFI-Netzwerk übernimmt einen ESP-07S mit 4MB Flashspeicher. Die Datenübertragung geschieht üblicherweise Ereignis getriggert, je nach Anwendung und Firmware Version des Moduls können dann verschieden Aktionen erfolgen.

Sollten Sie Interesse an einer Individuellen Lösung haben, die genau auf Ihren Aufgabenstellung angepasst ist, erstellen wir Ihnen gerne ein Angebot.

Sobald eine definiertes Ereignis den Nachrichtenversand auslöst, werden die dafür definierten Textnachricht an den hinterlegten Empfänger versendet und die Message erscheint nach kurzer Zeit in der ausgewählten Messanger APP auf Ihrem Smartphone.

Für die Speicherung von erfassten Daten, steht ein F-RAM zur Verfügung. Hierbei handelt es sich um einen Speicher mit hoher Schreibgeschwindigkeit und einer unbegrenzten Anzahl an Schreib- Lese Zyklen.

Um Daten von einem Mikrokontroller an diverse Messenger Dienste zu senden, wird bei diesem Modul die API-Schnittstelle benutzt, die von verschiedenen Messanger Diensten zur Verfügung gestellt wird. Über diese API-Schnittstellen ist es möglich, Nachrichten zu vielen verschiednen  Diensten wie z.B. WhatsApp, Signal, Telegram, IFTTT, E-Mail, IO-Broker usw. zu senden.

Zum Beispiel ist die private Nutzung des CallMeBot (https://www.callmebot.com/) Dienstes ist für eine gewisse Anzahl von Nachrichten kostenlos, danach wird ein kleiner monatlicher Betrag von derzeit 0,40 € / Monat erhoben.

Alternativ kann aber auch der Dienst von Simplepusch, Telegram, Signal oder Simplypush im Modul ausgewählt und verwendet werden.

Nach kurzer Zeit erscheint dieser Meldetext dann in der Messanger APP auf dem Smartphone oder der Serverapplikation.

MessageBot Windows Server Applikation

Die MessgeBot Server Applikation wurde für Windows als zentrale Sammelstelle von Nachrichten verschiedener MessageBot Module entwickelt.
Sie wird auf einem zentralen PC oder Windows Server installiert und wartet auf Nachrichten der MessageBot Module.

Wird die erste Nachricht von einen Modul empfangen, wird die Baumansicht automatisch um einen Zweig erweitert und das neue Modul als Datensatz eingefügt.
Dieser Moduldatensatz bietet viele Informationen über das Modul wie z.B. die aktuelle Hard- und Software Version, die Betriebsspannung, die Modul ID, die aktuelle IP-Adresse und den Bot Namen. Dieser Datensatz kann dann um weitere spezifische Informationen ergänzt werde.

So kann nach dem erhalt einer neuen Nachricht z.B. eine E-Mail an eine hinterlegte Empfängerliste versendet werden. Zusätzlich besteht die Möglichkeit den Online Status des MessageBot Moduls zu überwachen und bei einer Störung ebenfalls eine E-Mali Benachrichtigung versendet werden.
Die eingehenden Nachrichten der verschiedenen Module werden chronologisch sortiert in einer Listenansicht angezeigt und können dort bearbeitet werden. Je nach Filter Auswahl und selektiertem Modul, werden verschiede Listenansichten erzeugt.

Offene, bearbeitete oder ausgeblendete, Nachrichten werden mit verschieden Symbolen gekennzeichnet. Zusätzlich gibt es Statussymbole für eine Unterbrochene Verbindung zum Modul und den Zustand der Spannungsversorgung.

In der Baumansicht wird durch ein entsprechendes Symbol darauf hingewiesen ob für dieses Modul offene Meldungen vorhanden sind.

Das Programm kann so konfiguriert werden, dass nach jedem neuen Nachrichteneingang automatisch ein Backup Datei der aktuellen Daten gespeichert wird. Diese Backups könne vom Anwender über einen Kalenderfunktion selektiert und bei Bedarf wieder geöffnet oder aus dem Programmordner gelöscht werden.

Für die Server Applikation steht eine Setup Datei zur Verfügung, mit der das Programm komfortabel auf dem Rechner installiert und deinstalliert werden kann. Diese Version ist eine Demo Version, die maximal drei Messanger Module verwalten kann.

Für eine Erweiterung der Modul Anzahl können Sie in unserem Shop verschieden Lizenzen erworben werden.
Wünschen Sie eine Anpassungen der Software an Ihre Bedürfnisse geben wir gerne ein unverbindliches Angebot ab
.

Versionsverlauf:

Intended:

Released:

  • 26.04.2023 Version 4.00 released

MessageBot Rail Modul HV3

Folgende Artikel zu diesem Projekt können in unserem Web Shop erworben werden.

Alle MessageBot Produkte im Shop

Technische Beschreibung Messagebot HV3
Technische Beschreibung Messagebot HV3
Messagebot Server Software
Messagebot Server Software

Das Message Bot Modul stellt verschiedene Messenger Dienste zur Verfügung, WhatsApp, Telegram, Signal und Simplepush.
Um mehrere MessageBot Module gleichzeitig und zentral zu Verwalten besteht auch die Möglichkeit, die Module an eine eigenständige PC-Server Applikation anzubinden.

Key Features

  • Nachrichten Versand an verschiedene Messenger Dienste:
    WhatsApp, Telegram, Signal und Simplepush sowie Windows Server Applikation
  • PC-Server Management Applikation
  • Schnelle Reaktionsgeschwindigkeit
  • Funktionen und Texte über Web-Interface frei parametrierbar
  • Versorgung über eine Redundante Spannungsversorgung (USV) möglich
  • Zwei digital Eingänge, Zählereingang und Fehlereingang mit konfigurierbare Wirkrichtung (high / low aktiv)
  • Ein High-Side MOSFET Ausgang, konfigurierbare Wirkrichtung (direkt / invers)
  • Mikrokontroller ESP-07S, 4 MB Flash
  • Datenspeicher: F-RAM Technologie für remanente Datenspeicherung
  • Kompakte Bauform Rail Hutschienengehäuse Typ 1-C
  • WLAN nach IEEE 802.11 b/g/n
  • WIFI-Manager
  • NTP Synchronisation über WIFI
  • Integrierter Web-Server mit Kennwort Abfrage
  • OTA (Over the Air) Updatefunktion für Firmware Aktualisierungen

Allgemeines

Das MessageBot Rail Modul HV3 wurde als Counter Modul für einen Spannungsbereich von 12 – 24V entwickelt. Es findet seinen Einsatz somit auch im industriellen Umfeld um Ereignisse oder Stückzahlen zu Zählen und anzuzeigen. Zusätzlich kann der Fehlerstatus überwacht und im Fehlerfall z.B. die Peripherie abschalten. Eine Fernabschaltung ist ebenfalls über das integrierte Webinterface des Moduls möglich.

Es verfügt über zwei 7-24V Eingänge sowie einem High-Side MOSFET-Transistor Ausgang.

Für den Anschluss des Moduls sind sechs Schraubklemmen vorhanden, die Anschlussleitungen mit einem Aderquerschnitt von 0,05 – 2,5mm² aufnehmen können.
Durch seine kompakte Bauform von nur einer TE (18 mm) hat das Modul einen sehr geringen Platzbedarf und ist somit auch gut für den Einsatz in Maschinen oder Verteilung geeignet.

Das Modul besitzt eine interne 500mA PPTC-Selbstrückstellende Sicherung, die das Modul vor einer zu hoher Stromaufnahme schützt.

An der Oberseite des Moduls befindet sich eine SMA-Antennenbuchse. Hier kann je nach Einbausituation die WIFI-Antenne direkt oder mit einem SMA-Verlängerungskabel an eine geeignete Stelle angebracht werden, um immer eine optimale WIFI-Empfangsqualität zu gewährleisten.

Um Daten von einem Mikrokontroller an einen Messenger Dienst zu versenden, wird die WEB-API des jeweiligen Dienstes genutzt.

Das MessageBot Modul unterstütz derzeit folgenden Messanger Dienste:
WhatsApp , Telegram, Signal und Simplepush.

Alternativ besteht die Möglichkeit, die Nachrichtenverwaltung mit einer eigenständigen PC-Server Applikation zu managen. Sie zeigt in einer übersichtlicher Darstellung die Meldungen aller angebundenen MessageBot Module und kann bei Bedarf diese empfangenen Nachrichten auch per E-Mail oder Simplepush an definierte Empfängergruppen weiterleiten. Mit der unlizenzierten Demoversion können maximal drei Module verwaltet werden!

Das MessageBot Modul bildet somit eine Brücke, Signale bzw. Informationen Ihrer Peripherie an einen Messenger Dienst zu versenden oder diese komfortablen über den PC zu verwalten.

Die Kommunikation mit dem WIFI-Netzwerk übernimmt einen ESP-07S mit 4MB Flashspeicher. Die Datenübertragung geschieht üblicherweise Ereignis getriggert, je nach Anwendung und Firmware Version des Moduls können dann verschieden Aktionen erfolgen.

Sollten Sie Interesse an einer Individuellen Lösung haben, die genau auf Ihren Aufgabenstellung angepasst ist, erstellen wir Ihnen gerne ein Angebot.

Sobald eine definiertes Ereignis den Nachrichtenversand auslöst, werden die dafür definierten Textnachricht an den hinterlegten Empfänger versendet und die Message erscheint nach kurzer Zeit in der ausgewählten Messanger APP auf Ihrem Smartphone.

Für die Speicherung von erfassten Daten, steht ein F-RAM zur Verfügung. Hierbei handelt es sich um einen Speicher mit hoher Schreibgeschwindigkeit und einer unbegrenzten Anzahl an Schreib- Lese Zyklen.

Um Daten von einem Mikrokontroller an diverse Messenger Dienste zu senden, wird bei diesem Modul die API-Schnittstelle benutzt, die von verschiedenen Messanger Diensten zur Verfügung gestellt wird. Über diese API-Schnittstellen ist es möglich, Nachrichten zu vielen verschiednen  Diensten wie z.B. WhatsApp, Signal, Telegram, IFTTT, E-Mail, IO-Broker usw. zu senden.

zum Beispiel ist die private Nutzung des CallMeBot (https://www.callmebot.com/) Dienstes ist für eine gewisse Anzahl von Nachrichten kostenlos, danach wird ein kleiner monatlicher Betrag von derzeit 0,40 € / Monat erhoben.

Alternativ kann aber auch der Dienst von Simplepusch, Telegram, Signal oder Simplypush im Modul ausgewählt und verwendet werden.

Nach kurzer Zeit erscheint dieser Meldetext dann in der Messanger APP auf dem Smartphone oder der Serverapplikation.

MessageBot Windows Server Applikation

Die MessgeBot Server Applikation wurde für Windows als zentrale Sammelstelle von Nachrichten verschiedener MessageBot Module entwickelt.
Sie wird auf einem zentralen PC oder Windows Server installiert und wartet auf Nachrichten der MessageBot Module.

Wird die erste Nachricht von einen Modul empfangen, wird die Baumansicht automatisch um einen Zweig erweitert und das neue Modul als Datensatz eingefügt.
Dieser Moduldatensatz bietet viele Informationen über das Modul wie z.B. die aktuelle Hard- und Software Version, die Betriebsspannung, die Modul ID, die aktuelle IP-Adresse und den Bot Namen. Dieser Datensatz kann dann um weitere spezifische Informationen ergänzt werde.

So kann nach dem erhalt einer neuen Nachricht z.B. eine E-Mail an eine hinterlegte Empfängerliste versendet werden. Zusätzlich besteht die Möglichkeit den Online Status des MessageBot Moduls zu überwachen und bei einer Störung ebenfalls eine E-Mali Benachrichtigung versendet werden.
Die eingehenden Nachrichten der verschiedenen Module werden chronologisch sortiert in einer Listenansicht angezeigt und können dort bearbeitet werden. Je nach Filter Auswahl und selektiertem Modul, werden verschiede Listenansichten erzeugt.

Offene, bearbeitete oder ausgeblendete, Nachrichten werden mit verschieden Symbolen gekennzeichnet. Zusätzlich gibt es Statussymbole für eine Unterbrochene Verbindung zum Modul und den Zustand der Spannungsversorgung.

In der Baumansicht wird durch ein entsprechendes Symbol darauf hingewiesen ob für dieses Modul offene Meldungen vorhanden sind.

Das Programm kann so konfiguriert werden, dass nach jedem neuen Nachrichteneingang automatisch ein Backup Datei der aktuellen Daten gespeichert wird. Diese Backups könne vom Anwender über einen Kalenderfunktion selektiert und bei Bedarf wieder geöffnet oder aus dem Programmordner gelöscht werden.

Für die Server Applikation steht eine Setup Datei zur Verfügung, mit der das Programm komfortabel auf dem Rechner installiert und deinstalliert werden kann. Diese Version ist eine Demo Version, die maximal drei Messanger Module verwalten kann.

Für eine Erweiterung der Modul Anzahl können Sie in unserem Shop verschieden Lizenzen erworben werden.
Wünschen Sie eine Anpassungen der Software an Ihre Bedürfnisse geben wir gerne ein unverbindliches Angebot ab
.

Versionsverlauf:

Intended:

Released:

  • 29.03.2023 Version 3.00 released

MessageBot Modul HV1

 

Folgende Artikel zu diesem Projekt können in unserem Web Shop erworben werden.

Alle MessageBot Produkte im Shop

Messagebot HV1 Dokumentation
Messagebot HV1 Dokumentation
Messagebot Server Software
Messagebot Server Software

Das Message Bot Modul stellt verschiedene Messenger Dienste zur Verfügung, WhatsApp, Telegram, Signal und Simplepush.
Um mehrere MessageBot Module gleichzeitig und zentral zu Verwalten besteht auch die Möglichkeit, die Module an eine eigenständige PC-Server Applikation anzubinden.

Key Features

  • Verschiedene Messenger Dienste, WhatsApp, Telegram, Signal und Simplepush sowie Windows Server Applikation
  • Schnelle Reaktionsgeschwindigkeit
  • Funktionen und Texte frei parametrierbar
  • Wirkrichtung des Eingangskontakts umschaltbar (NO / NC)
  • Eingangskontakt für einen potentialfreien Meldekontakt
  • Mikrokontroller ESP-01S mit 1 MB Flash
  • Sehr kompakte Bauform
  • WIFI-Manager Landing Portal
  • Integrierter Web-Server mit Kennwort Abfrage
  • OTA (Over the Air) Updatefunktion für Firmware Aktualisierungen

Allgemeines

Das MessageBot Projekt bildet die Brücke um über einen potentialfreien Eingangskontakt frei definierbare Meldung an einen Messenger Dienst zu senden.

Dies könnte beispielsweise der Störmeldeausgang einer Maschine, ein Tür- oder Fensterkontakt, eine Katzenklappe aber auch jeder andere beliebige Meldekontakte sein.

Um Daten von einem Mikrokontroller an diverse Messenger Dienste zu senden, wird bei diesem Modul die API-Schnittstelle benutzt, die von verschiedenen Messanger Diensten zur Verfügung gestellt wird. Über diese API-Schnittstellen ist es möglich, Nachrichten zu vielen verschiednen  Diensten wie z.B. WhatsApp, Signal, Telegram, IFTTT, E-Mail, IO-Broker usw. zu senden.

zum Beispiel ist die private Nutzung des CallMeBot (https://www.callmebot.com/) Dienstes ist für eine gewisse Anzahl von Nachrichten kostenlos, danach wird ein kleiner monatlicher Betrag von derzeit 0,40 € / Monat erhoben.

Alternativ kann aber auch der Dienst von Simplepusch, Telegram, Signal oder Simplypush im Modul ausgewählt und verwendet werden.

Zusätzlich steht eine kleine Server Applikation zu Verfügung, die z.B. auf einem zentralen PC oder Server betreiben werden kann. Damit können Nachrichten und Statusmeldungen von mehreren Message Bot Modulen Empfangen, ausgewertete und per E-Mail oder Simplypush an mehrere Abonenten weiterverteilt werden können.

Das MessageBot Modul verfügt über ein ESP-01S Modul der die Firmware enthält und eine WIFI eine Verbindung zum Internet hergestellt. Wird der Send-  Message Eingang oder der potentialfreie Eingangskontakt betätigt, löst die steigende bzw. fallenden Flanke des Eingangssignals das senden der jeweils dafür vorher definierten Textnachricht an den hinterlegten Messenger Kontakt aus.

Nach kurzer Zeit erscheint dieser Meldetext dann in der Messanger APP auf dem Smartphone oder der Serverapplikation.

Platine und Anschluss

Nach Abschluss der Konzeptphase wurde die obige kompakte MessageBot Platine entwickelt. Diese besitzt für die Programmierung und Spannungsversorgung eine USB-C Anschluss Buchse.
Für das ESP01-S (1MB Modul) wurde die Buchsen Leiste J2 vorgesehen. Die Klemmleiste J1 wurde als Schraubklemme ausgeführt, an die dann ein beliebiger potentialfreier Eingangskontakt angeschlossen werden kann. Dieser Eingang besitzt einen ESD-Überspannungsschutz.
Weiterhin sind zwei Taster vorhanden. Der Taster SW2 ist parallel zum Eingangskontakt geschaltet und kann somit ebenfalls verwendet werden um eine Nachricht zu versenden.
Der Taster SW1 dient zum Zurücksetzen der Parametereinstellungen und um den Bootloader des ESP zu aktivieren

Die Platine kann in zwei Ausbaustufen bestückt bzw. geliefert werden. Einmal in einer minimalen Bestückung, die lediglich für das Versenden von den Messages verwendet wird.
In der zweiten Ausbaustufe kann die Platine für die  Programmierung und die Entwicklung verwendet zu werden. Die zweite Ausbaustufe ist für den reinen Messanger Betrieb nicht erforderlich, da nach der ersten Programmierung des ESP-01S Moduls (z.B. mit einem externen Programmieradapter) Updates der Firmware jederzeit über OTA erfolgen können.

Weboberfläche

Die Weboberfläche kann über die lokale IP-Adresse in Ihrem Netzwerk, mit einem Webbrowser aufgerufen werden. Sie dient der Änderung der MessageBot Konfigurationseinstellungen und der Auswahl des Messenger Dienstes (WhatsApp, Signal, Telegram oder Simplepush) über den die Nachrichten später versendet werden sollen.
Hier können auch die WIFI-Einstellungen zurückgesetzt oder nach neuen Firmware Update gesucht werden.
Änderungen an der MessageBot Konfiguration werden direkt nach dem Übernehmen mit dem Submit Button aktiv. So dass weder der WIFI-Manger erneut aufgerufen noch das Modul neu gestartet werden muss.

Aus Sicherheitsgründen wurde für das aufrufen der Weboberfläche eine Eingabedialog mit Benutzername und ein Kennwort Abfrage eingefügt!

Die Standard Anmeldedaten für die Eingabeaufforderung lauten:
Benutzername: admin
Kennwort: Password

Hinweis:
Sollte keine Sicherheitsabfrage für die Weboberfläche gewünscht sein, kann das Kennwortfeld einfach leer gelassen werden. Es erscheint dann zukünftig kein Anmeldedialog mehr beim Aufrufen der Weboberfläche.

  • Select Messanger Type“ dient der Auswahl des Messenger Dienstes, an den die Nachrichten versendet werden soll. Je nach Auswahl erscheinen unterschiedliche Dialogfelder für die Eingabe der Daten für den ausgewählten Dienstanbieter auf der Webseite. Um eine Eingabe zu speichern, muss abschließend der „Submit“ Button gedrückt werden.
  • Der „Devicenname“ dient der Identifikation des Message Bot Moduls an Hand eines frei definierbaren Klartextnamens. Dieser Name wird im Tab des Webbrowsers und als erste Textzeile ihrer Nachricht, sowie als WLAN Access Point Name angezeigt.
    Im Server Modus wird dieser Name ebenfalls als Gräte Name zur Identifikation in der Gerätekonfiguration angezeigt.
    Die Eingabe des Devicename erfolgt mit 5-30 Zeichen, ungültige Eingaben werden ignoriert. Um den neuen Wert zu speichern, muss abschließend der „Submit“ Button gedrückt werden.
  • Der „Message Text 0″ ist der Textliche Inhalt einer gehenden Meldung die an den Dienst versendet werden soll.
    Um keine Meldung zu senden, wenn der Eingang zurückgesetzt wird, kann hier der Platzhalter Bindestrich „-„ eingetragen werden. Die Eingabe des Message Textes erfolgt mit 1-50 Zeichen, ungültige Eingaben werden ignoriert. Um den neuen Wert zu speichern, muss abschließend der „Submit“ Button gedrückt werden.
  • Der „Message Text 1″ ist der Textliche Inhalt einer kommenden Meldung die an den Dienst versendet werden soll.
    Um keine Meldung zu senden, wenn der Eingang zurückgesetzt wird, kann hier der Platzhalter Bindestrich „-„ eingetragen werden. Die Eingabe des Message Textes erfolgt mit 1-50 Zeichen, ungültige Eingaben werden ignoriert. Um den neuen Wert zu speichern, muss abschließend der „Submit“ Button gedrückt werden.
  • Das Feld „Phone Number“ erscheint bei der Auswahl von WhatsApp und Signal und enthält Ihre Telefonnummer mit Ländervorwahl z.B. +491234567890. Die Eingabe der Phone Number erfolgt mit 8-15 Zeichen, ungültige Eingaben werden
    ignoriert. Um den neuen Wert zu speichern, muss abschließend der „Submit“ Button gedrückt werden.
  • Das Feld „API Key [WhatsAPP | Signal | Simplepush]“ erscheint bei der Auswahl von WhatsApp, Signal und Simplepush und enthält die Ziffernfolge, die Sie vom Dienstanbieter nach der Registrierung erhalten haben.
    Die Eingabe des API Key erfolgt mit 1-6 Ziffern, ungültige Eingaben werden ignoriert. Um den neuen Wert zu speichern, muss abschließend der „Submit“ Button gedrückt werden.
  • Das Feld „Input Contact“ zeigt die Ruhestellung des potentialfreien Eingangskontakts an. Die Wirkrichtung kann mit der Taste „Change State“ zwischen „Normaly open“ und „Normaly closed“ umgeschaltet werden. Steht die Auswahl z.B. auf „Normaly open“ und wird der Eingangskontakt dann geschossen, wird der Message Text 1 versendet.
  • Die Anzeige „ESP-Device ID“ gibt die jeweilige Device ID des ESP Mikrokontrollers zurück, die aus einem Teil der MAC-Adresse besteht und so eindeutig dem entsprechenden Modul zugeordnet werden kann.
    Im Server Mode Betrieb dient diese ID der eindeutigen Identifikation der einzelnen Message Bot Module.
  • Die „ESP-Core VDD“ zeigt die Versorgungsspannung des Mikrokontrollers an, diese sollt sich für einen stabilen Betrieb im Bereich zwischen min. 3.0V – max. 3.5V bewegen.
    Handelt es sich um ein Batteriebetriebenes Messanger Bot Modul, wird hier die aktuelle Batterie Spannung angezeigt!
  • Die Anzeige „WIFI-Quality“ zeigt die aktuelle Empfangsqualität des WIFI-Signals in Prozent an.
  • Der Taster „Send Testmessage“ sendet mit den vorhandenen Einstellungen eine Nachricht an die gespeicherten Teilnehmerdaten. Hierbei wird der Textinhalt der kommenden- und gehenden Meldung versendet. Um keine entsprechende Nachricht zu versenden, kann der Platzhalter „–„ in das entsprechende Textfeld eingetragen wurde.
  • Die „Event Tabelle“ enthält die letzten 15 Ereignisse mit Zeitstempel und Sendestatus. Diese Daten können bei Bedarf mit dem Button „CSV-Export“ als CSV-Datei auf den lokalen Rechner gespeichert und dann z.B. mit Excel geöffnet und weiterverarbeitet werden.
  • Mit dem Taster „Update“ sucht das Message Bot Moduls nach einer neueren Firmware Version im Internet. Die aktuelle Versionsnummer wird in der Weboberfläche angezeigt. Bitte informieren Sie sich vor einem Update über die Änderungen auf der Webseite des Herstellers.
    Bitte überprüfen Sie nach jedem Firmware Update die Message Bot Moduleinstellungen, da sich dadurch ggf. Änderungen oder ein erweiterter Funktionsumfang ergeben haben könnten.
  • Mit dem Taster „Reset to Factory settings Parameters“ werden die die Werkseinstellungen wieder hergestellt. Danach müssen die Verbindungsdaten im WIFI-Manager (Konfigurationsportal) des Message Bot Moduls neu eingetragen werden.

MessageBot Windows Server Applikation

Die MessgeBot Server Applikation wurde für Windows als zentrale Sammelstelle von Nachrichten verschiedener MessageBot Module entwickelt.
Sie wird auf einem zentralen PC oder Windows Server installiert und wartet auf Nachrichten der MessageBot Module.

Wird die erste Nachricht von einen Modul empfangen, wird die Baumansicht automatisch um einen Zweig erweitert und das neue Modul als Datensatz eingefügt.
Dieser Moduldatensatz bietet viele Informationen über das Modul wie z.B. die aktuelle Hard- und Software Version, die Betriebsspannung, die Modul ID, die aktuelle IP-Adresse und den Bot Namen. Dieser Datensatz kann dann um weitere spezifische Informationen ergänzt werde.

So kann nach dem erhalt einer neuen Nachricht z.B. eine E-Mail an eine hinterlegte Empfängerliste versendet werden. Zusätzlich besteht die Möglichkeit den Online Status des MessageBot Moduls zu überwachen und bei einer Störung ebenfalls eine E-Mali Benachrichtigung versendet werden.
Die eingehenden Nachrichten der verschiedenen Module werden chronologisch sortiert in einer Listenansicht angezeigt und können dort bearbeitet werden. Je nach Filter Auswahl und selektiertem Modul, werden verschiede Listenansichten erzeugt.

Offene, bearbeitete oder ausgeblendete, Nachrichten werden mit verschieden Symbolen gekennzeichnet. Zusätzlich gibt es Statussymbole für eine Unterbrochene Verbindung zum Modul und den Zustand der Spannungsversorgung.

In der Baumansicht wird durch ein entsprechendes Symbol darauf hingewiesen ob für dieses Modul offene Meldungen vorhanden sind.

Das Programm kann so konfiguriert werden, dass nach jedem neuen Nachrichteneingang automatisch ein Backup Datei der aktuellen Daten gespeichert wird. Diese Backups könne vom Anwender über einen Kalenderfunktion selektiert und bei Bedarf wieder geöffnet oder aus dem Programmordner gelöscht werden.

Für die Server Applikation steht eine Setup Datei zur Verfügung, mit der das Programm komfortabel auf dem Rechner installiert und deinstalliert werden kann. Diese Version ist eine Demo Version, die maximal fünf Messanger Module verwalten kann. Sollten Sie mehr Module benötigen, kann dies durch den erwerb einer entsprechenden Software Lizenz bei uns erworben werden.

Windows Defender Firewall Einstellung

Da die Kommunikation der MessageBot Module über das lokalen WIFI-Netzwerk stattfindet, muss für die MessageBot Server Applikation nach dem ersten starten die Windows Firewall Richtlinie auf dem Zielrechner angepasst werden.

Der folgenden Dialog erscheint nach dem ersten Start der Applikation. Hier muss auch der Haken für „Private Netzwerke von MessageBot Server in diesem Netzwerk“ freigegeben werden!

Hinweis:
Mit dieser Freeware Test Version können maximal drei Module Verwaltet werden.
Für eine Erweiterung der Modul Anzahl können Sie in unserem Shop verschieden Lizenzen erworben werden.
Wünschen Sie eine Anpassungen der Software an Ihre Bedürfnisse geben wir gerne ein unverbindliches Angebot ab
.

Versionsverlauf:

Intended:

  • Version 1.01
    Impulszähler Funktion.

Released:

  • 31.08.2022 Version 1.00
    Serveranbindung realisiert.
  • 19.07.2022 Version 1.00
    Sonderzeichen ermöglicht „ÄäÖöÜüß“, NTP-Server und Event Tabelle mit bis zu 15 Einträgen integriert.  Anzeige der WIFI-Empfangsstärke in % im Webinterface.
    ESP-ID und Core VDD eingefügt.
    Erweiteung der Messenger Dienste
  • 29.06.2022 Version 1.00rc0
    Projekt Begin

MQTT-Zirkulationssteuerung

Technische Beschreibung MQTT-Zirkulationssteuerung
Technische Beschreibung MQTT-Zirkulationssteuerung

Der Source Code zu diesem Projekt kann in unserem Web Shop erworben werden.

Key Features:

  • Schnelle Reaktionsgeschwindigkeit durch DS18B20 Temperatursensoren
  • Kompakte Bauform ©Sonoff TH 16 Schaltmodul
  • Landing Portal für die WIFI und MQTT Konfiguration
  • ©Amazon Alexa Anbindung (Zirkulation Start/Stop) bzw. über entsprechende Routinen
  • Einsparung von Heiz- und elektrischer Energie
  • Kurze Amortisationszeit
  • Maximaler Komfort bei der Warmwasserbereitstellung
  • Minimale Pumpenlaufzeiten, geringer Verschleiß
  • Optionaler Rücklaufsensor für eine noch bessere Effizienz
  • Leichte Integration in eine vorhandene Automatisierung durch MQTT-Client Funktion
  • Weboberfläche zur optimalen Parametrierung auch ohne MQTT
  • Wachsender Funktionsumfang durch Firmware OTA-Updates direkt vom Hersteller

Allgemeines:
Die Zirkulationspumpe in ihrer Trinkwasseranlage sorgt dafür, dass auch an weit entfernten Entnahmestellen jederzeit warmes Wasser zur Verfügung steht, ohne das vorher minutenlang Wasser ungenutzt im Abfluss verschwindet.
Dies geschieht durch eine ständige Zirkulation von heißem Wassers zwischen dem Warmwasserspeicher und der letzten Entnahmestelle ihrer Trinkwasseranlage, was letztendlich zu hohe Wärmeverlusten des Warmwasserspeichers führt. Abgesehen von diesen Wärmeverlusten, wird zusätzlich auch ständig elektrischer Energie für den Betrieb der Zirkulationspumpe benötigt, was über die gesamte Lebensdauer der Anlage mit hohen Kosten zu Buche schlägt.

Um diese Verluste möglichst gering zu halten, ist die üblichste und günstigste Lösung, eine einfache Zeitschaltuhr mit Tagesprogramm. Die Zeitschaltuhr wird in den Stromkreis zwischen Steckdose und Zirkulationspupe geschaltet, um außerhalb der üblichen Entnahmezeiträume die Zirkulationspumpe vom Stromnetz zu trennen.

Der Nachteil bei dieser Lösung liegt jedoch darin, dass bei einem anderen Nutzungsverhalten die Pumpe aus ist und kein warmes Wasser zur Verfügung stellt oder die Pumpe läuft zu Zeiten, obwohl gar kein warmes Wasser benötigt wird. In beiden Fällen geht viel Energie verloren und eine komfortable Bereitstellung von warmem Wasser ist nicht gegeben.

Die Lösung:
Im hier vorgestellten Projekt soll nun gezeigt werden, wie diese Problematik mit einem handelsüblichen ©Sonoff TH10/16 (10/16A) WLAN-Schaltmodul und einem daran angeschlossenen DS18B20 Temperaturfühler einfach und schnell gelöst werden kann.

Das TH10/16-Modul ist eins der wenigen Module der Firma ©Sonoff, das über ein kleines Schaltnetzteil verfügen und nicht wie viele der anderen Module über einen Kapazitives Netzteil. Der große Vorteil hierbei ist hier die Galvanischetrennung zwischen dem 230V Stromnetz und der daran angeschlossenen Elektronik. So ist es möglich über eine kleine vierpolige 2,5 mm Klinkenbuchse Sensoren direkt mit den IO-Pins des ESP8266 Mikrokontroller zu verbinden, ohne dass Netzspannung an den Sensoren anliegt.

Das TH10/16 Modul inklusive eines DS18B20 Temperatursensors kostet kaum mehr als eine elektronische Zeitschaltuhr, bringt aber ein Maximum an Energieeinsparung und das ohne einen Eingriff in die bestehende Hausinstallation vornehmen zu müssen.
Das Modul kann direkt bei Amazon mit kurzen Lieferzeiten bestellt werden.

Das Funktionsprinzip:
Die grundlegende Funktionsweise basiert auf der Erfassung eines Temperaturanstiegs an der Entnahmeleitung des Warmwasserspeichers.

Produktlink für eine einfache und effektive  Sensorbefestigung

Der Wasserhahn fungiert hierbei quasi als Fernbedienung.
Wird für einen kurzen Moment Warmwasser entnommen, z.B. beim Zähneputzen. Registriert der Temperaturfühler an der Entnahmeleitung diesen Temperaturanstieg, die Zirkulationspumpe augenblicklich angefordert und läuft für die Zeitdauer der eingestellten Laufzeit.
Schon kurze Zeit später, steht warmes Wasser am Wasserhahn zur Verfügung.
Um eine schnelle Reaktionszeit zu gewährleisten, sollte der Sensor der Entnahmeleitung möglichst nahe am Warmwasserspeicher angebracht werden, damit das System möglichst schnell auf eine Entnahme und den damit verbundenen Temperaturanstieg reagieren kann.
An den ©Sonnoff kann optional ein weiterer DS18B20 Sensor angeschlossen werden, der die Rücklauftemperatur erfasst. Ist ein zweiter Sensor angeschlossen, wird dieser automatisch von der Firmware erkannt und es erscheinen weitere Eingabefelder in den Einstellungen.
Hier kann dann unter anderem die Rücklauftemperatur eingetragen, bei der die Zirkulationspumpe wieder vorzeitig abgeschaltet werden kann.

Wird kurze Zeit nach einer Zirkulationspumenanforderung eine weitere Entnahme erkannt, greift die Wartezeit. Sie verhindert ein mehrmaliges Einschalten nach einer kürzlichen Entnahmen. Da sich bereits heißes Wasser in den Leitungen befindet, dass sich nur langsam wieder abkühlt.
Die Pumpenlaufzeit sowie die Wartezeit nach einer Zirkulation können über entsprechende Parametrierung in den Einstellungen optimal an die Gegebenheiten angepasst werden.

Findet über einen langen Zeitraum keine Entnahme statt, kann es durch das stehende Wasser in den Rohrleitungen zu einer Verkeimungen kommen (Urlaubszeiträume, Wochenendhäuser usw.).
Um einer Verkeimung vorzubeugen und ein Höchstmaß an Hygiene zu gewährleisten, startet nach einer definierbaren Zeitpanne automatisch eine Hygienezirkulation. Diese wird in regelmäßigen Zeitabständen wiederholt, wenn zwischenzeitlich keine Entnahmen stattgefunden haben.

In eine später geplanten Firmware Versionen ist eine vorausschauende Zirkulationsanforderung geplant. Soll diese Funktion genutzt werden, wird der oben beschriebene, zweite DS18B20 Sensor in der Rücklaufleitung benötigt!

Wenn ein regelmäßiges Verbrauchsverhalten erkannt wird, sollen diese Zeiträume erlernt und die Zirkulation bereits im Voraus startet, um unnötigen Wartezeiten zu minimieren. Hingegen soll während längerer Abwesenheit die Vorausschauenden Zirkulationsläufe automatisch unterbunden werden. Mit der ersten Entnahme nach dieser Pause, startet dann die Vorausschauende Zirkulation wieder automatisch. Sollten sich Verbrauchsverhalten geändert haben, sollen die veralteten Informationen automatisch gelöscht und dann nach und nach durch die neu erlernten Informationen ersetzt werden.

Hardware:
Die Hardware der Zirkulationssteuerung besteht aus einem ©Sonoff TH10/16 mit einem oder optional zwei DS18B20 1-Wire Temperatursensoren. Die beiden Zahlen 10/16 bezieht sich auf die Schaltleistung des Moduls.
Wir raten zum ©Sonoff TH16, er ist kaum teurer als der TH10, bietet jedoch wesentlich mehr Komfort beim Anschluss der Versorgungsspannung und der Pumpe durch seine Klemmanschlüsse. Außerdem bietet er eine ausreichende Reserve bei der Schaltleistung, was die Lebensdauer des Relaisschaltkontaktes ebenfalls wesentlich verlängert.

Die Sensoren werden über eine vier polige 2,5 mm Klinkenbuchse angeschlossen. Über diese Buchse werden zwei GPIO’S und die Versorgungsspannung herausgeführt.

Steckerbelegung ©Sonoff TH10/16

Der Stecker ist ein vierpoliger 2,5mm Klinkenstecker, über den die 1-Wire Temperatursensoren vom Typ DS18B20 mit dem Modul verbunden werden (DQ – GPIO 14, +3,3V und GND). Beim Anschluss von zwei Temperatursensoren, werden diese parallel an die entsprechenden Anschlusspins angeschlossen.
Die Temperatursensoren am Warmwasservorlauf bzw. am Zirkulationsrücklaufrohr, erkennen kleinste Temperaturänderungen und steuern so das Laufverhalten der Zirkulationspumpe.
Da der ©Sonoff nur eine 2,5mm 4-Pin Eingangsbuchse besitzt, gibt es für den Anschluss von zwei Sensor zwei einfach Lösungen. Man schneidet die angespritzten Stecker (soweit vorhanden) ab und verbindet die jeweils gleichen Adern miteinander. Nun kann man entweder einen lötbaren Stecker verwenden, an den die Adern entsprechend der oben beschrieben Anschlussbelegung angelötet werden. Eine Zweite, lötfreie Lösung bietet die Verwendung eines sogenannten Terminal Adapters Klinke 2,5mm 4-Polig mit Schraubklemmen.

Aderfarbcode der DS18B20 Sensoren
DS18B20 Sensoren können zwei Adrig oder auch drei Adrig angeschlossen werden.
Bei einem zweiadrigen Anschluss betreibt man den Sensor im sogenannten parasitären Modus, die benötigte Versorgungsspannung wird über die Sensorleitung eingespeist und über einen kleinen Kondensator im inneren des Sensors gespeichert.

Signal
Beschreibung Klemme des Adapters
GND
(sw/gn)
GND V
Data
(gelb/weis)
DQ – GPIO 14 L
VDD
(rot)
+3,3V Versorgungs-spannung     |
—–
  —

Jeder DS18B20 Temperatursensor besitzt seine eigenen, einzigartigen 64-bit Seriennummer, was den Betrieb mehrere Sensoren an nur einer Datenleitung zu zulässt.

Hardwareanpassung des ©Sonoff

Möchten Sie die Hardware Modifikation und das flashen einer eigenen Firmware selbst vornehmen, wird im folgenden die Vorgehensweise hierfür kurz beschrieben.
Diese Beschreibung soll lediglich eine Hilfestellung geben und erhebt keinen Anspruch auf Vollständigkeit!
Alle selbst durchgeführten Arbeiten erfolgen auf Ihr eigenes Risiko!

An dieser Stelle wird ausdrücklich darauf hingewiesen, dass für alle beschrieben Arbeitsschritte, wie der Austausch des Flashspeichers, die Programmierung einer neuen Firmware, dass ©Sonoff Modul komplett von der 230V Netzspannung getrennt sein muss.
Ansonsten besteht Lebensgefahr durch einen elektrischen Schlag!

Der Flashspeicher, der mit dem das ©Sonoff TH Modul ausgeliefert wird, ist ein Winbond 25Q08FV, der mit einer Größe von 8MBit (1MByte) für diese Anwendung und die „Over the Air“ OTA-Update Funktion etwas zu knapp bemessen ist. Da bei einem OTA Update die Hälfte des Flash Speichers als Ladespeicher benötigt wird. Deshalb wird er durch einen Winbond 25Q32FV mit 32MBit (4MByte) im SOP-8 Gehäuse ausgetauscht, den Sie in unserem Webshop erhalten.

Um erstmalig eine eigene Firmware auf dem ©Sonoff zu installieren, sind auf der Platine bereits alle benötigen Pins herausgeführt.
Für den Flashvorgang wir eine USB-Seriell Modul mit einer VSS von  3,3V benötigt. Vor dem Anschluss des Moduls ist auf die richtige Einstellung der Versorgungsspannung zu achten. Bei vielen dieser Module kann die Versorgungsspannung VSS zwischen 3.3V und 5V umgeschaltet werden. Eine zu hohe Versorgungsspannung führt zur sofortigen Zerstörung des ©Sonoff Moduls.

Einrichten der WIFI Verbindung:
Um die Zirkulationssteuerung  in das lokale Netzwerk zu integrieren, wird Anfangs ein eigener AP geöffnet. Verbindet man sich mit diesem AP und öffnet anschließend im Webbrowser die IP-Adresse 192.168.4.1 gelangt man in das Konfigurationsportal der Zirkulationssteuerung.
Hier können dann alle notwendigen Einstellungen für das lokale Netzwerk (SSID, Kennwort) und die die Verbindung zum MQTT-Broker (Server IP, Benutzername, Kennwort und Port) vorgenommen werden.
Konnte anschließend mit den eingegebenen Informationen eine Verbindung zum lokalen Netzwerk hergestellt werden, sind alle Daten und Konfigurationen der Steuerung, neben dem MQTT-Broker auch über das integriertes Web-Interface erreichbar.

Einrichten einer Amazon Alexa Verbindung:
Die Zirkulationssteuerung kann über ein Sprach Kommando mit Alexa Geräten ein bzw. ausgeschaltet werden. Wurde die Zirkulationssteuerung mit dem ein Kommando aktiviert, läuft genau wie bei der Entnahmeerkennung die eingestellte Pumpenlaufzeit ab, bevor die Zirkulationspumpe automatisch wieder deaktiviert wird.
Um die Zirkulationssteuerung über Alexa ansteuern zu können, vergeben Sie zuerst den Alexa Invocation (Aufrufnamen) im Webbrowser oder per MQTT. Nach der Eingabe wird die Zirkulationssteuerung neu gestartet und ist bereit für die Kommunikation mit Alexa Geräten.
Stellen Sie vor der Suche von neuen Geräten in ihrer Alexa App sicher, dass ihre Alexa mit dem 2,4 MHz Netzwerk ihres Routers verbunden ist, da vom ESP8266 nur dieses Trägerfrequenz unterstützt wird.
Wählen sie in der Alexa App im Reiter Geräte, Gerät hinzufügen aus. Anschließend suchen sie nach Sonstige Geräte und starten sie die Suche. Nach dem die Zirkulationssteuerung erkannt wurde, kann diese mit den Kommando „Gerätename ein / aus“ angesteuert werden.

Ansicht im IO-Broker:

Die Ansicht zeigt alle verfügbaren Parameter der Zirkulationssteuerung.

Beschreibung der Notes

Note Name Beschreibung Lesen / Schreiben
INFO/Hostname Bezeichnung des Moduls Read
INFO/Port Webserver Por Read
INFO/IPAdress Aktuelle IP-Adresse Read
INFO/Modul WLAN-Modul Read
INFO/RestartReason Beschreibung des letzten Neustart Ereignisses Read
INFO/Version Aktuelle Firmware Version Read
SETTINGS/AlexaInvocationName Alexa Aufrufname (max. 30 Zeichen) Read / Write
SETTINGS/BackflowTemp Rücklauftemperatur Abschaltwert (°C) Read / Write
SETTINGS/CHECKUPDATE Neustes Firmware Update laden (set true) Read / Write
SETTINGS/GradientIntTime Garatientenzeit ab ersten erkannten Temperaturanstieg
(sek.)
Read / Write
SETTINGS/LegionellaWaitTime Hygienezirkulationszeit
(Std.)
Read / Write
SETTINGS/PumpRunTime Pumpenlaufzeit (min.) Read / Write
SETTINGS/RelaisDirection Wirkrichtung des Realis Read / Write
SETTINGS/StartPump Pumpe manuell starten (set true) Read / Write
SETTINGS/StopPump Pumpe manuell stop
(set true)
Read / Write
SETTINGS/TempGradient Temperaturgradient innerhalb der (°C)
GradientIntTime
Read / Write
BackflowTemperatur Rücklauf Temperatur DS18B20 (°C) Read
PreflowTemperature Vorlauf Temperatur DS18B20 (°C) Read
PumpRequest Zirkulationspume aktiv
(on/off)
Read
RelPinState Status Relais Pin
(high/low)
Read
RemainingLegionellaTime Abgelaufene Hygiene Zirkulations Wartezeit
(Std.)
Read
RemainingPumpRunTime Abgelaufene Zirkulationszeit
(Min.)
Read
RemainingPumpWaitTime Abgelaufene Wartezeit
(Min.)
Read
Uptime Zeit seit dem letzten Neustart Read
Vcc Prozessor Core Spannung Read
WIFI-Quality
WIFI-Qualität in % Read

Ansicht im Webbrowser:

Analog zur Ansicht im Broker stehen alle Parameter auch im Webbrowser Interface zur Verfügung.

Aus Sicherheitsgründen wurde eine Anmeldung an der Weboberfläche des Regensensors eingeführt!
Die Standard Anmeldedaten für die Eingabeaufforderung lauten:

Benutzername: admin
Kennwort: Password

Hinweis:
Wird keine Sicherheitsabfrage für die Weboberfläche gewünscht, lassen Sie das Kennwortfeld einfach leer!

Versionsverlauf:

Intended:

  • Hard.Firmware Version 1.03
    Neu Funktionen für das vorausschauende Entnahmeverhalten.

Released:

  • 02.08.2022  Version 1.02
    WIFI-Quality Anzeige in MQTT und Webinterface eingebaut
    Webpage Kennwortabfrage eingebaut, bei leerem Kennwort erfolgt keine Abfrage.
    Uptime Fehlerbeseitigung.
  • 22.04.2022  Version 1.01
    Fehlerbeseitigung bei der Übertragung der MQTT Daten. Updates bei der Genauigkeit der Messwerte verbessert.
    Bibliotheksupdate durchgeführt, neues Anmeldeportal.
  • 29.11.2021 Version 1.00
    Integration für Ansteuerung mit ©Amazon Alexa

MQTT- Kapazitiver Regensensor

Kapazitiver Regensensor Dokumentation
Kapazitiver Regensensor Dokumentation

Der Source Code für dieses Projekt kann in unserem Web Shop erworben werden.

Allgemeines

Anfang 2021, wurde von uns eine IoT-Wetterstation für eine Projekt in Südtirol entwickelt. Ein Teil der Aufgabenstellung bestand darin, einen kapazitiv arbeitenden Regensensor zu integrieren.
Nach Abschluss der Entwicklung, blieben aus dem Prototyping noch einige der Sensor Platinen übrig, daras entstand dann dieses Projekt.
Um dem interessierten Kunden das Funktionsprinzip näher zu bringen und eine Anleitung für den grundlegenden Aufbau eines kapazitiven Regensensors anzubieten, wurde der folgenden Artikel auf unserem Blog dazu veröffentlicht: Kapazitiver Regensensor.

Da die Anfragen für einen solchen Sensor sehr groß waren, haben wir uns entschlossen ein kleine Auswerte Platine zu entwickeln, die mit einem ESP8266 (WEMOS D1 mini) ausgestattet ist und die Sensordaten per Webserver und MQTT zur Verfügung stellt.
Zusätzlich befindet sich auf der Auswerte Platine ein potentialfreier Relais Schaltkontakt, der es erlaubt bei einer Regenerkennung auch direkt einen externen Schaltvorgang auszulösen. Um z.B. eine Markise ein zu fahren.

Aufbau Hardware

Das Regensensor Modul besteh aus drei Einzel Komponenten

  • Kapazitive Sensorplatine
    Die Funktionsweise der Sensorplatine wird bereits im Beitrag Kapazitiver Regensensor ausführlich beschrieben, weshalb wir hier nicht mehr näher darauf eingehen werden.
  • Auswerteeinheit
    Die Platine der Auswerteeinheit bildet das Gegenstück zur Sensorplatine. Die beiden Platinen besitzen dieselben Abmessungen, was bei der Befestigung z.B. in einem geeigneten Gehäuse wie einer Verteilerdose von großem Vorteil ist. Die Bohrlöcher für die Befestigung der Auswerteeinheit werden somit komplett von der aufgeklebten Sensorplatine überdeckt und bietet so einen perfekten Korrosionsschutz.
    Auf der Platine befindet sich ein DS18B20 Temperatursensor, der durch seine Position die Gehäuseinnentemperatur und gleichzeitig die Temperatur kurz unterhalb der Sensorplatine erfasst. Auf diese Weise kann in den Wintermonaten verhindert werden, dass sich Forst auf dem Sensor bilden kann. Bei einem Regenereignis wird die Sensorheizung ebenfalls automatisch aktiviert, um ein schnelleres Abtrocknen der Sensoroberfläche und somit eine schnellere Reaktionszeit des Sensors nach einem Regenereignisses sicher zu stellen. Die Maximale Sensor Temperatur wird über den Temperatursensor geregelt, das spart Energie und erhöht die Lebensdauer des Regensensors.
    Befindet sich kein Feuchtigkeit, Eis oder Kondensat auf der Sensoroberfläche, das durch die Erwärmung verdampfen kann, kommt es auch nicht zu einer Abkühlung durch Verdunstung und der Sensor würde sich immer mehr aufheizen.
    Diese Regelung arbeitet mittels PWM (Pulsweitenmodulation), mit einer Frequenz von ca. 100Hz. Wurde Regen detektiert, findet im Temperaturbereich von 35 – 50°C eine stetige Regelung statt.
    Unterschreitet die Temperatur 4 °C, wird die Sensor Heizung ebenfalls aktiviert um Frostbildung auf der Sensoroberfläche zu verhindern. Hierbei wird ebenfalls die Leistung der Sensorheizung in Abhängig der gemessenen Temperatur geregelt. Der Regelbereich liegt hier bei zwischen 4°C und -6°C, was dann einer Heizleistung von 100 % entspricht.
    Um eine Betauung der Sensoroberfläche zu verhindern, .z.B. bei Morgentau oder Nebelbildung, wird die die kompensierte Sensorkapazität als Messgröße herangezogen. Überschreitet diese einen Wert von 5 pF, wird die Sensorheizung mit einer Leistung von 20 % betrieben, um diesen Effekt zu eliminieren. Die Maximale Sensorheizleistung kann über MQTT oder das Webfrondend in einem Bereich von 1 – 100% eingestellt und somit begrenz werden. Die Spannungsversorgung der Sensorheizung wird über eine 500mA selbstrückstellende Sicherung geschützt. Der WMOS D1 mini besitzt eine eigene selbstrückstellende Sicherung. Die Spannungsversorgung erfolgt nicht über die Micro USB-Buchse, sondern über die zwei auf der Platine herausgeführten Lötpunkte *5V und GND. Nähere Informationen hierzu erhalten Sie in der Dokumentation, die sie oben im Beitrag kostenlos herunterladen können.

ACHTUNG:
Auf der Platine ist kein Verpolungsschutz vorhanden! Ein falscher Anschluss der Spannungsversorgung führt zu einer Zerstörung der elektronischen Bauteile.
Das Netzteil benötigt eine stabilisierte Ausgangsspannung von 5V= und  mindestens 1A  Ausgangs Strom, um die Auswerteeinheit und die Sensor Heizung sicher zu betreiben.

  • Auf der Platine der Auswerteeinheit befindet sich auch noch der hochgenaue Langzeit Timer 7555, der hier als 3V Variante bestückt ist und die Kapazitätsfrequenzumsetzung durchführt. Als letztes Bauteil ist nun noch das Read Relais zu nennen, dass einen potentialfreien Ausgangskontakt zur Verfügung stellt und bei einem Regenereignis ein externes Schaltsignal zur Verfügung stellt.
    Der ungenutzte Raum der Platine wurde mit einem 2,54mm Lochraster versehen, das noch genügend Raum für eigenen Erweiterungen und Ideen bietet.
  • WEMOS D1 mini pro
    Das Schaltungsdesigne  des WEMOS D1 mini Board der Auswerteeinheit musste ebenfalls modifiziert werden (Nähere Informationen hierzu finden Sie in der Technischen Beschreibung).
    Es besitz 4 MB Flash, was ausreichend Platz für zukünftige Erweiterungen oder eigenen Ideeen bereithält. Das Modul wird mit der aktuellen Firmware ausgeliefert, kann aber jeder Zeit über ein Internetverbindung OTA auf die neueste Firmware Versionen upgedatet werden.
    Alle Anschlüsse des WEMOS sind nochmals separat auf dem Lochraster (Stiftleiste 2,54mm) herausgeführt.

Aufbau der Firmware

Um das Regensensormodul in das lokale Netzwerk zu integrieren, wird Anfangs ein eigener AP geöffnet. Verbindet man sich mit diesem AP und öffnet man anschließend im Webbrowser die IP-Adresse 192.168.4.1 gelangt man in das Konfigurationsportal des Regensensor Moduls.
Hier können dann alle notwendigen Einstellungen für das lokale Netzwerk (SSID, Kennwort) und die die Verbindung zum MQTT-Broker (Server IP, Benutzername, Kennwort und Port) vorgenommen werden.
Konnte anschließend mit den eingegebenen Informationen eine Verbindung zum lokalen Netzwerk hergestellt werden, sind alle Daten und Konfigurationen des Sensors wie Einschaltschwellen, die Schalthysterese usw. neben dem MQTT-Broker auch über das integriertes Web-Interface erreichbar.

Die Kapazität des Sensors steht als Rohwert vom Sensor zur Verfügung. Für die Auswertung der Schaltschwelle, wird der kompensierte (kalibrierte) Sensorwert herangezogen.
Um nicht mit dem absoluten Kapazitätswert des Sensors arbeiten zu müssen, kann der Sensorwert bei Trockenheit selbst definiert werden. Hierfür wird eine Kalibrierung durchgeführt. So dass der Kompensierte Sensorwert dann bei Trockenwetter null hat.
Wandert der Wert um 10 pF in den negativen Bereich führt das Sensormodul einen automatischen Nullabgleich durch.

Übertragung der Werte per MQTT

Wird der Regensensor neu gestartet, werden alle Topics der Settings subscribed und anschließend alle Topics einmalig published.
Danach wird die publishing Routine in der Firmware fix alle 10 Sekunden aufgerufen und dabei nur die Werte published, die eine Änderung seit dem letzten publishing Zyklus erfahren haben.
Dies geschieht um den Traffic möglichst gering zu halten.

Hier eine Übersicht der benötigten Werteänderung für eine erneute MQTT Übertragung:

  • curtemperature               >= 1.0 °C
  • curfrequency                    >= 50.0 Hz
  • curcapacity                        >= 3.0 pF
  • compcapacity                    >= 3.0 pF
  • calcapacity                         >=1.0 pF
  • precipitation                      >= 0.01 l/m2
  • windspeed                         >= 0.5 m/s
  • heatsinkpower                 >= 0.01
  • rain                                      true/false;
  • Uptime / Core Vcc           >= 0.01 V

Die CurCapacity und damit auch Comp.Cap. schwankt natürlich auch ohne Regen immer ein wenig, abhängig von der Luftfeuchtigkeit, Nebel oder ähnlichem. Deshalb wurde für die Auswertung der Regenerkennung ein Schwellwert definiert.

Berechnung der Niederschlagsmenge

Eine neue, aber noch experimentelle Funktion ist eine Berechnung der Niederschlagsmenge anhand der Sensorkapazität und der Dauer des Regenereignisses. Hierfür wird der Wert der kalibrierten Sensorkapazität alle 30 Sekunden erfasst und in ein Array gespeichert. nach 15 Minuten, wird aus diesen Werten der Mittelwert gebildet. Die Summe der vier Viertelstundenwerten ergibt dann den Stundenwert, der nach der folgenden Funktion in eine Niederschlagsmenge (l/m2) umgerechnet wird und als 24 Stundenwerte ebenfalls in ein Array mit den Tageswerten geschrieben wird.

Diese Funktion berechnet sich nach der Formel:

float y = 3e-06 * sq(x) – 0.0004 * x + 0.0004;

Windgeschwindigkeitsmessung mit einem Anemometer

Ab Version 1.05 besteht die Möglichkeit ein Anemometer für die Ermittlung der Windgeschwindigkeit an die Auswerteeinheit anzuschließen. Der neue Sensor wird nach dem ersten Impuls automatisch von der Firmware erkannt, anschließend werden weitere Konfigurations- und Anzeigewerte per MQTT und im Web Frontend zur Verfügung gestellt.

Das Anemometer muss über einen potentialfreien Ausgangskontakt verfügen (Sensor mit Reed Ausgangskontakt). Die Erweiterung des Auswertemoduls um diese Funktion gestaltet sich recht einfach, es werden lediglich die folgenden Bauteile benötigt.

  • Ein Widerstand 10 KOhm 1/4 W, print
  • Ein Keramikkondensator 100 nF, print
  • Ggf. eine Schraubklemme 2-polig, Raster 5,08 mm für den Sensoranschluss.

Das folgende Bild zeigt die einfache Schaltung, die für den  Anschluss eines Anemometers an der Auswerteeinheit nachgerüstet werden muss. Die beiden Verbindungsleitungen des Anemometers werden einmal mit den 3.3V und dem GPIO 14 (D5) des WEMOS D1 mini verbunden. Am GPIO14 (D5) wird dann nur noch der Widerstand (10K) und der Keramikkondensator (100nF) gegen Masse angeschlossen.

Es werden viele verschieden Anemometer mit Reed Schaltkontakten im Handel angeboten. Diese unterscheiden sich nicht nur durch verschieden Bauformen (Diameter) sondern auch durch die Anzahl der Impulse pro Umdrehung.

Deshalb stehen nach dem Anschluss eines Anemometers zwei weitere Eingabeparameter im MQTT-Broker und dem Web Frontend zur Verfügung, die eine individuelle Konfiguration des eingesetzten Anemometers zulassen. Der erste Parameter gibt die Anzahl der Impulse pro Umdrehung an. Wieviel Impulse pro Umdrehung der Sensor liefert, kann leicht mit einem einfachen Multimeter oder einem Durchgangsprüfer ermittelt werden, indem  man das Windrad einmal um seine eigene Achse dreht und das Schließen des Kontaktes abzählt.
Der zweite Parameter gibt die Windgeschwindigkeit in km/h, wenn sich das Windrad innerhalb einer Sekunde einmal um die eigene Achse dreht. Lesen Sie hierfür in den Angaben des Herstellers nach.

Verwendet werden kann z.B. ein Anemometer der Firma TOOGOO mit der Typenbezeichnung „WH-SP-WS01 Anemometer“.
Für dieses Anemometer sind die Konfigurationseinstellungen bereits in der Firmware eingetragen.

  • Pulse/Umdrehung = 1 Puls
  • Geschwindigkeit in km/h bei 1U/s = 2,4 km/h

Ansicht im IO-Broker:

Die Ansicht zeigt alle verfügbaren Parameter des Sensormoduls.

Beschreibung der Notes

Note Name Beschreibung Lesen / Schreiben
INFO/Hostname Bezeichnung des Moduls Read
INFO/IPAdress Aktuelle IP-Adresse Read
INFO/Modul WLAN-Modul Read
INFO/Port Webserver Port Read
INFO/RestartReason Beschreibung des letzten Neustart Ereignisses Read
INFO/Device ID Geräte ID Read
INFO/Version Aktuelle Firmware Version Read
SETTINGS/Calibrate Sensorkalibrierung (set true) Read / Write
SETTINGS/CheckUpdate Neustes Firmware Update laden (set true) Read / Write
SETTINGS/HeatsinkMaxPower
(ab Version x.04)
Maximale Sensor Heizleistung  (%) Read / Write
SETTINGS/HystCapacity Schalthysterese Kapazitätswert (pF) Read / Write
SETTINGS/LightRain Schaltschwelle für die Textanzeige Light Rain (pF) Read / Write
SETTINGS/ModerateRain Schaltschwelle für die Textanzeige Moderate Rain (pF) Read / Write
SETTINGS/ModerateRain Schaltschwelle für die Textanzeige Normal Rain (pF) Read / Write
SETTINGS/ NormalRain Wirkrichtung (direct / inverse) Read / Write
SETTINGS/TrshCapacity Schaltschwelle für die Regenerkennung (pF) Read / Write
SETTINGS/WSPulsNumber (optional)
Pulse/Umdrehung
P/U
Read / Write
SETTINGS/WSWindSpeed (optional) Geschwindigkeit in (km/h bei 1U/s) Read / Write
Alive
(ab Version x.05)
Online Status des Moduls (true/false) Read
CalCapacity Kapazitäts- Kompensationswert (pF) Read
CompCapacity Relativer (kompensierter Kapazitätswert (pF) Read
CurCapacity Aktuelle Sensor Kapazität (absolut Wert (pF) Read
CurFrequency Aktuelle Sensorfrequenz (Hz) Read
HeatiSinkPower
(ab Version x.04)
Aktuelle Leistung der Sensorheizung (%) Read
Precipitation
(ab Version x.05)
Niederschalgsmenge l/m2 (experimentell) Read
SensorState
(ab Version x.10)
Sensor Status
(ok/failure)
Read
Rain Status der Regenerkennung (true/false) Read
RainState Status der Regenerkennung (Textform)
CompCapacity > TrshCapacity
= „dry“
CompCapacity < 150 = „light rain“
CompCapacity < 350 = „moderate rain “
CompCapacity < 700 = „normaly rain“
> 700= „heavy rain“
Read
Temperature DS18B20 Gehäuse/Sensor Temperatursensor Wert (°C) Read
Uptime Zeit seit dem letzten Neustart Read
Vcc Prozessor Core Spannung Read
WindSpeed
(optional)
Windgeschwindigkeit (m/s) Read

Einfaches Blockly Skript für den IO-Broker

In diesem Abschnitt soll Beispielhaft die Integration einer Markisen Ansteuerung mit einem Blockly Skript für den IO-Broker gezeigt werden.
Die Variable „Rain-Trigger“ ist eine User definierte boolesche Variable im Broker und dient hier als Trigger für das Umschalten zwischen den Zuständen der Regenerkennung und der Regenende Erkennung.

In diesem Skript wird bei einer Regenerkennung ein kurzer „Close“ Befehl an einen Shelly 2.5 Rollladenschalter gesendet, eine Bedienung durch den Nutzer bleibt somit jederzeit weiterhin möglich.

Ansicht im Webbrowser:

Analog zur Ansicht im Broker stehen alle Parameter auch im Webbrowser Interface zur Verfügung.

Ab Firmware Version x.08 wurde aus Sicherheitsgründen eine Anmeldung am Webinterface eingeführt!

Die Standard Anmeldedaten für die Eingabeaufforderung lauten:

Benutzername: admin
Kennwort: Password

Hinweis:
Wird keine Sicherheitsabfrage für die Weboberfläche gewünscht, lassen Sie das Kennwortfeld einfach leer!

Montage Vorschlag:

Das Regensensor Modul sollte nach Westen ausgerichtet in einem Winkel von ca. 30° mountiert werden, damit der auftreffende Regen die Sensoroberfläche nur benetzt und abfließen kann.
Die Ausrichtung nach Westen schützt die Sensoroberfläche vor direkter Sonneneinstahlung, was die Lebensdauer der Lackschicht enorm  verlängert!

Das Modul lässt sich leicht in eine Hensel Verteilerdose (ohne Klemmen) mit den Abmessungen 104 mm x 104 mm, vom Typ DK 0200 G / IP66 einbauen.

Hinweis:
Die oben genannte Abzweigdose besitzt keine Einführungen oder Würgenippel. Die Einführungsöffnungen sind mit einer Gummimembrane ausgestattet, die leicht durchstochen werden kann und das Kabel anschließend wieder Wasserdicht umschließt.

Im ersten Schritt werden die Befestigungslöcher für vier Distanzhülsen M3x8mm auf der Deckel Oberseite angezeichnet und mit einem 3,2mm Bohrer gebohrt.
Dann werden die Löcher mit einem Senker soweit angesenkt, dass die M3x4mm Senkkopfschrauben plan in den Senkungen verschwinden.

Anschließend wird mit einem Fräser oder einem Forstner Bohrer ein ca. 25 mm großes Loch für den Sensorstecker und den DS18B20 Sensor ausgemessen und gebohrt.

Nun werden die Distanzhülsen M3x6mm auf der Innenseite des Deckels befestigt und die Auswerteeinheit so montiert, dass die Buchsen Leiste und der Sensor im Sensorbohrloch platziert sind.

Danach kann der Sensor mit Silikon auf den Deckel aufgeklebt werden.

Achten sie beim Aufbringen des Sensors darauf, dass die Stiftleiste richtig in der zehn Poligen Buchsen Leiste steckt, so dass nach dem aufbringen der Sensorplatine auch alle vier Senkkopfschrauben verdeckt werden.

Versionsverlauf:

Intended:

  • Hard.Firmware Version 2.00
    Integration einer LUX-Messung mit einem VEML7700 (I2C).

Released:

  • 09.10.2023 Version 1.13
    – HTML Code verbessert
  • 07.08.2023 Version 1.12
    – Fehlerhafte Windwerte größer 300 Km/h ausgeblendet.
  • 09.03.2023 Alle HW Versionen
    Firmware Version 1.11
    – Überwachung der Regensensor Funktion „SensorStatus“  verbessert. MQTT-Struktur neu angelegt, der führende „/“ wurde entfernt!.
    Wichtiger Hinweis:
    Bitte beachten, dass da durch ein neuer Eintrag im Broker erzeut wird!!!
  • 20.10.2022 Alle HW Versionen
    Firmware Version 1.10
    – Überwachung der Regensensor Funktion „SensorStatus“ hinzugefügt.
  • 23.08.2022 Alle HW Versionen
    Firmware Version 1.09
    – Fehler bei der Uptime behoben und Uptime Library eingebunden.
    – Webserver Port in MQTT/Info eingefügt.
    – Genauigkeit bei Chart und der Durchschnittlichen Regenmenge verbessert.
    – Anzeige der Core VDD im Web Frontend.
  • 29.07.2022 Alle HW Versionen
    Firmware Version 1.08
    Anzeige MQTT/Info/Port des Webservers.
    Wird das Webserver Kennwort leer gelassen, erscheint kein Anmeldedialog im Webbrowser.
    Fehlerbeseitigung Überlauf bei der Uptime Anzeige.
  • 15.07.2022 Alle HW Versionen
    Firmware Version 1.08
    Erweiterung der Parametrierung für die Textausgabe des Regenstatus.
    Erweiterung WIFI-Manager, um den Regensensor mit einem Port forwarding im Router auch aus dem Internet erreichen zu können, kann nun der Webserver Port frei konfiguriert werden.
    Zusätzlich wird nun ein Anmeldename und ein Kennwort beim Aufrufen der Webseite abgefragt, um die Sicherheit zu erhöhen.
  • 25.04.2022 Alle HW Versionen
    Firmware Version 1.07
    Aktualisierung der Arduino Librarys, neues Anmeldeportal.
  • 04.02.2022 Alle HW Versionen
    Firmware Version 1.06
    Optimierung bei der Übertragung der MQTT Daten. Updates bei der Genauigkeit der Messwerte verbessert.
  • 28.08.2021 Alle HW Versionen
    Firmware Version 1.05
    Integration eines Anemometers zur Ermittlung der Windgeschwindigkeit.
    Precipitation Wert (Experimentelle Niederschlagsmenge) Errechnung über Viertelstunden Mittelwerte der Comp. Kapazität in l/m2, in MQTT und im Web Browser eingerichtet. Niederschlags Chart Demo Version 24h.
    LWT / Alive – Last Will Testament Onlinestatus des Sensormoduls in MQTT integriert. Reduzierung des MQTT Datenverkehrs.
  • 29.07.2021 Alle HW Versionen
    Firmware Version 1.04
    – Sensor Temperatursteuerung, Regelung der Leistung per PWM
    und Option zur Begrenzung der maximalen Heizleistung.
    – Temperaturregelung der Sensorheizung für Frostschutz und
    Maximaltemperatur.
    – Betauungsschutzfunktion ab einer Kompensierten
    Sensorkapazität von 5 PF, Heizleistung Sensorheizung auf 20%
  • 16.07.2021: Alle HW Versionen
    Firmware Version 1.03
    – Überarbeitung im Dialog Update, Reset und Restart im
    Web Frontend vorgenommen.
    – Regen Status als Klartextausgabe.
  • 03.07.2021: Alle HW Versionen
    Firmware Version 1.02
    – Anzeige im MQTT – Broker erweitert.
  • 04.06.2021: Alle HW Versionen
    Firmware Version 1.01
    – In dieser Version wurde eine Fehlerbeseitigung im
    Web Frontend vorgenommen, es betrifft die Umschaltung
    der Wirkrichtung des potentialfreien Relais Ausgangs.

Controllino Erweiterung für 8 x 1-Wire Sensoren oder Analogeigänge

Das Modul kann in unserem Web Shop erworben werden.

Technische Beschreibung Controlino Sensorslot Modul
Technische Beschreibung Controlino Sensorslot Modul
Controllino Sensorslot Beispiel
Controllino Sensorslot Beispiel

Allgemeines

Die SPS Module mit der Bezeichnung „CONTROLLINO“ sind frei programmierbare Arduino™ Standard und Arduino™ Software kompatible SPS Steuerung für den privaten und industriellen Gebrauch nach Norm EN 61010-2-201.
Der CONTROLLINO dient als elektronische Steuereinheit und ist auf ein Maximum an Kompatibilität ausgelegt.

Das Gerät verfügt nicht nur über alle gängigen Anschlüsse, sondern kann auch komplett von Grund auf programmiert werden.

Das CONTROLLINO kann auf Basis der Arduino™ IDE in der Programmiersprache C programmiert werden. Hierbei handelt es sich um eine Open Source Entwicklungsumgebung.

Zudem gibt es sehr viele Bibliotheken die das Programmieren vereinfachen.

Viele der angebotenen CONTROLLINO Module besitzen zu den bereits vorhandenen Klemmanschlüssen zusätzliche Pinheader Anschlüsse, die als 36-pol. Wannensteckerleisten ausgeführt sind und somit alle relevanten Anschlüsse des Microkontrollers als TTL-Kompatible Anschlüsse zur Verfügung stellen.

Die auf diesen Steckerleisten herausgeführten I/O’s besitzen einen ESD-Schutz und befinden sich hinter dem aktivem Spannungsteiler des CONTROLLINO und sind deshalb 5V TTL kompatibel, was eine Grundvoraussetzung für die Anbindung von Erweiterungen ist.

Genau hier setzt das „CONTROLLINO Sensorslot Modul 1-Wire“ an.

Um weitere externe Sensoren wie z.B. 1-Wire Temperatursensoeren oder Eingänge an die Controllino SPS’en anschließen zu können, wurde dieses Modul entwickelt. Es erlaubt den Anschluß von bis zu acht exteren 5V kompatiblen Eingängen, die über den X1-Pinheader Anschluss des Controllino herausgeführt sind.
Werden 1-Wire Sensoren angeschlossen, können diese über eine entsprechende DIP-Schalter Einstellung dem A0-Eingang des Controllino zugewiesen werden.

Die Zuschaltung eines exteren Pull-Up Widerstandes und die Auswahl des Widerstandswertes ist eben so über einen DIP-Codierschalter möglich.

Alle übrigen Eingangänge, die nicht für den Anschluss von 1-Wire Sensoren ausgewählt wurden, stehen weiterhin als 5V Digital- Analogeingänge zur Verfügung.

Key Features

  • Die Spannungsversorgung erfolgt direkt über den Systembus des CONTROLLINO
  • Selbstrückstellende Sicherung zum Schutz des angeschlossenen CONTROLLINO
  • Anschluss von bis zu acht 1-Wire Sensoren
  • Flexibel durch diverse Bestückungs- und Anschlussvarianten (Wannenstecker oder Schraubklemmen)
  • Power LED für eine erleichterte Fehlersuche
  • Konfiguration der Sensoranschlüsse und des Pull-Up Widerstands über DIP-Schalter
  • Überspannungsschutz für jeden Sensorslot
  • Kurzschlussfeste 5V Sensorversorgung für jeden Sensorslot
  • Einfacher Anschluss an das CONTROLLINO Modul durch eine Flachbandkabelsteckverbindung
  • Mehrfachnutzung des Pinheaders möglich durch Anschluss eines Flachbandkabels mit mehreren Buchsenstecker.
  • Einfache Hutschienen Montage durch Hutschienen Railgehäuse
  • Sehr kompakte Bauform
  • Vielseitig verwendbar auch für andere Anwendungen

Kapazitiver Regensensor Funktionsweise

Zum Blogbeitrag MQTT-Regensensor Modul

Allgemeines:

Im Internet wird eine Vielzahl von verschiedenen Regensensoren angeboten. Die meisten davon kommen aus Fernost und arbeiten nach dem Resistance Prinzip.

Trifft ein Regentropfen auf die nicht isolierten Kontakte des Sensors, werden die nebeneinanderliegenden kammförmigen Kontakte durch den Regen verbunden, was letztendlich zu einer Reduzierung des Sensorwiderstandes führt.

Diese Widerstandsänderung ist abhängig vom Verschmutzungsgrad des Regenwassers, sowie der bereits eingetretenen Oxidation des Regensensors.

Über eine Komparator Schaltung kann hierbei meist der Schaltpegel eingestellt werden, bei dem Regen detektiert wird und der dann ein digitales Ausgangssignal setzt.

Manche Sensoren stellen zusätzlich zu diesem Digitalausgang noch ein Analogsignal zur Verfügung, was eine Lösung für eine zeitweilige Kalibrierung des Sensors durch die Software erlauben würde.

Das große Problem bei dieser Messmethode ist es, dass selbst bei Sensoren mit vergoldeten Kontaktoberflächen immer parasitäre Ströme fließen.

Da praktisch immer ein kleiner Gleichstrom an beiden Polen des Sensors anliegt, führt dies unabhängig von der Qualität des Sensors zu einem elektrochemischen Prozess und damit über kurz oder lang zu einer schrittweisen Zerstörung des Sensors.

Eine bessere Lösung stellt dieser Sensor dar, da er auf einem anderen Prinzip, dem kapazitiven Prinzip beruht.

Das Funktionsprinzip bei einem kapazitiven Sensor ist dem oben vorgestellten Messverfahren durchaus ähnlich. Es unterscheitet sich jedoch in einem wesentlichen Punkt, bei Regen wird hier keine leitende Verbindung hergestellt. Durch die Wassertropfen auf der Oberfläche wird lediglich die Kapazität des Sensors verändert, das Wasser wirkt als Dielektrikum.

Der Vorteil bei diesem Lösungsansatz liegt darin, dass keine blanken Leiterbahnoberflächen der Witterung ausgesetzt sind und dadurch auch kein elektrochemischer Prozess ausgelöst wird, der den Sensor auf Dauer irreversibel beschädigt. Alle leitenden Teile sind durch eine Lackschutzschicht vor Witterungseinflüssen geschützt.

Die Kapazität des Sensors beträgt im trockenen Zustand ca. 170pF. Tritt eine Betauung ein oder trifft Regen auf den Sensor, steigt die Kapazität an. Durch das ermittelte Delta C, lässt sich sogar eine Aussage über die Art des Regens und dessen Intensität treffen. Ist es Neblig oder es handelt sich um einen feinen Nieselregen, der die Sensoroberfläche benetzt, bilden sich viele kleine Wasser Tröpfchen auf dem Sensor, was wiederrum zu einem großen Delta C führt.
Bei einem Durchschnittlichen Regen Ereignis sind es vorwiegend größere Tropfen, die zu einem großen Teil sofort wieder abrutschen, so ergibt sich ein kleineres Delta C.

Um schnell festzustellen zu können, ob der Regen zu Ende ist, besitzt der Sensor eine Heizung an der Platinen Unterseite. Diese besteht aus zwanzig 15 Ohm Heizwiderstände, die es bei einer Versorgungsspannung von 5V immerhin auf eine Heizleistung von knapp 1,8 W bringen.
Sie sorgen für eine zügiges verdunsten der Flüssigkeit bzw. einer Eisbildung auf der Sensoroberfläche.

Durch die sehr kleine Bauform des Sensors, kann selbst mit dieser relativ geringen  Leistung ein schnelles (ca. 5 Minütiges) Abtrocknen sichergestellt werden.
Energetisch gesehen ist es sinnvoll, die Sensorheizung nur für die Dauer einer Regenerkennung zu betreiben. Das bedeutet, wird keine Feuchtigkeit oder Regen mehr detektiert, soll die Sensorheizung abgeschaltet werden!
Hierfür ist ein Transistor auf der Sensorplatine vorgesehen.
Wird hier ein Mosfet bestückt und ist der Pin in dieser Hardware Version 1.00 für dessen Ansteuerung nicht angeschlossen, muss dieser auf Masse gelegt werden.
Da der Mosfet bei einem offenem Gate in einem Halbleitenden Zustand gehen könnte, was zur einer Zerstörung des Bauteils führen würde.

Diese Bild zeigt die Bestückung der Unterseite des Sensors. Es ist gut zu erkennen, das im Layout zwar Pats für eine Befestigung der Sensorplatine vorgesehen sind, diese jedoch keine Bohrung besitzen. Weshalb hier auch kurz auf die Befestigung des Sensors eingegangen werden soll.

Wie zu sehen ist befinden sich die Anschlüsse annähernd mittig auf der Sensorplatine.

Verwandt man z.B. eine feste wasserdichte Hensel Anschlussdose um die Elektronik darin zu verstauen, genügt es in den Deckel ein passendes rundes Loch zu bohren, damit die Anschlüsse nach innen geleitet werden können. Der Regensensor selbst wird am besten mit Silikon wasserdicht mit dem Deckel verklebt.
Sollten dennoch Befestigungslöcher benötigt werden, so können diese nachträglich ausgebohrt werden.

Es bietet sich an die Platine für die Auswertung mit dem entsprechenden Gegenstück auszustatten, so dass diese von der Innenseite aufgesteckt werden kann.

Die Befestigung dieser Platine kann mit Distanzbolzen, die am Deckel eingeschraubt werden, erfolgen. Werden die Schrauben nicht vom Sensor (mit Silikon) überdeckt, sollte hier auf Edelstahlschrauben zurückgegriffen werden.

Im Unteren Bild ist der Schaltplan der Sensorplatine zu sehen.
Bei der Steckverbindung wurde wert daraufgelegt, dass die Signale für alle möglichen Anschlussvarianten an den Pins herausgeführt wurden.

Somit stehen dem Endanwender auch alle möglichen Messverfahren zur Verfügung, die zur Kapazitätsmessung angewandt werden können.

Kapazitiver Regensensor V1.01

Pin Belegung:

  1.  VDD +5V / 3,3V
  2. NC
  3. Sensorheizung
  4. Ladewiderstand
  5. Analog wert (Ladezustand)
  6. Entladewiderstand
  7. GND
  8. GND

Kapazitätsmessung durch Laden- und Samplen der Kondensatorspannung

Die Platine des kapazitiven Regensensors wurde für verschieden Anwendungsbereiche entwickelt, deshalb gibt es auch verschieden Bestückungsvarianten.

Wenn man z.B. einen PIC Mikrokontroller mit einem Komperatoreingang verwnden, kann eine Messmethode angewendet werden, bei die Kapazität des Sensor über den Pin 6, R23 entladen wird (Pin auf LOW) und der Pin anschließend wieder als Komperator Eingang umgeschaltet wird.
Der Pin 4, der zu diesem Zeipunkt im Tristate (hochohmig) war, wird nun als Ausgang programmiert und auf LOW geschaltet. Dieser läd nun die die Kapazität des Regensensors über R22 auf, bis der Komperatoreingang kippt.
Die ermittelte Zeit dient dann als Grundlage für die Kapazitätsbestimmung.
Beim MQTT-Regensensormodul wird ein anderes Messvervahren angewannt, da dieser nicht über einen Komperatoreingang verfügt.

Hier wird der AOUT (der gegen GND direkt die Kapazität des Sensors dartellt) als Kapazität eines Multivibrators genutzt, der abhängig von dieser Kapazität seine Ausgangsfrequenz ändert. Diese Ausgangsfrequenz wird an einem digitalen Eingang des ESP8266 gemessen und die Sensorkapazität aus der Frequenz berrechnet.

Da für dieses Messverfahren der C1, R22 und R23 nicht benötigt werden, müssen diese Bauteile bei diesem Messverfahren nicht mit bestückt werden.

Das obengenannte Messverfahren, dass sich jedoch nur für größere Kapazitäten im Bereich zwischen 10 nF und 2000 uF eigent, beschreibt der folgende Source Code von von Matthias Busse

Quellenverweis :
Kapazitäten von 10nF bis 2000uF einfach messen mit dem Arduino

// Kapazität Messgerät 10nF bis 2000uF
//
// Matthias Busse 22.2.2015 Version 1.1

#define messPin 0            // Analog Messeingang
#define ladePin 13           // Kondensator lade Pin über einen 10kOhm Widerstand
#define entladePin 11        // Kondensator entlade Pin über einen 220 Ohm Widerstand 
#define widerstand  9953.0F  // 10 kOhm > gemessen 9,953 kOhm

unsigned long startZeit;
unsigned long vergangeneZeit;
float microFarad;
float nanoFarad;

void setup() {
  pinMode(ladePin, OUTPUT);     // ladePin als Ausgang
  digitalWrite(ladePin, LOW);  
  Serial.begin(9600);           // Serielle Ausgabe
  Serial.println("Kapazitaetsmesser Version 1.1");
}

void loop() {
  // Kondensator laden
  digitalWrite(ladePin, HIGH);            // ladePin auf 5V, das Laden beginnt
  startZeit = micros();                   // Startzeit merken
  while(analogRead(messPin) < 648){}      // 647 ist 63.2% von 1023 (5V) 
  vergangeneZeit= micros() - startZeit - 114; // 0-Messung abziehen (112-116 us)
  if(vergangeneZeit > 4294960000) vergangeneZeit = 0; // Minuswerte auf 0 setzen (ist long deshalb der hohe Wert)
 // Umrechnung: us zu Sekunden ( 10^-6 ) und Farad zu mikroFarad ( 10^6 ),  netto 1  
  microFarad = ((float)vergangeneZeit / widerstand);   
  Serial.print(vergangeneZeit);           // Zeit ausgeben
  Serial.print(" nS    ");         

  if (microFarad > 1){
    if(microFarad < 100) {
      Serial.print(microFarad,2);         // uF.x ausgeben
      Serial.println(" uF     ");
    }
    else {
      Serial.print((long)microFarad);     // uF ausgeben
      Serial.println(" uF     ");
    }
  }
  else {
    nanoFarad = microFarad * 1000.0;     // in nF umrechnen
    if(nanoFarad > 10) {
      Serial.print((long)nanoFarad);     // nF ausgeben
      Serial.println(" nF     ");
      }
    else
      Serial.println("kleiner 10 nF");  
  }

  /* Kondensator entladen */
  digitalWrite(ladePin, LOW);             // ladePin auf 0V 
  pinMode(entladePin, OUTPUT);            // entladePin wird Ausgang 
  digitalWrite(entladePin, LOW);          // entladePin auf 0V 
  while(analogRead(messPin) > 0){}        // bis der Kondensator entladen ist (0V)
  pinMode(entladePin, INPUT);             // entladePin wird Eingang
  
  while((micros() - startZeit) < 500000){}   // bis 500ms warten, d.h. max 2 Ausgaben pro Sekunde
}

Kapazitätsmessung sehr kleiner Kapazitäten

Da bei sehr kleien Kapazitäten die Ladezeit des Kondensators ebenfalls sehr klein wird, müsste beim oben vorgestellten Messverfahren der Ladewiederstand im Verhältnis hierzu entsprechend vergrößert werden, um mit der Samplingrate des AD-Wandlers im Mikrokontroller immer noch ein akzeptables Messergebnis erzielen zu können.

Das Problem bei einem sehr großen Ladekondensator liegt darin, dass natürlich auch der analoge Eingang des Mikrokontrollers den Kondensator belastet und entläd. Der Messfehler wird also umso größer, je größer der Ladewiderstand wird, bis das System am Ende kippt und der Ladewiderstand die benötigte Ladung nicht mehr liefern kann.

Da sich die Kapazität des Regensensors in einem Bereich von 170pF – max. 400 pF bewegt, wird hier für auf eine anderes Messverfahren zurückgegriffen werden.

Das Frequenzmessverfahren

Bei diesem Messverfahren wird keine ADC benötigt, es kommt mit einem Digitaleingang des Mikrokontrollers aus.
Hierfür kommt der hochgenaue Langzeittimer NE555 zum Einsatz.
Dieser Timer seht sowohl in einer 5V Variante als NE555, als auch für Mikrokontroller die nicht 5V tolerant in einer 3V Variante ICM7555 zur Verfügung.

Arbeitet der Mikrokontroller mit 3,3,V und stehen nur ein NE555 zur Verfügung, kann natürlich auch ein Spannungsteiler am Ausgang den Levelshift übernehmen.

Der NE555 wird in dieser Schaltung als Multivibrator eingesetzt, der abhängig von angeschlossenen Kondensator seine Ausgangsfrequenz verändert.

Wenn am Ausgang gleiche Ein- und Ausschaltzeiten erzeugt werden sollen, muss die Standardschaltung (siehe oben) mit einer Diode parallel zum Widerstand R2 aufgebaut werden. Andernfalls kann diese Diode einfach entfallen. In der obigen Bauteilauslegung ist das Tastverhältnis annähernd 1:1 was auch hier die Diode unnötig macht.
Im Programm des Regensensors werden beide Varianten berücksichtigt. Da sowohl die Zeitdauer der negativen als auch der positive Halbwelle gemessen und anschließend addiert werden. Und damit die ganze Periodendauer berechnet wird.

Für die Messung wird vom Regensensor nur der Pin 5 (Analogwert) und Pin 7 (GND) benötigt.
Soll die Heizung genutzt werden kommen noch der Pin 1 (VDD) und Pin 3 (Sensorheizung aktivieren) hinzu.

Die Ein- Zeit berechnet sich wie folgt:
T1= 0,694 * (R1 + R2) * C

Die Aus- Zeit berechnet sich wie folgt:
T2= 0,694 * R2 * C

Die gesamte Periodendauer ist die Summe aus T1 +T2
T = 0,694 * C * (R1 +(2 * R2))
f = 1 / T

Die Frequenz ist 1 / T1 + T2, damit ergibt sich die Ausgangsfrequenz nach folgender Formel:
f = 1 / (0,694 * C * (R1 +2 * R2))

Da bei dieser Anwendung für uns nicht wichtig ist, welche Kapazität der Sensor hat, kann bereits die gemessene Frequenz für eine Regenauswertung verwendet werden.

Der Vollständigkeit halber hier trotzdem noch die kurz die nach C umgestellte Formel:
C =1 / ( f * 0,694 * (R1 + 2 * R2))

Programaufbau für die Kapazitätsmessung des Regensensors

/* Capacitivemeasurement (c) by Dillinger-Engineering 10/2020

   Funktionsweise:
   Um die kleinen Kapazitätsveränderungen des Regensensors (pF-Bereich)
   mit einer hohen Genauigkeit zu messen, wird hier ein NE555/3V verwendet.
   Dieser arbeitet als Multivibrator mit einer Frequenz im KHz Bereich.
   Ändert sich die Messkapazität, ändert (sinkt) auch die
   Frequenz. Je nach Auslegeung der Schaltung kann über die
   Frequenzänderung dann die entsprechende Kapazität errechent werden. 
   Je gröer der Parameter "MeasuringCycleleTime" gewählt wird,
   um so genauer wird auch die Messung. Zu beachten ist dabei jedoch,
   dass sich, sollte ein Sensor Fehler (kein Signal vom Eingang) vorliegt, damit
   auch die Timeoutzeit entsprechnde verlängert !
*/

const byte InputPin = 5;                       // Wemos D1 mini (Pin D1)
const unsigned int MeasuringCycleleTime = 1e6; // 1000000 us
const long R1 = 10000;   //  10 KOhm
const long R2 = 100000;   // 100 KOhm


float GetFrequeny(){  // Ergebnis in Hz
  float fsum = 0.0;
  unsigned int counts = 0;
  double f, T;
  unsigned long SartTtime = micros();
  bool Fail = false;
  do {
    T = pulseIn(InputPin, HIGH, MeasuringCycleleTime) + pulseIn(InputPin, LOW, MeasuringCycleleTime);
    if(T==0){
      Fail = true;
    }
    f=1/T;      
    counts++;    
    fsum += f * 1e6;
  } while(micros() < (SartTtime + MeasuringCycleleTime) && !Fail); // 1 Sekunde mitteln
  if(Fail){
    return(0);
  }else{
    f = fsum / counts * 0.9925;    //Korrekturwert ermitteln und einrechnen
    return(f);
  }
}

float GetCapacity(){  // Ergebnis in pF
  return(1/(GetFrequeny() * 0.694 * (R1 + 2 * R2))* 1e12);
}

void setup() {
  pinMode(InputPin, INPUT);
  Serial.begin(115200);
}

void loop() {
  char CharStr[30];
  
  // Show Data on Serial if available
  sprintf(CharStr,"Capacity: %.3f pf", GetCapacity()); 
  Serial.println(String(CharStr));
  sprintf(CharStr,"Frequenz: %.3f Hz", GetFrequeny()); 
  Serial.println(String(CharStr));
}

 

ESP8266 EEProm richtig verwenden

Grundlagen

Der ESP8266 verfügt je nach Bestückung des verwendeten ESP-Moduls über ein Flash Speicher, der von 512 Byte bis zu 16KByte reichen kann.

Beim ESP wird hiervon fester Bereich von 4096 Byte für eine „qasi“ EEProm reserviert, welches vom Programm gelesen und auch beschrieben werden kann. Diese Daten bleiben wie das Programm nach einem Neustart erhalten.

Die Größe dieses für den EEProm reservierten Bereichs ist in der spi_flash.h unter SPI_FLASH_SEC_SIZE (4096) definiert.

Quelle: www.ullisroboterseite.de
Quelle: www.ullisroboterseite.de

EEproms eignet sich perfekt zum speichern non Daten bzw. von Daten Strukturen, die nach einem Neustart des ESP wieder zur Verfügung stehen sollen.
Da es sich hierbei aber immer noch um eine Flash Ram handelt und diese vom Hersteller mit einer maximalen beschreibbarkeit von ca. 10.000 mal angegeben werden, sollten hier nur Daten gespeichert werden, die keiner häufigen oder gar zyklischen Änderung unterliegen. 

Deshaln eignet sich dieser Speicher auch nicht für Messdaten, für  Konfigurationsdaten, die sich aber nur selten ändern, ist er perfekt.

Verwendung

Die definition erfolgt als Arduino-typischer Klassenkonstruktor mit der Klasse EEPROMClass, diese stellt eine Reihe vordefinierter Funktionen bereit, die für das Handling mit dem EEProm notwendig sind.

Mit „void EEPROMClass::begin(size_t size)“ wird das Objekt zunächst initialisiert.

Dabei wird ein interner Puffer mit Namen _datain der angegeben Größe angelegt.
In diesen Bereich, der nun als EEPROM deklarierte ist, wird nun der Puffer eingelesen.
Alle nachfolgende Lese- bzw. Schreib Operationen in disem Zwischenpuffer.
Dieser Zwischenpuffer wird erst dann in den Flash Speicher übertragen, wenn man dies mit der Methode EEPROM.commit(); anfordert oder das Programm die Operation mit einem EEPROM.end(); abschließt.

Die internen Variablen _dirty vermerkt, ob eine Änderung des Dateninhalts stattgefunden hat. Ein Zurückschreiben des Pufferinhalts erfolg deshalb nur dann, wenn auch eine Änderung stattgefunden hat.

Die Methode getDataPtr() liefert den Zeiger auf den internen Pufferspeicher. Bei einem Aufruf dieser Methode wird _dirty gesetzt, da der Pufferinhalt über diesen Zeiger abgeändert werden könnte.

Der Kalssenaufruf EEPROMClass benötigt beim Konstruktor die Angabe der Speicheradresse (Sektornummer) in EEPROM.cpp, _SPIFFS_end ergibt sich aus der in der IDE festgelegten SPIFFS-Konfiguration.

Die vordefinierte Instanz der Klasse EEPROM wir folgt angelegt:

EEEPROMClass EEPROM((((uint32_t)&_SPIFFS_end - 0x40200000) / SPI_FLASH_SEC_SIZE));

Um z.B. Konfigurationsdaten in Verbindung mit dem EEPROM zu lesen und zu speichern, bietet es sich an die Daten in einer Structur zu verwalten.

 

typedef struct {
  int PHysteresisH1 = 10;          // Fall Back Hysteresis für Relais 
  int PThresholdH1 = 100;          // Schwellwert für Relais 
  int PHysteresisL1 = 10;          // Fall Back Hysteresis für Relais 
  int PThresholdL1 = 50;           // Schwellwert für Relais 
  int PRelaisStateL1 = 0;          // 0- NO / 1- NC
  int PRelaisStateH1 = 0;          // 0- NO / 1- NC
  int PRelaisStateErr = 1;         // 0- NO / 1- NC
  int PSerialOutState = 0;         // 0- OFF / 1- ON
  int PWifiState = 0;              // 0- OFF / 1- ON
  int PMode = 0;                   // 0= relative / 1= Absolut Druck
  int PACMode = 0;                 // 0= keine Autocalibration / 1= Autokalibration
  int PDeltaAC = 10;               // Maximale Abeichung Druckdifferenz 
  int PCalibrationTime = 5000;     // Calibration Counter Time in ms
  unsigned long PHoldTime = 500;   // Für Abfallverzögerung in ms
} PSettings;
PSettings psettings;

Um Speicherplatz zu sparen, sollte der Pufferspeicher nicht größer als notwendig initialisiert werden. Die Maximale Größe beträgt 4096.

Lesen von Daten aus dem Pufferspeicher

EEPROM.begin(1024); // Puffergröße die verwendet werden soll
EEPROM.get(512, psettings); // Anfangsadresse bei der die definierte Structur abgelegt ist
EEPROM.end(); // schließen der EEPROM Operation

Schreiben von Daten in den Pufferspeicher und anschließende Übernahme in den Flash mit commit()

EEPROM.begin(1024);
EEPROM.put(0, settings); //Schreiben einer zweiten Structur ab Adresse 0
EEPROM.commit();
EEPROM.end();

Quellen Verweise:
www.ullisroboterseite.de
www.kriwanek.de

Dash Button Bestellsystem

Dashbutton Server Software
Dashbutton Server Software

Was ist ein Dash Button?

In diesem Projekt entsteht eine Batterie betriebener WLAN Dash Button in robuster Ausführung.
Die Elektronik soll in einem Gehäuse aus Metall untergebracht werden und eine Schutzart von IP64 erfüllen (Schutz gegen Spritzwasser und Staub).

Ein Dash Button ist eine kleine Mikrocontroller gestützte Schaltung, die bei Anforderung mit einem lokalen WLAN Netzwerk eine Verbindung herstellen kann, um so Daten an einen beliebigen Server zu senden.

Um einen Dash Button in ein bestehendes WLAN Netzwerk zu integrieren, startet der Dash Button im AP-Modus, nach dem Verbinden z.B. mit einem Smartphone oder Laptop, wird automatisch ein Captive Portal auf dem Endgerät geöffnet.

Hier können anschließend folgende Credentials definiert werden:

  • SSID des lokalen WLAN Netzwerks
  • Passwort des lokalen WLAN Netzwerks
  • Hostname des Ziel-Servers
  • URL
  • Dash Token, ein ein-eindeutiger Schlüssel für die Aktion die der Dash Button auslösen soll

Aufbau der Hardware

Der Dash Button soll unabhängig von einer externen Energieversorgung arbeiten können. Das bedeutet, dass die Energieversorgung mit Batterien realisiert wird, die im Gehäuse untergebracht werden.

Prototyp Dash Button von oben
Prototyp Dash Button von unten
Prototyp eines DashButtons im Metallgehäuse, zum Testen der Feldstärke mit einer ext. Antenne.

Deep Sleep Modus

Softwaretechnisch wird hierfür die sogenannte Deepsleep Funktion des Mikrocontrollers verwendet. In diesem Modus hat die Schaltung eine Stromaufnahme <70uA, was eine lange Lebensdauer der Batterien im Standby garantiert.

Nach Herstellerangaben, liegt der Deepsleep Ruhestrom bei ca. 10uA. Gemessen wurde beim Dashbutton jedoch eine Ruhestromaufnahme von ca. 60 uA. Dies muss jedoch noch genauer untersucht werden, da hier eine Messfehlertoleranz des Multimeters anzunehmen ist.

Parameter Typische Stromaufnahme Einheit
Tx 802.11b, CCK 11Mbps, Pout=+17dBm 170 mA
Tx 802.11g, OFDM 54Mbps,, Pout=+15dBm 140 mA
Tx 802.11n, MCS7, Pout=+13dBm 120 mA
Rx 802.11b 1024 byte packet lenght, -80dBm 50 mA
Rx 802.11g 1024 byte packet lenght, -70dBm 56 mA
Rx 802.11n 1024 byte packet lenght, -65dBm 56 mA
Modem-Sleep 15 mA
Light-Sleep 0,5 mA
Power save mode DTIM 1 1,2 mA
Power save mode DTIM 3 0,9 mA
Deep-Sleep 10 uA
Power OFF 0.5 uA

Eine Standard ESP-07 enthält einen Flash RAM von 1M, für die Programmierung wird ein SPIFFS von 64 K voreingestellt.
Direkt auf dem Modul befinden sich zwei LED’s , die rote LED ist direkt mit der Versorgungsspannung verbunden. Diese LED verursacht auch im Deepsleep Modus einen schadhaften Ruhestrom von ca. 15 mA und muss deshalb entfernt werden.
Die blaue LED ist mit TxD verbunden und zeigt die Aktivität an diesem Pin an.

Änderung des Energieversorgungsskonzeptes

Bei den Tests mit verschiedenen Primärquellen hat sich gezeigt, das mit dem ersten Layoutentwurf immer nur ein relativ kleiner Teil der zu Verfügungstehenden Kapazitäten entnommen werden kann. Deshalb wird nun in einer überarabeitenen Hardware Revision ein StepUp Booster vom Typ   NCP1402SN33T1 eingesetzt.

Dieser Baustein hat eine sehr niedrige Anlaufspannung von ca. 0.8V. Werden zwei AA-Battereien in Reihe betrieben, kann jede Zelle bis zu einer Spannung von 0.4V entladen werden, was knapp 90% der Gesamtkapazität der Zellen entspricht.

Der Baustein hat einen sehr niedrige Standby Stromaufnahme von nur 10uA und er stellt am Ausgang einen konstante Spannung von 3.3V zur Verfügung.

Das Schaltungsdesigne wird auch dahingehend geändert, dass auf den Standbystrom des NCP1402SN33T1 und den Deep Sleep Modus des ESP6288 verzichtet werden kann, da die Summe der beiden Ruhestromaufnahmen dann doch einen beträchtlichen Anteil von ca. 70 uA aus mahen würden.

Zu Einsatz kommt ein Mos Fet Transistor, der gleich zwei Aufgaben erfüllt. Zum einen dient er dem Verpolungsschutz, wenn die Batteriene versehentlich falsch eingelegt wurden und schützt so die Schaltkreise vor der Zerstörung.
Und zum anderen, wird er als Schalter für die Sapannungsversorgung verwendet.

Mit dem Betätigen des Tasters wird der Mos Fet leitend und stellt die Versorgungsspannung des Schaltkreises zur Verfügung. Ms nach dem starten des ESP 8266 steuert dieser dann übereinen Ausgang den Mos Fet an und verhindert so das sie Versorungsspannung nach dem loslassen des Taster wieder abgeschaltet wird.

Sobald alle nötigen Programmaktionen abgearbeitet wurden, gibt der ESP 8266 den Schaltausgang des Mos Fet’s wieder frei und die Spannungsversorgung wird abgeschaltet.

Batterie Kapazität

Die Richtwerte für Alkalien Batterien schwanken lt. Herstellerangaben in folgenden Bereichen:

AAA 1000  - 1500  mAh
AA  2000  - 3000  mAh
D   12000 - 20000 mAh

Eine Duracell Plus soll lt. Herstellers Angaben bis zu 2.9 Ah haben, was einer Laufzeit im Deepsleep Modus von mehreren Jahren entspräche.

Für Batterietests bietet das Layout unter anderem auch die Möglichkeit den Dash Button mit einer Knopfzelle zu betreiben.
Es hat sich jedoch gezeigt, dass eine Standard LR2032 nicht in Frage kommt, da bei diesem Typ bei einer Pulsbelastung die Spannung kurzfristig auf 2,8V einbricht. Was deutlich außerhalb der Spezifizierten Parameter des ESP8266 liegen würde.

Deshalb wurde für den Test eine Lithium Ionen Zelle z.B. Typ LIR 2032 (35mAh) verwendet. Da diese Typen auch bei einer Pulsbelastung in der für den ESP8266 definierten Spezifikation bleibt.
Der Nachteil dieser kleinen Bauform liegt jedoch in der kurzen Standbyzeit,  die bei rund 60 uA Ruhestromaufnahme gerade mal für ca. 25 Tage reicht.

Bei der Verwendung von zwei in Reihe geschalteten AA-Zink Kohle Batterien ist der Arbeitsspannungsbereich für den Betrieb eines ESP8266 sehr eingeschränkt. Bei neuen Batterien liegt die Spannung bei ca. 3,2 V. Nach einer Entladung von ca. 5% liegt die Spannung nur noch bei 3,0V. Somit erscheint der Einsatz solcher Batterietypen als wenig sinnvoll.

Eine weitere denkbare Option wäre der Verwendung von drei in Reihe geschalteten AA-Zellen, um das Spannungsniveau  in einen besseren Auslastungsbereich zu bekommen. Hier bei müsste dann jedoch wieder ein Spannungsregler eingesetzt werden, der zusätzliche Verluste mit sich bringt, was die Lebensdauer aber bei der verhältnismäßig geringen Einschaltzeit kaum einschränken dürfte.

Typische Kennlienie einer Duracell AA Batterie. (Quelle Duracell Datenblatt)

So wird nun im dritten Anlauf für dieses Projekt angenommen, dass entweder zwei paralell geschaltete LiFEPO4 AA Akkus zum Einsatz kommen oder drei AA-Zellen die in Reihe geschaltet werden. Oder die Dritte Option ein LIPO Akku mit einer Ausgangsspannung von 3.7V.

Die Platine erhält einen 3,3 V low drop Spannungsregler der Firma Mikrochip, vom Typ MIC5219-3.3BM5 LG33 3.3V –40°C to +125°C SOT-23-5.

Dieser Baustein besitzt einen Enable Eingang, der es erlaubt die komplette Schaltung abzuschalten ohne das ein merklicher Ruhestrom fließt.

Durch den Einsatz dieses Reglers kann ein ein Eingangsspannungsbereiche zwischen 3 – 5v abgedeckt werden. Darurch sind alle drei Varianten der oben beschriebenen Spannungsversorgungen möglich.

LiFEPO4 AA Akkus liefern eine Spannung von 3,4 V / 700 mA, was einer Batteriekapazität von 100% entspräche.
Durch eine Parallelschaltung von zwei LiFePO4 Akkus kann somit die Kapazität auf 1400 mAh erhöht werden.

Hierbei läge die Ausnützung der Batteriekapazität bei etwa 60% (800 mAh), im Vergleich zu drei Zink-Kohle Batteriene. Deren Entladeschlussspannung bei 1v liegt, was bei drei in reihe geschaltenenen Zellen ca. 3V entspricht  = minimale Eingangsspannung der EPS lt. Spec.

Es ergäbe sich rein rechnerisch eine Standbybetriebszeit von ca. 1,5 Jahren.

Ein großer Vorteil bei der Verwendung von LiFePO4 Zellen liegt darin, dass die Zellen wiederaufladbar sind und somit viele Male wieder verwendet werden können.
Ein gravierender Nachteil der Parallelschaltung von zwei Zellen liegt jedoch in einer Verpolung.
Wenn die Zellen von nicht fachkundigem Personal gewechselt werden sollen,  kann es durch die Parallelschaltung der beiden Zellen bei einem falschen Einlegen zu einem Kurzschluss kommen, der dann zur thermischen Zerstörung der Akkus und letztendlich des Dashbuttons führen würde.

Um eine lange Lebensdauer von Akkus zu gewährleisten, sind diese unbedingt vor einer Tiefentladung  zu schützen. Deshalb ist in der Firmware des DashButtons ein Schwellwert von 2,9 V programmiert, ab dem sich der Dash Button nicht mehr starten lässt. Die LED geht kurz an, blinkt für 1 Sekunde sehr schnell und geht dann sofort wieder aus!

Laut Herstellerangaben darf sich die Betriebsspannung eines ESP 8266 in einem Bereich von 3,0V – 3,6V bewegen (Typisch 3,3V).
Somit entspräche eine Batteriespannung von 3,0V gleich 0% Batteriekapazität, was einen sofortigen Batteriewechsel nötig machen würde!

Server Software

Die Server Software bietet die Möglichkeit, neben den Nutzinformation (Token) auch Informationen zur aktuellen Batteriespannung, Hard- und Software Version  und eine Statusinformation des DashButtons zu liefern.

Die Betriebsspannung wird mit dem Parameter &vbatt=x.xxx an den Server übergeben.
Er gibt die Batteriespannung in Volt an.

Beispielberechnung für die Batteriekapazität:

Bei Betrieb mit einer Li Fe PO4 Zelle , wird am Messeingang des Mikrocontrollers etwa eine  Betriebsspannung von 3,3V erreicht.
Was in diesem Fall einer prozentualen Batteriekapazität von 100 % entspräche.
Die minimale Betriebsspannung sollte 3,0V nicht unterschreiten, was somit die 0% der Batteriekapazität fest legt.

Im folgenden Beispiel wird angenommen, dass die Batterie noch eine Spannung von 3,15V (50%) liefert:

Y = Eingangsspannung 3,15V
Y0= 3,0 V
Y100= 3,3 V

X= Ergebnis in %
X0 = 0 %
X100 = 100%

X:= ((X100 – X0) * ( Y – Y0 )  /  (Y100 – Y0)) + X0;

        100 * 0.1
Y = ————-  + 0 = 50%
               0.2

Wird der Parameter nicht übergeben, wird der Wert im Server automatisch auf -1 gesetzt. Was soviel bedeutet, dass der Batteriestatus nicht ermittelt werden konnte bzw. nicht bekannt ist.

In der Server Software kann für jeden DashButton der verwendete Batterietyp ausgewählt werden. Somit kann die Berechnung der Batteriekapazität anhand einer hinterlegten Herstellerkennlinie erfolgen, was eine genauere Anzeige der tatsächlichen Kapazität ermöglicht.

Mit diesen Informationen kann in der Serverapplikation ein Mechanismus angestoßen werden, der den Admin rechtzeitig darüber informiert, wann ein Batteriewechsel erforderlich wird.

Das Layout bietet die Möglichkeit, verschieden Batterietypen in verschiedenen Leistungsklassen und Größen zu verwenden.

Externe Antenne

Um eine stabile Funkverbindung etablieren zu können, muss bei der Verwendung eines Metall- bzw. metallisierten Gehäuses eine externe Antenne verwendet werden!

Bei einem Standard ESP-07 Modulen ist bereits ein Anschluss für eine externe Antenne vorhanden. Wird der externe Antennenanschluss verwendet, muss die Verbindung zur internen (aufgelöteten) Antenne unterbrochen werden. Hierfür ist der Null Ohm Wiederstand neben dem Antennenanschluss zu entfernen.

Für die Verwendung einer externen Antenne muss der null Ohm Wiederstand (rotes Quadrat) entfernt werden. Wird das ESP07 Modul mit einer Batterie betrieben muss zusätzlich die Power LED (roter Kreis) entfernt werden, um ein unnötiges entladen der Batterie zu vermeiden.

 

Wurde die interne Antenne entfernt,ist zwingend darauf zu achten, dass das Modul nicht ohne eine angeschlossene externe Antenne betrieben wird. Da dies zur Zerstörung des ESP-Moduls führen kann.

Programmierung

Die Programmierung des Mikrocontrollers erfolgt über einen Programmieranschluss, der auf der Platine vorhanden ist.
Diese Schnittstelle ist notwendig, um erstmalig eine Firmware in den Mikrocontroller laden zu können.

Hierbei ist zu beachten, dass die Lötbrücke J1 die im Bild mit einem Stern gekennzeichnet ist, nicht geschlossen sein darf. Da im Auslieferungsstand der Pin GPIO16 auf low liegt und somit eine Dauer Reset anliegen würde.

Im Programm darf somit der GPIO16 nicht mit pinMode() konfiguriert werden.

Lötbrücke für ein optionales automatisches aktivieren des DashButton nach einer fest definierten Zeitspanne. Sie verbindet den Pin GPIO16 mit dem Eingang RESET.

Funktionsweise des Tasters und der LED

Das Layout bietet je nach Bestückung die Möglichkeit einen Taster und eine LED in SMD Technik oder aber auch bedrahteten Bauelemente zu verwenden. Somit ist es auch möglich andere Bedientasten z.B. mit Kabelanschlüssen ein zu löten.

Befindet sich das Modul im Deepsleep Modus, kann es durch einen Tastendruck aufgeweckt werden.

Je nachdem wie lange der Taster  gedrückt gehalten wir, werden unterschiedliche Funktionen aufgerufen:

  • Drücken bis eine Verbindung ausgebaut wurde  – Test Modus (Status 0).
  • Drücken über einen Zeitraum von 10 Sekunden – WIFI Setup (Status 1).
  • kurzes Drücken des Tasters – löst eine Bestellung aus (Status 2).

Anschließend versucht das Gerät eine Netzwerkverbindung zum lokalen AP zu etablieren, was durch ein langsames blinken der LED signalisiert wird.
Kann keine Verbindung hergestellt werden, beginnt die LED schnell zu blinken und man hat die Möglichkeit für 240 Sekunden eine Verbindung zu diesem Dash Button aufzubauen und die Konfiguration vor zu nehmen.
Erfolgt in dieser Zeit kein Login auf dem Dash Button, wird der Mikrocontroller wieder in den Deepsleep Modus versetzt, um die Batterie nicht unnötig zu strapazieren.

Ist der Verbindungsaufbau zum lokalen WLAN geglückt, wird die Nutzinformation (Dash Token) an den in den Credentials definierten Server verschickt.
Wurde der Empfang der Information vom Server bestätigt, leuchtet die Status LED für drei Sekunden kontinuierlich.
Wird der Empfangs nicht vom Server bestätigt, wird dies durch schnelles Blinken der LED für drei Sekunden angezeigt.
Anschließend wechselt der Mikrocontroller wider in den Deepsleep Modus.

Je nachdem welches Ereignis am Dashbutton ausgelöst wurde, wird eine entsprechende Statusinformation im Parameter &status=x dem HTTP Put Request übergeben. Wird der Parameter nicht mit übergeben, wird der Wert im Server automatisch auf -1 gesetzt, was soviel bedeutet das der Status nicht bekannt ist.

Server Applikation für den DashButton

Die Serverapplikation kann auch direkt mit dem Webbrowser getestet werden. Hierfür wird in die Adresszeile der folgende Aufruf eingegeben:

http://HOST
/URL?&token=ef98c8246ef0409da5fb3a27afa4ec61
&vbatt=3.12&hv=1.00&sv=1.03&status=1

  • Host:
    Ist die IP-Adresse des Servers z.B. 192.168.1.123
  • URL:
    Ist eine Pfadangabe (optional für den augenblicklichen Stand) soll später der Einordnung der Einträge dienen, z.B. für die Standorte.
  • token:
    Ist ein 32 stelliger ein eindeutiger Schlüssel des betreffenden Dash Buttons.
  • vbatt:
    Gibt die Batteriespannung in Volt an.
  • hv:
    Gibt die aktuelle Hardware Revision des DashButton an.
  • sv:
    Gibt die aktuelle Firmware Version des DashButton an.
  • status:
    Information über den Auslöser des Ereignisses.
    0 – Test (Button wurde kürzer als drei Sekunden gedrückt)
    1 – Settings (Die Einstellungen wurden aufgerufen, durch langes drücken des Tasters)
    2 – Order (Ein Bestellauftrag wurde abgesetzt)
    3 – Für weitere Statusinformationen reserviert
Weitere Ideen:
  • Der Dash Token sollte im Prinzip ein 32 Byte Hashcode sein, der einen Prüfsumme oder einen CRC Check enthält, um die Authentizität des Tokens auf dem Server verifizieren zu können.
  • Es wäre denkbar, dass sich ein Dash Button der längere Zeit nicht betätigt wurde, automatisch aktiviert (z.B. alle 24h) und seinen Batteriestatus an den Server sendet.
    Der Parameter „status“ würde das Ereignis dann als Test identifizieren.
    Hierbei wäre zu bedenken, dass ein zyklisches Verbinden mit dem WLAN und das Senden dieser Statusinformationen die Batterielebensdauer zusätzlich verkürzen würde.

Einen lokalen Blynkserver beim Booten der Raspberry PI Starten

In diesem Beitrag wird am Beispiel eines lokalen Blynk Servers gezeigt, wie auf einer Raspberry PI eine Java File beim Starten und Herunterfahren der PI automatisch gestartet und heruntergefahren werden kann.

  1. Zuerst wird ein Startscript und ein Stopscript erstellt, die später die Applikation mir Rootrechten startet und stoppt. Hier für wechseln wir mit sudo bash unsere Benutzerrechte auf Root.In unserem Beispiel speichern wir die Scripte im Verzeichnis /usr/local/bin/…
  • Start Script: /usr/local/bin/startBlynk.sh
  • Stop Script: /usr/local/bin/stoppBlynk.sh

Nach dem erstellen der Scripte müssen noch deren Attribute auf ausführbar gesetzt werden. Dies geschieht mit dem Befehl chmod +x NAME

Zu Starten des BlynkServers kann der Inhalt des Scripts startBlynk.sh im einfachsten Fall so aussehen:

#!/bin/bash
/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/bin/java -jar /home/pi/Blynk/server-0.39.10.jar -dataFolder /home/pi/Blynk &

Zu Stoppen des BlynkServers kann der Inhalt des Scripts stoppBlynk.sh im einfachsten Fall so aussehen:

#!/bin/bash
#sucht und beendet die Java Applikation
ps auxf |grep ’server-0.xx.x.jar ‚|`awk ‚{ print „kill “ $2 }’`

Als nächstes benötigen wir noch das folgendes Script (localBlynk) , wir speichere es in das Verzeichnis /etc/init.d/localBlynk

  • sudo nano /etc/init.d/localBlynk
  • Inhalt der Date:#! /bin/sh
    ### BEGIN INIT INFO
    # Provides:        localBlynk
    # Required-Start:
    # Required-Stop:
    # Default-Start:        2 3 4 5
    # Default-Stop:         0 1 6
    # Short-Description:    Stars & Stops BlynkServer
    # Description:          Stars & Stops BlynkServer
    ### END INIT INFO

 

# Start Stop Blynk local Blynk Server

case $1 in
start)
/bin/bash /usr/local/bin/startBlynk.sh
;;
stop)
/bin/bash /usr/local/bin/stopBlynk.sh
;;
restart)
/bin/bash /usr/local/bin/stopBlynk.sh
/bin/bash /usr/local/bin/startBlynk.sh
;;
esac
exit 0

  • Um das Script zum Systemstart hinzu zu fügen, führen wir nun noch  folgende Kommandos aus:cd /etc/init.d/
    sudo chmod 755 localBlynk
    sudo update-rc.d localBlynkdefaults