From bf8bed02a2e29231a7864fe47dafb026ecd4f924 Mon Sep 17 00:00:00 2001 From: BooosesThaSnipper Date: Wed, 20 Sep 2023 16:51:13 +0200 Subject: [PATCH] Add Support for Shelly Plus AddOn for Gen2 Devices https://github.com/iobroker-community-adapters/ioBroker.shelly/issues/738 --- lib/devices/gen2/shellyplus1.js | 295 +++++++++++++++++++++++++++- lib/devices/gen2/shellyplus1pm.js | 315 +++++++++++++++++++++++++++++- lib/devices/gen2/shellyplus2pm.js | 296 +++++++++++++++++++++++++++- lib/devices/gen2/shellyplusi4.js | 295 +++++++++++++++++++++++++++- 4 files changed, 1197 insertions(+), 4 deletions(-) diff --git a/lib/devices/gen2/shellyplus1.js b/lib/devices/gen2/shellyplus1.js index 1cd11eee..0839f134 100644 --- a/lib/devices/gen2/shellyplus1.js +++ b/lib/devices/gen2/shellyplus1.js @@ -8,7 +8,300 @@ const shellyHelperGen2 = require('../gen2-helper'); * https://shelly-api-docs.shelly.cloud/gen2/Devices/ShellyPlus1 */ const shellyplus1 = { - + 'Ext.input100': { + mqtt: { + mqtt_publish: `/status/input:100`, + mqtt_publish_funct: value => JSON.parse(value).state, + }, + common: { + name: 'Input100', + type: 'boolean', + role: 'state', + read: true, + write: false, + def: false, + }, + }, + 'Ext.input101': { + mqtt: { + mqtt_publish: `/status/input:101`, + mqtt_publish_funct: value => JSON.parse(value).percent, + }, + common: { + name: 'Input101', + type: 'number', + role: 'value', + read: true, + write: false, + unit: '%', + def: 0, + }, + }, + 'Ext.voltmeter100': { + mqtt: { + mqtt_publish: `/status/voltmeter:100`, + mqtt_publish_funct: value => JSON.parse(value).voltage, + }, + common: { + name: 'Volmeter100', + type: 'value.number', + role: 'value.voltage', + read: true, + write: false, + unit: 'V', + def: 0, + }, + }, + 'Ext.temperature100C': { + mqtt: { + mqtt_publish: `/status/temperature:100`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature100F': { + mqtt: { + mqtt_publish: `/status/temperature:100`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature101C': { + mqtt: { + mqtt_publish: `/status/temperature:101`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature101F': { + mqtt: { + mqtt_publish: `/status/temperature:101`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature102C': { + mqtt: { + mqtt_publish: `/status/temperature:102`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature102F': { + mqtt: { + mqtt_publish: `/status/temperature:102`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature103C': { + mqtt: { + mqtt_publish: `/status/temperature:103`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature103F': { + mqtt: { + mqtt_publish: `/status/temperature:103`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature104C': { + mqtt: { + mqtt_publish: `/status/temperature:104`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature104F': { + mqtt: { + mqtt_publish: `/status/temperature:104`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, }; shellyHelperGen2.addSwitchToGen2Device(shellyplus1, 0, false); diff --git a/lib/devices/gen2/shellyplus1pm.js b/lib/devices/gen2/shellyplus1pm.js index 67ba9245..0464d35b 100644 --- a/lib/devices/gen2/shellyplus1pm.js +++ b/lib/devices/gen2/shellyplus1pm.js @@ -8,7 +8,320 @@ const shellyHelperGen2 = require('../gen2-helper'); * https://shelly-api-docs.shelly.cloud/gen2/Devices/ShellyPlus1PM */ const shellyplus1pm = { - + 'Sys.deviceMode': { + mqtt: { + init_funct: self => self.getDeviceMode(), + http_publish: '/rpc/Sys.GetConfig', + http_publish_funct: value => value ? JSON.parse(value).device.profile : undefined, + mqtt_cmd: '/rpc', + mqtt_cmd_funct: (value, self) => { return JSON.stringify({ id: self.getNextMsgId(), src: 'iobroker', method: 'Shelly.SetProfile', params: { name: value } }); }, + }, + common: { + name: 'Mode / Profile', + type: 'string', + role: 'state', + read: true, + write: true, + states: { + 'switch': 'relay', + 'cover': 'shutter', + }, + }, + }, + 'Ext.input100': { + mqtt: { + mqtt_publish: `/status/input:100`, + mqtt_publish_funct: value => JSON.parse(value).state, + }, + common: { + name: 'Input100', + type: 'boolean', + role: 'state', + read: true, + write: false, + def: false, + }, + }, + 'Ext.input101': { + mqtt: { + mqtt_publish: `/status/input:101`, + mqtt_publish_funct: value => JSON.parse(value).percent, + }, + common: { + name: 'Input101', + type: 'number', + role: 'value', + read: true, + write: false, + unit: '%', + def: 0, + }, + }, + 'Ext.voltmeter100': { + mqtt: { + mqtt_publish: `/status/voltmeter:100`, + mqtt_publish_funct: value => JSON.parse(value).voltage, + }, + common: { + name: 'Volmeter100', + type: 'value.number', + role: 'value.voltage', + read: true, + write: false, + unit: 'V', + def: 0, + }, + }, + 'Ext.temperature100C': { + mqtt: { + mqtt_publish: `/status/temperature:100`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature100F': { + mqtt: { + mqtt_publish: `/status/temperature:100`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature101C': { + mqtt: { + mqtt_publish: `/status/temperature:101`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature101F': { + mqtt: { + mqtt_publish: `/status/temperature:101`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature102C': { + mqtt: { + mqtt_publish: `/status/temperature:102`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature102F': { + mqtt: { + mqtt_publish: `/status/temperature:102`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature103C': { + mqtt: { + mqtt_publish: `/status/temperature:103`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature103F': { + mqtt: { + mqtt_publish: `/status/temperature:103`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature104C': { + mqtt: { + mqtt_publish: `/status/temperature:104`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature104F': { + mqtt: { + mqtt_publish: `/status/temperature:104`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, }; shellyHelperGen2.addSwitchToGen2Device(shellyplus1pm, 0, true); diff --git a/lib/devices/gen2/shellyplus2pm.js b/lib/devices/gen2/shellyplus2pm.js index 65499e8c..ade990e5 100644 --- a/lib/devices/gen2/shellyplus2pm.js +++ b/lib/devices/gen2/shellyplus2pm.js @@ -14,7 +14,7 @@ const shellyplus2pm = { http_publish: '/rpc/Sys.GetConfig', http_publish_funct: value => value ? JSON.parse(value).device.profile : undefined, mqtt_cmd: '/rpc', - mqtt_cmd_funct: (value, self) => { return JSON.stringify({ id: self.getNextMsgId(), src: 'iobroker', method: 'Shelly.SetProfile', params: { name: value }}); }, + mqtt_cmd_funct: (value, self) => { return JSON.stringify({ id: self.getNextMsgId(), src: 'iobroker', method: 'Shelly.SetProfile', params: { name: value } }); }, }, common: { name: 'Mode / Profile', @@ -28,6 +28,300 @@ const shellyplus2pm = { }, }, }, + 'Ext.input100': { + mqtt: { + mqtt_publish: `/status/input:100`, + mqtt_publish_funct: value => JSON.parse(value).state, + }, + common: { + name: 'Input100', + type: 'boolean', + role: 'state', + read: true, + write: false, + def: false, + }, + }, + 'Ext.input101': { + mqtt: { + mqtt_publish: `/status/input:101`, + mqtt_publish_funct: value => JSON.parse(value).percent, + }, + common: { + name: 'Input101', + type: 'number', + role: 'value', + read: true, + write: false, + unit: '%', + def: 0, + }, + }, + 'Ext.voltmeter100': { + mqtt: { + mqtt_publish: `/status/voltmeter:100`, + mqtt_publish_funct: value => JSON.parse(value).voltage, + }, + common: { + name: 'Volmeter100', + type: 'value.number', + role: 'value.voltage', + read: true, + write: false, + unit: 'V', + def: 0, + }, + }, + 'Ext.temperature100C': { + mqtt: { + mqtt_publish: `/status/temperature:100`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature100F': { + mqtt: { + mqtt_publish: `/status/temperature:100`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature101C': { + mqtt: { + mqtt_publish: `/status/temperature:101`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature101F': { + mqtt: { + mqtt_publish: `/status/temperature:101`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature102C': { + mqtt: { + mqtt_publish: `/status/temperature:102`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature102F': { + mqtt: { + mqtt_publish: `/status/temperature:102`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature103C': { + mqtt: { + mqtt_publish: `/status/temperature:103`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature103F': { + mqtt: { + mqtt_publish: `/status/temperature:103`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature104C': { + mqtt: { + mqtt_publish: `/status/temperature:104`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature104F': { + mqtt: { + mqtt_publish: `/status/temperature:104`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, }; shellyHelperGen2.addSwitchToGen2Device(shellyplus2pm, 0, true); diff --git a/lib/devices/gen2/shellyplusi4.js b/lib/devices/gen2/shellyplusi4.js index afe32cf3..dfcfc34e 100644 --- a/lib/devices/gen2/shellyplusi4.js +++ b/lib/devices/gen2/shellyplusi4.js @@ -8,7 +8,300 @@ const shellyHelperGen2 = require('../gen2-helper'); * https://shelly-api-docs.shelly.cloud/gen2/Devices/ShellyPlusI4 */ const shellyplusi4 = { - + 'Ext.input100': { + mqtt: { + mqtt_publish: `/status/input:100`, + mqtt_publish_funct: value => JSON.parse(value).state, + }, + common: { + name: 'Input100', + type: 'boolean', + role: 'state', + read: true, + write: false, + def: false, + }, + }, + 'Ext.input101': { + mqtt: { + mqtt_publish: `/status/input:101`, + mqtt_publish_funct: value => JSON.parse(value).percent, + }, + common: { + name: 'Input101', + type: 'number', + role: 'value', + read: true, + write: false, + unit: '%', + def: 0, + }, + }, + 'Ext.voltmeter100': { + mqtt: { + mqtt_publish: `/status/voltmeter:100`, + mqtt_publish_funct: value => JSON.parse(value).voltage, + }, + common: { + name: 'Volmeter100', + type: 'value.number', + role: 'value.voltage', + read: true, + write: false, + unit: 'V', + def: 0, + }, + }, + 'Ext.temperature100C': { + mqtt: { + mqtt_publish: `/status/temperature:100`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature100F': { + mqtt: { + mqtt_publish: `/status/temperature:100`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature101C': { + mqtt: { + mqtt_publish: `/status/temperature:101`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature101F': { + mqtt: { + mqtt_publish: `/status/temperature:101`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature102C': { + mqtt: { + mqtt_publish: `/status/temperature:102`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature102F': { + mqtt: { + mqtt_publish: `/status/temperature:102`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature103C': { + mqtt: { + mqtt_publish: `/status/temperature:103`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature103F': { + mqtt: { + mqtt_publish: `/status/temperature:103`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, + 'Ext.temperature104C': { + mqtt: { + mqtt_publish: `/status/temperature:104`, + mqtt_publish_funct: value => JSON.parse(value).tC, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°C', + }, + }, + 'Ext.temperature104F': { + mqtt: { + mqtt_publish: `/status/temperature:104`, + mqtt_publish_funct: value => JSON.parse(value).tF, + }, + common: { + name: { + en: 'Temperature', + de: 'Temperatur', + ru: 'Температура', + pt: 'Temperatura', + nl: 'Temperatuur', + fr: 'Température', + it: 'Temperatura', + es: 'Temperatura', + pl: 'Temperatura', + 'zh-cn': '模范', + }, + type: 'number', + role: 'value.temperature', + read: true, + write: false, + unit: '°F', + }, + }, }; shellyHelperGen2.addInputToGen2Device(shellyplusi4, 0);