
Shelly Sensor Add-On (comercializat ca Shelly Plus Add-On) este o placă de extensie izolată galvanic, care se montează pe conectorul pentru add-on al unui dispozitiv compatibil Shelly Plus, Gen3 sau Gen4. Extinde dispozitivul Shelly gazdă cu o magistrală de temperatură 1-Wire (DS18B20), o intrare digitală (contact reed / contact uscat), o intrare analogică (0–10 V / 0–100 %) și un voltmetru 0–10 V. Add-on-ul nu este un dispozitiv Wi-Fi independent — se citește prin interfața HTTP a dispozitivului Shelly gazdă în rețeaua locală, astfel încât TapHome folosește adresa IP a dispozitivului gazdă, nu o adresă IP separată pentru add-on.
Șablonul TapHome oferă patru senzori de temperatură DS18B20 (Component ID 100–103), un contact reed, o intrare analogică și un voltmetru. Toate valorile sunt interogate prin API-ul JSON-RPC standard Shelly Gen2+ pe portul 80 — nu este necesară conexiunea la cloud.
Conectarea hardware
Add-on-ul se montează pe dispozitivul Shelly gazdă printr-un conector serial proprietar și se alimentează cu 3,3 V DC direct de la gazdă (consum sub 0,5 W fără senzori). Bornele accesibile utilizatorului sunt grupate într-un bloc analogic/digital și trei poziții pentru senzori 1-Wire.
Bornele analogice și digitale
ANALOG IN— intrare analogică 0–10 V (precizie ±5 %, prag de raportare 1 %)DIGITAL IN— intrare pentru contact uscat / contact reed (True: −15 V până la 0,5 V, False: 2,5 V până la 15 V)VREF OUT— tensiune de referință (maximum 1 mA) pentru alimentarea senzorilor de tip potențiometruVREF+R1 OUT— tensiune de referință cu rezistor pull-up de 10 kΩ, destinată divizoarelor de tensiune cu NTC și fotorezistorGND× 2 — borne de masă
Magistrala 1-Wire
Trei grupuri de câte trei borne (VCC, DATA, GND) au intern o linie de date 1-Wire comună. Pe magistrala comună se pot conecta în paralel până la 5 sonde DS18B20; alternativ, magistrala poate fi ocupată de un singur senzor DHT22 (DHT22 blochează scanarea OneWire cât timp este activ). Ieșirea VCC totală este limitată la 10 mA, ceea ce este suficient pentru cinci sonde DS18B20.
Secțiunea maximă a conductoarelor la toate bornele este de 1 mm² (17 AWG).
Nu combinați pe magistrală un senzor DHT22 cu sonde DS18B20. DHT22 blochează enumerarea OneWire, iar dispozitivul Shelly gazdă nu va putea rescana magistrala cât timp acesta este conectat.
Configurare
Shelly Sensor Add-On nu are o adresă IP proprie. La importul șablonului în TapHome, introduceți în parametrul IpAddress (valoarea implicită: 192.168.0.1) adresa IP a dispozitivului Shelly gazdă, adică a dispozitivului Plus / Gen3 / Gen4 pe care este montat add-on-ul.
Toată comunicația folosește API-ul JSON-RPC Gen2+ prin HTTP GET pe portul 80. O dată la fiecare ciclu de interogare, șablonul citește /rpc/Sys.GetStatus și /rpc/SensorAddon.GetPeripherals în variabile cache interne, apoi scriptul fiecărui dispozitiv interoghează endpointul său dedicat (Temperature.GetStatus, Input.GetStatus sau Voltmeter.GetStatus).
Dispozitive gazdă compatibile
Add-on-ul funcționează cu următoarele dispozitive Shelly (conform listei de compatibilitate a producătorului):
- 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-ul dispozitivului Shelly gazdă trebuie să ofere serviciul SensorAddon — este posibil ca versiunile mai vechi de firmware Plus să nu îl aibă. Dacă meniul pentru add-on lipsește din interfața web, actualizați dispozitivul gazdă la cel mai recent firmware.
Activarea perifericelor add-on-ului
Add-on-ul se configurează o singură dată în interfața web a dispozitivului Shelly gazdă — TapHome nu îl configurează. Înainte de a importa șablonul, efectuați următorii pași:
- Montați placa add-on pe conectorul pentru add-on al dispozitivului Shelly gazdă și alimentați dispozitivul gazdă.
- Deschideți interfața web a dispozitivului gazdă la
http://{host-ip}/și autentificați-vă. - Mergeți la Settings → Add-on și înregistrați add-on-ul (în fundal se apelează
Sys.SetConfigcudevice.addon_type = "sensor"). Dacă vi se solicită, reporniți dispozitivul gazdă. - Deschideți Settings → Components → Peripherals și faceți clic pe butonul +.
- Alegeți tipul perifericului — Temperature (DS18B20), Digital Input, Analog Input sau Voltmeter.
- Pentru DS18B20, faceți clic pe Rescan, bifați fiecare sondă găsită, apoi alegeți Add and reboot. Prima sondă primește Component ID
100, a doua101și așa mai departe. - Pentru Digital Input, setați Mode la Switch sau Button (șablonul citește
statedin această componentă). - Pentru Analog Input și Voltmeter, valorile implicite sunt potrivite — contează doar numele și pragul delta.
Șablonul TapHome are Component ID 100–103 fixate în cod pentru DS18B20 și ID-ul 100 pentru contactul reed, intrarea analogică și voltmetru. Când adăugați periferice în interfața web Shelly, verificați dacă ID-urile atribuite corespund acestei numerotări — dacă ștergeți un periferic și îl adăugați din nou, dispozitivul Shelly atribuie următorul ID liber, care poate depăși 103, iar dispozitivul TapHome nu va mai primi date, fără niciun mesaj de eroare.
Înainte de a elimina un periferic, notați-i Component ID-ul. Dacă reconectați o sondă DS18B20, folosiți de preferință acțiunea Edit → Update address din interfața web, astfel încât Component ID-ul să rămână același.
Autentificarea HTTP Digest trebuie să fie dezactivată pe dispozitivul Shelly gazdă — TapHome nu trimite cereri autentificate. Lăsați dispozitivul fără autentificare sau restricționați accesul la nivelul rețelei.
Funcțiile dispozitivului
Șablonul grupează șapte dispozitive senzor, doar pentru citire, sub un singur modul HTTP care se conectează la dispozitivul Shelly gazdă.
Sonde de temperatură (DS18B20)
Sunt oferite patru sonde de temperatură OneWire DS18B20, câte una pentru fiecare Component ID 100–103:
- Senzor de temperatură (DS18B20 #1) — citește
/rpc/Temperature.GetStatus?id=100→tC(°C) - Senzor de temperatură (DS18B20 #2) — citește
/rpc/Temperature.GetStatus?id=101→tC - Senzor de temperatură (DS18B20 #3) — citește
/rpc/Temperature.GetStatus?id=102→tC - Senzor de temperatură (DS18B20 #4) — citește
/rpc/Temperature.GetStatus?id=103→tC
Fiecare dispozitiv are o variabilă personalizată Id configurabilă de utilizator (valoarea implicită corespunde poziției). Intervalul de interogare este de 15 secunde pentru fiecare sondă. Interfața web Shelly permite reglajul fin al pragului delta (0,1–5 °C) și al offsetului (±50 °C) pentru fiecare sondă, în scop de calibrare.
Contact reed (intrare digitală)
Contact reed (100) citește /rpc/Input.GetStatus?id=100 → state (boolean). În interfața Shelly, intrarea trebuie configurată ca Switch sau Button (nu ca Analog sau Count). Intervalul de interogare este de 2,5 secunde. Valoarea implicită a variabilei personalizate Id este 100.
Intrare analogică
Intrare analogică (100) citește /rpc/Input.GetStatus?id=100 → percent, împărțit la 100, astfel încât valoarea este normalizată în intervalul 0,0–1,0 pe care TapHome îl așteaptă pentru intrările analogice. Intrarea trebuie configurată ca Analog în interfața Shelly. Precizia este ±5 %, cu un prag de raportare de 1 %. Intervalul de interogare este de 2,5 secunde.
Rețineți că contactul reed și intrarea analogică au același Component ID 100 — hardware-ul Shelly are pe add-on o singură intrare digitală și o singură intrare analogică, iar modul activ se stabilește prin tipul intrării în interfața web (switch/button sau analog). În TapHome folosiți fie dispozitivul contact reed, fie dispozitivul intrare analogică, nu pe amândouă în același timp.
Voltmetru
Voltmetru (100) citește /rpc/Voltmeter.GetStatus?id=100 → voltage (V). Domeniul este 0–10 V, cu precizie de ±5 % și prag de raportare de 0,1 V. Este modelat ca PacketParserVariable cu capabilitatea sensor — tensiunea brută este oferită ca valoare scalară, nu ca tip de dispozitiv voltmetru dedicat. Intervalul de interogare este de 15 secunde.
Funcții suplimentare
Shelly Sensor Add-On acceptă nativ și un senzor de temperatură și umiditate DHT22 (o singură sondă care creează pe dispozitivul gazdă componentele pereche temperature:100 și humidity:100). Șablonul TapHome transmite temperatura pe toate cele patru dispozitive DS18B20, dar scriptul pentru umiditate are fixată în cod valoarea NaN — prin urmare, umiditatea de la DHT22 nu este disponibilă. Dacă aveți nevoie de umiditate, puteți extinde șablonul cu un script de citire separat pentru /rpc/Humidity.GetStatus?id=100.
La nivel de hardware/firmware există încă două funcții, care nu fac obiectul acestui șablon: un al cincilea slot DS18B20 (magistrala Shelly acceptă până la cinci sonde; șablonul interoghează doar ID-urile 100–103) și modul contor de impulsuri al intrării digitale (counts.total, counts.by_minute, freq), care necesită configurarea intrării ca type=count în interfața Shelly. Ambele pot fi adăugate într-o actualizare viitoare a șablonului.
Rezolvarea problemelor
Dispozitivul Shelly gazdă nu răspunde
- Verificați dacă dispozitivul Shelly gazdă este conectat la Wi-Fi și are o adresă IP validă.
- Încercați numele de gazdă mDNS al dispozitivului gazdă (de ex.
shellyplus1pm-AABBCCDDEE.local) în locul adresei IP — adresa IP s-ar fi putut schimba după reînnoirea DHCP. Add-on-ul preia numele de gazdă al dispozitivului gazdă, nu are unul propriu. - Deschideți
http://{host-ip}/rpc/Shelly.GetDeviceInfoîntr-un browser — dacă răspunde cu JSON, dispozitivul gazdă este accesibil. - Verificați dacă unitatea de control TapHome (CCU) și dispozitivul Shelly gazdă se află în aceeași rețea / VLAN.
- Asigurați-vă că autentificarea HTTP Digest este dezactivată în interfața web Shelly.
Senzorii nu afișează date
- Deschideți interfața web Shelly → Components → Peripherals. Verificați dacă perifericul apare în listă cu exact Component ID-ul pe care îl așteaptă șablonul (
temperature:100–103,input:100,voltmeter:100). Dacă ID-ul este mai mare de103sau decalat, renumerotați perifericele ștergându-le și adăugându-le din nou în ordinea corectă sau modificați șablonul astfel încât să corespundă ID-urilor dvs. - Pentru DS18B20: faceți clic pe Rescan în rândul perifericului DS18B20 — adresa de pe magistrală ar trebui să fie identificată. Dacă adresa apare ca N/A, verificați cablajul VCC/DATA/GND și rezistorul pull-up de 10 kΩ pe
DATA(unele plăci DS18B20 generice nu îl au; dispozitivul Shelly îl asigură intern). - Interogați direct endpointul:
GET http://{host-ip}/rpc/Temperature.GetStatus?id=100. Răspunsul trebuie să conțină o valoaretCdiferită de null. - Reporniți dispozitivul Shelly gazdă după adăugarea sau eliminarea perifericelor. Este posibil ca acestea să apară doar după repornire.
Intrarea analogică indică zero
- Verificați dacă parametrul
typeal intrării este setat în interfața Shelly laanalog(nuswitch,buttonsaucount). Șablonul citeștepercent, care se completează doar în modul analogic. - Verificați cablajul — o sursă de 0–10 V trebuie conectată între
ANALOG INșiGND. Pentru senzorii de tip potențiometru (NTC, fotorezistor), folosițiVREF+R1 OUT(cu rezistorul pull-up integrat de 10 kΩ) în loc deVREF OUT. - Rețineți că TapHome primește valoarea ca fracție 0,0–1,0 (șablonul împarte
percentla 100).
Lipsește umiditatea de la DHT22
Aceasta este o limitare intenționată a șablonului — scriptul readhumidity are fixată în cod valoarea NaN pe fiecare slot de dispozitiv DS18B20. Hardware-ul add-on-ului acceptă DHT22, dar pentru a afișa umiditatea în TapHome trebuie să extindeți șablonul cu un dispozitiv dedicat care citește /rpc/Humidity.GetStatus?id=100 → rh. Senzorii DS18B20 și DHT22 nu pot coexista pe aceeași magistrală — dacă treceți la DHT22, eliminați sondele DS18B20.
A cincea sondă DS18B20 nu este vizibilă
Șablonul interoghează doar ID-urile 100–103. O a cincea sondă înregistrată în interfața web Shelly ca temperature:104 va exista pe dispozitivul gazdă, dar nu va fi citită de TapHome. Fie mutați sonda care vă interesează într-unul dintre sloturile 100–103 (ștergeți-o și adăugați-o din nou în ordine), fie extindeți șablonul cu un al cincilea dispozitiv care folosește id=104.