Ugrás a tartalomhoz

Sonoff TH Origin THR316 / THR320

Sonoff TH Origin okosrelé hőmérséklet-érzékelőkkel, medence és Home Assistant kezelőfelület előtt
Sonoff TH Origin (THR316 / THR320) – ESPHome-alapú hőmérséklet-felügyelet és medencevezérlés Home Assistant rendszerrel. Illusztráció.

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ágTHR316 / THR320
Tápellátás100–240 V AC, 50/60 Hz
Maximális névleges terhelésTHR316: 16 A / THR320: 20 A
MikrovezérlőESP32
Vezeték nélküli kapcsolat2,4 GHz Wi-Fi (802.11 b/g/n)
Méret98 × 54 × 27,5 mm
ÉrzékelőcsatlakozóRJ9, 4P4C
Külső érzékelőkTHS01, DS18B20, MS01
RögzítésDIN-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

PinFunkció
1Érzékelő tápellátása – 3,3 V, GPIO27
2Érzékelő adatvezeték – GPIO25
3Nincs bekötve
4GND

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.

GPIOFunkció
GPIO0Készülék nyomógombja
GPIO13Zöld állapotjelző LED
GPIO15Kék Wi-Fi LED
GPIO16Piros reléállapot-jelző LED
GPIO21Relé vezérlése
GPIO25Külső érzékelő adatvezetéke
GPIO27Kü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.



    Cookie-k használata

    Ez a weboldal cookie-kat használ a felhasználói élmény javítása érdekében. Az "Elfogadom" gombra kattintva hozzájárulsz ezek használatához.