Tag für Tag die Pflanzen im heimischen Gewächshaus per Hand gießen? Das muss nicht sein! 😉

Im Folgenden beschreibe ich den Selbstbau eines automatischen Bewässerungssystems auf Basis eines Arduino Pro Mini, kapazitiven Bodenfeuchtigkeitssensoren und Magnetventilen. Als Stromversorgung dienen Li-Ion Akkus und eine kleine Solarzelle, wodurch das System ohne externe Stromversorgung völlig autark laufen kann.

Das Bewässerungssystem misst eigenständig in regelmäßigen Abständen die Bodenfeuchtigkeit und bewässert bei Bedarf den Boden durch das Öffnen von Magnetventilen. Es sind ein bis vier getrennt gesteuerte Kanäle möglich. Zusätzlich können über einen DHT22 oder DHT11 Sensor die Temperatur und Luftfeuchtigkeit gemessen werden. Alternativ ist es auch möglich einen DS18B20 Sensor zur Messung der Temperatur zu verwenden.

Über 433 MHz Funk kann das System aus der Ferne konfiguriert und gesteuert werden. Ebenso werden Statusinformationen und Messwerte gesendet. Hierfür kommt das Protokoll RadioHead zum Einsatz.

Inhalt

Neuerungen in Version 2

Mitte Mai 2020 ist nun die überarbeitete Version 2 des Bewässerungssystems fertig. Die Änderungen betreffen hauptsächlich die Software des Systems.

  • Unterstützung von DS18B20 , DS18S20, DS1820 und DS1822 Sensoren zur Temperaturmessung als Alternative zum DHT-Sensor
  • Aktives Abfragen der Daten (Polling Modus) und deaktivierung des automatischen Sendens der Daten sind nun möglich
  • Temperaturabhängiger Schalter zur Steuerung von beispielsweise einem Lüfter oder einer Heizung
  • Möglichkeit die Messung der Batteriespannung zu deaktivieren, wenn das System mit einer anderen Spannungsversorgung betrieben wird
  • Erweiterte Einstellungsmöglichkeiten über die Control-App
  • Control-App in Deutsch und Englisch mit Erklärungen für die einzelnen Einstellungen
  • Angepasste und erweiterte RadioHead Datenpakete

Wichtigste Bauteile

  • Ein Arduino Pro Mini 5 V, 16 MHz
    Alternativ kann auch ein anderer Arduino verwendet werden, wobei der Pro Mini jedoch den geringsten Stromverbrauch hat.
  • Ein bis vier kapazitive Bodenfeuchtigkeitssensoren
  • Ein bis vier 12 V Magnetventile
  • Li-Ion/LiPo Akku(s)
    Zum Beispiel drei Akkus vom Typ 18650 mit je 2600 mAh.
  • Li-Ion/LiPo Laderegler TP4056 mit integriertem Schutz vor Tiefentladung
  • 5 V Solarzelle
  • Zwei einstellbare DC-Boost-Konverter (StepUp)
    Eingestellt auf 5 V für die Steuerung beziehungsweise 12 V für die Magnetventile.
  • 433 MHz Funksender und -empfänger
    Empfänger vom Typ Superheterodyne oder 3400RF sollten vorzugsweise verwendet werdet werden, da diese eine deutlich höhere Reichweite als die XY-MK-5V ermöglichen.
  • Gehäuse, Transistoren, Taster, Widerstände, Steckverbinder
  • Optional: DHT22, DHT11 oder DS18x20 Sensor

Die Gesamtkosten der Bauteile belaufen sich auf etwa 50 bis 60 Euro.

Aufbau der Hardware

Die Hardware wird nach folgendem Schema aufgebaut:

Fertig zusammengebaut und in ein kleines Gehäuse gesteckt könnte es dann so aussehen:

Bodenspieße zur Bewässerung

Damit das Wasser nicht nur oberflächlich auf der Erde verteilt wird, sondern direkt an die Wurzeln der Pflanzen gelangt, habe ich ein 3D-Modell für Bodenspieße entworfen und mit einem 3D-Drucker ausgedruckt.

