The OneRing WiFi RGB Light came about out of a desire to automate electronic devices in my home. It started about a year ago installing Home Assistant (HA) on a Raspberry Pi 3. What attracted me to HA? Well there are a few thoughts... so hear me out.

I don't know about you, but I've been around since before the dawn of Internet and Cell Phones. When I was a child, our TV remote consisted of two small aluminum rods that were struck by hammers connected to the remote control buttons. When the button was pressed and the bar was struck, it oscillate at a precise ultrasonic frequency which the TV detected. One button incrementally controlled the channel selection 2, 3, 4...13, 2. We really only had about 3 or 4 active channels to watch, and they were received over-the-air (OTA). Channel 13 enable UHF and a dial on the TV to tune in a UHF station. The second button incrementally controlled the volume 0, 1, 2, ..., 9, 0. The TV turned off when you got around to '0'. The programmable remotes of today can control nearly any audio/video home device known to man, and incorporate more buttons than you know what to do with. Today we have cable TV and Internet services with an unlimited number of media channels to watch.

The telephones of yesterday were also quite different from our Cell Phones of today. First, our telephones were hung on a wall or set on a table which plugged in to the wall. The handset was tethered to the base with a 6 foot spiral cord... or possibly 25 feet where you could walk around with some freedom, like in the kitchen. Then came wireless handsets using Radio Frequencies (RF) to communicate to the base unit. Now you could step outside into the backyard... freedom! Obviously with today's cell phones you can make a call from anywhere in the world. It's kinda weird how leaving home without your cell phone feels like you've lost "Wilson"... "Never Again... Never Again!!!"
So my first thought about Home Assistant is that you can control nearly anything wirelessly from your cell phone anywhere in the world! This includes lighting, water sprinklers, air conditioner, stereo, television, alarm system, etc... it is endless. Nearly any commercially available Internet-of-Things (IOT) product has been integrated into Home Assistant by HA developers and the community. Take a look!!! Since HA is open-source software and I love to tinkerer with electronics, I can design and integrate my own WiFi things into HA. How cool is that!!!
Back in the days, I was rarely concerned with phone call or snail mail privacy. The only ones who could legitimately listen in to telephone conversations was a telephone operator or technician in line of duty. The only ones who could peak at our post office mail was the postman, and they could only read the address on the envelop or try to detect whats inside by shinning a bright light behind the envelope. One exception is the Federal Government who can do anything with a subpoena in hand! With our cell phones of today, however, we have freely and willingly given away every piece

of data on our phone in order to use Google Maps or other applications. Pictures, personal contact information, GPS location, access to camera or microphone, etc, etc, etc , are all up for grabs by Big Data collectors. It does not appear to bother anyone it seems. Just considered Alexa in the bedroom... "No Way Jose!" The next privacy invasion beyond the Cell Phone is well on its way... your home. If you buy an IOT device for the home, chances are cloud services are collecting your usage data. Even now, your visit to my website has been noted and you will find an add later to buy OneRing :-)
My second thought about Home Assistant is that its architecture was intentionally designed to allow local IP based controlled IOT devices. Every device in my home so far is locally controlled over my personal local WiFi network. The quantity and quality of open-source hardware and software projects accessible on Internet is amazing. People donate their hard work to the masses under share-ware licenses. Chances are someone besides you is already working on that new idea dreamed up in your sleep last night. Just search the Internet, and if you can't find it, then maybe you really do have a unique idea and better get started! So the cool part about Home Assistant is that you can maintain your privacy by incorporating devices controlled directly over your local home router
network without going to the cloud. How then do you get to your Raspberry Pi on remotely control things in hour home you might ask? If you know your routers public IP address provided by your Internet Service Provider (ISP), then you can get to your router. Then configure your router to port forward a particular port number to your Raspberry Pi HA server, such as XXX.XXX.XXX.XXX:YYYY where X is your routers public IP address and Y is the forwarded port number. The first problem is that you must learn your public IP address from router or computer in your home. The second problem is that the public IP given your router is not static, it can change. So here is where Home Assistant and a Dynamic Network Service (DNS) lookup web-service solves both problems. HA supports an integration with DuckDNS.org. The HA integration will periodically post your routers public IP address to DuckDNS.org for storage. If the DNS changes, the HA integration will re-post it to DuckDNS. DuckDNS then provides a personalized URL that forwards Internet requests to your home router. The router then forwards the requests appended with the port number you configured to the HA server. There you go, nothing but your IP address stored in the cloud and DuckDNS service is free!
Example URL: "uniquename.duckdns.org:7777"
I started HA integration using Sonoff ESP8266 based devices. A quick note here... Sonoff devices, if used as delivered, connects to cloud services most likely China. So, I started with Sonoff re-programmed with Tasmota open-source software. With Tasmota you can access Sonoff locally on your network or through the HA front-end interface.

