A Sonoff TH Origin első ránézésre egy hagyományos Wi-Fi-s okosrelé, amely külső hőmérséklet- és páratartalom-érzékelőkkel is használható. A gyári firmware azonban csak a lehetőségek egy részét aknázza ki.
Ebben a cikkben megmutatjuk, hogyan alakítható át az eszköz ESPHome firmware-rel, hogyan használhatunk hozzá több DS18B20 hőmérséklet-érzékelőt, és miként integrálható közvetlenül a Home Assistant rendszerébe.
A bemutatott megoldás nem csupán elméleti példa: saját rendszerünkben jelenleg is működik, ahol öt különálló hőmérséklet-érzékelő adatait gyűjti, és a medence szivattyújának kapcsolásában is részt vesz.
Mit tud a Sonoff TH Origin?
A Sonoff TH Origin egy ESP32-alapú, Wi-Fi-kapcsolattal rendelkező intelligens kapcsoló. Külső érzékelő csatlakoztatásával hőmérséklet, páratartalom vagy talajnedvesség alapján is vezérelhetünk vele különböző berendezéseket.
Gyári állapotban az eWeLink alkalmazáson keresztül konfigurálható, de számunkra sokkal érdekesebb, hogy a hardver egyedi firmware-rel is használható.
Az ESPHome segítségével közvetlen Home Assistant-integrációt kapunk, saját érzékelőket definiálhatunk, módosíthatjuk a relé működését, és további diagnosztikai információkat is elérhetünk.
Műszaki specifikációk
| Tulajdonság | THR316 / THR320 |
|---|---|
| Tápellátás | 100–240 V AC, 50/60 Hz |
| Maximális névleges terhelés | THR316: 16 A / THR320: 20 A |
| Mikrovezérlő | ESP32 |
| Vezeték nélküli kapcsolat | 2,4 GHz Wi-Fi (802.11 b/g/n) |
| Méret | 98 × 54 × 27,5 mm |
| Érzékelőcsatlakozó | RJ9, 4P4C |
| Külső érzékelők | THS01, DS18B20, MS01 |
| Rögzítés | DIN-sínes adapterrel is lehetséges |
Fontos, hogy az itt bemutatott TH Origin (THR316 / THR320) modelleket ne keverjük össze a kijelzővel szerelt TH Elite változatokkal.
A 16 és 20 amperes névleges érték nem jelenti automatikusan, hogy bármilyen ekkora áramfelvételű villanymotor közvetlenül kapcsolható a relével. Induktív terheléseknél a motor indítási árama, a kapcsolási igénybevétel és a megfelelő villamos védelem külön ellenőrzést igényel.








Gyári érzékelők és kiegészítők
A Sonoff többféle érzékelőt kínál az eszközhöz:
- THS01: hőmérséklet- és páratartalom-érzékelő.
- DS18B20 / WTS01: digitális hőmérséklet-érzékelő, vízhőmérséklet mérésére alkalmas kivitelben is.
- MS01: talajnedvesség-érzékelő.
- RL560: érzékelőhosszabbító kábel.
A gyári megoldások önmagukban is használhatók, de egyedi firmware-rel jóval rugalmasabban alakíthatjuk ki az érzékelők és a vezérlés működését.
RJ9-csatlakozó – több lehetőség, mint elsőre gondolnánk
A korábbi Sonoff TH modelleken alkalmazott jackcsatlakozót az újabb TH Origin sorozatban RJ9 (4P4C) csatlakozó váltotta fel.
Ez a csatlakozótípus például telefonkészülékek kézibeszélőinél is előfordul. Fontos, hogy nem azonos a nagyobb méretű RJ11-es telefoncsatlakozóval.
Az RJ9 különösen érdekes, mert a megfelelő lábkiosztás ismeretében nem feltétlenül kell kizárólag gyári érzékelőket használnunk.
RJ9-lábkiosztás
| Pin | Funkció |
|---|---|
| 1 | Érzékelő tápellátása – 3,3 V, GPIO27 |
| 2 | Érzékelő adatvezeték – GPIO25 |
| 3 | Nincs bekötve |
| 4 | GND |
A számozás az érintkezők felől nézett csatlakozóra vonatkozik, lefelé kilépő kábellel, balról jobbra haladva.
Figyelem: a vezetékek színe nem szabványos lábkiosztás. Saját kábel vagy csatlakozó készítésekor minden esetben ellenőrizzük a tényleges bekötést.
Ez a kialakítás lehetővé teszi, hogy megfelelő elektromos illesztés mellett saját érzékelőket is csatlakoztassunk az eszközhöz.

