Heizung per Radio steuern

My Noxon: Heizung

2008 begann ich damit, das Haus mit Internetradios auszustatten . Die Noxon iRadio-Geräte (Noxon iRadio und iRadio Cube) haben leider fest eingebaute Menüeinträge , die man nur mit Internetverbindung nutzen kann.

Diesmal habe ich das von den Radios gesprochene Protokoll analysiert, dokumentiert und meine eigene Serversoftware implementiert, mit der ich jetzt die Heizung steuern kann.

Probleme

Die iRadio-Geräte haben einige sehr störende Bugs:

  1. Die Noxon-Internetradios telefonieren regelmäßig nach Hause. Ich habe deshalb von Anfang an die angefragten Domains auf 127.0.0.1 gemappt.

  2. Die Uhrzeit ist - vor allem auf dem iRadio Cube - falsch, obwohl NTP eingstellt ist. Das ganze hängt auch noch von der Sommerzeit/Winterzeit-Einstellung ab; im Sommer zeigt das Radio fast eine komplette Stunde falsch an, im Winter sind es ~10 Minuten.

  3. Wenn das Radio einen Tag im Standby ist, verliert es den UPnP-Server - und findet ihn auch nicht mehr, wenn man es wieder aus dem Standby weckt. Man muss das Radio richtig hart neustarten, damit man es wieder nutzen kann.

  4. In UPnP-Ordnern mit vielen Einträgen (gefühlt ab 50, ich habs aber auch schon bei welchen mit 10 erlebt) kann man nicht mehr in die Ordner reinwechseln.

    Man scrollt runter zum gewünschten Ordner, drückt -> und ist wieder am Anfang der Liste.

    Ganz krass ist es bei Ordnern mit 200+ Einträgen: Einfach nach oben scrollen, so dass man am Ende rauskommt und dann noch ein paar mal nach oben drücken - schon ist man komplett aus dem Menü raus und im Hauptmenü.

    Damit ist das Radio bei größeren Albenlisten unbenutzbar.

Eigene Serversoftware

Da Terratec vermutlich irgendwann die Server abschalten wird, habe ich mit mitmproxy den Datenverkehr der Radios mitgeschnitten, analysiert und das Protokoll dokumentiert . Mit der API-Doku konnte ich nun meinen eigenen Noxon-Server bauen.

Ich hatte mehrere Ziele:

UPnP -> Internetradio

Da die Radios fest eingebaute Menüeinträge Internetradio, Podcasts und My Noxon haben - die niemals verloren gehen - war die erste Idee, das Internetradio-Menü mit dem Inhalt des UPnP-Servers zu bestücken

Ich hatte 2008 mehr aus Spaß geschrieben:

Knowing this format, one could make the menu entries actually useful by creating a noxonXml-to-MediaTomb gateway with Services_MediaTomb :)

Genau das habe ich auch gemacht; wenn man das Internetradio-Menü betritt sieht man genau denselben Inhalt wie wenn man den UPnP-Server-Menüeintrag ausgewählt hätte.

Zwei Vorteile:

Internet Radio

Das iRadio Cube unterstützt - im Gegensatz zum originalen iRadio - leider kein ogg/vorbis. Da der UPnP-Server jetzt nicht mehr direkt von den Radios angefragt wird, musste ich die Konvertierung von .ogg-Dateien nach .mp3 selbst implementieren.

Dateisystemmapping

Als die grundlegende API zum Ausspielen von Menüs implementiert war baute gleich ich noch einen Datei- und Verzeichnisansichtsmodus ein.

Damit werden die Menüs Podcasts und My Noxon jetzt auf Pfade im Dateisystem abgebildet: Wenn man My Noxon aufruft, wird der Inhalt des Verzeichnisses var/mynoxon aufgelistet.

Ordner und Textdateien werden im Radio als Ordner dargestellt. Navigiert man in eine Textdatei hinein, wird jede Zeile der Textdatei als nicht-navigierbarer Menüeintrag ans Radio ausgeliefert.

Für die Anzeige auf dem Fernseher habe ich schon solche Textdateien für die letzten Anrufe, die nächsten Geburtstage, den Kontostand und die Zimmertemperaturen.

Ich nutze zur Darstellung auf dem Fernseher meine Dreambox-Extension curlytx .

Schnell kam ich auf die Idee, ausführbare Dateien (chmod +x) auch als Ordner darzustellen. Navigiert man in diesen Ordner hinein, wird die Datei ausgeführt und die Ausgabe des Programms wie bei Textdateien zeilenweise ans Radio gesendet.

Schnell kamen noch Autostartscripte hinzu, die automatisch ausgeführt werden, wenn man einen Ordner auflistet, und deren Ausgabe in die Ordnerauflistung integriert.

Temperaturen auf dem iRadio Cube Anrufe Podcasts

Heizung -> My Noxon

Wir haben eine Wärmepumpe von Dimplex, die per Netzwerkmodul (NWPM) ansprechbar ist.

Über HTTP kann man die aktuellen Einstellungen auslesen und ändern, wie ich es mit meinen dimplex-tools mache:

#!/bin/sh
set -e
ipaddress=1.2.3.4
res=`curl -sS "$ipaddress/usr-cgi/xml.cgi?I|1|1"`
echo "$res"\
    | grep VALUE\
    | tr -cd [:digit:]
echo

Dieses Script liest die aktuelle Einstellung der manuellen Anpassung der Rücklaufsolltemperatur aus. Wenn man diese ändert, wird das Haus wärmer oder kälter.

Schnell waren ein paar Scripte geschrieben, eins das die aktuelle Einstellung der Wärmepumpe im Ordner "Heizung" anzeigt, und Scripte zum Wärmer- und Kälterstellen der Heizung:

My Noxon Heizung wärmer stellen

Download

Die resultierende Serversoftware heisst noxon-gateway und ist auf meinem Git-Server zu finden.

Written by Christian Weiske.

Comments? Please send an e-mail.