Reingeschaut: Broadlink RM 3

Vielleicht haben Sie schon gelesen, dass ich die Broadlink-Produkte nicht unbedingt mag. Aber vielleicht lässt die Hardware ja wenigstens einfache Modifikationen zu?

Schauen wir doch mal in einen RM Mini 3 rein. Hierbei handelt es sich um einen Infrarot-Controller, der vom Smartphone bedient werden kann.

Nimmt man dan oberen Deckel ab, sieht man sofort die Infrarot-LEDs und einen Infrarot-Fernbedienungsempänger:

rm3-1

Das war zu erwarten. Gibt es beim Steuerungsboard vielleicht irgendwelche Überraschungen?

rm3-2

Eigentlich nicht. Der Hauptprozessor ist ein Marvel 88MC200. Das ist ein relativ einfacher ARM-Cortex-M3 basierter Chip, der mit 200 MHz läuft. Mehr Leistung ist für ein derart einfaches Gerät auch nicht notwendig. Da der Chip kein integriertes WiFi mitbringt, gibt es noch einen weiteren Chip: der 88W8801 ist ein Marvel WiFi Chip.

Theoretisch könnte man auf den Marvel-Controller vermutlich eine eigene Software aufspielen, die die Limitationen der Originalfirmware behebt. Allerdings wird das recht kompliziert. Vermutlich möchte niemand mehrere Tage an einem 20$-Gerät rumschrauben und herumprobieren. Die einfachste Tuning-Möglichkeit dürfte es sein, dass Controller-Board einfach durch einen ESP8266 zu ersetzen. Allerdings kann man dann auf den Rest des Gerätes auch ganz verzichten. Einfach ein paar Infrarot-LEDs an den ESP8266 anschliessen, dann kann man die Funktionalität dieses Systems auch recht einfach nachimplementieren. Das ganze wird auch sicher noch günstiger.

Broadlink Produkte – fehlende APIs und andere Überraschungen

Wer auf Chinesischen Shoppingwebseiten unterwegs ist, wird früher oder später auch auf die Produkte von Broadlink stossen. Diese sind billig und scheinbar sehr leistungsfähig. Allerdings ist hier etwas Skepsis angebracht.

Schauen wir uns mal den Umweltsensor A1 an. Einige Verkäufer behaupten, dass das Gerät auch PM2.5 Feinstaubmessungen durchführen kann. “Coming soon” heisst es da. Nun könnte man vermuten, dass es hierzu nur noch ein Softwareupdate braucht. Dem ist jedoch nicht so. Der Sensor bietet lediglich eine Schnittstelle an, an die ein externen Sensor angeschlossen werden könnte. Diesen muss man natürlich zusätzlich kaufen und ob es ihn je geben wird, steht momentan noch in den Sternen.

a1Noch problematischer für Hausautomatisierungszwecke ist jedoch, dass offene und dokumentierte Schnittstellen komplett fehlen. Broadlink bietet Apps für Android and IOS an, diese sind aber natürlich für Automatisierungszwecke nutzlos. Es scheint ein SDK zu geben, dieses ist allerdings nicht öffentlich verfügbar und scheint auch nur für Android und IOS verfügbar zu sein. Damit wird es praktisch unmöglich, das Geräte in eine Automatisierungslösung zu integrieren.

Aufgrund der fehlenden Schnittstellen können die Broadlink-Produkte – daher nicht empfohlen werden – auch wenn sie sehr günstig sind.

5 Ways to start Home Automation for under $50

Home Automation is getting more and more simple with each day. Using WiFi, almost everything in your house can become ‘smart’. For under $50 you can begin to monitor and control your house, from anywhere, without breaking the bank.

Hook-Budget-Home-Automation-SystemHook: The Hook home hub finds its origins in DIY Home Automation. With successful crowdfunding, Hook is a low-cost Automation system that can control up to 15 devices remotely; in partnership with IOS, Android, Amazon Alexa, and the IFTTT web server. With Radio Frequency compatibility, Hook can convert any cheap RF socket to a smart socket. The Hook hub ships this month for just $49.95.

