Подключение сторонних устройств Shelly по MQTT со своим топиком shellies

Приветствую всех!
Постарался поискать на форуме, но точного решения своего вопроса не нашёл.

Имеется WB 6.7

Есть оборудование Wi-Fi от бренда Shelly которые при подключении к брокеру MQTT работают через жёстко заданный первый топик shellies, да и вообще имеют свою структуру топиков.
Например:
The following topics can be used to read and set output channels 0 and 1:

  • shellies/shellyuni-<deviceid>/relay/<i> to report status: on, off or overpower
  • shellies/shellyuni-<deviceid>/relay/<i>/command accepts on, off or toggle

Каким способом мне лучше всего обрабатывать не стандартные для WB топики?

Добрый день. Советую использовать как пример Tasmota
Но вообще - в wb-rules есть trackMqtt для обработки произвольных топиков.
UPD: Исправил

trackMqtt видимо имелось ввиду.

Не стал плодить темы, но такая проблема возникла с веб-интерфейсом при установке пароля на брокер.

Файл: /mnt/data/etc/mosquitto/conf.d/auth.conf
acl_file /etc/mosquitto/acl.conf
password_file /etc/mosquitto/passwd.conf
allow_anonymous false
allow_anonymous_localhost true

Советую в настройках интерфейса поставить 80 порт. То есть чтобы браузер обращался не “напрямую” к брокеру а через nginx прокси.

Может кому пригодиться. Накидал правило (драйвер MQTT) для ShellyUNI

ShellyUNI MQTT
			// MQTT driever ShellyUNI
			var deviceName = "ShellyUNI";
			var deviceAddr = "AABBCCDDEEFF";


			defineVirtualDevice(deviceName, {
			  title: deviceName,
			  cells: {      
				  "input0": {
							type: "switch",
							value: false,
							readonly: true
						 },
				  "input1": {
							type: "switch",
							value: false,
							readonly: true
						 },	   
				  "inputCnt0": {
							type: "value",
							value: 0,
							readonly: true
						 },
				  "inputCnt1": {
							type: "value",
							value: 0,
							readonly: true
						 },    
				  "relay0": {
							type: "switch",
							value: false
						 },
				  "relay1": {
							type: "switch",
							value: false
						 },	
				  "adc": {
							type: "voltage",
							value: 0,
							readonly: true
						 }	  		     
					 }
			});

			defineRule("relay0_change", {
			  whenChanged: deviceName+"/relay0",
			  then: function (newValue, devName, cellName) {
					var state = (newValue == true) ? "on" : "off";
					publish("shellies/shellyuni-"+deviceAddr+"/relay/0/command", state); 
			  }
			});

			defineRule("relay1_change", {
			  whenChanged: deviceName+"/relay1",
			  then: function (newValue, devName, cellName) {
					var state = (newValue == true) ? "on" : "off";
					publish("shellies/shellyuni-"+deviceAddr+"/relay/1/command", state); 
			  }
			});

			trackMqtt("shellies/shellyuni-"+deviceAddr+"/input_event/0", function(message){ 
				var obj = JSON.parse(message.value);
				dev[deviceName+"/inputCnt0"] = parseInt(obj.event_cnt);                                                                          
			});

			trackMqtt("shellies/shellyuni-"+deviceAddr+"/input_event/1", function(message){ 
				var obj = JSON.parse(message.value);
				dev[deviceName+"/inputCnt1"] = parseInt(obj.event_cnt);                                                                          
			});

			trackMqtt("shellies/shellyuni-"+deviceAddr+"/input/0", function(message){ dev[deviceName+"/input0"] = (message.value == "1") ? true : false; });
			trackMqtt("shellies/shellyuni-"+deviceAddr+"/input/1", function(message){ dev[deviceName+"/input1"] = (message.value == "1") ? true : false; });
			trackMqtt("shellies/shellyuni-"+deviceAddr+"/relay/0", function(message){ dev[deviceName+"/relay0"] = (message.value == "on") ? true : false; });
			trackMqtt("shellies/shellyuni-"+deviceAddr+"/relay/1", function(message){ dev[deviceName+"/relay1"] = (message.value == "on") ? true : false; });
			trackMqtt("shellies/shellyuni-"+deviceAddr+"/adc/0", function(message){ dev[deviceName+"/adc"] = parseFloat(message.value) });
3 Likes

Благодарю, лаконично и понятно написан - наверняка будет полезен.

Приветствую.
Подскажите куда лучше добавить данный драйвер если есть похожее устройство?

Добрый день.
Т.е. вы сделали шаблон для другого устройства Shelly?
Присылайте сюда и на данной странице документации можем добавить упоминание и про ваше устройство.