
Smart Home – openHAB 2 Dash Button
In diesem Beitrag geht es um das openHAB 2 Dash Button Binding. OliverLibutzki hat sich hinter das Thema geklemmt und ein Binding geschrieben. Das Binding ist bereits im aktuellen Snapshot enthalten. Ihr braucht auch diese neue Version, da hier ein Trigger Channel verwendet wird und es sonst nicht funktionieren wird. Oliver gab diesen Hinweis im letzten Beitrag zur Integration des Dash Button mittels Network Binding. In dem letzten Beitrag erfahrt ihr wie die Einrichtung des Dash Button mittels Amazon App funktioniert und wie ihr die IP im WLAN Router (Fritz Box) blockt, damit keine Kommunikation zu Amazon erfolgt. Bei Bedarf lest diese im alten Beitrag.
Smart Home – openHAB 2 Dash Button – Hardware
openHAB 2 Dash Button – Hardware – Server
Ihr benötigt wie immer einen Server für openHAB. Im Beitrag Smart Home – openHAB 2 Installation und Konfiguration erfahrt ihr die nötigen Informationen wie ihr einen Server aufsetzt.
openHAB 2 Dash Button – Hardware – Dash Button
Nun bestellt Euch einen Dash Button. Ich hatte bereits diesen empfohlen.
Der lässt sich mit ein wenig Aufwand anhübschen =)
Smart Home – openHAB 2 Dash Button – Software
openHAB 2 Dash Button – Software
Windows – Chocolatey und WinPcap
Als erstes installiert ihr Chocolatey. Hierfür öffnet die Eingabeaufforderung als Administrator. Bei Windows 1o drückt einfach WINDOWS + X und wählt den Eintrag Eingabeaufforderung(Adminstrator). Falls ihr eine Installation auf einem anderen Betriebssystem durchführen wollt, lest in Dash Button Dokumentation nach.
Kopiert nun folgende Zeile und drückt Enter.
@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\binchoco install winpcap
Nach der Installation zeigt die Eingabeaufforderung folgendes:
Im Anschluss an die Installation von Chocolatey gebt folgenden Befehl in der Eingabeaufforderung ein.
choco install winpcap
Bestätigt mögliche Abfragen mit Y. Es wird eine Installationsroutine laufen und kurz erscheinen. Die Eingabeaufforderung gibt eine entsprechende Rückmeldung, dass alles erfolgreich war.
openHAB 2 Dash Button – Software
Raspberry (z.B. openHABian) – libpcap
Auf dem Raspberry Pi müsst ihr eine andere Zusatzkomponente installieren. Mit den folgenden Schritten installiert ihr libpcap und setzt die entsprechenden Berechtigungen (Quelle: openHAB Dokumentation)
sudo apt-get install libpcap-dev sudo setcap cap_net_raw,cap_net_admin=eip $(realpath /usr/bin/java) sudo getcap $(realpath /usr/bin/java) sudo setcap 'cap_net_raw,cap_net_admin=+eip cap_net_bind_service=+ep' $(realpath /usr/bin/java)
openHAB 2 Dash Button – Software – Paper UI Dash Button Binding
Die Installation des Binding funktioniert inzwischen auch über die Paper UI. Ruft diese entsprechend auf.
http://localhost:8080/ui/index.html#/extensions
Im Anschluss drückt einfach auf den Knopf Eures Dash Button. Der Dash Button erscheint nach kurzer Zeit in der Inbox. Oliver! Wahnsinn! Drückt nun auf den blauen Kreis mit dem Haken.
Im darauf folgenden PopUp vergebt nun einen Namen für den Dash Button und klickt auf „Add as Thing“. Ich nutze diesen für die zweite Hue am Schreibtisch, so dass ich Euch später eine Live Demo zeigen kann.
openHAB 2 Dash Button – Software – SmartHomeDesigner Regel
Als letztes öffnet den Smart Home Designer und fügt eine entsprechende Regel ein. Hier kommt der bereits erwähnte Channel Trigger zum Einsatz. Diese Regel reagiert auf das Channel Triggered Event . Um die Channel ID herausbekommen, navigiert in der Paper UI in Eure Things und drückt auf das Kreissymbol neben dem Dash Button.
Im nächsten Bild erfahrt ihr die Channel ID. Kopiert diese für die Regel.
Die Regel baut nun wie folgt auf.
- In der When Bedingung tragt Channel „<DASHBUTTON_ID> triggered ein.
- Die Then Bedingung könnt ihr entsprechend anpassend und hier die Funktion des Dash Button festlegen. Musik auf dem Raumfeld Player starten, stoppen, Hue/KNX schalten. Alles kein Problem.
Hier mein Beispiel:
rule "DB_Schreibtisch" when Channel "amazondashbutton:dashbutton:XX-XX-XX-XX-XX-XX:press" triggered then if (Licht_DG_Schreib.state.toString == "ON") { Licht_DG_Schreib.sendCommand(OFF) } else { Licht_DG_Schreib.sendCommand(ON) } end
Kurze Anmerkung noch. Falls es Smart Home Designer eine Fehlermeldung „no viable alternative at input ‚Channel'“ ausgibt, funktioniert es trotzdem. Ihr solltet Euch dann die aktuelle Snapshot herunterladen.
Viel Spaß mit Eurem 5€ Smart Home Schalter. =)
Super! Vielen Dank für die tolle Dokumentation. Genau genommen, muss in der Rule die ID des Channels rein. Man kopiert sie sich am besten, indem man im Paper UI bis zu dem Thing und dem Channel navigiert und sie dann per Copy-Paste in die Rule kopiert.
Hallo Oliver,
danke für den Hinweis. War wirklich nicht gut erklärt und ich habe es angepasst. Schaust Du mal. Kriegt man den Fehler im Smart Home Designer noch weg? Spricht fehlt mir hier irgendwas? Library? Dann ist es hoffentlich rund.
Beste Grüße
Thomas
Hast du die entsprechende letzte Snapshot-Version des Designers?
Hab mir die aktuelle Version hier https://github.com/eclipse/smarthome/blob/master/docs/documentation/community/downloads.md#designer-builds gezogen. Kein Snapshot. Werde ich versuchen. Muss mir das noch angewöhnen. Danke
Genau, die URL ist schon korrekt, aber du musst halt den Snapshot-Build statt den Release-Build ziehen.
Perfekt, werde ich demnächst testen. Danke!
[…] Es gibt inzwischen ein Dash Button Binding für OpenHAB 2. Dieser Weg ist noch einfacher und ich empfehle daher, im Beitrag Smart Home – openHAB 2 Dash Button weiterzulesen. […]
[…] Smart Home – openHAB 2 Dash Button […]
Danke für deine Anleitung.
Ich habe den DashButton über die Binding erfolgreich in OpenHAB2 eingebunden. Meine Hue Bridge und meine 2 Lampen sind ebenfalls mit OpenHab verbunden. Alles wird in things angezeigt.
Leider bekomme ich es nicht hin, dass bei betätigen des DashButtons eine Lampe angeht. Kannst du mir hier bei der Syntax weiterhelfen?
Hallo Alexander,
wenn Du meine Regel von oben kopiert hast. Lege Dir ein Item mit folgender Syntax an.
" }
/* Dachgeschoss Licht */
Color Licht_DG_Stehlampe "Dachgeschoss Stehlampe" ( DG ) { channel="
Den Hue Channel kopierst Du Dir aus dem Thing der Hue Lampe, die Du schalten möchtest in der Paper UI. Den Namen des Items anpassen, falls Du dies auch in der Regel anders benennst. Ist ja wahrscheinlich keine Dachgeschosse Stehlampe bei Dir =)
Beste Grüße
Thomas
Hallo Thomas,
Dane für den Tipp. Hatte versucht direkt über den channel die Lampe anzusprechen. Jetzt funktioniert es. Mein Code sieht aktuell so aus.
Switch Licht_Hue_Go_1 "Hue Go 1" ( Go1 ) { channel="hue:0210:0xxxxxxx:2:color" }
rule "DashButon_Oral-B"
when
Channel "amazondashbutton:dashbutton:xxxxxxx:press" triggered
then
if (Licht_Hue_Go_1.state.toString == "ON") {
Licht_Hue_Go_1.sendCommand(OFF)
} else {
Licht_Hue_Go_1.sendCommand(ON)
}
end
Was genau kann man in der Klammer (Go1) definieren?
Hi,
Nur mal eine Frage was wird denn auf dem DashButton installiert und wozu? Danke
Hallo Lars, auf dem DashButton installiert werden muss nichts. Läuft mit dem Binding wie geschrieben ohne Hacks. Ich nutze meinen Dashbutton inzwischen für die Gartenbewässerung und Beleuchtung im Garten. BG Thomas
Hi,
ahh du gehst davon aus, dass openhab auf einem Windows Rechner installiert wird? Was muss denn noch zusätzlich installiert werden wenn ich das auf einem PI laufen habe. Normalerweise ist ja mit dem Binding alles drin.
Hallo Lars,
ja, da für die meisten der Einstieg auf Windows am einfachsten ist, habe ich mich für Windows entschieden.
Du brauchst pcap4j. Lies Dir mal die Doku von Oliver durch. Da steht etwas zu Debian/Ubuntu.
http://docs.openhab.org/addons/bindings/amazondashbutton/readme.html
Sonst mal googeln wie Du pcap4j auf dem Pi installierst.
Grüße
Thomas
Hallo Thomas,
vielen Dank für die gute Anleitung.
Leider scheine ich etwas falsch zu machen.
Ich habe den Dash-Button eingerichtet (bzw. die Einrichtung abgebrochen) und er ist per PING verfügbar, wenn er gedrückt wird. Leider findet Openhab den Button nicht – in PaperUI kann ich nach Things suchen lassen, aber der Button taucht nicht auf.
Hallo Martin,
es gab ein Thema mit dem erkennen von Things in openHAB2. Kannst Du mal in der PaperUI Configuration -> System -> Item Linking kontrollieren. Ist hier Simple Mode eingeschaltet? Falls nicht, aktiviere mal.
Notfalls auch openHAB noch mal neu starten.
Grüße
Thomas
Hallo Thomas,
Openhab startet wieder.
Der Fehler (Start Fehler „code=exited status=127“) ließ sich durch folgenden Befehl beheben:
setcap -r `realpath /usr/bin/java`
anschließend habe ich folgenden Befehl ausgeführt, in der Hoffnung damit das Amazon Dash Binding wieder lauffähig zu machen.
sudo setcap cap_net_raw,cap_net_admin=eip `realpath /usr/bin/java`
Zur Sicherheit habe ich anschließend das Amazon Dash Binding deinstalliert und neu installiert.
Trotz der Einstellung „Simple Mode“ für das Item Linking findet er die Dash Buttons nicht.
Per PING sind beide erreichbar.
Kann man die manuell hinzufügen oder bringt das nichts, weil sie dann auch beim späteren Drücken nicht erkannt werden?
Wo kann man noch nach der Ursache des Problems suchen?
Beste Grüße
Martin
Hallo Thomas,
ich komme leider nicht weiter. Wenn ich den beschriebenen Befehl
sudo setcap cap_net_raw,cap_net_admin=eip `realpath /usr/bin/java`
erhalte ich den Status-Code 127 und openhab startet nicht mehr.
Wenn ich setcap -r `realpath /usr/bin/java`ausführe, startet Openhab aber im log erscheint der Fehler: ‚amazondashbutton:dashbutton:bef21845‘ changed from ONLINE to OFFLINE: The capturing for enp0s10f0 cannot be started.
Ich vermute, es liegt an irgendwelchen Berechtigungen, bin aber hilflos.
Hat jemand einen Tip?
Viele Grüße
Martin
Hallo Martin,
kann Dir hier leider nicht helfen. Ich hatte mich aufgrund der einfacheren Installation für Windows entschieden. Da es stabil läuft, plane ich aktuell keine Nutzung des PI. Sorry.
Vielleicht meldet sich einer der Kollegen mit dem Pi.
Grüße
Thomas
Hallo Thomas,
danke für den Tipp. Da leider aktuell mein Openhab nicht mehr startet (Fehler-Code 127, hatte ich nach Installation des Amazon Dash Bindings schon mal) kann ich es im Moment nicht testen.
Leider habe ich vergessen, was ich getan habe, um Openhab wieder zum Laufen zu bringen. Werde daher wohl ein paar Tage brauchen, bis ich den Tipp testen kann.
Beste Grüße
Martin
Hallo Thomas,
danke für deine Anleitungen. Du hast mir den Einstieg in Openhab sehr erleichtert. Mit meinem Dash Button würde ich gerne zusätzlich zu einem Switch-Befehl eine Steckdose schalten.
Ich habe Probleme mit der Syntax meiner Rule.
Items:
/EG Wohnzimmer Steckdose
Switch eg_wz_steck „EG Wohnzimmer Steckdose“ (gWohnSteckEG, gSteckEG, gHausSteckdosen) {knx=“1/1/3″}
Rule:
rule „DB1_Wohnzimmer_Steckdose“
when
Channel „amazondashbutton:dashbutton:xxxxxxxxxxx:press“ triggered
then
if (eg_wz_steck.state.toString == „ON“) {
eg_wz_steck.sendCommand(OFF)
} else {
eg_wz_steck.sendCommand(ON)
}
end
Als Fehler wird angegeben, dass die Methode oder das Feld eg_wz_steck undifiniert ist.
Was muss ich in den Items noch hinzufügen? Ich blicke da gerade nicht ganz durch.
Gruß
Hallo Sven,
diese Meldung kommt auch, wenn das Item nicht bekannt war/ist. Hast Du die Item Datei gesichert? Falls ja, gehe noch mal in die Datei deiner Regel. Enter drücken, sichern.
Hilft das?
Grüße
Thomas
Hallo Thomas,
ja, danke es funktioniert!
Obwohl in meiner Rule immer noch angezeigt wird, dass es das Item nicht gibt.
Gruß
Sven
Hallo,
komme leider überhaupt nicht weiter. Habe Snapshot #1033 unter Win10 und auf einem Raspi installiert. In beiden Fällen wird der DashButton nicht automatisch als Things erkannt (obwohl NetworkBinding dieses protokolliert: DHCP request for unknown address: 192.168.178.38). Für das manuelle Anlegen weiß ich nicht, was ich unter Netzwerkschnittstelle eingeben soll. Oder liegt es an der ModelNo JK29LP.
Am liebsten wäre es mir, es direkt unter .rules und -things einzutragen.
Ich bin dankbar für jede Unterstützung.
Hey,
ich lasse die anderen Kommentare mal weg.
Hast Du libpcap bzw. WinPcap installiert und läuft es?
Windows = Windows + R => msinfo32 => Softwareumgebung => Systemtreiber => läuft NPF?
Raspberry => ldconfig -p | grep libpcap => bekommst Du ein Ergebnis?
Versuche auch bitte mal die Stable 2.1. Bei mir läuft es auf dem RPi ohne Probleme.
Beste Grüße
Thomas
Danke, läuft jetzt.
Netzwerkschnittstelle wird angezeigt, AddManually funktioniert und press wird in rules erkannt.
Jetzt würde ich gerne die Definition in .things vornehmen:
amazondashbutton:dashbutton:1…7 [pcapNetworkInterfaceName=“\Device\NPF_{3…E} (Marvell Yukon Ethernet Controller, fe80:0:0:0:e…2, 192.168.178.31)“, macAddress=“1…7″, packetInterval=5000] {
Channels:
Type button : press
}
bekomme darauf jedoch den Fehler:
[WARN ] [el.core.internal.ModelRepositoryImpl] – Configuration model ‚_DB.things‘ has errors, therefore ignoring it: [3,71]: Number expected.
[3,68]: mismatched character ‚D‘ expecting set null
[3,76]: mismatched input ‚\‘ expecting ‚]‘
[3,77]: no viable alternative at input ‚NPF_‘
[3,82]: no viable alternative at input ‚3…E‘
[3,154]: missing EOF at ‚,‘
[3,230]: mismatched character “ expecting ‚“‚
Als pcapNetworkInterfaceName habe ich den Begriff aus Netzwerkschnittstelle übernommen (… = gelöschte Zeichen).
[…] Smart Home – openHAB 2 Dash Button […]
Hallo zusammen,
ich habe mir einen Amazon-Dashbutton bestellt um damit über OpenHAB2 mein Licht zu schalten. Leider bekomme ich ihn seitdem nicht in mein OpenHAB eingebunden.
Zu den Fakten:
– ich habe den Button mit der Versionsnummer jk29lp
– Als erstes habe ich libpcap auf meinem Raspberry Pi installiert:
sudo apt-get install libpcap-dev
sudo setcap cap_net_raw,cap_net_admin=eip $(realpath /usr/bin/java)
sudo getcap $(realpath /usr/bin/java)
sudo setcap ‚cap_net_raw,cap_net_admin=+eip cap_net_bind_service=+ep‘ $(realpath /usr/bin/java)
– Dann habe ich in der Paper UI das Amazon Dash Button Binding installiert
– Dann habe ich nach neuen Things gesucht, habe dabei so oft wie möglich den Dash Button gedrückt und nix gefunden. Auch über das Network Binding wird er nicht gefunden. Ich sehe ihn aber in meiner Fritzbox.
Frage: Habe ich etwas vergessen oder falsch gemacht?
Vielen Dank,
Jan
Hey Jan,
openHAB und Dash Button sind im gleichen Netz, d.h. können miteinander kommunizieren? Hast du mal ein Reboot vom Pi gemacht?
Beste Grüße
Thomas
Hi Thomas,
ja, sind im selben Netz und ja, mehrfach rebootet. Alles ohne Erfolg. :-/
Hallo,
vielen Dank! Wirklich geniale Anleitung. Ich habe es soweit hinbekommen, dass ich mein Hue-Lichtband ANschalten kann. Das „AUSschalten“ geht leider auf die Bretter.
Den einzigen (vielleicht entscheidenden?) Unterschied sehe ich darin, dass ich in meiner .rules Datei das ITEM direkt verwende.
Konkret:
rule „Dash button pressed“
when
Channel „amazondashbutton:dashbutton:xx-xx-xx-xx-xx-xx:press“ triggered
then
if ( hue_0210_XXXXXXXXXX_4_color.state.toString == „ON“) {
hue_0210_XXXXXXXXXX_4_color.sendCommand(OFF)
} else {
hue_0210_XXXXXXXXXX_4_color.sendCommand(ON)
}
end
… wobei „hue_0210_XXXXXXXXXX_4_color“ das ITEM ist.
Woran kann es noch liegen, dass die Lampe an- aber nicht ausgeht?
Wäre klasse wenn jemand meinen Fehler findet ;-).
Gruß
Tom
PS: meine Installation ist ein Raspi 1 mit Openhabian 2.2. Als Editor verwende ich einfach nano
Hallo Tom,
welchen Kanal hast Du hinter dem Hue Item. xxx:xxx:xxx:xxx:color_temperature oder xxx:xxx:xxx:xxx:color?
Grüße
Thomas
Oben im Artikel steht, dass es aktuell Probleme mit den Dash-Buttons gibt. Ist das noch aktuell? (aus dem langen github-Issue werde ich nicht schlau…)
Hallo Björn,
kann ich nicht sagen, ich habe es tatsächlich mit der manuellen Anlage eines Thing für den Dash Button hinbekommen.
Mir fehlt leider aktuell die Zeit den Artikel zu überarbeiten. Jahresendralley. :-/
Vielleicht weiß ein anderer Leser etwas?
Beste Grüße
Thomas
Bei mir hat es in eine neuen Installation wieder problemlos funktioniert..
Hallo Christian,
lange nichts gelesen voneinander. Muss ich demnächst testen.
Herzlichen Dank für die Rückmeldung.
Thomas