Amazon Dash Button

Begonnen von gloob, 31 August 2016, 08:20:07

Vorheriges Thema - Nächstes Thema

betateilchen

Zitat von: gloob am 01 September 2016, 10:06:54
Dann bin ich ja mal gespannt, wie die ersten integrationen aussehen.

Hat schonmal jemand getestet, so einen Button einfach per bluetooth und presence auszuwerten? Im Auslieferungszustand ist das Ding doch völlig unkonfiguriert und muss zuerst per Bluetooth mit dem Handy verbunden werden. Also muss das Teil sich doch beim Druck auf den Button bereits per bluetooth zu erkennen geben.

Ok, mein Button ist heute auch angekommen. Schade dass am Wochenende schönes Wetter angesagt ist, da bleibt wenig Zeit zum Basteln.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

peterk_de

Zitat von: betateilchen am 01 September 2016, 10:40:38
Hat schonmal jemand getestet, so einen Button einfach per bluetooth und presence auszuwerten? Im Auslieferungszustand ist das Ding doch völlig unkonfiguriert und muss zuerst per Bluetooth mit dem Handy verbunden werden. Also muss das Teil sich doch beim Druck auf den Button bereits per bluetooth zu erkennen geben.

Fällt leider für normale kurze Betätigungen aus, da man um ihn in den Konfigurationsmodus zu versetzen den Taster 6 Sekunden gedrückt halten muss. Er macht dann übrigens sogar ein eigenes WLAN auf. Auf diese Weise könnte man also eventuell sogar nen Longpress realisieren ^^

Die in Deutschland ausgelieferten Buttons sind übrigens schon die 2. Revision, also diese hier: https://mpetroff.net/2016/07/new-amazon-dash-button-teardown-jk29lp/

Gepowert tatsächlich mit einer wechselbaren Alkaline 1,5V-AAA-Batterie, wenn man das Gehäuse erstmal auf hat. Der Typ hat ausgerechnet, ca. 500 Buttonbetätigungen reicht die Batterie.
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

peterk_de

Oha, dass wir in Deutschland diese neue Version haben, birgt offenbar gewisse Probleme:

https://github.com/hortinstein/node-dash-button/issues/37

Leute beobachten, dass sich das Ding sporadisch auch mal so ins WLAN einbucht, ohne Tastendruck. Muss man also mal beobachten. Hab jedenfalls noch nix (also keine Library) gefunden, die das herausfiltert, da auch in den USA der neue Button erst seit Ende Jui geliefert wird und sich die ganzen Hacking-Tutorials noch auf die erste Version beziehen.
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

Rince

ZitatNOTE: this triggers a notification on the amazon shopping app everytime a button that does not order a product is pressed.  This could be mitigated by blocking access to amazon's servers for those buttons but I just sign out of the amazon shopping app (I could set them back up using a fake account, but it's late).

So gesehen scheint es nicht dumm zu sein, die Teile nicht ins Internet zu lassen.

Blacklist?
Eigener Access Point ohne Routing ins Internet?



Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

peterk_de

Zitat von: Rince am 01 September 2016, 12:31:46
Blacklist?
Eigener Access Point ohne Routing ins Internet?

Kindersicherung in der Fritzbox ... mach ich sowieso für alles China-Equipment mit WLAN .. also IP-Cams, WLAN-LED-Dimmer etc.
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

JoWiemann

Das sieht auch ganz interessant aus: https://learn.adafruit.com/dash-hacking-bare-metal-stm32-programming/connections



Grüße Jörg

Gesendet von iPad mit Tapatalk
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Rince

Zitat
Das sieht auch ganz interessant aus: https://learn.adafruit.com/dash-hacking-bare-metal-stm32-programming/connections

Das ist die alte Version. Die neuen Buttons haben einen Atmel Kern.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

malted

So, ich hab es jetzt mal mit openwrt als Gateway zum Laufen gebracht.

Auf dem OpenWRT, an dem die Buttons hängen, startet man einfach das ohnehin vorhandene logread:

/sbin/logread -e ".* associated .*" -f -u -r 192.168.1.235 5555 -p /var/run/logread.1.pid

(Die IP-Adresse durch die Adresse vom FHEM-Server ersetzen.)
Das schickt die Einträge aus dem Syslog, auf die die Regexp passt, per UDP an den FHEM-Server.
Dauerhaft eintragen kann man es, wenn es funktioniert in der /etc/rc.local

Auf dem FHEM-Server habe ich dann einen Dummy angelegt.

define dash dummy

Und dann auf dem FHEM-Server das folgende Proxy-Script gestartet:


#!/usr/bin/perl -w
#
use strict;
use IO::Socket;
my($sock, $newmsg, $client, $fhem, $MAXLEN, $PORTNO);
$MAXLEN = 1024;
$PORTNO = 5555;
$sock = IO::Socket::INET->new(LocalPort => $PORTNO, Proto => 'udp')
    or die "socket: $@";
