@a.tibi For my home automation I use Esp2866 and Esp32 for most everything. I like the Arduino, but as mentioned, it has limits when communication is needed. One big difference you should consider, the Esp is a 3.3v device (12mA) and most relays for switching power are 5v. If you don’t mind soldering and making circuits, to accommodate, this won’t be an issue. There are other options for 3.3v and power switching such as using opto-isolators relays premade such as these. [https://www.amazon.com/dp/B01M0E6SQM/ref=sspa_dk_detail_3?psc=1&pd_rd_i=B01M0E6SQM&pf_rd_m=ATVPDKIKX0DER&pf_rd_p=f52e26da-1287-4616-824b-efc564ff75a4&pf_rd_r=9VX1H02K2CH7XFXRSY2B&pd_rd_wg=zmtkI&pf_rd_s=desktop-dp-sims&pf_rd_t=40701&pd_rd_w=BJhGu&pf_rd_i=desktop-dp-sims&pd_rd_r=137482de-b913-11e8-be59-db2f2d1fb2cc](https://www.amazon.com/dp/B01M0E6SQM
I have several and so far they work well. The Sonoff switches use the Esp8266 chip, they’re very popular with tasmota firmware installed, and you have an extra GPIO pin to work with.
When I consider brands it’s normally because of reliability and/or device location but I honestly couldn’t tell you the difference. I’ve never lost an Esp device and I have bought several brands and ordered from AliExpress (generic). If going the generic cheaper route, be aware documentation may be harder to find, but with a little testing it’s not hard to match pin number with GPIO. I also recommend starting with a development board over a single Esp chip.
For communication with OH, I use MQTT on all my Esp’s. There are lots of firmware options to choose from, I use Esp Easy and Tasmota, but I recommend reading up on all the popular firmware, and selecting what works best for you. If starting out new with mqtt I would pick just one, like Esp Easy, until you get the feel for how it works.
Here are a few of my OH items, both Sonoff and Esp, using mqtt.
Sonoff controlling living room light
Switch LivingRoom_Light "Living Room Light" <light> ["Lighting"]
{ mqtt=">[pibroker:cmnd/sonoff11/POWER:command:*:default],
<[pibroker:stat/sonoff11-3C0826/POWER:state:default]" }
Same Sonoff using gpio 14 with temp and humidity sensor.
Number LivingRoom_Light_Temp "Living Room Temp [%.1f °F]" <temperature> ["CurrentTemperature"]
{ mqtt="<[pibroker:tele/sonoff11/SENSOR:state:JSONPATH($.SI7021.Temperature)]" }
Number LivingRoom_Light_Humidity "Living Room Humidity [%.1f %%]" <humidity>
{ mqtt="<[pibroker:tele/sonoff11/SENSOR:state:JSONPATH($.SI7021.Humidity)]" }
Esp8266 used for both motion and light detection with a door switch to indicate when the if open.
Number Esp_Garage_Lightlevel "Garage Light Level [%d]" <light>
{ mqtt="<[pibroker:/Esp/Garage/LightLevel:state:default"}
Switch ESP_Easy_Door "Garage Door" <contact>
{ mqtt="<[pibroker:/Esp/Door/State:state:MAP(ONOFF.map)]" }
Switch Esp_Easy_Motion "Garage Motion" <contact>
{ mqtt="<[pibroker:/Esp/Motion/State:state:MAP(ONOFF.map)]" }
Here’s a snap shot of what the above looks like on BasicUI.
The question “when to use what device” is kinda up to you. I would write down everything you want to have in your home automation and from there. Like the example above, one Sonoff basic switch that controls my light and provides temp/humidity and one Esp8266 taking care of my garage (still have a few more things to add in the garage).
Best of Luck