TapHome

Shelly Sensor Add-On

Packet Parser → HTTP
Přidal
Poslední aktualizace: 04. 2026
Shelly Sensor Add-On

Shelly Sensor Add-On (prodávaný jako Shelly Plus Add-On) je galvanicky oddělená rozšiřující deska, která se nasadí na add-on konektor kompatibilního zařízení Shelly Plus, Gen3 nebo Gen4. Rozšiřuje hostitelské Shelly o sběrnici 1-Wire pro teplotu (DS18B20), digitální vstup (magnetický / suchý kontakt), analogový vstup (0–10 V / 0–100 %) a 0–10 V voltmetr. Add-on není samostatné Wi-Fi zařízení — čte se přes HTTP rozhraní hostitelského Shelly v lokální síti, takže TapHome cílí na IP adresu hostitele, nikoli na vlastní IP add-onu.

TapHome šablona vystavuje čtyři teplotní senzory DS18B20 (Component ID 100–103), jeden magnetický kontakt, jeden analogový vstup a jeden voltmetr. Všechny hodnoty se čtou přes standardní Shelly Gen2+ JSON-RPC API na portu 80 — cloudové připojení není potřeba.

Hardwarové připojení

Add-on dosedá na hostitelské Shelly přes proprietární sériový konektor a odebírá 3,3 V DC přímo z hostitele (spotřeba pod 0,5 W bez senzorů). Uživatelsky dostupné svorky jsou rozděleny do analogově/digitálního bloku a tří 1-Wire senzorových pozic.

Analogové a digitální svorky
  • ANALOG IN — analogový vstup 0–10 V (přesnost ±5 %, práh hlášení 1 %)
  • DIGITAL IN — vstup pro suchý kontakt / magnetický spínač (True: −15 V až 0,5 V, False: 2,5 V až 15 V)
  • VREF OUT — referenční napětí (max. 1 mA) pro napájení senzorů s potenciometrickým dělením
  • VREF+R1 OUT — referenční napětí s 10 kΩ pull-up odporem, určené pro děliče napětí s NTC a fotorezistorem
  • GND × 2 — zemnící vývody
Sběrnice 1-Wire

Tři třípólové skupiny (VCC, DATA, GND) sdílejí interní společnou 1-Wire datovou linku. Až 5 sond DS18B20 lze paralelně zapojit na společnou sběrnici; alternativně může sběrnici obsadit jediný senzor DHT22 (DHT22 při aktivním stavu blokuje OneWire sken). Celkový VCC výstup je omezen na 10 mA, což postačuje pro pět sond DS18B20.

Maximální průřez vodiče na všech svorkách je 1 mm² (17 AWG).

Nemíchejte DHT22 se sondami DS18B20 na jedné sběrnici. DHT22 blokuje enumeraci OneWire a hostitelské Shelly nedokáže během jeho připojení sběrnici znovu prohledat.

Konfigurace

Shelly Sensor Add-On nemá vlastní IP adresu. Při importu TapHome šablony zadej do parametru IpAddress IP adresu hostitelského Shelly (zařízení Plus / Gen3 / Gen4, na kterém je add-on nasazen) — výchozí je 192.168.0.1.

Veškerá komunikace probíhá přes Gen2+ JSON-RPC API po HTTP GET na portu 80. Jednou za poll cyklus šablona načte /rpc/Sys.GetStatus a /rpc/SensorAddon.GetPeripherals do interních cache proměnných a každý device skript se pak dotazuje na vlastní endpoint (Temperature.GetStatus, Input.GetStatus nebo Voltmeter.GetStatus).

Kompatibilní hostitelská zařízení

Add-on spolupracuje s následujícími Shelly zařízeními (ze seznamu kompatibility výrobce):

  • Shelly Plus: 1, 1PM, 1 UL, 1PM UL, 2PM, 2PM UL, i4, i4DC, 0-10 V Dimmer PM, RGBW PM
  • Shelly Gen3: 1, 1PM, 2PM, Shutter, i4, DALI Dimmer, Dimmer 0/1-10 V PM, EM
  • Shelly Gen4: 1, 1PM, 2PM

Firmware hostitelského Shelly musí vystavovat službu SensorAddon — starší vydání Plus firmwaru ji nemusí obsahovat. Aktualizuj hostitele na nejnovější firmware, pokud ve web UI chybí menu add-on.

Aktivace periferií Add-on

