Amazon Dash Button als Homematic Schalter

Kürzlich hat Amazon die Dash Buttons hier in Deutschland vorgestellt. Kleine, kostengünstige (kostenneutrale) Knöpfe, die sich per WLAN mit Amazon verbinden wollen und vorkonfiguriert ein Produkt bestellen.

Inspiriert von dieser Seite dachte ich mir, dass man doch den Dash Button auch verwenden können müsste um als Homematic Schalter / Sensor zu dienen.
Im ersten Schritt wäre also ein Raspi zu nehmen der mittels Python auf die ARPProbes des Dash Buttons lauscht und bei Gelegenheit einen HTTP-GET auslöst um ein Programm in der CCU per XMLAPI zu starten.

Klappt auch wunderbar – ganz ähnlich zu der Seite oben:

  1. Vorbereitung: Der Dash Button muss sich mit dem WLAN verbinden können, aber kein Produkt bestellen: Dafür nimmt man die Amazon App auf dem Handy und richtet den Button ein, bis man zur Produktauswahl kommt. Dann aber kein(!) Produkt wählen, einfach abbrechen.
  2. MAC Adresse des Buttons rausbekommen: Im Netz findet man diverse Tools dafür – was bei mir aber nicht so recht klappen wollte. Vermutlich weil Laptop und Dash-Button in unterschiedlichen WLAN-Repeatern waren.
    Ich habe einfach meine Fritzbox gefragt, wer sich nach einem Druck auf den Dash-Button eingelogged hat. Mittels System -> Ereignisse -> aktivieren von “Auch An- und Abmeldungen protokollieren” geht das ganz einfach, wenn man eine Fritzbox hat.
  3. Dann habe ich das Skript dash-listen-2.py von dort genommen und habe einfach nach einem print anweisung noch einen entsprechenden http-get Befehl auf meine CCU mit XMLAPI eingefügt – ungefähr so:oben einfügen:
    import urllib2

    und an der Stelle, wo auch die Print ausgaben anzeigen, dass ein Button erkannt wurde:

    urlopen("http://homematic/config/xmlapi/runprogram.cgi?program_id=MEINEPROGRAMMID").read()

     

Das wars schon – sobald der Button sich per verbindet, setzt er ein ARPProbe ab, was detektiert wird und – in meinem Fall – das Programm zur Gartenbewässerung startet.

 

Wenn jemand eine Idee hat, die das Überprüfen auch direkt auf der CCU mittels z.B. TCL gehen könnte: Bitte melden!

:-D

😀 

Fefes Blog
Fefes Blog. Wer schöne Verschwörungslinks für mich hat: ab an felix-bloginput (at) fefe.de! Fragen? Antworten! Siehe auch: Alternativlos. Thu Jun 2 2016. [l] Treffen sich Merkel, Hollande und Iron Maiden am Flughafen von Zürich… :-). ganzer Monat. Proudly made without PHP, Java, Perl, …

imported from my Google+ stream

Homematic mit IP Steckdose

Eigentlich hat Homematic eigene Steckdosen um sie zu schalten oder sogar den Strom zu messen: HM-LC-Sw1-Pl-DN-R1 und HM-ES-PMSw1-Pl

Allerdings gibt es zum ungefähr gleichen Preis auch WLAN-IP-Steckdosen, die gleichzeitig WLAN-Repeater sind. Genau das, was ich hier gerade brauche.

Die Auswahl viel auf “Gembird energenie EG-PM1W-001”, da diese ein einfaches Webinterface mitbringt, was sich ansteuern lässt — viele Alternativen lassen sich nur per App + Cloud steuern, sodass man das Protokoll erst auseinandernehmen müsste …:-(

Die “Gembird energenie EG-PM1W-001” lässt sich wunderbar per CURL scripten, wie ich hier beschrieben habe.

Wenn man CuxD installiert hat, geht dann auch mit entsprechenden Scripten:
Zum Setzen des Zustandes:
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -b 'user=admin;pass=PASSWORT' -d 'gpionum=21&socket1=0' http://IPADR/goform/setSocket");

Zum Auslesen
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -b 'user=admin;pass=PASSWORT' http://IPADR/goform/formDeviceStatus");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string rueckgabe = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
dom.GetObject("Funksteckdose-RecvState").State(rueckgabe.Substr(39,1));

(39 ist genau die richtige Stelle; die Variable “Funksteckdose-RecvState” kann ein Logikwert sein)

Scripting “Gembird energenie EG-PM1W-001”

The “Gembird energenie EG-PM1W-001” is a IP-Plug thus you could control a power-plug by your wlan. Additionally its a wlan repeater.

Most of compareable devices are “just” App-based (so controlable by mobiles), have no(!) webinterface and are closely connected to a vendor-cloud.
The EG-PM1W-001 is NOT … it has a webinterface and of couse could easily be controlled using curl. Here is how:

Switch it on:
curl -s -b "user=admin;pass=PASSWORD" -d "gpionum=21&socket1=1" http://IPADR/goform/setSocket

Switch it off:
curl -s -b "user=admin;pass=PASSWORD" -d "gpionum=21&socket1=0" http://IPADR/goform/setSocket

Read the state:
curl -s -r http://IPADR/status.asp -b "user=admin;pass=PASSWORD" http:///goform/formDeviceStatus

…comes to
Sat Apr 16 12:26:49 UTC 2016;0,0,0,0;1;1,Name1,1;0,Name2,0;0,Name3,0;0,Name4,0

…where the “1” in front of “Name1” is the state.