tplinkTP Link: This smart outlet is an affordable Home Automation device that can give your house a lived-in look to deter burglars with its ‘away mode’ protocols, turn your devices on and off from afar, and control your appliances. Compatible with Android, iOS and Amazon Alexa, the outlet also integrates energy monitoring, and can be controlled through their free Kasa app. A low-cost beginning that save you money and monitors your home, the TP Link comes with a 2-year warranty and 24/7 customer support to guide you through the transition of smart-proofing your home. The TP Link can be purchased for $40.72, with cheaper options starting at $29.95.

huePhilips Hue lighting:  Starting at $29.99, your investment need not go beyond a lightbulb. The Philips hue lighting products offer lighting protocols that adjust to your time of day; creating a natural light that can also be customized for specific moods and settings. With daily routines and quick-control features, you can flick the switch; dimming or turning off your lighting, from your smart light-switch on your phone. With the addition of an optimized, open source Home Automation system such as Hobson, this investment can be the first piece of your Home Automation framework, and control your in-home lighting remotely, for ‘lived-in’ protection in your house. Philips Hue also offers a free app tailored specifically towards this product.

insteonforscamInsteon Remote Control Plug-In On/Off Module: This small hub can control lamps and other small appliances. The perfect introduction to Home Automation, Insteon is compatible with smartphones for remote accessibility. Starting at $49.99, the Insteon can also be connected to a larger hub, for when you need to expand upon your Home Automation.

Foscam Camera: Using Home Automation, you can check on your house remotely with this IP camera. With its own remote viewing and recording system, this device can easily be linked into any open source software, as part of your User Interface; growing with multiple devices. Pricing for Foscam IP cameras start at $39.99

Home Automation has become a vast and diverse landscape of options. Expanding outside of WiFi’s limitations, Investment in Home Automation seeks to revitalize your household with Infrared, Bluetooth and Z-wave compatibility.

Umbau des H801 LED Dimmers

Heute erhielt ich nach nicht allzu langer Wartezeit den H801 LED Dimmer. Beim Untersuchen des Gerätes konnte ich mir jedoch nicht vorstellen, was die Anschlüsse W1 und W2 sein sollen (die anderen Anschlüsse waren mehr oder weniger selbsterklärend). Also habe ich das Gehäuse entfernt und das Board genauer angeschaut. Positiv überrascht stellte ich fest, dass ich sich nicht um einen 3-Kanal-, sondern sogar um einen 5-Kanal-Dimmer handelt. W1 und W2 sind 2 zusätzliche Kanäle, die man z.B. für gemischte RGB/Weiss-LED-Streifen nutzen kann.

Die weitere Installation erschient nicht kompliziert. An die Stromversorgung anschliessen und starten.

Jetzt kann man mit dem Laptop oder Smartphone auf den Accesspoint HCX_856705 (die Zahlen können evtl. anders sein) verbinden. Etwas Suche brauchte das Passwort, aber ich konnte es am Ende finden. Das Standardpasswort ist 8888888. Jetzt fangen die Probleme an, wenn man kein Android-Telefon besitzt. Ich hätte wenigstens ein simples Webinterface erwartet, aber es ist nichts derartiges vorhanden. Die einzige Methode zur Steuerung des Gerätes scheint eine Android-App zu sein.

Nun gab es für mich zwei Option: eine andere Firmware programmieren und aufspielen oder einen Android-Emulator zu benutzen. Letzteres schien die schnellere Methode zu sein. Also probierte ich es mit Droid4X – leider erfolglos. Ich bin nicht sicher, was das Problem war, evtl. wollte der Android-Emulator die Netzwerkverbindung meines Macs nicht nutzen.

