I want to send signals to a Phillips Hue Bulb from an Arduino Ethernet, but using only a local network. This means I plan to have a router with an Ethernet connection to both the Arduino and the Hue's bridge, but the router has no connection to the Internet. I read their API's page: http://developers.meethue.com/howhueworks.html and from that I think this could work, but I would like to be sure before buying a Hue kit. Anyone who owns one could assert this will indeed work?
Thanks!
Yes this will work :)
You only need internet to update the firmware of the bridge or if you want to control your lights from outside your own network.
You do need a way to find the ip address of your bridge though. So it's probably easiest to give your bridge a static ip or configure your router to always give the same ip to your bridge.
Related
I am wondering what is the best way to reveal all IP addresses to devices that are plugged into a switch, that is then plugged into an EdgeMax Router 4 by Ubiquiti. I attempted to use the nmap command on linux to reveal all devices behind 192.168.1.1/24, which is the address that the switch is plugged into, but only some devices came back. I was searching for the IP address of an OpenBMC device connected via the switch, but I couldn't find it.
The switch is a basic TP-Link gigabit 8 port switch (SG-1008D) and to my knowledge and research, it doesn't appear to have a web console or interface to reveal IPs there. And when I log into my EdgeMax Router 4, I only see devices at the router level.
I am not the most versed in networking knowledge, but I did a few things first to research. If anyone has any further suggestions on what else I could try, please let me know.
Only layer 3 switches have the ability to display the IP address of the devices directly connected to them. Your SG-1008D is just an unmanaged switch and it will not be able to display the MAC or the IP address of the devices connected to it. You will be able to identify the MAC and IP address of the devices connected to the switch by running network tools such as Angry IP Scanner or by looking into the connected devices list of the router. But that will not show you the ports where the devices are connected to in the switch.
I would like to connect the nodemcu to some LEDs, running a HTTP server (RESTful presumably) and turn on/off accordingly. However, how can the devices in the same network find the device? I guess I could try static IP for esp8266, but that is not guarantee to work every time everywhere. So how can I scan the network to find that, or is there any better solution?
I think most people use multicast DNS (mdns) for this, a quick Google should give you some examples for the environment you use :)
I like using MQTT, which is a different protocol that uses a central broker, but it's probably not quite what you want.
Also, why would a fixed IP not work? Most routers allow to assign one based on MAC address, which should work consistently.
And finally, you should be able to set a hostname for the ESP (wifi_station_set_hostname in the ESP SDK, which I think you can call from Arduino also), which should make it known with your router under that name.
I set my DHCP server to always give the same IP address to my NodeMCUs based on their MAC addresses. They are also configured with mDNS but I don't have mDNS on my Android phone so it didn't help me.
Basically I have an Arduino UNO that I have connected via Ethernet to my router. I have logged the IP with my server and I would like to push data to my arduino. I guess the flow of data would be to send data (not sure the best way? Should I just open up a port and stream the data?) to the router that then forwards it to my Arduino at a local address assigned by my router.
How can I tell the router to forward this information on without logging in and changing anything with the router. The point of this exercise is to do everything with code and not do any other activities like logging into the router and setting things up. I want to do this as I have my Arduino recording temperature and I want to push data to state if it should switch sending the data from degrees or Fahrenheit or visa versa.
I would use a socket server with a publish/subscribe pattern. Probably several out there but I know XSockets.NET best.
A few hours ago I actually connected my Arduino to XSockets and communicated between webpages and my arduino both ways.
I will put the code on github when I am done, but you can look at a video showing the concept here: The Stuff For You Starts At 3:20
You dont need to open any ports as long as your arduino and server is on the same local network. Since IP adresses maps all devices on a network including your arduino.
The reason you want to open ports on your router is to make people outside your local network access a server on your network. Reasons why port forwarding exists is that when someone sends a packet of data to your public IP (which is your router) it doesent know which local IP to send the packet to. It then discards it, unless you port forward a port to a local IP, which means your router sends all packets with that port to that local IP adress.
You also need to make your own server program, for example a java program to act as a server.
I made something similar to what you are looking for, but i use a wifi shield instead. I've had some problems with maintaining connections with it, but so far it seems that it's a problem with the wifi libary.
You still might learn something from it though:
Maintaining communication between Arduino and Java program
If you want to know more about how the java server works in general, here is a great tutorial which explains a lot of the basics:
http://www.thenewboston.org/watch.php?cat=25&number=38
What would be an example of how to set the Arduino to have a static IP address?
I am looking for a function similar to the statement below from the Ethernet Library.
Ethernet.begin(MACadr, IPaddr);
I using a Wi-Fi shield.
Sorry, this is not possible. The reference for this claim is here.
Basically, all the DHCP stuff (the code that assigns the dynamic IP address) is baked-in to the firmware for the WiFi shield, and this code is not open, so you cannot update it.
"WiFi.config() allows you to configure a static IP address as well as change the DNS, gateway, and subnet addresses on the WiFi shield."
You can read more about this here:
http://arduino.cc/en/Reference/WiFiConfig
What I did in my situation was to set a Reservation on my router for this MAC address. This makes the code simple. For some reason, the MAC address that my WiFi shield was supposed to use isn't what it actually uses. I was able to look at the DHCP table on the router and find the MAC address it was using and create a reservation and we are good to go...
Is it possible to determine programmatically what jack on a network switch a computer is connected to?
It's either possible or not possible, depending on the switch.
If it's a managed switch, you could query its management interface to determine the MAC addresses behind each port. Then you could match that up with the hardware address on the computer you're interested in.
Some switches have discovery protocols (such as CDP or LLDP) which will broadcast the port's identity to whichever devices are attached. You could sniff the network for these packets to determine the port your computer is connected to.
You can try disonnecting them one by one and each time testing if the network connection goes down.
To identify switch port connected to your pc ; you need to manually access the switch and remove ur rj-45 cable so you can visualize any port having state of disconnection.. dm gui can be used if switch is managable
cdp and lldp wont work for pc as it doesnt support it