Funksteckdosen

Aus RaumZeitLabor Wiki
Version vom 7. August 2021, 07:51 Uhr von DevCoffee (Diskussion | Beiträge) (Changed status to obsolete)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
     
Funksteckdosen

Release status: obsolete [box doku]

Beschreibung Funksteckdosen + Steuerung im RZL
Autor(en)  Else
Download  github

Wir haben im RZL einige Funksteckdosen mit bidirektionalem Rückkanal verbaut, die neben ihres Zustandes auch den aktuellen Stromverbrauch zurückliefern. Die Steckdosen namens PCA301 können gelegentlich bei ELV zum Stückpreis von 20€ erworben werden, wenn sie nicht gerade ausverkauft sind, und werden über RFM12 auf 868 MHz angesprochen. Da das Funkprotokoll bereits von Leuten aus dem FHEM Umfeld reverse-engineered wurde (siehe Faden) und es bereits einen fertigen Arduino Sketch gibt, ist der Aufwand der Ansteuerung vergleichsweise gering.

Hardware

Zur Ansteuerung der Steckdosen nutzen wir einen zusammengefrickelten Arduino Nano mit RFM12B Modul (von Pollin). Die Verkabelung ist genau wie beim Jeenode und total trivial (abgesehen vom Rastermaß beim Funkmodul, siehe Steckbriefbild rechts). Der Arduino liegt im Rack und ist direkt an Mate per USB angeschlossen. Die Reichweite ist mehr als ausreichend (bis in den Nebenraum).

Software

Auf dem Arduino nutzen wir den fertigen Arduino Sketch mit minimalen Änderungen (bzgl. Basisfrequenz). Der Sketch ist in der Lage, Steckdosen anzulernen. Die serielle Schnittstelle des Arduinos wird mittels "serial device passthrough" an die Infra VM durchgereicht. Hierfür nutzen wir eine udev Rule, die auf die Serial des FTDIs matched und ihm auf Mate immer das gleiche Device zuweist.

Auf der Infra VM nutzen wir FHEM, einer kleinen Software für Heimautomatisierung. FHEM kann unter http://infra.rzl:8083/fhem innerhalb des RZLs erreicht werden und ist von außen nicht erreichbar. Zusätzlich zu dem Standard-Webinterface kann man auf Port 8084 ein Webinterface für mobile Endgeräte aufrufen. Für Androidnutzer empfiehlt sich die Installation der andFHEM App, die dann entsprechend konfiguriert werden muss.

FHEM ist auf der Infra-VM als Debian Paket installiert und von systemd verwaltet (.service File liegt im Repository).

Anbindung an Hausbus3

Der Status der Steckdosen wird durch FHEM automatisch auf unseren MQTT Broker gepusht. Das ist momentan noch ein wenig hemdsärmelig über die FHEM Config gelöst, tut aber erstmal seinen Zweck. Der Stromverbrauch der Steckdosen wird alle X Sekunden aktualisiert, der Zustand wird lediglich bei Veränderungen aktualisiert und ist retained. Momentan gibt es keine Möglichkeit, über MQTT Befehle an die Steckdosen zu senden. Hierfür wäre die Entwicklung eines eigenen MQTT Moduls für FHEM sinnvoll (gibts interessanterweise noch nicht).

Setup

Momentan sind sechs Steckdosen an folgenden Plätzen verbaut:

  • Hauptraum
    • drucker: Drucker direkt neben Tardis, inkl. Tardislampe
    • pringles: Mehrfachsteckdose an der Pringles-Bong (u.a. die LEDs an der Decke)
    • infoscreen: Infoscreen RPi + Bildschirm + Ladegerät Kassentablet
    • telekom: das beleuchtete Telekomlogo
    • music: der MPD inkl. Bausteine
    • blinklampe: die ursprüngliche Pingiepie-Blinklampe
    • pinkelampe: die pinke Neon(?)röhre an der Snackbar
  • Olymp
    • konsolen: der Hauptstecker für die Konsolen

Vorschläge für weitere Standorte:

  • openelec: der RPi mit OpenELEC auf unserer Beamerplattform verbraucht eh fast nix

Automatisierung

Wir können in FHEM Schedules definieren. Mit MQTT Modul (wäre zu schreiben) könnte man auch auf beliebige Events reagieren. Es folgt eine Liste von Vorschlägen (bitte erweitern):

  • alle Geräte abschalten, wenn Raum zu ist
  • wenn Raum offen und Sonne untergegangen, die LEDs an der Decke und Moodlamps einschalten

Die Zukunft

(danke, hax404)

  • noch mehr Funksteckdosen! Es sind fünf weitere Steckdosen auf dem Weg.
  • mehr Automatisierung durch Anbindung der Steckdosen an MQTT r/o erledigt, r/w tbd
  • Stromverbrauch der Geräte in $DB zwecks Statistiken schreiben