Add-on se konfiguruje jednorázově ve webovém rozhraní hostitelského Shelly — TapHome jej nenastavuje. Před importem šablony proveď tyto kroky:

  1. Nasaď add-on desku na add-on konektor hostitelského Shelly a zapni napájení hostitele.
  2. Otevři web UI hostitele na http://{host-ip}/ a přihlas se.
  3. Přejdi do Settings → Add-on a zaregistruj add-on (toto na pozadí volá Sys.SetConfig s device.addon_type = "sensor"). Restartuj hostitele, pokud si o to řekne.
  4. Otevři Settings → Components → Peripherals a klikni na tlačítko +.
  5. Vyber typ periferie — Temperature (DS18B20), Digital Input, Analog Input nebo Voltmeter.
  6. U DS18B20 klikni Rescan, zaškrtni každou nalezenou sondu a zvol Add and reboot. První sonda dostane Component ID 100, druhá 101 a tak dále.
  7. U Digital Input nastav Mode na Switch nebo Button (šablona z tohoto Componentu čte state).
  8. U Analog Input a Voltmeter jsou výchozí hodnoty v pořádku — relevantní jsou pouze název a delta práh.

TapHome šablona má napevno nastavená Component ID 100–103 pro DS18B20 a ID 100 pro magnetický kontakt, analogový vstup a voltmetr. Při přidávání periferií ve web UI Shelly ověř, že přiřazená ID odpovídají tomuto číslování — pokud periferii smažeš a znovu přidáš, Shelly přiřadí další volné ID, které může přesáhnout 103 a TapHome zařízení tiše přestane dostávat data.

Před odstraněním periferie si zaznamenej její Component ID. Pokud překládáš sondu DS18B20, použij raději akci Edit → Update address ve web UI — Component ID tak zůstane stejné.

Na hostitelském Shelly musí být vypnutá HTTP Digest Authentication — TapHome neposílá autentifikované požadavky. Nechej zařízení bez autentifikace nebo omez přístup na úrovni sítě.

Schopnosti zařízení

Šablona sdružuje sedm read-only senzorových zařízení pod jedním HTTP modulem, který cílí na hostitelské Shelly.

Teplotní sondy (DS18B20)

Vystaveny jsou čtyři OneWire teplotní sondy DS18B20, jedna na Component ID 100–103:

  • Temperature Sensor DS18B20 (100) — čte /rpc/Temperature.GetStatus?id=100tC (°C)
  • Temperature Sensor DS18B20 (101) — čte /rpc/Temperature.GetStatus?id=101tC
  • Temperature Sensor DS18B20 (102) — čte /rpc/Temperature.GetStatus?id=102tC
  • Temperature Sensor DS18B20 (103) — čte /rpc/Temperature.GetStatus?id=103tC

Každé zařízení má uživatelsky konfigurovatelnou vlastní proměnnou Id (výchozí hodnota odpovídá pozici). Interval čtení je 15 sekund na sondu. Web UI Shelly umožňuje doladit delta práh (0,1–5 °C) a offset (±50 °C) každé sondy pro kalibraci.

Magnetický kontakt (digitální vstup)

Reed Contact (100) čte /rpc/Input.GetStatus?id=100state (boolean). Ve web UI Shelly musí být vstup nakonfigurován jako Switch nebo Button (ne Analog ani Count). Interval čtení je 2,5 sekundy. Výchozí hodnota proměnné Id je 100.

Analogový vstup

Analog Input (100) čte /rpc/Input.GetStatus?id=100percent, dělí 100 tak, aby hodnota byla normalizována na zlomek 0,0–1,0, jaký TapHome pro analogové vstupy očekává. Vstup musí být ve web UI Shelly nakonfigurován jako Analog. Přesnost je ±5 %, práh hlášení 1 %. Interval čtení je 2,5 sekundy.

Pozor, magnetický kontakt a analogový vstup sdílejí Component ID 100 — hardware Shelly má na add-on pouze jeden digitální a jeden analogový vstup a aktivní režim určuje typ vstupu ve web UI (switch/button vs analog). V TapHome použij buď zařízení Reed Contact, nebo Analog Input, ne oba současně.

Voltmetr

Voltmeter (100) čte /rpc/Voltmeter.GetStatus?id=100voltage (V). Rozsah je 0–10 V s přesností ±5 % a prahem hlášení 0,1 V. Je modelován jako PacketParserVariable se schopností sensor — surové napětí se vystavuje jako skalární hodnota, nikoli jako samostatný typ voltmetru. Interval čtení je 15 sekund.

Další schopnosti