GPIO-kiosztás
A Sonoff TH Origin ESP32-alapú kialakításának köszönhetően az ESPHome segítségével a hardver több funkcióját közvetlenül vezérelhetjük.
| GPIO | Funkció |
|---|---|
| GPIO0 | Készülék nyomógombja |
| GPIO13 | Zöld állapotjelző LED |
| GPIO15 | Kék Wi-Fi LED |
| GPIO16 | Piros reléállapot-jelző LED |
| GPIO21 | Relé vezérlése |
| GPIO25 | Külső érzékelő adatvezetéke |
| GPIO27 | Külső érzékelő tápellátásának vezérlése |
A GPIO27 szerepére külön érdemes figyelni, mert ez az egyik legfontosabb eszközspecifikus részlet az egyedi firmware kialakításakor.
Firmware-csere – ESPHome telepítése
A gyári firmware lecserélésével a Sonoff TH Origin egy teljesen testreszabható ESPHome-eszközzé alakítható.
A készülék burkolatának eltávolítása után hozzáférhetővé válik az alaplap, valamint a soros programozáshoz szükséges csatlakozási pontok.
A firmware telepítéséhez megfelelő, 3,3 V-os logikai szinttel működő USB–soros adaptert használhatunk.
A soros firmware-programozás általános folyamatát korábbi cikkünkben már bemutattuk:
Hogyan flasheljünk ESP-alapú eszközöket?
Fontos biztonsági figyelmeztetés: a készülék 230 V-os hálózati feszültséggel működik. Szétszerelése és soros programozása kizárólag a hálózatról teljesen leválasztott, biztonságos állapotban történhet. A hálózati oldalt érintő munkát megfelelő szakképzettséggel rendelkező szakember végezze. A soros adapter használata közben a készülék semmiképpen nem lehet a hálózati tápfeszültséghez csatlakoztatva.

