Terrarium steuern mit Raspberry Pi – Teil 2 – pimatic

Terrarium steuern mit Raspberry Pi – Teil 2 – pimatic

 15.12.2016,  02.01.2020 -  Sebastian Pech -  ~4 Minuten

Nach dem Abschluß der pimatic Installation erfolgt die Montage der Technik und die Konfiguration des Tools. Alle Sensoren und Aktoren sind zu verkabeln und nach erfolgreichem Test anzulegen. Eine sinnvolle Konfiguration und die relevanten Regeln sind im Folgenden vorgestellt.

Hardware vorbereiten

Die eigentliche Steuerung erfolgt über Funksteckdosen. Hierzu muss lediglich ein Sender an den Raspberry Pi angeschlossen sein. Die zur Ansteuerung benötigten Module lassen sich später in pimatic aktivieren. Das Ermitteln der korrekten Konfiguration setzt einen Empfänger voraus oder gute Kenntnisse über die verbauten Funksteckdosen.

Initiale Konfiguration

Zentrale Datei für die Konfiguration von pimatic ist die config.json welche einerseits über die Kommandozeile bearbeitet werden kann, andererseits auch direkt über die Weboberfläche. Initial muss das Passwort des admin Benutzers geändert werden. In der Datei oder über die Menüpunkt Plugins lassen sich weitere Funktionen aktivieren.

Plugins auswählen

In dem Installationsumfang von pimatic sind viele Plugins enthalten. Die von mir genutzten oder für sinnvoll erachteten sind im Folgenden kurz beschrieben.

<th scope="col">
  Beschreibung
</th>
<td>
  Einbindung der Temperatur- und Feuchtigkeitssensoren DHT11, AM2302 und DHT22.
</td>
<td>
  Einbindung der One-Wire Temperatursensoren DS18B20.
</td>
<td>
  Steuerung eines arduino für den Funkempfang.
</td>
<td>
  Mailversand.
</td>
<td>
  Ermittlung des aktuellen Wetters in verschiedenen Ländern. Bei den Terrarien ist das aktuelle Wetter in den Heimatregionen angezeigt.
</td>
<td>
  Versand von Push Nachrichten an Smartphones.
</td>
<td>
  Ausführen von Skripten auf dem System.
</td>
Plugin
DHT Sensors
DS18B20
Homeduino
Mail
Openweather
Pusshbullet, Pushover
Shell execute

Seiten anlegen

Für die Strukturierung der Terrarienanlage bietet sich das Anlegen von Seiten je Terrarium an. Unter einer Seite können alle Sensoren und Aktoren zu Gruppen vereint werden. Auf einer „Global“ genannten Seite sind die wichtigsten Daten aus allen Bereich erfasst und ein Button für die Notfallabschaltung.

Geräte erstellen

Für jeden Sensor wurde ein entsprechendes Device erfasst. Exemplarisch sind hier die unterschiedlichen Geräte genannt. Grundsätzlich können alle Werte der InputDevices auch mittels Variable intern gespeichert werden ohne ein Input Element. Die Eingabefelder vereinfachen jedoch die manuelle Änderung erheblich.

DHT22 Sensoren

{
  "type": 22,
  "pin": 3,
  "interval": 300000,
  "xAttributeOptions": [],
  "id": "schlangen-dht22",
  "name": "Schlangen DHT22",
  "class": "DHTSensor"
 }

Alle 5 Minuten die Daten von dem Sensor ermitteln.

DS18B20 Sensor

{
  "hardwareId": "28-0316613cc1ff",
  "id": "schlangen-temperatur-oben",
  "name": "Schlangen Temperatur Oben/Rechts",
  "class": "DS18B20Sensor",
  "interval": 300000
}

Alle 5 Minuten einen der One Wire Sensoren auslesen.

Input für Temperatur

{
  "variable": "ts-temp-tag",
  "type": "number",
  "min": 0,
  "max": 60,
  "id": "schlangen-temperatur-tag",
  "name": "Schlangen Temperatur Tag",
  "class": "VariableInputDevice"
}

Eingabe für den Wert zwischen 0 und 60 Grad.

Input für eine Zeit

{
  "variable": "ts-tag",
  "id": "schlangen-tag",
  "name": "Schlangen Tag",
  "class": "VariableTimeInputDevice"
}