Shelly Sensor Add-On nativně podporuje i teplotně-vlhkostní senzor DHT22 (jedna sonda vytváří na hostiteli spárované Componenty temperature:100 a humidity:100). TapHome šablona zapojuje teplotu na všech čtyřech zařízeních DS18B20, ale má skript pro vlhkost napevno nastavený na NaN — vlhkost DHT22 proto není vystavena. Uživatelé, kteří potřebují vlhkost, mohou šablonu rozšířit o samostatný read skript na /rpc/Humidity.GetStatus?id=100.

Dvě další schopnosti existují na úrovni hardwaru/firmwaru, ale jsou mimo rozsah této šablony: pátý slot DS18B20 (sběrnice Shelly podporuje až pět sond; šablona čte pouze ID 100–103) a režim pulzního čítače na digitálním vstupu (counts.total, counts.by_minute, freq), který vyžaduje nakonfigurovat vstup jako type=count ve web UI Shelly. Obojí lze doplnit v budoucí aktualizaci šablony.

Řešení problémů

Hostitelské Shelly neodpovídá
  1. Ověř, že hostitelské Shelly je připojeno k Wi-Fi a má platnou IP adresu.
  2. Zkus použít mDNS hostname hostitele (např. shellyplus1pm-AABBCCDDEE.local) místo IP — IP se mohla po DHCP renew změnit. Add-on dědí hostname hostitele, vlastní nemá.
  3. Otevři v prohlížeči http://{host-ip}/rpc/Shelly.GetDeviceInfo — pokud odpoví JSONem, hostitel je dostupný.
  4. Ověř, že TapHome CCU a hostitelské Shelly jsou ve stejné síti / VLAN.
  5. Ujisti se, že je ve web UI Shelly vypnutá HTTP Digest Authentication.
Senzory nezobrazují data
  1. Otevři web UI Shelly → Components → Peripherals. Potvrď, že periferie je v seznamu s přesně tím Component ID, které šablona očekává (temperature:100103, input:100, voltmeter:100). Pokud je ID nad 103 nebo posunuté, přečísluj periferie tak, že je smažeš a znovu přidáš ve správném pořadí, nebo uprav šablonu, aby odpovídala tvým ID.
  2. U DS18B20: klikni Rescan v řádku periferie DS18B20 — adresa na sběrnici by se měla rozpoznat. Pokud se zobrazuje N/A, zkontroluj zapojení VCC/DATA/GND a 10 kΩ pull-up na DATA (některé generické DS18B20 desky jej neobsahují; Shelly jej poskytuje interně).
  3. Otestuj endpoint přímo: GET http://{host-ip}/rpc/Temperature.GetStatus?id=100. Odpověď by měla obsahovat nenulovou hodnotu tC.
  4. Restartuj hostitelské Shelly po přidání nebo odstranění periferií. Componenty se nemusí objevit až po restartu.
Analogový vstup čte nulu
  1. Potvrď, že type vstupu je ve web UI Shelly nastaven na analog (ne switch, button ani count). Šablona čte percent, který je naplněn pouze v analogovém režimu.
  2. Zkontroluj zapojení — zdroj 0–10 V musí být mezi ANALOG IN a GND. Pro senzory s potenciometrickým dělením (NTC, fotorezistor) použij VREF+R1 OUT (s vestavěným 10 kΩ pull-up) místo VREF OUT.
  3. Nezapomeň, že TapHome dostává hodnotu jako zlomek 0,0–1,0 (šablona dělí percent stem).
Chybí vlhkost DHT22

Jde o záměrné omezení šablony — skript readhumidity je napevno nastaven na NaN v každém slotu zařízení DS18B20. Hardware add-onu DHT22 podporuje, ale pro vystavení vlhkosti v TapHome je třeba šablonu rozšířit o samostatné zařízení, které čte /rpc/Humidity.GetStatus?id=100rh. DS18B20 a DHT22 nemohou koexistovat na stejné sběrnici — pokud přejdeš na DHT22, odpoj sondy DS18B20.

Pátá sonda DS18B20 není vidět

Šablona čte pouze ID 100–103. Pátá sonda registrovaná ve web UI Shelly jako temperature:104 na hostiteli existuje, ale TapHome ji nečte. Buď přesuň sondu, na které ti záleží, do některého slotu 100–103 (smaž a znovu přidej v pořadí), nebo rozšiř šablonu o páté zařízení, které cílí na id=104.

Jak nainstalovat v TapHome

Předpoklady

  • Zařízení Shelly nainstalované a zapnuté
  • Lokální Wi-Fi síť (2,4 GHz)
  • TapHome CCU ve stejné síti