After playing with Sonoff, I decided to make my own WiFi devices, and OneRing is one of them. I designed OneRing for lighting my kitchen counter tops. I double stick tape OneRing under the cabinets above the counter. The hardware is quite simple. The board was designed using EaglePCB and incorporates a D1Mini micro, ten 8mm RGB addressable LEDs and a small number of resistors, capacitors and diodes. The D1Mini operates off a USB wall module and uses no more that 600ma at full RGB brightness (white). The D1Mini regulates the USB 5.0 volts input to 3.3 volts to operate the micro. Since the WS2812 led's are 5 volt devices, a couple 1n4148 signal diodes and 4.7k ohm resistor translates the micro's 3.3 volts signal to the high and low logic levels required by the 5 volt LED. There are two buttons on the board. One of them will turn on/off the LED. At some point the second button will be configured to control the brightness through Home Assistance. HA can also be configure to automate turning lights on/off, setting colors, and brightness based on time of day or other events like pushing buttons. This can also be done manually through HA's front-end menu locally or remotely with a cell phone, computer or pad logged on to Internet.

EaglePCB provides a "User Language Program" (ULP) scripting capability permitting users to write and execute a sequence of commands from a file. EaglePCB comes installed with a bunch of very useful ULPs. I used the cmd-draw.ulp script to layout the LEDs and 0.1uf filter capacitors in a circular rotated fashion. It takes a number of tries to figure out the correct settings of the ULP variables. But once you have it, it does a really nice job laying out the parts. Something that would be nearly impossible to do by hand.
Tasmota open source software has made this project so easy. It literally takes me 10 minutes to upload the binary and configure OneRing on my HA network with Tasmota. Tasmota is configured as "Generic 18" for the D1Mini. Since WS2812W-F8 LED serial data must be shifted in GRB format, then the Tasmota console command "SetOption37 25" must be executed to for the LED color schema. It's a no-brainer once you have been through the process once or twice. So you've got to try this. If you are a tinkerer like me... get yourself a Raspberry Pi, configure it with HA, buy a few Sonoff devices, reprogram with Tasmota (or buy a OneRing), and start controlling your lights!!! It is so much fun!!!
Following are the procedures for installing and configuring Tasmota on OneRing (OneRIng comes with binary uploaded ready to connect to your WiFi network):
- Download tasmota.bin from here: https://thehackbox.org/tasmota/release/
- Download TasmotaPyFlasher.exe from here: https://github.com/tasmota/tasmota-pyflasher/releases/
- Plug in OneRing to Laptop USB port
- Execute tasmotapyflasher.exe. Set "Serial Port" to "Auto-select". Set "Tasmota firmware" to download tasmota.bin file. Set "Erase flash" to "Yes". Press Flash Tasmota. Wait, and you should see "Firmware successfully download" printed to console.
- Reset OneRing by unplug OneRing from USB, then plugging it back in.
- Open web browser then open WiFi Network Settings and find Tasmota_XXXXXX-XXXX SSID. Write the SSID name down.
- Connect to the Tasmota Wifi network. The web browser should automatically display Tasmota's WiFi settings page. If not, then enter "192.168.4.1" URL from the browser.
- The web browser should redirect to the Tasmota Wifi configuration service.
- Click on "Scan for wifi networks".
- Click on your home wifi SSID that shows up from the scan, which will place set the "AP1 SSiD()" parameter to your home network.
- Set the "AP1 Password" to your network password.
- Click "Save" and the Tasmota will disconnect, reboot and connect OneRing to your network with an IP address allocated by your home network router.
- Make sure your PC has reconnected to your home network router.
- Login to your router and determine in OneRing IP address. OneRing will have a device name same as the SSID you wrote down earlier.
- Enter the OneRing IP address in the web browser. A "Sonoff Basic Module" configuration screen will display.
- Click on "Configuration" then "Configure Module" then select "Module type" as "Generic 18" at bottom of list.
- Then click "Save". Tasmota will disconnect, reboot, then return displaying "Generic Module".
- Select "Configure Module" and set pins D5, D6 and D7 as shown below, then click "Save"

- Tasmota will disconnect, reboot and reconnect showing the new Generic configure with NeoPixel controls (see top of this post for example screen).
- Click on "Console" and enter command "SetOption37 25" to set the RBG LED color configuration of the WS2812D-F8 LEDs used in OneRing. Then enter command "Pixels 10" for the number LEDs on OneRing.
- Either OneRing button will turn on/off the LEDs. OneRing On/Off and Color/Hue settings can be controlled from the OneRing Tasmota web service.
- To integrate OneRing into Home Assistant you must configure HA and Tasmota for MQTT, then execute Tasmota Console Command "SetOption19 1" for HA to discover OneRing.
- OneRing Tasmota button operation can be modified and used in Home Assistant automations. Have fun !!!

Add new comment