Erfassung des Tagesanfangs.

Schalter für Aktiv, Notaus, …

{
  "id": "schlangen-aktiv",
  "name": "Schlangen Aktiv",
  "class": "DummySwitch"
},
{
  "xConfirm": true,
  "id": "notaus",
  "name": "Notaus",
  "class": "DummySwitch"
}

An- und Ausschalter.

Schalter für die Funksteckdosen

{
  "protocols": [
    {
      "name": "switch2",
      "options": {
        "houseCode": 28,
        "unitCode": 16
      },
      "send": true,
      "receive": true
    }
  ],
  "id": "schlangen-schalter-licht",
  "name": "Schlangen Schalter Licht",
  "class": "HomeduinoRFSwitch"
}

Sonnenaufgang und Sonnenuntergang

{
  "attributes": [
    {
      "name": "sunrise",
      "label": "Sunrise"
    },
    {
      "name": "sunset",
      "label": "Sunset"
    }
  ],
  "id": "sonnenaufgang",
  "name": "Sonnenaufgang",
  "class": "SunriseDevice",
  "latitude": xx.xxxxxxxx,
  "longitude": y.yyyyyyyy
}

Wetter

{
  "location": "",
  "cityId": "2077895",
  "lang": "de",
  "blacklist": [],
  "xAttributeOptions": [],
  "id": "wetter-alicesprings",
  "name": "Wetter Alice Springs",
  "class": "OpenWeatherDevice"
}

Das aktuelle Wetter in Australien.

Regeln definieren

Sind alle Sensoren, Aktoren und Variables definiert kommt das Kernelement von pimatic zum Einsatz. Mit Hilfe der Regeln lassen sich mächtige Schaltungen erzeugen.

Licht steuern

{
  "id": "schlangen-licht-an",
  "name": "Schlangen Licht An",
  "rule": "when its after $ts-tag and its before $ts-nacht and state of schlangen-aktiv is equal to on then turn Schlangen Schalter Licht on after 10 seconds and turn schlangen-schalter-spot on after 15 seconds and turn echsen-schalter-spot on after 25 seconds",
  "active": true,
  "logging": true
}

Schaltet alle Lichtquellen für den Tag ein wenn die manuelle Steuerung nicht aktiv ist. WICHTIG: Es müssen alle Funksteckdosen mit einer Pause nacheinander geschaltet werden. Andernfalls überlagern sich die Funksignale und kein korrektes Signal erreicht die Steckdosen.

Temperatur steuern

{
  "id": "schlangen-temperatur-tag-an",
  "name": "Schlangen Temperatur Tag An",
  "rule": "when its after $ts-tag and its before $ts-nacht and $schlangen-dht22.temperature &lt;= $ts-temp-tag - $global-tempdiff and state of schlangen-aktiv is equal to on then turn Schlangen Schalter Heatpanel on",
  "active": true,
  "logging": true
}

Aktiviert das Heatpanel falls es tagsüber zu kalt ist und die manuelle Steuerung nicht aktiv ist.

Notaus

{
  "id": "notaus",
  "name": "Notaus",
  "rule": "when notaus is turned on then switch off schlangen-aktiv and switch Schlangen Schalter Heatpanel off and switch Schlangen Schalter Licht off and switch Schlangen Schalter Spot off",
  "active": true,
  "logging": true
}

Der Notaus Schalter deaktiviert die automatisch Steuerung und schaltet alle Aktoren aus.

Nachrichten

{
  "id": "nachricht-schlangen-temperatur-nacht-zu-kalt",
  "name": "Nachricht Schlangen Temperatur Nacht Zu Kalt",
  "rule": "when [its before $ts-tag or its after $ts-nacht] and $schlangen-dht22.temperature &lt;= $ts-temp-nacht - $global-alarmdelta then log "Schlangen - Es ist ZU KALT: $schlangen-dht22.temperature ist unter $ts-temp-nacht - $global-alarmdelta"",
  "active": true,
  "logging": true
}

Nachrichten für Sonderfälle (Zu warm/kalt, …) können in das Log geschrieben, per Mail versendet oder als Push Nachricht verschickt werden.

Arduino Anzeige

Weboberfläche von TerraPiPy

Pimatic