Krok 1 — Připojte Shelly k Wi-Fi

Možnost A — Aplikace Shelly (doporučeno):

  1. Stáhněte si aplikaci Shelly (iOS / Android)
  2. Klepněte na +Add Device a postupujte podle průvodce Bluetooth párováním
  3. Po výzvě zadejte své Wi-Fi přihlašovací údaje

Možnost B — AP režim (bez aplikace):

  1. Při prvním zapnutí zařízení vytvoří hotspot: ShellyXXX-AABBCCDDEE
  2. Připojte telefon/PC k tomuto hotspotu
  3. Otevřete http://192.168.33.1Internet & SecurityWi-Fi Mode - Client
  4. Zadejte SSID a heslo → Save

Shelly podporuje pouze 2,4 GHz sítě. 5 GHz sítě se při skenování nezobrazí.

Krok 2 — Zjistěte IP adresu

Po připojení k Wi-Fi zjistěte přiřazenou IP adresu jedním z následujících způsobů:

  • Aplikace Shelly: Detail zařízení → Device info → IP adresa
  • Webové rozhraní Shelly: Připojte se k AP zařízení před nastavením Wi-Fi — IP se zobrazí po uložení
  • DHCP tabulka routeru: Hledejte hostname jako shelly1pm-AABBCCDDEE
  • mDNS: Pingněte shelly<model>-<mac>.local (např. shelly1pm-AABBCCDDEE.local) ze stejné sítě

Přiřaďte zařízení Shelly statickou IP (DHCP rezervaci) ve vašem routeru, aby se adresa nezměnila po restartu routeru.

Krok 3 — Konfigurace v TapHome

  1. V TapHome přidejte nový modul Packet Parser (HTTP)
  2. IP Address: zadejte IP z kroku 2 (např. 192.168.1.50)
  3. Port: 80 (výchozí, není potřeba měnit)
  4. Importujte šablonu — TapHome bude pravidelně číst /status pro zjištění stavu zařízení

HTTP autentifikace je na zařízeních Shelly standardně vypnutá. Pokud jste povolili ochranu přihlášením, TapHome momentálně nepodporuje HTTP Basic Auth — pro integraci s TapHome ponechte autentifikaci vypnutou.

Dostupná zařízení

Shelly Sensor Add-On Modul
Vlastní proměnné

Shelly Sensor Add-On

Čtení (modul)
var res := sendhttprequest("/rpc/Sys.GetStatus");
SysGetStatus := res.Content;
res := sendhttprequest("/rpc/SensorAddon.GetPeripherals");
SensorAddonGetPeripherals := res.Content;
Analogový vstup Analogový vstup Pouze ke čtení

Analogový vstup 0–10 V / 0–100 % — čte /rpc/Input.GetStatus?id=100 → percent a dělí 100, takže hodnotu vystavuje jako zlomek 0,0–1,0. Vyžaduje, aby byl typ vstupu ve web UI Shelly nastaven na analog. Přesnost ±5 %

numeric Jednotka: % (normalised) json_path
Proměnná: IdComponent ID periferie analogového vstupu na hostitelském Shelly (periferie add-onu používají 100–199; první analogový vstup je 100)

Analogový vstup

Čtení vstupní úrovně
var res := sendhttprequest("/rpc/Input.GetStatus?id=" + Id);
parsejson(res.Content, "percent") / 100
Magnetický kontakt Jazýčkový kontakt Pouze ke čtení

Digitální vstup pro suchý kontakt / magnetický spínač — čte /rpc/Input.GetStatus?id=100 → state (true = zavřený, false = otevřený). Vyžaduje, aby byl typ vstupu ve web UI Shelly nastaven na switch nebo button (sdílí Component ID 100 s analogovým vstupem — aktivní může být pouze jeden režim)

boolean json_path
Proměnná: IdComponent ID periferie digitálního vstupu na hostitelském Shelly (výchozí hodnota 100)

Magnetický kontakt