Oben wird auf beiden Seiten ein 1/2” Schlauch angeschlossen. Durch die Hohlräume im Inneren wird das Wasser bis ca. 10 cm Tiefe direkt in Boden geleitet.

Die Vorlagen für den 3D-Druck habe ich auch auf Thingiverse veröffentlicht: Watering Spikes

Software

Heruntergeladen werden kann die Software für den Mikrocontroller (Arduino Pro Mini) sowie die Control-App zur Konfiguration des fertigen Systems direkt aus dem GitHub Repository als .zip oder .tar.gz Archiv.

Mögliche Anpassungen an die eigene Hardware etc. können in der Datei src/config.h vorgenommen werden.

Einige Variablen können zur Laufzeit über Funk gelesen und angepasst werden. Siehe hierzu den Abschnitt Konfiguration weiter unten. Änderungen an diesen einstellbaren Variablen können im EEPROM des Mikrocontrollers sicher gespeichert werden und werden dann bei einem Neustart wieder geladen.

Mit PlatformIO (empfohlen)

Die Software für den Mikrocontroller basiert auf PlatformIO. PlatformIO ist ein Open Source Ecosystem für IoT-Anwendungen mit integrierter Verwaltung von verschiedensten Boards und Libraries. Als IDE kommt Visual Studio Code zum Einsatz.

Beim Build und/oder Upload kümmert sich PlatformIO automatisch um alle benötigten Abhängigkeiten.

Mit ArduinoIDE

Als Alternative zu PlatformIO kann auch die ArduinoIDE zum Programmieren des Mikrocontrollers genutzt werden.

Hierbei müssen jedoch die folgenden Bibliotheken per Hand zuvor in der ArduinoIDE installiert werden:

In der ArduinoIDE muss dann die Datei src/src.ino geöffnet werden.

Blink-Codes

Über die LED des Arduinos werden Fehler und Informationen über eine Blinkfolge von kurzen und langen Impulsen dargestellt. Die Bedeutungen der Blink-Codes können der folgenden Tabelle entnommen werden.

Blink-CodeBedeutung
kurz, kurz, kurzEEPROM-Reset erfolgreich, Standardeinstellungen geladen
lang, kurz, kurzFehler bei Initialisierung des 433 MHz Funk
lang, kurz, langFehler beim Senden einer RadioHead-Nachricht (kein ACK empfangen)
lang, lang, kurzFehler beim Abfragen des DHT-Sensors
sehr kurz, sehr kurzRadioHead-Nachricht empfangen

Interpretation der Messwerte

Die Bodenfeuchtigkeit und die Akkuspannung werden über den 10-Bit Analog-Digital-Converter (ADC) des Mikrocontrollers gelesen. Dabei ergeben sich Messwerte zwischen 0 (0 V) und 1023 (5 V).

Bei den Bodenfeuchtigkeitssensoren bedeutet ein höherer Messwert einen trockeneren Boden. Bei einem sehr trockenen Boden ergeben sich Werte von etwa 500, bei nassem Boden etwa 300.

Die aktuelle Batteriespannung kann aus dem ADC-Wert mittels U = adc * 5 / 1023 berechnet werden.

Die Software des Mikrocontrollers berechnet intern direkt einen prozentualen Akkustatus. Dabei gilt (bei Standardconfig) U <= 2,9 V ⇒ 0% und U >= 4,2 V ⇒ 100%.

Konfiguration mit der Control-App

Die gesamte Konfiguration des fertigen Systems ist über die 433 MHz Funkverbindung möglich. Hierzu wird lediglich ein Arduino (z.B. Arduino Nano) mit 433 MHz Funkmodulen benötigt, auf den der Serial-Radio-Gateway Sketch aufgespielt wird.

Das Softwarepaket enthält im Verzeichnis control eine kleine Anwendung auf Basis von Node.js, über die die gesamten Einstellungen komfortabel über einen Webbrowser vorgenommen werden können.

Die Control-App kann auf Windows- und Linux-Systemen verwendet werden.

Vor dem ersten Start müssen hierfür die benötigten Node.js Module (node_modules) installiert werden, wobei eine Verbindung zum Internet benötigt wird:

npm install

Anschließend kann die Anwendung auch ohne Internetverbindung gestartet werden:

npm start

Nun einfach im Browser die Adresse http://localhost:3000/ aufrufen, den seriellen Port des Serial-Radio-Gateways auswählen und verbinden.

Die Control-App erkennt automatisch die Sprache des Nutzers über den Browser und stellt sich dementsprechend auf Deutsch oder Englisch ein. Alternativ kann vor dem Verbinden auch die Sprache manuell gewählt werden.

Jeder der vier verfügbaren Kanäle kann einzeln aktiviert oder deaktiviert werden. Zudem können pro Kanal der Triggerwert und die Bewässerungszeit einzeln eingestellt werden. Standardmäßig ist nur der Kanal 0 mit einem Triggerwert von 512 und einer Zeit von 5 Sekunden aktiviert.

Weiterhin können die folgenden Einstellungen einzeln angepasst werden:

  • RadioHead Adressen
  • Prüfintervall für die Bodenfeuchtigkeit (Standard 5 Minuten)
  • Abfrageintervall für den Temperatursensor (Standard 1 Minute)
  • Schaltschwelle für den temperaturabhängigen Schalter
  • Senden der ADC-Werte
  • Automatisches Senden der Daten (Push-Modus)

Eine Beschreibung zu jeder einzelnen Option ist über das blau ℹ️ verfügbar.

Geänderte Einstellungen können in den EEPROM des Mikrocontrollers gespeichert werden, wodurch sie auch bei einem Neustart wieder geladen werden.

Zum Zurücksetzen der gespeicherten Einstellungen muss der EEPROM-Reset-Taster beim Start des Controllers gedrückt gehalten werden, bis die LED drei Mal kurz blinkt.

Betrieb ohne Zentrale

Für einen Betrieb des Bewässerungssystem ohne Zentrale (Headless Betrieb) sollte in den Einstellungen die Option Automatisches Senden der Daten deaktiviert werden. Andernfalls versucht das System regelmäßig seine aktuellen Daten erfolglos zu senden, wodurch unnötig Energie verbraucht wird und es außerdem zu Problemen mit den Wartezeiten kommen kann.

Optimale Einstellungen

Die optimalen Einstellungen sind von mehreren Faktoren abhängig und sollten einfach ausprobiert werden.

Bei mir haben sich ein Triggerwert von 350 und eine Bewässerungsdauer von 8 Sekunden als gut herausgestellt.

RadioHead Datenpakete

Die folgenden Datenpakete werden vom Bewässerungssystem gesendet beziehungsweise empfangen. Das jeweils erste Byte eines Datenpakets kennzeichnet dabei die Art.

Alle automatisch gesendeten Datenpakete werden an die in der Konfiguration hinterlegte Adresse gesendet.

Aktiv angefragte Daten, zum Beispiel durch eine Aktion oder Polling, werden immer an die Adresse des anfragenden gesendet. Somit ist beispielsweise möglich ein Bewässerungssystem, das als Zieladresse 0x01 definiert hat, über die Control-App mit der Adresse 0x02 zu bedienen.

0x00 Startmeldung

Dieses Datenpaket wird einmalig beim Start des Mikrocontrollers übertragen.

Es besteht aus nur einem Byte mit dem Wert 0x00.

0x02 Batteriestatus

Dieses Datenpaket besteht aus 4 Byte, beginnend mit dem Code 0x02, gefolgt vom Batteriestatus in Prozent (0 bis 100) und zwei Byte mit dem reinen ADC-Wert (0 bis 1023).

Beispiel: 0x02 0x4E 0x0F 0x03

Dies entspricht 78%, einem ADC-Wert von 15 + (3*256) = 783 und umgerechnet 783 * 5V / 1023 = 3,82V Batteriespannung.

0x10 Sensorwerte

Das Datenpaket für die Sensorwerte beinhaltet 9 Byte, beginnend mit dem Code 0x10. Anschließend folgen die jeweils zwei Byte großen Sensorwerte für Sensor 0 bis 3, wobei es sich um die reinen ADC-Werte handelt. Bei deaktivierten Kanälen sind die beiden Bytes auf null gesetzt.

