hortinstein / node-dash-button

A small module to emit events when an Amazon Dash Button is pressed
949 stars 94 forks source link

Not detecting dash button press on OSX #26

Open ifuyivara opened 8 years ago

ifuyivara commented 8 years ago

I have followed the instructions to setup the button (it blinks white now, indicating it connects to the wifi network)

But the dash hardware access is not detected when running sudo node bin/findbutton - Other hardware is indeed detected on the network.

I'm trying this with a brand new dash button

hortinstein commented 8 years ago

did you set it up according to the instructions when setting up the dash (but not selecting a product) and can you verify it is connecting to your network?

On Wed, Apr 20, 2016 at 2:51 PM, Ivan Fuyivara notifications@github.com wrote:

I have followed the instructions to setup the button (it blinks white now, indicating it connects to the wifi network)

But the dash hardware access is not detected when running sudo node bin/findbutton - Other hardware is indeed detected on the network.

I'm trying this with a brand new dash button

— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub https://github.com/hortinstein/node-dash-button/issues/26

ifuyivara commented 8 years ago

Yes I set it up as in the instructions and is in deed connecting to my network. I suspect it may have something to do with the wireless network I'm using (work network) - They may have deactivated the ARP probe for security reasons. I'm going to try this at home tonight and see if this is the problem

hortinstein commented 8 years ago

ok cool, let me know what you find out. building anything cool? On Apr 20, 2016 6:43 PM, "Ivan Fuyivara" notifications@github.com wrote:

Yes I set it up as in the instructions and is in deed connecting to my network. I suspect it may have something to do with the wireless network I'm using (work network) - They may have deactivated the ARP probe for security reasons. I'm going to try this at home tonight and see if this is the problem

— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/hortinstein/node-dash-button/issues/26#issuecomment-212641352

czekaj commented 8 years ago

I'm also having trouble with detecting ARP probes from my new "All" Dash button on Raspberry Pi 3's built-in wlan. Maybe Amazon changed something in firmware of the more recent Dashes to not send ARPs anymore?

128keaton commented 8 years ago

I am having the same issue. If Amazon disabled this, I'm going to be really sad.

hortinstein commented 8 years ago

I am not sure...I dont think it would be possible for the dash to not send arps with the way wifi works...can you boot up wireshark and see any traffic?

robertvorthman commented 8 years ago

I have a Dash button I ordered in May and it still works so I don't think Amazon is blocking our Dash buttons.

128keaton commented 8 years ago

@robertvorthman thats great. does it work with this lib?

128keaton commented 8 years ago

Ok, update, I found the Mac with wireshark, however, it isn't ARPing, it seems. I can only find it if I'm NOT using the ARP filter.. odd, right? @hortinstein

robertvorthman commented 8 years ago

@128keaton Yes, my dash button works with this lib. Running on a Raspberry Pi 3 wired interface.

128keaton commented 8 years ago

@robertvorthman hmm, interesting. I'll have to retry on the Pi. I've been running everything from my mac right now. Thanks for the tip.

fantapop commented 8 years ago

I'm having issues as well. Running on my laptop. It looks like the dash is not sending the arp probe. I can still see it responding to arp who-has requests. I'm not sure if those are consistent yet or not.

robertvorthman commented 8 years ago

According to a 2016-07-07 update on this instructable there is a new dash button model, which may impact network detection.

Regardless, comments on that link are saying the new button still works. Furthermore, Dash buttons are now only $0.99 cents.

Update 7/7/2016: I've discovered that Amazon now has 2 models of Dash Buttons. The original JK76PL and the new and "improved" JK29LP. Unfortunately, my program DOES NOT work reliably with the new JK29LP. The new button stays on for a much shorter time and thus my program does not catch/see it reliably. Until I can get this fixed, I cannot recommend purchasing new Dash buttons for use with my program.

The instructable seems to use network pings instead of ARP requests to detect the button, according to my cursory inspection of the github code, so if I understand this node-dash-button implementation correctly, the ARP detection would still be reliable even if the button's Wi-Fi antenna is on for a shorter period of time.

128keaton commented 8 years ago

@robertvorthman I saw that. Too bad I'm Mac/Linux. However, I cannot get any ARP requests, whatsoever.

cvocvo commented 8 years ago

Can confirm new buttons (I tested 12 of them) are not sending ARP requests. I also have two "Clorox" dash buttons that are of the older JK76PL model that don't appear to be sending ARP requests. I've got 6 of the older JK76PL model that are sending pulses ARP requests.