Čtení
var res := sendhttprequest("/rpc/Input.GetStatus?id=" + Id);
parsejson(res.Content, "state")
Teplotní senzor (DS18B20 #1) Teplotní senzor Pouze ke čtení

První sonda DS18B20 na sběrnici 1-Wire — čte /rpc/Temperature.GetStatus?id=100 → tC (°C). Vlhkost je napevno nastavena na NaN (šablona nevystavuje DHT22)

numeric Jednotka: °C json_path
Proměnná: IdComponent ID první sondy DS18B20 na hostitelském Shelly (výchozí hodnota 100)

Teplotní senzor (DS18B20 #1)

Čtení vlhkosti
NaN
Čtení teploty
var res := sendhttprequest("/rpc/Temperature.GetStatus?id=" + Id);
parsejson(res.Content, "tC")
Teplotní senzor (DS18B20 #2) Teplotní senzor Pouze ke čtení

Druhá sonda DS18B20 na sběrnici 1-Wire — čte /rpc/Temperature.GetStatus?id=101 → tC (°C)

numeric Jednotka: °C json_path
Proměnná: IdComponent ID druhé sondy DS18B20 na hostitelském Shelly (výchozí hodnota 101)

Teplotní senzor (DS18B20 #2)

Čtení vlhkosti
NaN
Čtení teploty
var res := sendhttprequest("/rpc/Temperature.GetStatus?id=" + Id);
parsejson(res.Content, "tC")
Teplotní senzor (DS18B20 #3) Teplotní senzor Pouze ke čtení

Třetí sonda DS18B20 na sběrnici 1-Wire — čte /rpc/Temperature.GetStatus?id=102 → tC (°C)

numeric Jednotka: °C json_path
Proměnná: IdComponent ID třetí sondy DS18B20 na hostitelském Shelly (výchozí hodnota 102)

Teplotní senzor (DS18B20 #3)

Čtení vlhkosti
NaN
Čtení teploty
var res := sendhttprequest("/rpc/Temperature.GetStatus?id=" + Id);
parsejson(res.Content, "tC")
Teplotní senzor (DS18B20 #4) Teplotní senzor Pouze ke čtení

Čtvrtá sonda DS18B20 na sběrnici 1-Wire — čte /rpc/Temperature.GetStatus?id=103 → tC (°C). Poslední slot DS18B20 v šabloně — Shelly sběrnice podporuje až 5 sond, ale čtou se pouze ID 100–103

numeric Jednotka: °C json_path
Proměnná: IdComponent ID čtvrté sondy DS18B20 na hostitelském Shelly (výchozí hodnota 103)

Teplotní senzor (DS18B20 #4)

Čtení vlhkosti
NaN
Čtení teploty
var res := sendhttprequest("/rpc/Temperature.GetStatus?id=" + Id);
parsejson(res.Content, "tC")
Voltmetr Proměnná Pouze ke čtení

Měření napětí 0–10 V — čte /rpc/Voltmeter.GetStatus?id=100 → voltage (V). Vystaveno jako read-only skalární hodnota přes PacketParserVariable (ne nativní voltmeter device). Přesnost ±5 %, práh hlášení 0,1 V

numeric Jednotka: V json_path
Proměnná: IdComponent ID periferie voltmetru na hostitelském Shelly (výchozí hodnota 100)

Voltmetr

Čtení
var res := sendhttprequest("/rpc/Voltmeter.GetStatus?id=" + Id);
parsejson(res.Content, "voltage")
Připojení: Packet Parser → HTTP
Možná vylepšení (7)
  • DHT22 Humidity — Template hardcodes readhumidity = NaN on all four DS18B20 temperature devices. The add-on physically supports a DHT22 sensor (temperature + humidity) which creates paired humidity:100 + temperature:100 Components on the host. A separate PacketParser device reading humidity:100 → rh would expose this.
  • 5th DS18B20 slot — The Shelly Plus Add-on supports up to 5 DS18B20 probes on the shared 1-Wire bus. The template only wires 4 (IDs 100–103). A fifth probe registered as temperature:104 in the Shelly web UI would not be polled.
  • OneWire bus scan — Manufacturer API can discover unmapped DS18B20 probes. Not exposed as a TapHome service action — users must scan via the Shelly web UI. Useful for replacing physical probes.
  • Peripheral lifecycle management — Adding/removing/updating peripherals is performed exclusively via the Shelly web UI; the template does not expose these as TapHome service actions by design.
  • Enable / disable add-on — Activation is a one-time setup step performed in the Shelly web UI (or via Sys.SetConfig with device.addon_type = "sensor"). Not exposed by the template.
  • Pulse counter mode — Digital input can be configured as type=count and would expose counts.total / counts.by_minute / freq. Template only reads state (switch/button mode).
  • Voltmeter transformed value — Voltmeter supports an optional JavaScript expression (xvoltage.expr) that transforms the raw voltage (e.g. for a voltage-divided NTC temperature reading). Template reads only raw voltage.

Zdroje