Das Datenpaket wird nur gesendet, wenn in der Konfiguration das Senden der ADC-Werte aktiviert ist.

Beispiel: 0x10 0x51 0x01 0xC7 0x02 0x00 0x00 0x00 0x00

Für Kanal 0 wurde 0x51 0x01 übertragen, was in dezimaler Darstellung 81 und 3 entspricht. Umgerechnet ergibt dies 81 + (1*256) = 337 als ADC-Wert und 337 * 5V / 1023 = 1,647V als Spannung am Ausgang des Sensors.

0x20 Temperatur, Luftfeuchtigkeit und temperaturabhängiger Schalter

Dieses Datenpaket wird nach jeder Messung der Temperatur und gegebenenfalls Luftfeuchtigkeit, sowie der Status des temperaturabhängigen Schalters übertragen.

Bei Verwendung eines DHT-Sensors besteht es aus 10 Byte: 0x20, gefolgt von 4 Byte Temperatur und 4 Byte Luftfeuchtigkeit, jeweils als Float Zahl im Little-Endian Format und als letztes Byte 0x01 oder 0x00, welches den Zustand des Schalters anzeigt.

Bei Verwendung eines DS18x20-Sensores besteht das Datenpaket aus nur 6 Byte: 0x20, gefolgt von 4 Byte Temperatur als Float Zahl im Little-Endian Format und als letztes Byte 0x01 oder 0x00, welches den Zustand des Schalters anzeigt.

0x20 t t t t h h h h s oder 0x20 t t t t s

Beispiel DHT: 0x20 0xcd 0xcc 0xd0 0x41 0xcd 0xcc 0x4e 0x42 0x00

Dies entspricht 26,1 °C, 51,7 % Luftfeuchtigkeit und einem nicht aktiven Schalter.

Beispiel DS18x20: 0x20 0xcd 0xcc 0xd0 0x41 0x01

Dies entspricht 26,1 °C und einem aktiven Schalter.

0x21 Kanal ein / 0x22 Kanal aus

Bei jedem Ein- und Ausschalten (öffnen bzw. schließen des Ventils) wird für den entsprechenden Kanal dieses Datenpaket bestehend aus zwei Byte gesendet.

Beispiel: 0x21 0x00 Kanal 0 eingeschaltet; 0x22 0x01 Kanal 1 ausgeschaltet

0x25 Status der Kanäle

Bei jedem Ein- und Ausschalten (öffnen bzw. schließen des Ventils) wird dieses Datenpaket bestehend aus fünf Byte mit dem Status der Kanäle gesendet.

Das erste Byte ist dabei immer 0x25 und anschließend folgen die Kanäle 0 bis 3 mit jeweils einem Byte. Status 0x00 steht dabei für ausgeschaltet (geschlossen) und 0x01 für eingeschaltet (geöffnet).

Beispiel: 0x25 0x01 0x00 0x00 0x00 0x00

Hierbei ist Kanal 0 eingeschaltet und Kanal 1 bis 3 sind ausgeschaltet.

0x50 Einstellungen

Dieses Datenpaket beinhaltet die aktuell auf dem System gesetzten Einstellungen. Es besteht aus insgesamt 28 Byte, beginnend mit 0x50.

Das zweite Byte beinhaltet die aktivierten Kanäle in den Bits 0 bis 3. Bit 5 enthält ob der temperaturabhängige Schalter invertiert wird, Bit 6 ob das Pushen von Daten aktiviert ist und Bit 7 ob die ADC-Sensorwerte gesendet werden sollen.

Die Bytes drei bis zehn beinhalten die Triggerwerte der Kanäle 0 bis 3 mit jeweils zwei Byte als uint16_t.

Die Bytes 11 bis 18 beinhalten die Bewässerungszeit der Kanäle 0 bis 3 mit jeweils zwei Byte als uint16_t.

In Byte 19 und 20 ist das Intervall zum Prüfen der Bodenfeuchtigkeit als uint16_t enthalten.