Also zurück zur ersten Variante – eine neue Firmware. Etwas derartiges mache ich nicht gerne, aber bei einem Gerät, was weniger als 20 Euro kostet und anderweitig nicht nutzbar ist, was das doch die sinnvollste Option.Glücklicherweise ist das Flashen einer alternativen Firmware sehr einfach. Es gibt bereits einen RX/TX/GND/3.3V header und den J3 header, der zur Programmierung kurzgeschlossen werden muss. Also schnell ein paar Header auflöten und das Board neu programmieren.

h801-header
Als Software nutzte ich die Software von Eryk.io und passte diese leicht an. Den angepassten Code findet man in meinem Github repository.

Die GPIOs sind wie folgt belegt:

Pin Function
15 Ausgang Rot
13 Ausgang Grün
12 Ausgang Blau
14 Ausgang Weiss 1
4 Ausgang Weiss 2
1 Status-LED grün
5 Status-LED rot

Batteriebetriebener Sensor auf ESP8266-Basis

Der ESP8266 ist ein leistungsfähiger und günstiger Mikrocontroller. Während früher noch oft proprietäre Funkprotokolle wie z.B. nRF24-basierte Chips genutzt wurden, kann man viele heute für viele Anwendungsfälle gleich auf WLAN setzen. Es gibt allerdings ein grosses Problem mit WiFi: der Stromverbrauch.

Wenn der ESP8266 mit einem WiFi-Netzwerk verbunden ist, verbraucht er mindestens 70mA, teilweise sogar deutlich mehr. Wenn man nur ein System mit einem 2400mAh-Akku betreiben will, ist dieser nach spätestens einem Tag leer. Und niemand möchte wohl für Sensoranwendungen eine Autobatterie nutzen.

Glücklicherweise müssen Sensoranwendungen in vielen Fällen nur selten Daten übertragen. Selbst Messungen müssen oftmals nicht ständig erfolgen. Das heisst, die meiste Zeit kann der Chip einfach schlafen. Um dies umzusetzen, geht man wie folgt vor:

  1. Daten sammeln. Das sollte geschehen, bevor das WLAN-Modul aktiviert wird (ausser, die Datenabfrage benötigt nur wenige Millisekunden)
  2. Mit dem WLAN verbinden
  3. Daten senden
  4. In den “Deep sleep”-Modus wechseln. Hierfür nutzt man die ESP.deepSleep() Funktion.

Bei der ESP.deepSleep() Funktion gibt es im übrigen einige Dinge zu beachten:

  1. Damit der Mikrocontroller nach der entsprechenden Zeitspanne wieder aufwacht, mit GPIO16 des ESP8266 mit dem RESET-Pin verbunden sein. Ansonsten schläft der Controller ewig.
  2. Der delay-Parameter ist in Mikrosekunden anzugeben. Wenn sich der ESP8266 also scheinbar nie schlafen legt, könnte es sein, dass man die Zeit versehentlich in Sekunden oder Millisekunden angegeben hat.
  3. Es gibt einen zweiten – optionalen – Parameter, der 4 Werte annehmen kann: WAKE_RF_DEFAULT, WAKE_RFCAL,WAKE_NO_RFCAL, WAKE_RF_DISABLED. Der Wert WAKE_RF_DISABLED sieht auf den ersten Blick vielversprechend aus, denn irgendwie sollte das WiFi-Modul ja abgeschaltet werden. Allerdings bezieht sich dieses Argument auf die Funktion nach dem Aufwachen. Übergibt man hier also WAKE_RF_DISABLED , ist der ESP8266 nach dem Aufwachen nicht mehr in der Lage über WLAN zu kommunizieren.

Hier noch ein paar zusätzliche Tips zum Stromsparen:

  1. LEDs als optische Signalisierung sollten nur sehr kurz eingeschaltet werden. Einige Millisekunden reichen i.d.R. aus, damit der Benutzer das Aufblitzen wahrnimmt.
  2. Müssen die LEDs etwas länger eingeschaltet bleiben, sollten sie gedimmt werden. Mit der analogWrite Funktion kann man das einfach umsetzen.

Hier ist ein einfaches Beispiel, das die Daten vom Analogeingang des Controllers liest und an einen MQTT-Broker übermittelt:

