
Shelly Sensor Add-On (sprzedawany jako Shelly Plus Add-On) to galwanicznie izolowana płytka rozszerzeń, która wpina się w złącze add-on kompatybilnego urządzenia Shelly Plus, Gen3 lub Gen4. Rozszerza hostujące Shelly o magistralę 1-Wire dla temperatury (DS18B20), wejście cyfrowe (kontaktron / styk bezpotencjałowy), wejście analogowe (0–10 V / 0–100 %) oraz woltomierz 0–10 V. Add-on nie jest samodzielnym urządzeniem Wi-Fi — odczytywany jest przez interfejs HTTP hosta Shelly w sieci lokalnej, więc TapHome kieruje zapytania na adres IP hosta, a nie na osobny adres add-onu.
Szablon TapHome udostępnia cztery czujniki temperatury DS18B20 (Component ID 100–103), jeden kontaktron, jedno wejście analogowe i jeden woltomierz. Wszystkie wartości są odczytywane przez standardowe API Shelly Gen2+ JSON-RPC na porcie 80 — połączenie z chmurą nie jest wymagane.
Podłączenie sprzętowe
Add-on osadza się na hoście Shelly przez firmowe złącze szeregowe i pobiera 3,3 V DC bezpośrednio z hosta (pobór poniżej 0,5 W bez czujników). Dostępne dla użytkownika zaciski są pogrupowane w blok analogowo-cyfrowy i trzy pozycje czujnika 1-Wire.
Zaciski analogowe i cyfrowe
ANALOG IN— wejście analogowe 0–10 V (dokładność ±5 %, próg raportowania 1 %)DIGITAL IN— wejście dla styku bezpotencjałowego / kontaktronu (True: od −15 V do 0,5 V, False: od 2,5 V do 15 V)VREF OUT— napięcie odniesienia (maks. 1 mA) do zasilania czujników z dzielnikiem potencjometrycznymVREF+R1 OUT— napięcie odniesienia z rezystorem pull-up 10 kΩ, przeznaczone do dzielników napięcia z NTC i fotorezystoremGND× 2 — powroty masy
Magistrala 1-Wire
Trzy trójzaciskowe grupy (VCC, DATA, GND) dzielą wewnętrznie wspólną linię danych 1-Wire. Do 5 sond DS18B20 można podłączyć równolegle na wspólnej magistrali; alternatywnie pojedynczy czujnik DHT22 może zająć magistralę (DHT22 blokuje skanowanie OneWire w stanie aktywnym). Łączny prąd wyjścia VCC jest ograniczony do 10 mA, co wystarcza dla pięciu sond DS18B20.
Maksymalny przekrój przewodu na wszystkich zaciskach to 1 mm² (17 AWG).
Nie łącz DHT22 z sondami DS18B20 na tej samej magistrali. DHT22 blokuje enumerację OneWire i hostujące Shelly nie zdoła ponownie przeskanować magistrali, dopóki jest podłączony.
Konfiguracja
Shelly Sensor Add-On nie ma własnego adresu IP. Podczas importu szablonu TapHome wpisz w parametrze IpAddress adres IP hosta Shelly (urządzenia Plus / Gen3 / Gen4, na którym zamontowany jest add-on) — domyślnie 192.168.0.1.
Cała komunikacja odbywa się przez API Gen2+ JSON-RPC po HTTP GET na porcie 80. Raz na cykl odpytania szablon wczytuje /rpc/Sys.GetStatus i /rpc/SensorAddon.GetPeripherals do wewnętrznych zmiennych cache, po czym skrypt każdego urządzenia odpytuje własny endpoint (Temperature.GetStatus, Input.GetStatus lub Voltmeter.GetStatus).
Kompatybilne urządzenia hostujące
Add-on współpracuje z następującymi urządzeniami Shelly (z listy kompatybilności producenta):
- 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 hosta Shelly musi udostępniać usługę SensorAddon — starsze wydania firmware Plus mogą jej nie zawierać. Zaktualizuj hosta do najnowszego firmware, jeśli w interfejsie web brakuje menu add-on.
Aktywacja peryferiów Add-on
Add-on konfiguruje się jednorazowo w interfejsie web hosta Shelly — TapHome go nie konfiguruje. Przed importem szablonu wykonaj następujące kroki:
- Osadź płytkę add-on na złączu add-on hosta Shelly i załącz zasilanie hosta.
- Otwórz interfejs web hosta pod adresem
http://{host-ip}/i zaloguj się. - Przejdź do Settings → Add-on i zarejestruj add-on (w tle wywołuje to
Sys.SetConfigzdevice.addon_type = "sensor"). W razie prośby zrestartuj hosta. - Otwórz Settings → Components → Peripherals i kliknij przycisk +.
- Wybierz typ peryferium — Temperature (DS18B20), Digital Input, Analog Input lub Voltmeter.
- Dla DS18B20 kliknij Rescan, zaznacz każdą wykrytą sondę i wybierz Add and reboot. Pierwsza sonda otrzymuje Component ID
100, druga101i tak dalej. - Dla Digital Input ustaw Mode na Switch lub Button (szablon czyta
statez tego Componentu). - Dla Analog Input i Voltmeter domyślne wartości są w porządku — istotne są tylko nazwa i próg delta.
Szablon TapHome ma na stałe ustawione Component ID 100–103 dla DS18B20 oraz ID 100 dla kontaktronu, wejścia analogowego i woltomierza. Podczas dodawania peryferiów w interfejsie web Shelly sprawdź, czy przypisane ID odpowiadają tej numeracji — jeśli usuniesz peryferium i dodasz je ponownie, Shelly przydzieli następny wolny ID, który może przekroczyć 103, a urządzenie TapHome po cichu przestanie odbierać dane.
Przed usunięciem peryferium zanotuj jego Component ID. Jeśli wymieniasz sondę DS18B20, skorzystaj raczej z akcji Edit → Update address w interfejsie web — Component ID pozostanie ten sam.
Na hoście Shelly musi być wyłączone HTTP Digest Authentication — TapHome nie wysyła uwierzytelnionych żądań. Pozostaw urządzenie bez uwierzytelniania lub ogranicz dostęp na poziomie sieci.
Możliwości urządzenia
Szablon grupuje siedem czujnikowych urządzeń tylko do odczytu pod jednym modułem HTTP kierującym do hosta Shelly.
Sondy temperatury (DS18B20)
Udostępnione są cztery sondy temperatury DS18B20 OneWire, po jednej na Component ID 100–103:
- Temperature Sensor DS18B20 (100) — czyta
/rpc/Temperature.GetStatus?id=100→tC(°C) - Temperature Sensor DS18B20 (101) — czyta
/rpc/Temperature.GetStatus?id=101→tC - Temperature Sensor DS18B20 (102) — czyta
/rpc/Temperature.GetStatus?id=102→tC - Temperature Sensor DS18B20 (103) — czyta
/rpc/Temperature.GetStatus?id=103→tC
Każde urządzenie ma konfigurowalną przez użytkownika zmienną Id (wartość domyślna odpowiada pozycji). Interwał odpytywania to 15 sekund na sondę. Interfejs web Shelly pozwala dostroić próg delta (0,1–5 °C) i offset (±50 °C) każdej sondy do kalibracji.
Kontaktron (wejście cyfrowe)
Reed Contact (100) czyta /rpc/Input.GetStatus?id=100 → state (boolean). W interfejsie Shelly wejście musi być skonfigurowane jako Switch lub Button (nie Analog ani Count). Interwał odpytywania: 2,5 sekundy. Domyślna wartość zmiennej Id to 100.
Wejście analogowe
Analog Input (100) czyta /rpc/Input.GetStatus?id=100 → percent, dzieląc przez 100, aby wartość była znormalizowana do ułamka 0,0–1,0, którego TapHome oczekuje dla wejść analogowych. Wejście musi być skonfigurowane jako Analog w interfejsie Shelly. Dokładność ±5 %, próg raportowania 1 %. Interwał odpytywania: 2,5 sekundy.
Uwaga: kontaktron i wejście analogowe dzielą Component ID 100 — sprzęt Shelly ma na add-onie tylko jedno wejście cyfrowe i jedno analogowe, a aktywny tryb wybiera typ wejścia w interfejsie web (switch/button vs analog). W TapHome użyj albo urządzenia Reed Contact, albo Analog Input, nie obu jednocześnie.
Woltomierz
Voltmeter (100) czyta /rpc/Voltmeter.GetStatus?id=100 → voltage (V). Zakres to 0–10 V z dokładnością ±5 % i progiem raportowania 0,1 V. Jest modelowany jako PacketParserVariable z możliwością sensor — surowe napięcie udostępniane jest jako wartość skalarna, a nie jako dedykowany typ woltomierza. Interwał odpytywania: 15 sekund.
Dodatkowe możliwości
Shelly Sensor Add-On natywnie obsługuje również czujnik temperatury i wilgotności DHT22 (pojedyncza sonda tworząca na hoście sparowane Componenty temperature:100 i humidity:100). Szablon TapHome łączy temperaturę na wszystkich czterech urządzeniach DS18B20, ale skrypt wilgotności ma na stałe wpisane NaN — wilgotność DHT22 nie jest zatem udostępniana. Użytkownicy potrzebujący wilgotności mogą rozszerzyć szablon o oddzielny skrypt odczytu na /rpc/Humidity.GetStatus?id=100.
Dwie kolejne funkcje istnieją na poziomie sprzętu/firmware, ale wychodzą poza zakres tego szablonu: piąty slot DS18B20 (magistrala Shelly obsługuje do pięciu sond; szablon odpytuje tylko ID 100–103) oraz tryb licznika impulsów na wejściu cyfrowym (counts.total, counts.by_minute, freq), który wymaga skonfigurowania wejścia jako type=count w interfejsie Shelly. Oba mogą zostać dodane w przyszłej aktualizacji szablonu.
Rozwiązywanie problemów
Host Shelly nie odpowiada
- Sprawdź, czy host Shelly jest podłączony do Wi-Fi i ma prawidłowy adres IP.
- Spróbuj użyć hostname mDNS hosta (np.
shellyplus1pm-AABBCCDDEE.local) zamiast IP — IP mogło zmienić się po odnowieniu DHCP. Add-on dziedziczy hostname hosta, nie ma własnego. - Otwórz w przeglądarce
http://{host-ip}/rpc/Shelly.GetDeviceInfo— jeśli odpowie JSON-em, host jest osiągalny. - Sprawdź, czy TapHome CCU i host Shelly są w tej samej sieci / VLAN.
- Upewnij się, że HTTP Digest Authentication jest wyłączone w interfejsie web Shelly.
Czujniki nie pokazują danych
- Otwórz interfejs web Shelly → Components → Peripherals. Potwierdź, że peryferium jest na liście z dokładnie tym Component ID, którego oczekuje szablon (
temperature:100–103,input:100,voltmeter:100). Jeśli ID jest powyżej103lub przesunięte, przenumeruj peryferia przez usunięcie i ponowne dodanie we właściwej kolejności, albo dostosuj szablon do swoich ID. - Dla DS18B20: kliknij Rescan w wierszu peryferium DS18B20 — adres magistrali powinien zostać rozpoznany. Jeśli pokazuje N/A, sprawdź okablowanie VCC/DATA/GND i rezystor pull-up 10 kΩ na
DATA(niektóre generyczne płytki DS18B20 go pomijają; Shelly zapewnia go wewnętrznie). - Zapytaj endpoint bezpośrednio:
GET http://{host-ip}/rpc/Temperature.GetStatus?id=100. Odpowiedź powinna zawierać niezerową wartośćtC. - Zrestartuj hosta Shelly po dodaniu lub usunięciu peryferiów. Componenty mogą się nie pojawić aż do restartu.
Wejście analogowe czyta zero
- Potwierdź, że
typewejścia w interfejsie Shelly jest ustawiony naanalog(nieswitch,buttonanicount). Szablon czytapercent, które jest wypełnione tylko w trybie analogowym. - Sprawdź okablowanie — źródło 0–10 V musi być między
ANALOG INaGND. Dla czujników z dzielnikiem potencjometrycznym (NTC, fotorezystor) użyjVREF+R1 OUT(z wbudowanym pull-up 10 kΩ) zamiastVREF OUT. - Pamiętaj, że TapHome otrzymuje wartość jako ułamek 0,0–1,0 (szablon dzieli
percentprzez 100).
Brakuje wilgotności DHT22
To zamierzone ograniczenie szablonu — skrypt readhumidity jest wpisany na stałe jako NaN w każdym slocie urządzenia DS18B20. Sprzęt add-onu obsługuje DHT22, ale aby wystawić wilgotność w TapHome, trzeba rozszerzyć szablon o dedykowane urządzenie, które czyta /rpc/Humidity.GetStatus?id=100 → rh. DS18B20 i DHT22 nie mogą współistnieć na tej samej magistrali — usuń sondy DS18B20, jeśli przechodzisz na DHT22.
Piąta sonda DS18B20 niewidoczna
Szablon odpytuje tylko ID 100–103. Piąta sonda zarejestrowana w interfejsie web Shelly jako temperature:104 istnieje na hoście, ale TapHome jej nie czyta. Przenieś sondę, która cię interesuje, do jednego ze slotów 100–103 (usuń i dodaj ponownie w kolejności) lub rozszerz szablon o piąte urządzenie celujące w id=104.