Bytes 21 und 22 beinhalten das Intervall zur Abfrage des DHT- beziehungsweise DS18x20-Sensors als uint16_t.

Byte 23 ist die RadioHead Serveradresse und Byte 24 die RadioHead Adresse des Bewässerungssystems, jeweils als uint8_t.

Die Bytes 25 und 26 beinhalten die die Wartezeit nach dem Senden jeder RadioHead Nachricht als uint16_t.

Byte 27 ist der Schwellwert für den temperaturabhängigen Schalter als int8_t und Byte 28 die zugehörige Hysterese in zehnteln als uint8_t.

Beispiel: 0x50 0xC1 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x05 0x00 0x05 0x00 0x05 0x00 0x05 0x00 0x2C 0x01 0x3C 0x00 0x02 0xDC 0x0A 0x00 0x1E 0x14

0x51 Einstellungen lesen

Damit das Bewässerungssystem seine aktuellen Einstellungen sendet, muss ihm dieses Datenpaket von nur einem Byte mit dem Code 0x51 geschickt werden. Das System sendet daraufhin seine aktuellen Einstellungen.

0x52 Einstellungen setzen

Über dieses Datenpaket mit einer Länge von 28 Byte werden neue Einstellungen an das Bewässerungssystem gesendet. Der Aufbau des Datenpaketes ist identisch mit 0x50 Einstellungen, jedoch beginnt es mit dem Code 0x52.

Die neuen Einstellungen werden auf dem System sofort aktiv, jedoch noch nicht EEPROM gespeichert. Somit sind beispielsweise nach einem Reset wieder die alten Einstellungen aktiv.

Beispiel: 0x52 0xC1 0x00 0x02 0x00 0x02 0x00 0x02 0x00 0x02 0x05 0x00 0x05 0x00 0x05 0x00 0x05 0x00 0x2C 0x01 0x3C 0x00 0x02 0xDC 0x0A 0x00 0x1E 0x14

0x53 Einstellungen in den EEPROM speichern

Um die aktuellen Einstellungen des Bewässerungssystems in den EEPROM zu speichern, sodass diese auch nach einem Reset erhalten bleiben, muss dem System dieses Datenpaket von nur einem Byte mit dem Code 0x53 geschickt werden. Das System schreibt daraufhin seine aktuellen Einstellungen in seinen EEPROM.

0x60 Jetzt Prüfen

Durch ein Senden dieses Datenpaketes mit dem einen Byte 0x60 kann man das Bewässerungssystem dazu veranlassen sofort die Sensoren abzufragen und gegebenenfalls die nötigen Ventile zu öffnen. Dabei beginnt die Wartezeit bis zur nächsten automatischen Prüfung erneut zu zählen.

0x66 Daten holen (Polling)

Zum Abfragen der aktuellen Daten ohne eine erneutes Abfragen der Sensoren auszulösen kann dem Bewässerungssystem dieses Datenpakete mit dem einen Byte 0x66 gesendet werden.

Das System sendet daraufhin alle aktuellen Daten.

0x65 Kanäle ein- und ausschalten

Durch Senden dieses fünf Byte großen Datenpakets kann man das Bewässerungssystem dazu veranlassen unabhängig von der Automatik einen oder mehrere Kanäle einzuschalten (Ventil öffnen) beziehungsweise auszuschalten (Ventil schließen). Wird ein Kanal eingeschaltet, dann wird er automatisch nach seiner eingestellten Zeit auch wieder ausgeschaltet.

Das erste Byte ist immer 0x65, gefolgt von je einem Byte pro Kanal für die Kanäle 0 bis 3. Zum Einschalten eines Kanals muss das entsprechende Byte auf 0x01 und zum Ausschalten auf 0x00 gesetzt werden. Andere Werte werden ignoriert, wodurch es möglich ist, beispielsweise den Status eines Kanals zu verändern, aber die anderen in ihrem aktuellen Status zu belassen.

Beispiel: 0x65 0x01 0x00 0x00 0x00 Kanal 0 einschalten, 1-3 ausschalten; 0x67 0xFF 0x00 0xFF 0xFF Kanal 1 ausschalten, alle anderen nicht ändern

