For a long while, the Rolls of universal remote controls was the Pronto series, but Philips stopped manufacturing them about ten years ago. They had probably exhausted the pool of customers ready to pay one thousand dollars for a universal remote control. Today, the next generation is more or less ensured by Logitech's Harmony and NEEO. As NEEO provides an SDK, we wondered if we could use it to control Yoctopuce modules.
A bit of context
NEEO was financed early 2015 on Kickstarter. Their campaign allowed them to raise slightly more than one and a half million dollars for a universal remote control which promised a lot. Not only their campaign announced what you expect of a good universal remote control, such a user-friendliness and learning of infrared codes, but it also mentioned more original features such as remote localization with a smart phone, custom interface through recognizing the hand holding the remote, and so on...
While the campaign talked of availability in April 2015, the first units where delivered only two years later, in August 2017. However, the wait was worth it, even without many of the promised advanced features and a firmware more than perfectible, the remote control about worked. Even until recently, there were very few doubts about this NEEO remote control: it is convenient, the hardware is obviously well developed, and software issues are made to be solved, even if it takes some time.
The NEEO remote control and its brain
The NEEO system is a remote control with a few physical buttons and an excellent quality capacitive touch screen, and a small computer, the Brain which takes care of the computations.
The brain is based on an Allwinner A20
You can configure the system with an application available for free on Google Play and Apple Store. In terms of simplicity of configuration, NEEO didn't lie, you enter the model of a device that you want to control, the application retrieves the corresponding configuration on NEEO's servers, and hop! it's ready for use.
NEEO also provides an SDK in node.js, which enables you mostly to create drivers for devices which you can drive by IP. Thanks to the YoctoHubs, it is very easy to create IP-driven devices with Yoctopuce modules. So we decided to try to write this driver and it works...
The NEEO driver for Yoctopuce
The driver that we wrote can control relays, servo-motors, as well as 0-10V, 4-20mA, and PWM outputs. It can also display the value of any Yoctopuce sensor. To use it, you need a computer connected to the same IP network as the NEEO Brain. No, you can't run the driver directly on the Brain. We asked why to NEEO support, but we never got an answer.
Make sure that Node.js and npm are installed on the machine you selected, the OS isn't very important: we tested it on Windows and Linux, it works.
Download the driver from GitHub, copy the few files in the directory of your choice and type in the same directory the following command:
Npm automatically downloads and installs the NEEO and Yoctopuce libraries required for the driver to work properly.
When the installation is done, you can run the driver by typing:
The driver discovers on its own the NEEO Brain and the YoctoHubs on the network, and it creates the corresponding inputs for compatible modules. If for one reason or another, the driver can't discover the hubs or the brain, you can hardcode their IP addresses at the beginning of the driver code.
As soon as the driver has discovered the first modules, you can add them to the remote control by adding a new device in the NEEO application. Simply look for "Yoctopuce" when the application asks you for the model name to be added, and all the discovered modules are proposed. As the driver is purely local, it doesn't use NEEO's servers and you can therefore install it even if NEEO's server are unreachable.
Adding Yoctopuce modules (we don't know why the LG TVs appear as well)
In fact, the driver creates accessories, which means that you need to add them manually in the "shortcuts" panel of the "rooms" in which you want to use them.
Tadaaa! (yes, the print is tiny and in all caps, but we can't change that)
The sensors are displayed as character strings with name + value + unit, the relays as buttons, and the other actuators are displayed as cursors. Default names are in fact the logical names of the involved function, more exactly the string returned by get_friendlyName().
We prepared a little demo for you that features
- An electric enclosure containing a YoctoHub-Wireless-SR, a Yocto-PowerRelay-V3, a Mini-Battery-Supervisor, and an AC/DC converter to power the hub,
- A YoctoHub-Ethernet connected to a Yocto-0-10V-Tx which controls a led driver (Mean Well LCM-60) connected to some lighting (LUMILEDS L218),
- A Yocto-Light-V3 connected to the above-mentioned YoctoHub-Ethernet and which measures the surrounding light,
- A Raspberry-Pi 3B+ equipped with a PoE hat to run the driver. The advantage of the PoE hat is that you can connect the Raspberry in a corner of the network without having to think about its power supply.
The NEEO system leaves the user with almost no latitude in terms of graphic design, so the driver interface is a little rough on the formwork, but it works:
Conclusion: all this for that
When we decided to develop this driver, we knew that it would interest only people in the intersection between NEEO customers and Yoctopuce customers, that is to say only a handful of people. But we thought that it could give ideas to others. But there we are, last week NEEO announced its acquisition by the Control4 company, with the following consequences:
- As Control4 doesn't sell to individuals, the NEEO remote control is not marketed any more.
- Apart from critical fixes, the remote control firmware won't evolve any more.
- The existing infrastructure (including NEEO's servers) will stay active and usable during two years starting from the date of the acquisition by Control4.
The least that we can say is that the NEEO community was not especially thrilled by this announcement, which was however presented as an extraordinarily positive event. Everyone understands very well the consequences of such a change:
- Many features promised during the Kickstarter campaign, and which were not yet implemented, such as IR code learning, will never be implemented.
- You won't be able to replace a remote control that breaks down.
- When NEEO's servers are stopped, you won't be able to add new devices to the remote controls.
- If it is not maintained, the NEEO application, which is required to configure the system, is going to disappear in the medium term. Google makes a habit to regularly change Google Play rules and to dispose of applications which don't respect the new rules. A means like any other to clean up, but without pity for orphan applications.
In short, NEEO deliberately decided to sink a promising product which it had built with the help of its own community of customers, customers which feel cheated today. For our part, all the development work around the NEEO driver for Yoctopuce modules goes down the drain, but we thought that as it was already written, we could as well publish it. On a personal level, I just hope that this sordid story will meet the Nest Revolv and the Zano drone in the Cautionary Tales Hall of Fame about objects which require third-party servers to operate.