Zum Inhalt springen

Spielereien mit Shelly & MQTT

Mitte 2019 konnte ich dem Hype um die Shelly Produkte nicht mehr ausweichen, und habe mir, mit dem Ziel meine Bastelarbeiten durch Produkte mit CE - Zeichen ohne Cloud-Zwang zu ersetzten, direkt in Bulgarien bei alterco im Shop 4 x Shelly 1PM, 4 x Shelly 2.5 und 4 x Shelly 1 bestellt.

Die Lieferung erfolgte erfreulich schnell, was ein wenig die damals sehr hohen Versandkosten bei DHL - Lieferung rechtfertigten.

Selbstverständlich erfolgte die völlig problemlose Installation (Verkabelung) durch einen freundlichen und interessierten Elektriker, vielen Dank dafür.

Alle Shellies funken im 2,4 Mhz WLAN. Unser Haus mit 3 Etagen und verschiedenen Räumen mit Fußbodenheizung ist für die optimale Verteilung von Funkwellen in diesem oder höheren Frequenzbereichen nicht wirklich geeignet. Aus diesem Grund hatte ich bereits vor der Shelly - Installation die Etagen über Devolo DLAN - Wifi verbunden.

Es wurde mir jedoch klar, dass eine Fritz-Box auf Dauer keine geeignete Lösung für mittlerweile deutlich über 30 WLAN - Clients und diverse weitere LAN - Clients sein wird. Immerhin habe ich es zum Laufen gebracht.

Konfiguration über Web-GUI des Shellies (ohne Cloud):

Abschnitt betitelt „Konfiguration über Web-GUI des Shellies (ohne Cloud):“

Der Standard Mode bei Auslieferung oder nach dem Zurücksetzen auf die Werkseinstellungen ist: Access Point

Verbinden des Shellies mit dem Standard Wi-Fi-Netzwerk (im Auslieferungszustand) (SSID) z.B. wie Shelly1 - 84CCA87D7CDC ohne Passwort. Die universelle IP-Adresse für alle Shelly-Geräte lautet: 192.168.33.1, um auf die Webschnittstelle zu gelangen.

Es erscheint eine abgespeckte Konfigurationsmaske für die Erfassung der eigenen WLAN - Zugangsdaten (SSID und Passwort WPA).

Nach dem Neustart verbindet sich der Shelly mit eigenen WLAN

Über die lokale IP Adresse wird die Konfiguration fortgesetzt

Beispiel “Returned json from:” http://admin:[password]@[IP | DNS-Name]/settings

Abschnitt betitelt „Beispiel “Returned json from:” http://admin:[password]@[IP | DNS-Name]/settings“
{
"device":{
"type":"SHSW-1",
"mac":"0123456789AB",
"hostname":"shelly1-6789AB",
"num_outputs":1
},
"wifi_ap":{
"enabled":false,
"ssid":"shelly1-6789AB",
"key":""
},
"wifi_sta":{
"enabled":true,
"ssid":"RAUNETWLANIOT",
"ipv4_method":"dhcp",
"ip":null,
"gw":null,
"mask":null,
"dns":null
},
"wifi_sta1":{
"enabled":false,
"ssid":null,
"ipv4_method":"dhcp",
"ip":null,
"gw":null,
"mask":null,
"dns":null
},
"ap_roaming":{
"enabled":true,
"threshold":-70
},
"mqtt":{
"enable":true,
"server":"service.iot:1883",
"user":"admin",
"id":"24_Deckenleuchte",
"reconnect_timeout_max":60.000000,
"reconnect_timeout_min":2.000000,
"clean_session":true,
"keep_alive":60,
"max_qos":1,
"retain":false,
"update_period":30
},
"coiot":{
"enabled":true,
"update_period":15,
"peer":""
},
"sntp":{
"server":"time.google.com",
"enabled":true
},
"login":{
"enabled":true,
"unprotected":false,
"username":"admin"
},
"pin_code":"",
"name":"24_Deckenleuchte",
"fw":"20230329-161525/v1.13.0-rc2-g1b3e5af",
"factory_reset_from_switch":true,
"discoverable":true,
"build_info":{
"build_id":"20230329-161525/v1.13.0-rc2-g1b3e5af",
"build_timestamp":"2023-03-29T16:15:25Z",
"build_version":"1.0"
},
"cloud":{
"enabled":false,
"connected":false
},
"timezone":"Europe/Berlin",
"lat":50.123456,
"lng":7.123456,
"tzautodetect":true,
"tz_utc_offset":7200,
"tz_dst":true,
"tz_dst_auto":true,
"time":"09:19",
"unixtime":1682493563,
"debug_enable":false,
"allow_cross_origin":true,
"ext_switch_enable":false,
"ext_switch_reverse":false,
"ext_switch":{
"0":{
"relay_num":-1
}
},
"actions":{
"active":false,
"names":[
"btn_on_url",
"btn_off_url",
"longpush_url",
"shortpush_url",
"out_on_url",
"out_off_url",
"lp_on_url",
"lp_off_url",
"report_url",
"report_url",
"report_url",
"ext_temp_over_url",
"ext_temp_under_url",
"ext_temp_over_url",
"ext_temp_under_url",
"ext_temp_over_url",
"ext_temp_under_url",
"ext_hum_over_url",
"ext_hum_under_url"
]
},
"hwinfo":{
"hw_revision":"prod-2018-08",
"batch_id":2
},
"mode":"relay",
"longpush_time":800,
"relays":[
{
"name":"24_Deckenleuchte",
"appliance_type":"Switch",
"ison":false,
"has_timer":false,
"default_state":"off",
"btn_type":"edge",
"btn_reverse":1,
"auto_on":0.00,
"auto_off":0.00,
"power":0.00,
"schedule":false,
"schedule_rules":[
]
}
],
"ext_sensors":{
},
"ext_temperature":{
},
"ext_humidity":{
},
"eco_mode_enabled":true
}

MQTT

Als (ehemaliger) FHEM - User hat man ein latentes Unwohlsein bei der Nutzung einer Cloud. Da Shellies auf MQTT “ohne Cloud” umgestellt werden konnten und in FHEM MQTT Server und Client Module bereits existierten, habe ich mich in dieses Thema eingearbeitet.

Trotz aller folgenden tollen Entwicklungen sehe ich auch heute noch die Vorteile dieser Kommunikation von IOT - Ereignissen über einen oder mehrere Broker und beliebig vielen Abonnenten von topics. Leider bietet dieses System einfach zu viele Gestaltungsmöglichkeiten und keinen einheitlichen Standard.

So publizieren Shellies relativ starr generell alles unter dem Topic “shellies/[devicename]/#”. Eine Abbildung des Raumnummernsystems in MQTT ist, - wenn zwingend gewünscht -, nur durch zusätzliche Topic - Spiegelungen möglich. Ich habe es mittlerweile aufgegeben und nur noch den Gerätenamen auf Basis des Raumnummernsystems vergeben.

Beispiel Shelly 1 (SHSW-1) Deckenleuchte im Vorratsraum im Keller (settings: s.o.):

Feld(er)

Inhalt

Name (DEVICE NAME, CHANNEL NAME)

24_Deckenleuchte

Use custom MQTT prefix

24_Deckenleuchte

MQTT - Topic (base)

shellies/24_Deckenleuchte/#

IP

DHCP | [Fix IP without local DNS]

Local DNS

24.deckenleuchte.iot

Haus

home

Etage

20_KELLER

Raum

24_VORRATSRAUM