0x63, 0x64, 0x67 Pause und Fortsetzen

Zur Vermeidung von beispielsweise Ruhestörungen durch eine in der Nacht anspringende Pumpe, kann die Automatik des Bewässerungssystems über diese Datenpakete in einen Pause-Modus versetzt werden. Während der Pause werden die Bodenfeuchtigkeitssensoren nicht abgefragt. Sonstige Funktionen, wie beispielsweise die Temperaturmessung oder manuelle Bedienung bleiben weiterhin aktiv.

Bei beiden jeweils ein Byte großen Befehle 0x63 und 0x64 aktivieren beziehungsweise deaktivieren die Pause.

Der zwei Byte große Befehl 0x67 gefolgt von 0x01 oder 0x00 aktiviert oder deaktiviert die Pause, je nach zweitem Byte.

Beispiel: 0x63 Pause aktivieren; 0x64 Pause deaktivieren; 0x67 0x01 Pause aktivieren; 0x67 0x00 Pause deaktivieren

0x68 Temperaturabhängigen Schalter manuell schalten

Über diesen zwei Byte großen Befehl kann der temperaturabhängige Schalter auch manuell geschaltet werden.

Das erste Byte ist immer 0x68 gefolgt von 0x01 zum Einschalten oder 0x00 zum Ausschalten.

Beispiel: 0x68 0x01 einschalten; 0x68 0x00 ausschalten

0xF0 Version abrufen

Zum Abfragen der Softwareversion des Bewässerungssystems kann dem System dieses Datenpaket mit dem einen Byte 0xF0 gesendet werden. Das System sendet daraufhin seine Softwareversion.

0xF1 Version

Dieses Datenpaket beinhaltet die Softwareversion des Bewässerungssystems. Es besteht aus vier Byte, wobei das erste Byte der Code 0xF1 ist. Die Bytes zwei bis vier entsprechen in der Reihenfolge Major-, Minor- und Patch-Version.

Beispiel: 0xF1 0x02 0x03 0x00

Dies entspricht der Version 2.3.0 auf dem Bewässerungssystem.

0xF2 Ping

Über dieses Datenpaket kann ein Ping an das Bewässerungssystem gesendet werden. Es besteht aus mindestens einem Byte, beginnend mit dem Code 0xF2.

Auf einen Ping antwortet das System mit einem Pong.

Optional können dem Ping bis zu 27 Byte zusätzliche Daten mitgegeben werden. Diese Daten werden eins zu eins dem Pong angehängt.

Beispiel: 0xF2 0x13 0x37

0xF3 Pong

Dieses Datenpaket ist die Antwort auf einen Ping. Es besteht aus mindestens einem Byte, beginnend mit dem Code 0xF3.

Ein Pong hat immer dieselbe Länge wie der auslösende Ping. Die zusätzlichen Daten sind ebenfalls mit dem Ping identisch. Damit kann geprüft werden, ob zu einem Ping der richtige Pong empfangen wurde.

Beispiel: 0xF3 0x13 0x37

Das fertig installierte Bewässerungssystem

Das fertige Bewässerungssystem läuft nun völlig autark (bis auf die Wasserzuleitung) bei uns Zuhause im kleinen Gewächshaus im Garten.

Nach der anfänglichen Testphase, in der noch die passenden Triggerwerte ausgetestet werden mussten sind und die Tomaten- und Paprikapflanzen immer bestens versorgt 🙂

Einbindung in ioBroker

In die Smarthome Software ioBroker kann das Bewässerungssystem mit Hilfe meines Adapters ioBroker.radiohead eingebunden werden.

Hardwareseitig wird hier wieder ein Arduino mit angeschlossenen 433 MHz Funkmodulen und dem Serial-Radio-Gateway Sketch benötigt.

In der Adapterkonfiguration in ioBroker können dann die einzelnen Datenpakete entsprechend eingetragen werden. Zur Erfassung der Batteriespannung in Volt kann der übertragene ADC-Wert mit dem Faktor 0.0048875855 verwendet werden.

Einbindung in Pimatic

