From what I can see, the protocol being used is not Zigbee or anything similar (like with outher lamps from NLG), but a proprietary one. It also doesn’t seem to be some “dumb” protocol like IR, where the ceiling light just listens to whatever floats around (at least that’s how I interpret the part in the manual that mentions a sort of “pairing” process):
Understand / reverse-engineer the signals / protocol (in my case only two for “brightness up” and “brightness down”, since that’s the only thing that’s needed)
Pair the ceiling lamp to openHAB (once)
Send the respective signals via openHAB (for “brightness up” and “brightness down”) when needed
With #5 I’m very familiar, but looking at a custom 433 MHz protocol I’m somewhat clueless on how to even approach the steps 1 - 4.
In this thread I read something about MiniCUL and FHEM, but I’m hesitant going down the FHEM-route but like to keep it simple.
And yes, I know that the fallback would be to open the remote and solder the Tx-signal pins of an ESP to the buttons of the remote.
I have lots of RF 433 mhz remote fobs around the house so I can control devices (even non RF devices)
I use the fob for example to open my blinds and the blinds are not RF they are wifi.
The main use is when the IR beam breaks at the front gate the RF doorbell rings.
This is what I use:
Note not all RF remotes will work. I had one that would not show up on the RF receiver.
Then you need to convert the RF signals so they can be transmitted. You use a program called bit bucket converter python script.
I did it years ago so it is all a bit hazy of the exact process.
Then I have a rule that says if the sonoff gets a RF then turn on something.
I just have in the rule a case statement as I have lots of things that can be run.
Here is example of the rule:
configuration: {}
triggers:
- id: "1"
configuration:
itemName: Portischbridge_Portischreceiveddata
type: core.ItemStateUpdateTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
type: application/javascript
script: >
var TOPIC = "";
var PAYLOAD = "";
var rfinput = items.getItem("Portischbridge_Portischreceiveddata").state;
switch(rfinput) {
/* case "2F4481":
//gate opener has pulsetime setting so turns off by itself
var TOPIC = "cmnd/gateopener/POWER1";
var PAYLOAD = "ON";
console.log('Gate activated');
result = actions.Exec.executeCommandLine(time.Duration.ofSeconds(5), "/usr/bin/mosquitto_pub","\-h","192.168.1.164","\-t","" + TOPIC,"\-m","" + PAYLOAD);
break; */
// I used else if as it seemed to work faster than all if statements
case '53D80A':
var TOPIC = "jedwood/raw/frontdoor-sensor";
var PAYLOAD = "ON";
console.log('Front door opened');
break;
case '53D80E':
var TOPIC = "jedwood/raw/frontdoor-sensor";
var PAYLOAD = "OFF";
console.log('Front door closed');
break;
case '31E70A':
var TOPIC = "jedwood/raw/laundrydoor-sensor";
var PAYLOAD = "ON";
console.log('Laundry door opened');
break;
case '31E70E':
var TOPIC = "jedwood/raw/laundrydoor-sensor";
var PAYLOAD = "OFF";
console.log('Laundry door closed');
break;
case '135E0A':
var TOPIC = "jedwood/raw/window-west";
var PAYLOAD = "ON";
console.log('Window west opened');
break;
case '135E0E':
var TOPIC = "jedwood/raw/window-west";
var PAYLOAD = "OFF";
console.log('Window west closed');
break;
case '136C0A':
var TOPIC = "jedwood/raw/middledoor-sensor";
var PAYLOAD = "ON";
console.log('Door bedroom Greg opened');
break;
case '136C0E':
var TOPIC = "jedwood/raw/middledoor-sensor";
var PAYLOAD = "OFF";
console.log('Door bedroom Greg closed');
break;
case '13200A':
var TOPIC = "jedwood/raw/window-laundry";
var PAYLOAD = "ON";
console.log('Window laundry opened');
break;
case '13200E':
var TOPIC = "jedwood/raw/window-laundry";
var PAYLOAD = "OFF";
console.log('Window laundry closed');
break;
case '13220A':
var TOPIC = "jedwood/raw/window-east";
var PAYLOAD = "ON";
console.log('Window east opened');
break;
case '13220E':
var TOPIC = "jedwood/raw/window-east";
var PAYLOAD = "OFF";
console.log('Window east closed');
break;
}
//If not blank then send the command
if (TOPIC) {
result = actions.Exec.executeCommandLine(time.Duration.ofSeconds(5), "/usr/bin/mosquitto_pub","\-h","192.168.1.164","\-t","" + TOPIC,"\-m","" + PAYLOAD);
//console.log('The script ran the command ' + TOPIC);
}
//console.log('The script ran from bedroom RF bridge ' + rfinput + TOPIC);
type: script.ScriptAction
You have all the skills to be able to do this with TASMOTA
Its the cheaper option.
This is another option to just buy a device that works and install program on PI to control that has a webpage to easily configure.
Either way you will need to.
Pair the remote.
learn all the button presses and map each button to individual items.
I someone is going to use the remote Each item is a momentary item so you will need to expire it.
Use these items to update real items to keep the state the same in openHAB and on device.
You only need to create one thing to control and all 433 items just use rules to send different commands to it.