-
Progress on the web app
05/16/2016 at 06:35 • 0 comments- Added multi-language support for the web application.
- Changed lamp icons to real lamps :-)
- Fixed some bugs.
This thing is under the test right now...
-
The thing almost fully finished
05/09/2016 at 08:19 • 0 commentsAs the title says, this system is amlost fully finished. Few things to finalize and we are ready for testing :-)
-
The Controller (Smart Controller)
03/30/2016 at 08:25 • 0 commentsIt is clear by now that this project will consist of three hardware components. One of them is the Smart Controller that communicates with Control Center via XBee DigiMesh network.
It would be great if this controller could control our custom designed LED driver, generic LED drivers and also existing light fixtures using the old-tech-bulbs.
Making a system that is compatible with all these drivers is a challenge, but since we are designing our own LED driver, we have an opportunity to make it compatible with other generic LED drivers that accept 0-10V PWM input for dimming. It is out of the question that any of those old mercury, metal-halide and sodium-vapor based bulbs can be dimmed (without any modifications to them, or even with) so we can make our Smart Controller turn these on/off and that's it.
The Controller has to measure power consumption, log it internally with RTC, and report back to the Control Center as soon as possible.
Switching the loads on/off can be acomplished with solid state relays.
Dimming is done with 10V PWM output where 10V is generated with a tiny on-board step-up converter.
RTC will have a backup battery, actually a 1.0F super-capacitor to keep the time runing when power is cut to the lamps in the morning (every morning). This power cutting must be detected by the microcontroller also, in order to save the power consumption with RTC stamp to EEPROM, and to be able to report this information back to the Control Center once power is restored!
Since we will be using XBee and their DigiMesh system, it *should* be easy to create a network of lamps which will distribute messages from any Smart Controller to the Control Center's XBee (Gateway).
It turns out that Lamp (street light) poles are some sort of magnets when it comes to traffic, and every now and then a car crashes into one. When this happens, the Smart Controller which is located in one of those poles will be broken/unpowered. Thanks to DigiMesh this means that adjacent poles can continue communicating with each other directly, skipping this broken XBee node. How cool is Mesh topology? The only thing left to do is proove that DigiMesh works with many many nodes on a single network.Anyone has any ideas about the limitations of DigiMesh? How many XBees can operate on a single network?
-
Designing the System
03/29/2016 at 14:23 • 0 commentsControlling lots of distributed remote devices can be a real pain. To make this easier, we decided to use Digi's XBEE modules with DigiMesh firmware. They are operating on free ISM band at 2.4 GHz. These modules are FCC certified which is a very important aspect. Also, they support encryption out of the box, so one thing less to think about. We have ~10 of these modules, and they work great. The only unknown parameter is how many of these can work on a single mesh network? We are hoping that the network can operate with at least two thousand of these modules. We asked Digi, but we didn't get any sensible reply from them. (They still contact us asking how many of modules we will need in our final project, to give us a quote :). Also, we still don't have any clue about the message propagation times, retries and lots of other things until the system is deployed for testing.
The application protocol is a simple key-value pair thing and travels in ASCII. This could be optimized if some custom binary protocol is used, but lets see how this idea works first (lots of other things to do now).
It should be possible to access the system online (think IoT), OR just locally (more secure). In order for these two options to happen, we need to implement the system in a distributed manner. So, we need a Server (on the internet, or in-house), one XBee connected to Raspberry PI which connects to the Server (in case Server is online) or that same XBee connected directly to th Server itself (local version). This Server will accept all messages arriving on XBee, store them to local database and give to clients on request. Nest, we need client application that connects to the Server.
Naturally, Server will be in NodeJS and Client should connect to the Server using Websockets for a realtime feeling.