In die Heimautomatisierung Pimatic kann das Bewässerungssystem recht einfach über mein Plugin pimatic-radiohead eingebunden werden. Als Hardware wird auf der Empfängerseite (Pimatic) lediglich ein Arduino Nano mit 433 MHz Funkempfänger benötigt, der als Funk-Seriell-Gateway dient.

Beispiel für ein entsprechendes RadioHeadCustomSensor-Device in der config.json von Pimatic:

[...]
  "devices": [
    {
      "radioHeadSerialPort": "rh-serial",
      "fromAddress": "0xDC",
      "data": [
        [
          "0x02",
          "b",
          "br",
          "br"
        ],
        [
          "0x20",
          "t",
          "t",
          "t",
          "t",
          "h",
          "h",
          "h",
          "h"
        ],
        [
          "0x10",
          "s0",
          "s0",
          "s1",
          "s1",
          "*",
          "*",
          "*",
          "*"
        ]
      ],
      "battery": "8bit Integer",
      "customValues": [
        {
          "id": "temperature",
          "indecator": "t",
          "unit": "°C",
          "acronym": "T",
          "displaySparkline": true,
          "recvDataType": "32bit Float LE"
        },
        {
          "id": "humidity",
          "indecator": "h",
          "unit": "%",
          "acronym": "RH",
          "displaySparkline": true,
          "recvDataType": "32bit Float LE"
        },
        {
          "id": "sensor_links",
          "indecator": "s0",
          "unit": "",
          "acronym": "SL",
          "recvDataType": "16bit Integer LE"
        },
        {
          "id": "sensor_rechts",
          "indecator": "s1",
          "unit": "",
          "acronym": "SR",
          "recvDataType": "16bit Integer LE"
        },
        {
          "id": "batteryV",
          "indecator": "br",
          "unit": "V",
          "acronym": "B",
          "displaySparkline": true,
          "recvDataType": "16bit Integer LE",
          "processing": "$value * 5 / 1023"
        }
      ],
      "customBooleans": [
        {
          "id": "ventil_links",
          "acronym": "VL",
          "dataTrue": [
            "0x21",
            "0x00"
          ],
          "dataFalse": [
            "0x22",
            "0x00"
          ],
          "labelTrue": "✔",
          "labelFalse": "✘"
        },
        {
          "id": "ventil_rechts",
          "acronym": "VR",
          "labelTrue": "✔",
          "labelFalse": "✘",
          "dataTrue": [
            "0x21",
            "0x01"
          ],
          "dataFalse": [
            "0x22",
            "0x01"
          ]
        }
      ],
      "id": "gewaechshaus-bewaesserung",
      "name": "Gewächshaus Bewässerung",
      "class": "RadioHeadCustomSensor"
    },
    {
      "radioHeadSerialPort": "rh-serial",
      "buttons": [
        {
          "id": "check",
          "text": "Jetzt prüfen!",
          "send": true,
          "sendToAddress": "0xDC",
          "dataSend": [
            "0x60"
          ],
          "receive": false,
          "dataReceive": []
        },
        {
          "id": "venil-0-auf",
          "text": "Links auf",
          "send": true,
          "sendToAddress": "0xDC",
          "dataSend": [
            "0x61",
            "0x00"
          ],
          "receive": false,
          "dataReceive": []
        },
        {
          "id": "ventil-1-auf",
          "text": "Rechts auf",
          "send": true,
          "sendToAddress": "0xDC",
          "dataSend": [
            "0x61",
            "0x01"
          ],
          "receive": false,
          "dataReceive": []
        }
      ],
      "id": "gewaechshaus-aktionen",
      "name": "Gewächshaus Aktionen",
      "class": "RadioHeadButtonsDevice"
    }
  ]
[...]

Lizenz

Lizenziert unter GPL Version 2

Copyright (c) 2018-2023 Peter Müller

Nachbauten

Hier noch ein Foto vom Nachbau von Kai Schillak für vier Kanäle:

Wer mag kann mir gerne Fotos von seinem Aufbau zukommen lassen, um diese dann hier zu ergänzen. 🙂