Do you have interest to try OH2 together with MySensors Ethernet Gateway to get working?
I do not have enough force to push developers to make this happen. At the moment there is some problem on this, because full control is not possible. I think that MySensors Serial Gateway is working with OH2, but I don't like to use it. I like to connect my devices into LAN not cabling via old fashioned way using serial wires.
Use a latching relay. Here is one I found on Amazon. https://www.amazon.com/dp/B015MRQNXS/?coliid=I3LXTGKX4GEPUR&colid=31WWM91JAUE22&psc=1&ref_=lv_ov_lig_dp_it
If you are trying to use with existing 3 ways use https://www.amazon.com/dp/B015MSYQ8Q/?coliid=I3RP8X9OMYWU97&colid=31WWM91JAUE22&psc=1&ref_=lv_ov_lig_dp_it
Use an optocoupler to indicate lamp status...see the last diagram in this post. https://forum.arduino.cc/index.php?topic=435506.0
Oh, @msebbe @AWI , I have a FastLED version with a decent web API and web interface available here: http://forum.mysensors.org/topic/2705/fastled-neopixel-ws2811-node-from-arduino-code-to-web-page-with-api
It's working pretty damn well Still working on my front end interface, since I'm not a designer (well, I am a 3d cad designer, not web dev).
Oh, and if you knew my controller's name, you could communicate with it via TOR. Just like corporate solutions, I can communicate and control my gateway from anywhere in the world!
I built a trip wire for the post box that I'm connecting. It's however based on a mercury tilt sensor so I'm really not sure whether I think it's a great idea putting it to use (at least not with a sturdy case...). However, I can share my code:
#define DIGITAL_INPUT_SENSOR 2 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!)
#define INTERRUPT DIGITAL_INPUT_SENSOR-2 // Usually the interrupt = pin -2 (on uno/nano anyway)
MyMessage msgTripped(CHILD_ID_TRIPPED, V_TRIPPED);
void setup()
{
gw.sendSketchInfo("Postal", "1.0");
gw.present(CHILD_ID_TRIPPED, S_MOTION);
pinMode(DIGITAL_INPUT_SENSOR, INPUT); // sets the motion sensor digital pin as input
}
void loop()
{
boolean tripped = digitalRead(DIGITAL_INPUT_SENSOR) == LOW;
if(tripped) {
gw.send(msgTripped.set("1")); // Send tripped value to gw
}
gw.sleep(INTERRUPT,FALLING, SLEEP_TIME);
}