I have implemented a basic light controller for Livolo light switches using an ESP8266 running a web server and a library i found for the livolo switches that uses an RF433 transmitter.
i dont have any problem with the code as such.. (and i can post it if required) the web server listens for a request and then calls the function to send the rf433 signal (which takes around 2 seconds - as the livolo protocol is basically blast the same thing 100 times).
the problem is the web server/entire arduino/esp8266 'blocks' whilst it is sending the RF signal - for up to 2 seconds.
if i just have the web server listening, and say just writing out a string to the serial debugger, its lightning fast.. can hit it multipole times a second reposnsively.
normally this is OK, but the home automation system that sends the web requests I am working with doesn't wait round.. so if its sending say 10 requests in a row (turn off all lights), my little web server basically cant keep up as the esp8266 is busy doing the RF broadcast, it gets behind and then the system sending the requets stars getting socket errors.. i cant change the system that sends unfortunately.
i tried implementing as basic FIFO queue but essentially the same problem happens. I am wondering if it is better to implement two arudino's (esp8266) with a bus like i2c in between? the one web server can take requests and put them in to a queue, and the other one can lazily read the queue and do the RF sending...
i was wondering if any one has a suggestion on a) is this the right way to go? b) what bus should i use between hardware.. c) any example of a remote queue reading implementation?
any thoughts greatly appreciated.. i can share code re the web server etc if required but its pretty basic arudino esp8266 web server implementation, and thats not really where i am stuck.. i guess i am more interested in a code example that shows one piece of hardware reading the queue implemented on another if that makes sense?