print "Awaiting UDP messages on port $PORTNO\n";
while ($sock->recv($newmsg, $MAXLEN)) {
     if (($newmsg) =~ /^.*hostapd:.*STA ([0-9a-f:]{17}).* associated/ ) {
         $client = $1;
        print "$client pressed\n";
                 my $fhem = IO::Socket::INET->new(PeerAddr => "localhost:7072");
                die "Can't connect to fhem\n" if(!$fhem);
                syswrite($fhem, "setreading dash $client pressed\n");
                shutdown($fhem, 1);
        }
        print $newmsg."\n";
}
die "recv: $!";


Ab wird unter dem Device Dash jeder Button anhand seiner Mac-Adresse als eigenes Reading geführt.
Sobald der Button sich im Wlan anmeldet (ab associated) wird ein setreading auf das Dummy gesetzt und der Zeitstempel aktualisiert.


peterk_de

#38
So und hier kommt die Variante mit FHEM-Bordmitteln:

Im Router fixe IP vergeben und ab gehts mit dem PRESENCE-Modul im Modus lan-ping 1 1

Ernsthaft, die Dinger reagieren auf Ping. Reaktionszeit liegt dann leider aber so bei 2-3 Sekunden, sollte für vieles reichen :-)

ach so das Presence modul dann noch mit event-on-change-reading versehen - dann klappts perfekt :)

Edit: Nee, leider doch nicht so ganz - funzt leider bei mir nicht sonderlich zuverlässig. Aber einen Versuch war es wert ...
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

Blackmore

Idee:

Mit nem ESP8266 nen AP aufmachen, mit Handy drauf connecten

Dash Button in den Config-Modus bringen und auf den ESP connecten lassen

Auf dem ESP ein ARP-Spoofing-Teil laufen lassen, der mitbekommt, das der Button gedrückt wurde

Den ESP als Client zum normalen WLAN connecten und Fhem bescheid geben, das der Button gedrückt wurde (alternativ kann man auch nem zweiten ESP an FHEM senden lassen)


malted

Zitat von: Blackmore am 02 September 2016, 21:12:04
Idee:

Mit nem ESP8266 nen AP aufmachen, mit Handy drauf connecten

Dash Button in den Config-Modus bringen und auf den ESP connecten lassen

Auf dem ESP ein ARP-Spoofing-Teil laufen lassen, der mitbekommt, das der Button gedrückt wurde

Den ESP als Client zum normalen WLAN connecten und Fhem bescheid geben, das der Button gedrückt wurde (alternativ kann man auch nem zweiten ESP an FHEM senden lassen)

Was genau ist der Vorteil dieser Lösung? Für mich scheint dieses Relaying komplex und wenig hilfreich. Der ESP switch dann dauernd zwischen hostap und client hin und her. Damit braucht man für jeden Button ein solches Relay? Ich steh auf dem Schlauch.

Blackmore

#41
Mit dem ESP halte ich den Dash Button in einem eigenen WLAN gefangen - man kann durchaus mehrere Buttons auf den ESP speichern...

Der ESP sieht per ARP-Spoofing, das einer der Buttons gedrückt wurde und sendet das an FHEM - wie auch immer, ob durch umschalten oder via serieller Console an nen zweiten ESP (oder direkt via USB)

Vielleicht nicht die beste Ausführung der Idee, aber vielleicht kann jemand was draus machen, das a) der Button vom Internet getrennt ist, und b) das Signal 'einfach' in FHEM reinkommt...

malted

Zitat von: Blackmore am 02 September 2016, 21:17:47
Mit dem ESP halte ich den Dash Button in einem eigenen WLAN gefangen - man kann durchaus mehrere Buttons auf den ESP speichern...

Der ESP sieht per ARP-Spoofing, das einer der Buttons gedrückt wurde und sendet das an FHEM - wie auch immer, ob durch umschalten oder via serieller Console an nen zweiten ESP (oder direkt via USB)

Dann ist das doch im Prinzip genau wie die Lösung oben, wo man einen openwrt für 10€ als Bridge-Adapter einsetzt? (bloss dass openwrt den accesspoint schon mitbringt und trivial per ethernet angebunden werden kann.)
 

Blackmore

Zitat von: malted am 02 September 2016, 21:21:15
Dann ist das doch im Prinzip genau wie die Lösung oben, wo man einen openwrt für 10€ als Bridge-Adapter einsetzt? (bloss dass openwrt den accesspoint schon mitbringt und trivial per ethernet angebunden werden kann.)


Grob ist es das gleiche, nur das der/die ESPs kleiner sind, ich noch einige zu Hause rumliegen hab, und evtl sogar weniger Strom benötigen ;)

malted

#44