128keaton commented 8 years ago

@cvocvo perfect. More data :). Also, did you typo?

robertvorthman commented 8 years ago

The new buttons work for me. I ordered some dash buttons on Monday, four arrived Wednesday and two are the new version (JK29LP), two old (JK76PL). The new buttons are detected much faster, an average of 6 seconds, sometimes under 3 seconds. The old buttons are much more inconsistent, sometimes 5 seconds, usually over 10 seconds, and maybe a minute or not detected at all.

I did 30 stop watch tests and I'm finding old Dash buttons to be unreliable. I was waiting at least a minute or two between button presses, but maybe that was not long enough, and the reason for the inconsistencies, I'm not sure.

Sometimes the old buttons are detected a second time, exactly 45 seconds after the first detection with the button only pressed once. All the buttons seem to have their own personality. My "Burt's Bees" button is a champ, always fast and reliable. The "Snuggle" and "Carefree" buttons are the only ones that cause an additional detection.

Here is my stopwatch data: https://docs.google.com/spreadsheets/d/1FNjIsJ21pCpnAuzMJ172uYEYhCk9pkzGe_XMZmPCxxw/edit?usp=sharing

krisdunlop commented 8 years ago

So, I'm new to this. I got the Mac Address. Where do I put the following, but with my info.

var dash_button = require('node-dash-button');
var dash = dash_button(["8f:3f:20:33:54:44","2e:3f:20:33:54:22"]); //address from step above
dash.on("detected", function (dash_id){
    if (dash_id === "8f:3f:20:33:54:44"){
        console.log("omg found");
    } else if (dash_id === "2e:3f:20:33:54:22"){
        console.log("found the other!");
    }
});
128keaton commented 8 years ago

@krisdunlop ok, whoops, not python... I can't think this late..sorry

make sure you have Node.JS installed first

krisdunlop commented 8 years ago

So it didn't work on the desktop, so I put it in the folder in the user bin. I'm getting this error. File "pulse.py", line 1 var dash_button = require('node-dash-button'); ^ SyntaxError: invalid syntax

robertvorthman commented 8 years ago

@krisdunlop Rename your file to a use a .js extension. node-dash-button is a node.js library. Node executes JavaScript, not Python.

The code you pasted is for multiple dash buttons. If you just have one dash button, your code should look like this:

var dash_button = require('node-dash-button');
var dash = dash_button("8f:3f:20:33:54:44"); //address from step above
dash.on("detected", function (){
    console.log("omg found");
});

Replace "8f:3f:20:33:54:44" with the MAC address of your button.

LongPotato commented 8 years ago

@128keaton Hi, you mentioned you found your new Dash button's Mac address with Wireshark. Can you show me how? What's the filter that you used. Thanks!

krisdunlop commented 8 years ago

What do I need to run now that I've done the above?

robertvorthman commented 8 years ago

@krisdunlop Your question is not clear. You might also consider creating a separate issue if your comments aren't related to the original post. Did you run the script I referenced in my previous comment by typing "node pulse.js" in the shell? That's all you need to do to start detecting dash button presses. If you get an error, you might need to try typing sudo first like "sudo node pulse.js".

krisdunlop commented 8 years ago

The previous comment by the other person was edited and so the node command wasn't clear like it was. That's what I was looking for. Thanks.

LongPotato commented 8 years ago

Ok, so I got it to work. Found the mac address, and successfully received the button pressed action.

However, in the terminal I keep getting the warnings:

node_pcap: EthernetFrame() - Don't know how to decode ethertype 34958

Also I notice multiple mac address appeared when I pressed the button, I had to manually add them into my code and test them out. This might related to this issue #32

mickdekkers commented 7 years ago

@robertvorthman I'm using a Raspberry Pi to detect the dash buttons and I'm also having reliability issues with the old ones (JK76PL). I have four old dash buttons and two new (JK29LP) ones. The new buttons seem to be detected fine in most cases, but the old buttons behave very unreliably, as you have said. Have you come up with any workarounds for dealing with the old dash buttons, or are you simply no longer using them? Also, would it be worth making a new issue on the repo for this?

robertvorthman commented 7 years ago

@SoullessWaffle I don't use the old buttons anymore.

kim3er commented 7 years ago

My button was initially picked up as an ARP request, but has since switched to UDP (firmware update?)

I've created a pull request that adds support for UDP.

Hope it helps anyone who is struggling with newer buttons. Let me know if you notice any problems with the implementation.