I am designing an IOT comprised of three separate modules, all in indoor with distance of no more than 10 meters between modules, the modules must communicate wirelessly with each other.
My request in this post is to get ideas and directions for the hardware I should use and what software techniques I should implement to achieve best power consumption performance.
The modules are:
A) MAIN MODULE containing service logic and communication capabilities, it will be connected to a wall socket so power saving is not an issue and depending on the location installed it will include WiFi or GSM capabilities. Only this module will communicate with the remote server (Firebase), other modules will communicate wirelessly with this module.
B) SENSORS MODULE including an Accelerometer and on/off input, potentially other sensors as well. This module will be using a battery, it will send data to the main module whenever such data changes (accelerometer moved, switch toggled, etc). it is desired that this module will respond to main module requests or send sensor’s data periodically.
C) RELAYS module, also with a battery. The module will receive commands from the main module to open/close a relays.
There are no physical restrictions in this project and therefore selecting hardware should not be influenced by size or weight.
The system response is near real time, there should be minimal delays and the main module should transmit sensor’s data to Firebase as it happens.
The battery, preferably a standard one like AAA, AA or 9V, must hold at least one year so selected hardware and software design should support it.
Should I have a full functioning Arduino on each module or are there alternatives like sensors with some sort of communication capabilities?
Which hardware should I investigate?
For best power savings, what communication method should I use between the sub modules and the main module?
Is there a way to design the software to hibernate until it sees an event worth reporting?
And if yes, would communication event be such awakening event as well, so the sub module can reply to a request sent from the main module while it hibernates?
Thanks in advance for every tip!