Modding a BlissLights Sky Lite projector to control it from OH3

Tags: #<Tag:0x00007f4348de45f8> #<Tag:0x00007f4348de4530> #<Tag:0x00007f4348de4468>

I just completed a small project with tasmota and OH3 and I wanted to share it here. It is working Ok right now, but I need some advice to make it more user friendly.

The BlissLights Sky Lite laser star projector is a very cool ambient lighting device. It projects a moving image of stars and/or nebulas in the room ceiling. It is designed to be always plugged into a USB power brick, to be turned on using a push button, and it doesn’t remember it’s last state. It is therefore not HA friendly, and cannot be automated simply by plugging it into a smart plug.

I decided to mod it this way:

  1. Hardware. This part involves soldering 6 cables to the back of the main PCB. Two cables come from the push button opposite terminals (to bypass it), and 2 sets of 5V / GND power one Arduino Keyes Relay (3.3V compatible) and the Wemos D1 mini that controls it using a GPIO output. In the picture both the relay and the Wemos can be seen, hot glued to the case.

  1. Device firmware. I flashed Tasmota to the Wemos, configured the relay GPIO, Wifi and MQTT. This is documented in plenty of blogs.

  2. OH3 configuration. I used a tutorial that was posted here a couple of days ago, that explains how to create Things and items to integrate a device through MQTT using the new UI.

It works nicely for now (I can control the projector both with the physical button and through an Openhab switch), but I have an usability nuisance, and I need some advice:

The physical button as it is toggles between several scenes (OFF—ALL ON - ONLY STARS ON - ONLY NEBULA ON - OFF). To simulate a single scene change with a relay, I must toggle the Openhab switch TWICE (switch/relay ON + switch/relay OFF). The relay effectively ‘clicks’ twice as a consequence, but the device doesn’t react to the OFF transition.

For now, I have created a rule that toggles the switch on and then off, after a delay. And I start this rule when a Phillips hue switch button is double clicked. This works.

But I wonder if there’s a better way to simulate that behaviour (thinking of creating a single channel that sends two MQTT commands with a short delay in between). Note that I’m not concerned about keeping the scene state in OH3, since the device can be operated manually anyway to change scenes.

I would appreciate some pointer to the best way to do that under OH3.

Ok. I have found an elegant workaround for my usability problem.

Tasmota offers now a way to execute several commands (MQTT messages) at once. You have to publish to the relevant topic (/cmnd/my-device/backlog) something like: “POWER ON; Delay 2; POWER OFF”

In openhab, no off command for the channel is defined, and the item has an autoupdate=“false” attribute.

Problem solved.

I know that something like this was possible with the openhab MQTT1 implementation. Is this still not possible with OH3?

Hey Miguel,

unfortunatly I am new to all this stuff but want to do the same thing as you. Is there any way to just start all the lights and the motor without using the button and eg the aduino. Just connecting some pins.
Would be extremely nice if you could help.

cheers
Jonas

Hi. What is the expected behavior you want to get?

Some guys just soldered the BlissLights push button (so it is always pushed down), and that way, they just switch the device on/off with a standard smart plug. You can probably find the instructions somewhere (it was in youtube / reddit). This is simpler than what I did.

I wanted to preserve the ability to use the physical push buttons OR add oh3 integration.

BTW, this has been working flawlessly for months now. I was even two weeks out of town and forgot to unplug it. Was still alive when I came back.