#include         // Generic ESP8266 WiFi routines
#include        // MQTT client
#include           // Local DNS Server used for redirecting all requests to the configuration portal
#include    // Local WebServer used to serve the configuration portal
#include         // WiFi Configuration Magic


const char* mqtt_server = "192.168.1.88";
const char* mqtt_channel_up = "active";
const char* mqtt_channel_data = "sensor/%d/adc";

const int pin_red = 15;
const int pin_green = 12;
const int pin_blue = 13;
const int pin_button = 4;
const int analog_ldr = 0;

const int sleepSeconds = 60 * 15;

WiFiManager wifiManager;
WiFiClient espClient;
PubSubClient client(espClient);


void send_sensor_data(void) {
  Serial.println("Sending sensor data\n");
  int data = analogRead(A0);
  char s_channel[50];
  char s_id[10];
  char s_data[10];
  sprintf(s_channel, mqtt_channel_data, ESP.getChipId());
  sprintf(s_id, "%d", ESP.getChipId());
  sprintf(s_data, "%d", data);

  digitalWrite(pin_blue, HIGH);
  client.connect("ESP8266Client");
  digitalWrite(pin_blue, LOW);
  if (! client.connected()) {
    Serial.println("Could not connect to MQTT broker, doing nothing");
  } else {
    digitalWrite(pin_green, HIGH);
    client.publish(mqtt_channel_up, s_id); // show that this device is up
    client.publish(s_channel, s_data); // send sensor data
    digitalWrite(pin_green, LOW);
  }
}

void setup() {
  delay(500); // This makes it easier to upload new firmware and/or press the "clean" button

  pinMode(pin_red, OUTPUT);
  pinMode(pin_green, OUTPUT);
  pinMode(pin_blue, OUTPUT);

  digitalWrite(pin_red, HIGH);

  // Setup Serial interface for debugging
  Serial.begin(115200);

  //  Bring up WLAN
  WiFiManager wifiManager;

  //sets timeout until configuration portal gets turned off
  //useful to make it all retry or go to sleep
  //in seconds
  wifiManager.setTimeout(60);

  WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, 40);
  wifiManager.addParameter(&custom_mqtt_server);

  if (digitalRead(pin_button) == 0) {
    // reset settings
    wifiManager.resetSettings();
  }

  //fetches ssid and pass and tries to connect
  //if it does not connect it starts an access point with the specified name
  //here  "AutoConnectAP"
  //and goes into a blocking loop awaiting configuration
  if (!wifiManager.autoConnect()) {
    Serial.println("failed to connect and hit timeout");
    delay(100);
    // do nothing: deep sleep, but longer than usual. Something might be wrong and
    // we should save power
    ESP.deepSleep(sleepSeconds * 10 * 1000000, WAKE_RF_DISABLED);
  }

  mqtt_server = custom_mqtt_server.getValue();

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  // Setup MQTT client
  client.setServer(mqtt_server, 1883);

  digitalWrite(pin_red, LOW);
}

void loop(void) {
  send_sensor_data();
  Serial.printf("Sleeping deep for %i seconds...", sleepSeconds);
  ESP.deepSleep(sleepSeconds * 1000000);
  delay(100);
}

Wie sicher ist KNX?

Schaut man sich moderne Hausautomatisierungslösungen wie Z-Wave oder Zigbee an, tauchen auch immer wieder Sicherheitsprobleme auf. Einige davon wurden oder werden noch behoben, andere vielleicht nicht. Wenn schon diese modernen Technologien gewisse Probleme aufweisen, wie sieht es dann erst mit einem “Oldie” wie KNX aus?

Kurz gesagt: KNX ist das schlimmste, was man sich aus Sicherheitssicht vorstellen kann. Alle Geräte kommunizieren auf einem gemeinsamen Medium, es gibt weder Verschlüsselung noch Authentisierung oder Authorisierung. Wer Zugriff zum KNX-bus hat, kann praktisch alles tun.

