I have been thinking about this, and I think this would be a good approach:
Extend current homduino plugin with NPM telnet-client support. Add a extra driver option:
{
"plugin": "homeduino",
"driver": "telnet",
"driverOptions":
{
"ip": "xxx.xxx.xxx.xxx",
"port": 23
},
"transmitterPin": 4
}
Extend all the RF devices with an extra optional transmitter parameter:
{
"id": "rfswitch",
"name": "RFSwitch",
"class": "HomeduinoRFSwitch",
"protocols": [{
"name": "switch1",
"options": {
"id": 42,
"unit": 0
},
"transmitter": "xxx.xxx.xxx.xxx:
}]
}
When loading homeduino it will read the telnet driver options. Every RF device that needs to be transmitted will be send to the IP adres/port in the plugin config.
When a RF device has the optional ‘transmitter’ paramter, that specific device will be send to that IP address.
This will give you the option to send all telnet traffic to a dedicated ESP. When needed you overrule some devices to be sent to a other ESP.
When talking from homeduino to ESP you could keep it really simple. Perhaps first a “ready?” <-> “ready!” exchange and after that the same payload as serial homeduino: “RF send transmitter_pin repeats buckets sequence” (so the pimatic part of the plugin will be telling the ESP what pin to use, could be overruled on ESP side).
Receiving of RF can be done by all the same ESP’s in the network, they can send the protocol info over the homeduino HTTP API, no need to contact over telnet.
(later pergaps some black and whitelisting on the ESP side to avoid multiple transmits for the same protocol detection).
Only downside for this way is loosing some wired sensors directly connected to the homeduino, but I guess that’s the same for the GPIO driver and no one would see this as a problem when playing with ESP’s.
I hvae looked on how the homeduino plugin is build, but (I repeat myself) it is way above my skills. I need someone to join this journey so we can build a entire RF to wifi network with multiple nodes.
Like my projects and help? Consider donating electroneum etnjwAKGPqF6omQWRmpp9u2BPyVDG9VuyRQjNJ1S8yfBdfR9qeUQ46kRy8KS2CNqbpNLRrsgmNW6F2TMzxmZgPrh6KctrkrYbm