ESPHome-konfiguráció
Az ESPHome hivatalos eszközadatbázisában megtalálható a Sonoff THR316 hardverleírása és egy használható kiinduló konfiguráció.
Sonoff THR316 – ESPHome Devices
A saját konfigurációnkat ebből kiindulva, a medencevezérlési feladatunkhoz igazítva alakítottuk ki.
A megoldás öt különálló DS18B20 hőmérséklet-érzékelőt kezel ugyanazon az 1-Wire buszon, miközben a készülék reléje kapcsolási feladatot is ellát.
A konfiguráció tartalmazza a fizikai nyomógomb, a relé, az állapotjelző LED-ek, valamint a Wi-Fi-kapcsolattal és a rendszer működésével kapcsolatos diagnosztikai entitások kezelését is.
ESPHome Konfiguráció
esphome:
name: "sonoff-thr316--pool"
friendly_name: "Sonoff THR316 - Pool"
esp32:
board: nodemcu-32s
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Sonoff--Pool"
password: "fallbackpassword"
captive_portal:
logger:
# level: INFO
baud_rate: 0
api:
encryption:
key: "SUPERSECRET"
ota:
- platform: esphome
password: "SUPERSECRET"
#web_server:
# port: 80
# IF DALLAS:
one_wire:
- platform: gpio
pin: GPIO25
binary_sensor:
- platform: gpio
pin:
number: GPIO0
inverted: true
mode: INPUT_PULLUP
name: "Sonoff TH16 Button"
on_press:
- switch.toggle: relay
- platform: status
name: "Status"
switch:
- platform: gpio
name: "Sonoff TH16 Relay"
pin: GPIO21
id: relay
restore_mode: RESTORE_DEFAULT_OFF
on_turn_on:
- delay: 500ms
- light.turn_on: red_led
on_turn_off:
- delay: 500ms
- light.turn_off: red_led
# This is needed to power the external sensor.
# It receives 3v3 from this pin, which is pulled up on boot.
- platform: gpio
pin: GPIO27
id: sensor_power
restore_mode: ALWAYS_ON
sensor:
- platform: dallas_temp
address: 0xa83092d443ddb028 # Replace with the actual address of your DS18B20
name: "Temp-1"
id: temp1
filters:
- offset: 0.0 # Corection if multiple sensors are differs
- platform: dallas_temp
address: 0x825af3d443c92c28 # Replace with the actual address of your DS18B20
name: "Temp-2"
id: temp2
filters:
- offset: 0.0 # Corection if multiple sensors are differs
- platform: dallas_temp
address: 0xd64f1ad443943228 # Replace with the actual address of your DS18B20
name: "Temp-3"
id: temp3
filters:
- offset: 0.0 # Corection if multiple sensors are differs
- platform: dallas_temp
address: 0x9a15d8d443607228 # Replace with the actual address of your DS18B20
name: "Temp-4"
id: temp4
filters:
- offset: 0.0 # Corection if multiple sensors are differs
- platform: dallas_temp
address: 0x2f0248d443c51f28 # Replace with the actual address of your DS18B20
name: "Temp-5"
id: temp5
filters:
- offset: 0.0 # Corection if multiple sensors are differs
# IF DHT:
# - platform: dht
# model: Si7021
# pin: GPIO25
# humidity:
# name: "Sonoff TH16 Humidity"
# temperature:
# name: "Sonoff TH16 Temperature"
# update_interval: 15s
- platform: template
name: Internal Temp
device_class: temperature
unit_of_measurement: °C
id: esp32_temp
lambda: return temperatureRead();
- platform: wifi_signal
name: "Wifi RSSI"
update_interval: 300s
- platform: uptime
id: uptime_sensor
internal: True
on_raw_value:
then:
- text_sensor.template.publish:
id: uptime_human
state: !lambda |-
int seconds = round(id(uptime_sensor).raw_state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return (
(days ? to_string(days) + "d " : "") +
(hours ? to_string(hours) + "h " : "") +
(minutes ? to_string(minutes) + "m " : "") +
(to_string(seconds) + "s")
).c_str();
- platform: template
name: "Free Memory"
lambda: return ESP.getFreeHeap();
icon: "mdi:memory"
entity_category: diagnostic
state_class: measurement
unit_of_measurement: "b"
update_interval: 300s
text_sensor:
- platform: template
name: "Uptime"
id: uptime_human
icon: mdi:clock-start
- platform: wifi_info
ip_address:
name: "IP Address"
ssid:
name: "Wi-Fi SSID"
bssid:
name: "Wi-Fi BSSID"
- platform: version
name: "ESPHome Version"
time:
- platform: homeassistant
id: homeassistant_time
light:
- platform: status_led
name: "Wifi LED"
icon: "mdi:led-outline"
id: blue_led
pin:
number: GPIO15
inverted: true
- platform: status_led
name: "Switch LED"
icon: "mdi:led-outline"
id: red_led
pin:
number: GPIO16
inverted: true
- platform: status_led
name: "Status LED"
icon: "mdi:led-outline"
id: green_led
pin:
number: GPIO13
inverted: true
interval:
- interval: 30s
then:
if:
condition:
wifi.connected:
then:
- light.turn_on: blue_led
else:
- light.turn_off: blue_led
- interval: 30s
then:
if:
condition:
api.connected:
then:
- light.turn_on: green_led
else:
- light.turn_off: green_led
button:
- platform: factory_reset
name: "Restart with Factory Default Settings"
disabled_by_default: true
- platform: restart
name: "Device Restart"
Fontos részletek a konfigurációban
GPIO27 – a külső érzékelő tápellátása
Az egyik legfontosabb Sonoff TH Origin-specifikus részlet, hogy a külső érzékelő tápellátását a GPIO27 vezérli.
Az egyedi firmware-ben ezt megfelelően inicializálni kell, különben előfordulhat, hogy a csatlakoztatott érzékelők nem működnek.
A konfigurációnkban ezért a GPIO27 kimenetként szerepel, és induláskor aktív állapotba kerül.
Több DS18B20 egyetlen adatvezetéken
A DS18B20 digitális hőmérséklet-érzékelők egyik előnye az 1-Wire kommunikáció.
Ennek segítségével több érzékelő is csatlakozhat ugyanahhoz az adatvezetékhez. Minden érzékelő egyedi azonosítóval rendelkezik, így a rendszer külön-külön tudja kezelni őket.
Saját megvalósításunkban öt DS18B20 érzékelő működik egyetlen buszon, a GPIO25 adatvezetéket használva.
Az ESPHome-konfigurációban minden érzékelőt a saját címével definiálunk, ezért az adatok egyértelműen hozzárendelhetők az adott mérési ponthoz.
Több érzékelő és hosszabb vezetékek alkalmazásakor különösen fontos a megfelelő kábelezés, a stabil tápellátás és az 1-Wire busz helyes elektromos kialakítása.
DHT vagy DS18B20?
A konfigurációban a THS01-hez használható DHT-alapú megoldás is szerepel, kikommentelve.
A két érzékelőtípus eltérő ESPHome-komponenst használ, ezért a ténylegesen csatlakoztatott érzékelőnek megfelelő részt kell engedélyezni.
Saját medencevezérlő rendszerünkben a DS18B20-as megoldást használjuk.
Relévezérlés és állapotjelzés
A GPIO21 vezérli a készülék reléjét, míg a különböző LED-ek a relé, a Wi-Fi és a rendszer állapotáról adhatnak visszajelzést.
A konfigurációnkban a relé újraindításkor alapértelmezetten kikapcsolt állapotból indul. Ez fontos tudatos döntés, különösen olyan berendezéseknél, amelyek működtetését nem szeretnénk automatikusan folytatni egy újraindítás után.
A szükséges üzemállapotot azonban mindig a vezérelt berendezés teljes rendszerének biztonsági követelményei alapján kell meghatározni.
Diagnosztika és karbantartás
A konfigurációban nemcsak a működéshez szükséges entitásokat alakítottuk ki.
Elérhető például a Wi-Fi jelerőssége, a kapcsolat információi, az eszköz üzemideje és az ESPHome verziója is.
Ezek különösen hasznosak akkor, amikor egy beépített eszköz hosszabb ideje folyamatosan működik, és szeretnénk távolról ellenőrizni az állapotát.
Home Assistant-integráció
Az ESPHome egyik legnagyobb előnye a Home Assistant rendszerrel való közvetlen együttműködés.
A megfelelő firmware telepítése és a kapcsolat beállítása után az eszköz érzékelői, reléje és diagnosztikai adatai külön entitásokként jelenhetnek meg.
Így nem szükséges kizárólag a gyári alkalmazásra támaszkodnunk. A mért hőmérsékleteket megjeleníthetjük dashboardokon, naplózhatjuk a változásokat, vagy más érzékelők adataival együtt használhatjuk őket automatizációkban.
A relé kapcsolása ugyancsak a Home Assistant központi vezérlésének részévé válhat.

Valós felhasználás – medencefelügyelet és szivattyúkapcsolás
Nálunk a Sonoff TH Origin jelenleg is egy medencéhez kapcsolódó rendszer részeként működik.
Az eszköz öt különálló hőmérséklet-érzékelő mérési adatait gyűjti, miközben a medence szivattyújának kapcsolását is kiszolgálja.
Ennek a megoldásnak az egyik legfontosabb előnye, hogy egyetlen ESP32-alapú eszközzel több mérési pontot és egy kapcsolási funkciót is integrálhatunk az otthonautomatizálási rendszerbe.
A Home Assistantban így a hőmérsékleti adatok és a vezérlés közös felületen érhetők el, és szükség szerint további automatizációkhoz is felhasználhatók.
Ez jó példa arra, hogy egy viszonylag egyszerű, kedvező árú Wi-Fi-s reléből megfelelő firmware-rel és érzékelőkkel jóval összetettebb célfeladatra alkalmas eszköz alakítható ki.
Megéri lecserélni a gyári firmware-t?
Ha kizárólag egyetlen hőmérséklet alapján szeretnénk kapcsolni egy fogyasztót, a gyári Sonoff-megoldás is elegendő lehet.
Egyedi firmware akkor válik igazán érdekessé, ha több érzékelőt szeretnénk használni, fontos a saját automatizációs logika, vagy teljesebb Home Assistant-integrációra van szükségünk.
Az ESPHome lehetővé teszi, hogy az eszköz működését a saját feladathoz alakítsuk, és ne kizárólag a gyártó által előre kialakított funkciókból válasszunk.
Ugyanakkor a firmware-csere műszaki felkészültséget igényel, kockázatokkal jár, és befolyásolhatja a gyártói támogatást vagy garanciát.
Számunkra a Sonoff TH Origin egyik legnagyobb értéke éppen a testreszabhatóság: egy olyan hardver, amelynek lehetőségeit saját feladatainkhoz igazítva használhatjuk ki.
Biztonsági figyelmeztetés és felelősség
⚠️ FIGYELEM – VILLAMOS BIZTONSÁG
A hálózati feszültséggel működő eszközök helytelen bekötése, szétszerelése vagy módosítása áramütést, tüzet és anyagi kárt okozhat. A készülék megbontása és soros programozása kizárólag a hálózatról leválasztott, ellenőrzötten feszültségmentes állapotban történhet.
A villamos szerelési munkákat megfelelő szakképzettséggel rendelkező szakember végezze, a gyártói előírások és a hatályos biztonsági követelmények betartásával. Az egyedi firmware telepítése a gyártói garanciát is érintheti.
A cikk tájékoztató jellegű, saját tapasztalatokon alapuló műszaki ismertető, amely nem helyettesíti a gyártói dokumentációt, a szakszerű tervezést vagy kivitelezést. A bemutatott megoldások alkalmazása saját felelősségre történik. A szerző és a weboldal üzemeltetője a tartalom felhasználásából eredő károkért a jogszabályok által megengedett körben nem vállal felelősséget.