Glücklicherweise gibt es aber einen positiven Punkt: Man braucht physischen Zugriff zum KNX-Bus. Zwar kann jemand, der Zugriff zur persönlichen KNX-Installation hat, alle möglichen bösartigen Dinge tun, allerdings ist diese Person dann schon in der Wohnung und könnte auch ohne Hausautomatisierung ziemlich fiese Sachen tun. Das Licht ein- oder auszuschalten dürfte da wohl das kleinste Problem sein. Das heisst, für Installationen in Wohnräumen, bei denen der KNX-Bus nicht mit anderen Netzen verbunden ist, ist KNX immer noch eine sichere Lösung. Allerdings: Welche Automatisierungslösung ist heute nicht mit anderen Netzen verbunden? Viele Intelligenz wird heute nicht direkt auf dem KNX-Bus abgebildet, sondern durch externe Geräte, die oft auch noch mit dem Internet verbunden sind.

Geht es trotzdem sicher? Im Prinzip schon, wenn man einige Dinge beachtet:

  1. Der KNX-Bus sollte nicht einfach direkt mit dem Heimnetz verbunden werden, besonders nicht, wenn evtl. noch ein WLAN-Gastzugang eingerichtet ist.
    KNX/IP Schnittstellen sind sinnvolle Geräte, man sollte aber überlegen, wie man den Zugriff darauf einschränken kann. Idealerweise setzt man ein Gateway ein, welches Benutzer authentifizieren kann und Zugriffsrechte verwalten kann.
  2. Benutzt man ein beliebiges kommerzielles Produkt mit Internetzugriff zum Zugriff auf KNX-Komponenten, sollte geprüft werden, ob der Hersteller regelmässige Sicherheitsupdates zur Verfügung stellt. Wenn der letzte Software-Release 18 Monate alt ist, ist das wohl kaum der Fall.
  3. Wer selbst ein Gateway oder eine Haussteuerung entwickelt, sollte von Anfang an überlegen, wie die Architektur aussehen muss, um eine möglichst hohe Sicherheit zu erreichen.

Bemerkung  1: Die physische Sicherheit kann ein Problem sein, wenn eine KNX-Installation z.B. ein gesamtes Haus mit mehreren Wohnungen steuert. Wenn die Wohnung also irgendeine “intelligente” Steuerung bietet, sollte man sich nochmals anschauen, was dort umgesetzt wurde und ob sich jemand Gedanken darüber gemacht hat, verschiedene Wohnungen voneinander zu trennen.

Bemerkung 2: Mit ETS 5.5 gibt es von der KNX Assoziation nun “Secure KNX”. Ich habe mir das noch nicht im Detail angeschaut. Warum? In erster Linie, weil die existierenden älteren Geräte, die bereits verbaut wurden, keine Security-Erweiterung unterstützen. Evtl. wird KNX Security in Zukunft an Bedeutung gewinnen, im Moment wird es von praktisch keinen Geräten unterstützt, die in bestehenden KNX-Installationen zu finden sind.

Is wireless the future?

Looking at new companies in the home automation industry it looks like many of them prefer some kind of radio frequency data transmission. This makes sense as customers don’t want to have additional cables in their home. But is this really the future of home automation? I’m not sure. Here are some arguments against wireless control:

  1. Reliability: with more and more devices communicating wireless, interoperability problems can become more and more problematic.
  2. Power supply: with some exceptions (e.g. EnOcean), even wireless devices need a power supply. This mean either cabling or batteries that need to be changed regularly
  3. Security: Wireless devices are easier to attack than wired devices (at least if these are not connected to a public network).

Especially the security aspect is important in my point of view. Many home automation devices will be used for 10-50 years. While it might be reasonable to buy a new music player every 5 years, you don’t want to change your wall switches every 10 years. The development of encryption algorithms has shown that no algorithm is secure forever. This means the software has to be updated from time to time. Newer encryption algorithms might even need more powerful hardware. Do you believe your supplier will provide software updates for the devices during the next 20 years?