如何让ioBroker的UI自动识别到设备

ioBroker中的对象(object)

这篇帖子的目的是介绍ioBroker中如何规范化设备的对象的。
有助于适配器开发,以及用户使用时如何能够手动配置对象的角色和类型,来让更多的前端UI自动发现设备。

规范化的设备

ioBroker中没有明确的设备类型概念,这一点在之前介绍[ioBroker状态值的角色定义](https://bbs.iobroker.cn/t/topic/529/1
这样对于适配器开发人员而言,是容易很多,没有了约束,所有的设备状态都可以自由设定。这样的设定对于自动化而言,也没有太大的问题,因为都是单独某一个状态变化触发,然后执行某些自动化。
可是对于前端UI而言,就不是那么友好了。因为UI最好是以设备为单位显示,而不是都是零散的状态值。
所以ioBroker的用户对于前端UI总有一些抱怨,要么是不美观,要么是需要配置很复杂(habpanel是一个例子)。
随着ioBroker社区对自身UI不足的认知的加深,出现了一些不需要太多配置,就可以自动将ioBroker中的对象按照类型生成设备图表,很大程度上减轻了用户UI配置的工作。比如:materialiqontrol

下面的内容我是根据Bluefox维护的一个自动发现设备的库type-detector总结出来的,说明了ioBroker官方规定的,何种类型的设备,应该拥有哪些角色的对象。

对象命名规则

ioBroker的对象命名规则一般需要遵守这样的规范。

<adapterName>.<instantNumber>.<device>.<channel>.<state>
  • adapterName:适配器名称,比如miio。
  • instantNumber:适配器实例编号,比如0。
  • device:代表一个真实设备。
  • channel:代表这个真实设备的一类功能。
  • state:代表这个功能的一个具体状态。

对于device,channel和state我还是需要举例说明一下(这个例子是理想状态下应该遵循的规则,但是实际上适配器作者是否遵循标准并不确定)。
比如,小米的多功能网关
这个设备本身是一个具体的设备,所以device可以叫做gateway_UUID,UUID是为了区别用户家里可能存在多个小米网关的情况。
我们知道网关拥有这样几个功能:RGB灯,在线广播播放器,光感传感器和报警器。所以这个设备应该拥有这样的几个channels:rgb,mediaPlayer,sensor,alarm。
每一个channel都对应着一些列的状态值,比如rgb对应需要配置的打开关闭调整RGB值调整亮度调整色温等。

规范化设备和对象的真值表

这里需要提前说明一点,这里的设备并不是真实的物理设备,而是一个完整功能单元的channel。对应于上面讲的小米网关的例子,小米网关这个真实设备应该可以在系统中创建成为4个设备(对应于4个channels)。
因为规定了对象的角色,所以根据角色对数值的类型要求,也就进一步得到了数值的类型和范围。

类型 对象角色 对象名称 是否必须存在
media media.state STATE 必须
media button.play或者action.play PLAY 可选
media button.pause或者action.pause PAUSE 可选
media button.stop或者action.stop STOP 可选
media button.next或者action.next NEXT 可选
media button.prev或者action.prev PREV 可选
media media.mode.shuffle SHUFFLE 可选
media media.mode.repeat REPEAT 可选
media media.artist ARTIST 可选
media media.album ALBUM 可选
media media.title TITLE 可选
media media.cover COVER 可选
media media.duration DURATION 可选
media media.elapsed ELAPSED 可选
media media.season SEEK 可选
media media.seek SEEK 可选
media media.track TRACK 可选
media media.episode EPISODE 可选
media media.season SEASON 可选
media level.volume VOLUME 可选
media value.volume VOLUME_ACTUAL 可选
media media.mute MUTE 可选
media indicator.reachable CONNECTED 可选
media indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
media indicator.maintenance MAINTAIN 可选
media indicator.error ERROR 可选
weatherForecast weather.icon或者weather.icon.forecast.0 ICON 必须
weatherForecast value.temperature.min.forecast.0 TEMP_MIN 必须
weatherForecast value.temperature.max.forecast.0 TEMP_MAX 必须
weatherForecast value.precipitation或者value.precipitation.forecast.0 PRECIPITATION_CHANCE 可选
weatherForecast date或者date.forecast.0 DATE 可选
weatherForecast dayofweek或者dayofweek.forecast.0 DOW 可选
weatherForecast weather.state或者weather.state.forecast.0 STATE 可选
weatherForecast value.temperature或者value.temperature.forecast.0 TEMP 可选
weatherForecast value.pressure PRESSURE 可选
weatherForecast value.humidity或者value.humidity.forecast.0 HUMIDITY 可选
weatherForecast value.temperature.windchill或者value.temperature.windchill.forecast.0 WIND_CHILL 可选
weatherForecast value.temperature.feelslike或者value.temperature.feelslike$.forecast.0 FEELS_LIKE 可选
weatherForecast value.speed.wind或者value.speed.wind.forecast.0 WIND_SPEED 可选
weatherForecast value.direction.wind或者value.direction.wind.forecast.0 WIND_DIRECTION 可选
weatherForecast weather.direction.wind或者weather.direction.wind.forecast.0 WIND_DIRECTION_STR 可选
weatherForecast weather.icon.wind或者weather.icon.wind.forecast.0 WIND_ICON 可选
weatherForecast weather.chart.url HISTORY_CHART 可选
weatherForecast weather.chart.url.forecast FORECAST_CHART 可选
weatherForecast location LOCATION 可选
weatherForecast weather.icon.forecast ICON%d 可选
weatherForecast value.temperature.min.forecast TEMP_MIN%d 可选
weatherForecast value.temperature.max.forecast TEMP_MAX%d 可选
weatherForecast date.forecast DATE%d 可选
weatherForecast dayofweek.forecast DOW%d 可选
weatherForecast weather.state.forecast STATE%d 可选
weatherForecast value.temperature.forecast TEMP%d 可选
weatherForecast value.humidity.forecast HUMIDITY%d 可选
weatherForecast value.humidity.max.forecast HUMIDITY_MAX%d 可选
weatherForecast value.precipitation.forecast PRECIPITATION_CHANCE%d 可选
weatherForecast value.speed.wind.forecast WIND_SPEED%d 可选
weatherForecast value.direction.wind.forecast WIND_DIRECTION%d 可选
weatherForecast weather.direction.wind.forecast WIND_DIRECTION_STR%d 可选
weatherForecast weather.icon.wind.forecast WIND_ICON%d 可选
rgb level.color.red RED 必须
rgb level.color.green GREEN 必须
rgb level.color.blue BLUE 必须
rgb level.dimmer DIMMER 可选
rgb level.brightness BRIGHTNESS 可选
rgb level.color.saturation SATURATION 可选
rgb level.color.temperature TEMPERATURE 可选
rgb switch.light ON_LIGHT 可选
rgb switch ON 可选
rgb indicator.working WORKING 可选
rgb indicator(.maintenance).unreach UNREACH 可选
rgb indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
rgb indicator.maintenance MAINTAIN 可选
rgb indicator.error ERROR 可选
rgb level.color.r RED 必须
rgb level.color.g GREEN 必须
rgb level.color.b BLUE 必须
rgb level.dimmer DIMMER 可选
rgb level.brightness BRIGHTNESS 可选
rgb level.color.saturation SATURATION 可选
rgb level.color.temperature TEMPERATURE 可选
rgb switch.light ON_LIGHT 可选
rgb switch ON 可选
rgb indicator.working WORKING 可选
rgb indicator(.maintenance).unreach UNREACH 可选
rgb indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
rgb indicator.maintenance MAINTAIN 可选
rgb indicator.error ERROR 可选
rgbSingle level.color.rgb RGB 必须
rgbSingle level.dimmer DIMMER 可选
rgbSingle level.brightness BRIGHTNESS 可选
rgbSingle level.color.saturation SATURATION 可选
rgbSingle level.color.temperature TEMPERATURE 可选
rgbSingle switch.light ON_LIGHT 可选
rgbSingle switch ON 可选
rgbSingle indicator.working WORKING 可选
rgbSingle indicator(.maintenance).unreach UNREACH 可选
rgbSingle indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
rgbSingle indicator.maintenance MAINTAIN 可选
rgbSingle indicator.error ERROR 可选
hue level.color.hue HUE 必须
hue level.dimmer DIMMER 可选
hue level.brightness BRIGHTNESS 可选
hue level.color.saturation SATURATION 可选
hue level.color.temperature TEMPERATURE 可选
hue switch.light ON 可选
hue switch ON 可选
hue indicator.working WORKING 可选
hue indicator(.maintenance).unreach UNREACH 可选
hue indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
hue indicator.maintenance MAINTAIN 可选
hue indicator.error ERROR 可选
ct level.color.temperature TEMPERATURE 必须
ct level.dimmer DIMMER 可选
ct level.brightness BRIGHTNESS 可选
ct level.color.saturation SATURATION 可选
ct switch.light ON 可选
ct switch ON 可选
ct indicator.working WORKING 可选
ct indicator(.maintenance).unreach UNREACH 可选
ct indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
ct indicator.maintenance MAINTAIN 可选
ct indicator.error ERROR 可选
warning value.warning LEVEL 必须
warning weather.title.short TITLE 可选
warning weather.title INFO 可选
warning date.start START 可选
warning date.end END 可选
warning date START 可选
warning weather.chart.url ICON 可选
warning weather.state DESC 可选
thermostat temperature SET 必须
thermostat temperature ACTUAL 可选
thermostat humidity HUMIDITY 可选
thermostat switch.boost BOOST 可选
thermostat indicator.working WORKING 可选
thermostat indicator(.maintenance).unreach UNREACH 可选
thermostat indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
thermostat indicator.maintenance MAINTAIN 可选
thermostat indicator.error ERROR 可选
blind level(.blind) SET 必须
blind value(.blind) ACTUAL 可选
blind button.stop或者action.stop STOP 可选
blind indicator.direction DIRECTION 可选
blind indicator.working WORKING 可选
blind indicator(.maintenance).unreach UNREACH 可选
blind indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
blind indicator.maintenance MAINTAIN 可选
blind indicator.error ERROR 可选
lock switch.lock SET 必须
lock state ACTUAL 可选
lock indicator.direction DIRECTION 可选
lock indicator.working WORKING 可选
lock indicator(.maintenance).unreach UNREACH 可选
lock indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
lock indicator.maintenance MAINTAIN 可选
lock indicator.error ERROR 可选
motion state.motion或者sensor.motion ACTUAL 必须
motion brightness SECOND 可选
motion indicator(.maintenance).unreach UNREACH 可选
motion indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
motion indicator.maintenance MAINTAIN 可选
motion indicator.error ERROR 可选
window state(.window)或者sensor(.window) ACTUAL 必须
window indicator(.maintenance).unreach UNREACH 可选
window indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
window indicator.maintenance MAINTAIN 可选
window indicator.error ERROR 可选
windowTilt state或者value(.window) ACTUAL 必须
windowTilt indicator(.maintenance).unreach UNREACH 可选
windowTilt indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
windowTilt indicator.maintenance MAINTAIN 可选
windowTilt indicator.error ERROR 可选
fireAlarm state或者sensor(.alarm).fire ACTUAL 必须
fireAlarm indicator(.maintenance).unreach UNREACH 可选
fireAlarm indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
fireAlarm indicator.maintenance MAINTAIN 可选
fireAlarm indicator.error ERROR 可选
door state或者state(.door) ACTUAL 必须
door indicator(.maintenance).unreach UNREACH 可选
door indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
door indicator.maintenance MAINTAIN 可选
door indicator.error ERROR 可选
dimmer level(.dimmer)或者level.brightness SET 必须
dimmer value(.dimmer) ACTUAL 可选
dimmer switch(.light)或者state ON_SET 可选
dimmer switch(.light)或者state ON_ACTUAL 可选
dimmer indicator.working WORKING 可选
dimmer indicator(.maintenance).unreach UNREACH 可选
dimmer indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
dimmer indicator.maintenance MAINTAIN 可选
dimmer indicator.error ERROR 可选
light switch(.light)或者state SET 必须
light switch(.light)或者state ACTUAL 可选
light indicator.working WORKING 可选
light indicator(.maintenance).unreach UNREACH 可选
light indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
light indicator.maintenance MAINTAIN 可选
light indicator.error ERROR 可选
volume level.volume SET 必须
volume value.volume ACTUAL 可选
volume media.mute MUTE 可选
volume indicator.working WORKING 可选
volume indicator(.maintenance).unreach UNREACH 可选
volume indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
volume indicator.maintenance MAINTAIN 可选
volume indicator.error ERROR 可选
volumeGroup level.volume.group SET 必须
volumeGroup value.volume.group ACTUAL 可选
volumeGroup media.mute.group MUTE 可选
volumeGroup indicator.working WORKING 可选
volumeGroup indicator(.maintenance).unreach UNREACH 可选
volumeGroup indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
volumeGroup indicator.maintenance MAINTAIN 可选
volumeGroup indicator.error ERROR 可选
slider level SET 必须
slider value ACTUAL 可选
slider indicator.working WORKING 可选
slider indicator(.maintenance).unreach UNREACH 可选
slider indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
slider indicator.maintenance MAINTAIN 可选
slider indicator.error ERROR 可选
socket switch或者state或者switch.active SET 必须
socket state或者state.active ACTUAL 可选
socket indicator.working WORKING 可选
socket indicator(.maintenance).unreach UNREACH 可选
socket indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
socket indicator.maintenance MAINTAIN 可选
socket indicator.error ERROR 可选
button button(…\w]+)或者action(…\w]+) SET 必须
button indicator(.maintenance).unreach UNREACH 可选
button indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
button indicator.maintenance MAINTAIN 可选
button indicator.error ERROR 可选
temperature temperature ACTUAL 必须
temperature humidity SECOND 可选
temperature indicator(.maintenance).unreach UNREACH 可选
temperature indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
temperature indicator.maintenance MAINTAIN 可选
temperature indicator.error ERROR 可选
info indicator.working WORKING 可选
info indicator(.maintenance).unreach UNREACH 可选
info indicator(.maintenance).lowbat或者indicator(.maintenance).battery LOWBAT 可选
info indicator.maintenance MAINTAIN 可选
info indicator.error ERROR 可选