Closed cweitkamp closed 6 years ago
Speaking of channel types, there is also an ongoing discussion about "group channel types" which at first glance should be the same as "channel types".
I updated my list and added some weather channels suggested by @lolodomo in #2649.
Since we will get quantities like "km/h", "m", "°C", etc. soon, I think you can remove them from the channels, see #1857
Yes, I agree. But shouldn't we define a default unit for each channel type?
The initial list of proposed channels is not enough to cover a standard need for bindings handling weather data. After an analysis of these bindings (WU weather binding, Yahoo weather binding, Netatmo binding), the following list of channels allows to minimize the redefinition of the same channel types in all these bindings. This was implemented in PR #5311
Channel Type | Category | Accessible Mode | Item Type | Label | Pattern |
---|---|---|---|---|---|
system:current-temperature | Temperature | R | Number:Temperature | Current Temperature | %.1f %unit% |
system:minimum-temperature | Temperature | R | Number:Temperature | Minimum Temperature | %.1f %unit% |
system:maximum-temperature | Temperature | R | Number:Temperature | Maximum Temperature | %.1f %unit% |
system:feeling-temperature | Temperature | R | Number:Temperature | Feeling Temperature | %.1f %unit% |
system:dew-point-temperature | Temperature | R | Number:Temperature | Dew Point Temperature | %.1f %unit% |
system:wind-chill-temperature | Temperature | R | Number:Temperature | Wind Chill Temperature | %.1f %unit% |
system:heat-index | Temperature | R | Number:Temperature | Heat Index | %.1f %unit% |
system:relative-humidity | Humidity | R | Number:Dimensionless | Relative Humidity | %.0f %unit% |
system:barometric-pressure | Pressure | R | Number:Pressure | Barometric Pressure | %.3f %unit% |
system:absolute-pressure | Pressure | R | Number:Pressure | Absolute Pressure | %.3f %unit% |
system:wind-speed | Wind | R | Number:Speed | Wind Speed | %.1f %unit% |
system:maximum-wind-speed | Wind | R | Number:Speed | Maximum Wind Speed | %.1f %unit% |
system:average-wind-speed | Wind | R | Number:Speed | Average Wind Speed | %.1f %unit% |
system:wind-gust-speed | Wind | R | Number:Speed | Wind Gust Speed | %.1f %unit% |
system:wind-direction | Wind | R | Number:Angle | Wind Direction | %.0f %unit% |
system:maximum-wind-direction | Wind | R | Number:Angle | Maximum Wind Direction | %.0f %unit% |
system:average-wind-direction | Wind | R | Number:Angle | Average Wind Direction | %.0f %unit% |
system:wind-gust-direction | Wind | R | Number:Angle | Wind Gust Direction | %.0f %unit% |
system:rain-hour | Rain | R | Number:Length | Rainfall Hour | %.2f %unit% |
system:rain-day | Rain | R | Number:Length | Rainfall Day | %.2f %unit% |
system:snow-hour | Rain | R | Number:Length | Snowfall Hour | %.2f %unit% |
system:snow-day | Rain | R | Number:Length | Snowfall Day | %.2f %unit% |
system:proba-precipitation | Rain | R | Number:Dimensionless | Probability of precipitation | %.0f %unit% |
system:current-weather-conditions | R | String | Current Weather Conditions | %s | |
system:forecast-weather-conditions | R | String | Forecast Weather Conditions | %s |
Regarding the channel type granularity, defining one unique channel type for any temperature was my first approach when Ifirst implemented the WU binding but @kaikreuzer explained what should be the expected granularity of a channel type by updating the documentation with a concrete example with temperature : https://github.com/eclipse/smarthome/blob/master/docs/documentation/development/bindings/thing-definition.md That is why we need several channel types for temperature and not just one.
Extract of the documentation:
The granularity of channel types should be on its semantic level, i.e. very fine-grained: If a Thing measures two temperature values, one for indoor and one for outdoor, this should be modelled as two different channel types. Overriding labels of a channel type must only be done if the very same functionality is offered multiple times, e.g. having an actuator with 5 relays, which each is a simple "switch", but you want to individually name the channels (1-5).
The sensebox binding ( https://docs.openhab.org/addons/bindings/sensebox/readme.html ) supports:
and particle densities, measured in [%.1f µg/m³].
Of those, I believe the light level and uv intensity could deserve to become system channel types, but the particle densities are pretty specific to the sensebox binding...
Although, scanning the list of bindings, I noticed that the Air Quality binding ( https://docs.openhab.org/addons/bindings/airquality/readme.html ) also has particle density information...
Here are my findings on this discussion:
How I proceeded: First i searched for all channel definitions in ESH and OH2:
find . -iname "*.xml" -exec grep -Hin "channel-type id=" {} \;
This resulted in a list of 2351 channel (730 are from the nibeheatpump binding alone btw!).
In this list i searched for the entries in the list from @cweitkamp in https://github.com/eclipse/smarthome/issues/3756#issue-238858603 and @hakan42 in https://github.com/eclipse/smarthome/issues/3756#issuecomment-379753708. I tried to grep fuzzily, i.e. different spellings where grouped into one. I sorted my findings by the amount of bindings which have a specific channel.
Three of those channel-types are a bit special, namely: temperature, humidity, and pressure. Those types highly depend on their context and position/location of the sensor, i.e. if its a outdoor vs indoor temperature, relative vs absolute humidity, etc. So having them as system-channels which should provide a semantic meaning is probably not a good choice.
In addition I browsed the full list of 2351 channels, picked some channels which seamed to be used more often, and added them to my results, too.
As you can see, channel-types like rain
or snow
are not really candidates for a system-channel, because they are rarely used.
We should define a certain number of bidings which have to have a specific channel until it can become a system channel, otherwise we will polute the system-channels with potentially unimportant ones.
What about setting this number to 5, so at least 5 bindings have to use the same channel-type before it can become a system-channel?
WDYT?
./org.eclipse.smarthome.binding.lifx/ESH-INF/thing/channel.xml:44: <channel-type id="temperature">
./org.eclipse.smarthome.binding.yahooweather/ESH-INF/thing/thing-types.xml:32: <channel-type id="temperature">
./org.eclipse.smarthome.binding.weatherunderground/ESH-INF/thing/thing-types.xml:256: <channel-type id="temperature">
./org.openhab.binding.nest/ESH-INF/thing/channels.xml:186: <channel-type id="Temperature">
./org.openhab.binding.netatmo/ESH-INF/thing/channels.xml:21: <channel-type id="temperature">
./org.openhab.binding.gardena/ESH-INF/thing/thing-types.xml:266: <channel-type id="temperature" advanced="true">
./org.openhab.binding.toon/ESH-INF/thing/channels.xml:7: <channel-type id="temperature">
./org.openhab.binding.rfxcom/ESH-INF/thing/channels.xml:141: <channel-type id="temperature">
./org.openhab.binding.plugwise/ESH-INF/thing/channel.xml:85: <channel-type id="temperature">
./org.openhab.binding.synopanalyzer/ESH-INF/thing/thing-types.xml:41: <channel-type id="temperature">
./org.openhab.binding.tellstick/ESH-INF/thing/sensor.xml:53: <channel-type id="temperature">
./org.openhab.binding.tesla/ESH-INF/thing/models.xml:583: <channel-type id="temperature" advanced="true">
./org.openhab.binding.mihome/ESH-INF/thing/channel.xml:113: <channel-type id="temperature">
./org.openhab.binding.airquality/ESH-INF/thing/thing-types.xml:142: <channel-type id="temperature" advanced="true">
./org.openhab.binding.vitotronic/ESH-INF/thing/thing-types.xml:465: <channel-type id="temperature">
./org.openhab.binding.jeelink/ESH-INF/thing/thing-types.xml:238: <channel-type id="temperature">
./org.openhab.binding.sensebox/ESH-INF/thing/channels.xml:138: <channel-type id="temperature">
./org.openhab.binding.avmfritz/ESH-INF/thing/channel-types.xml:39: <channel-type id="temperature">
./org.openhab.binding.onewiregpio/ESH-INF/thing/thing-types.xml:28: <channel-type id="temperature">
./org.openhab.binding.seneye/ESH-INF/thing/thing-types.xml:50: <channel-type id="temperature">
./org.eclipse.smarthome.binding.sonos/ESH-INF/thing/channels.xml:128: <channel-type id="mute" advanced="true">
./org.eclipse.smarthome.binding.fsinternetradio/ESH-INF/thing/thing-types.xml:76: <channel-type id="mute">
./org.openhab.binding.allplay/ESH-INF/thing/thing-types.xml:138: <channel-type id="mute" advanced="true">
./org.openhab.binding.yamahareceiver/ESH-INF/thing/thing-types.xml:145: <channel-type id="mute">
./org.openhab.binding.squeezebox/ESH-INF/thing/thing-types.xml:136: <channel-type id="mute" advanced="true">
./org.openhab.binding.lgwebos/ESH-INF/thing/thing-types.xml:33: <channel-type id="muteType">
./org.openhab.binding.chromecast/ESH-INF/thing/thing-types.xml:161: <channel-type id="mute" advanced="true">
./org.openhab.binding.pulseaudio/ESH-INF/thing/channels.xml:14: <channel-type id="mute">
./org.openhab.binding.lgtvserial/ESH-INF/thing/thing-types.xml:61: <channel-type id="mute">
./org.openhab.binding.onkyo/ESH-INF/thing/channels.xml:48: <channel-type id="mute">
./org.openhab.binding.kodi/ESH-INF/thing/thing-types.xml:45: <channel-type id="mute">
./org.openhab.binding.samsungtv/ESH-INF/thing/channel-types.xml:13: <channel-type id="mute">
./org.openhab.binding.russound/ESH-INF/thing/thing-types.xml:269: <channel-type id="zoneMute">
./org.openhab.binding.atlona/ESH-INF/thing/thing-types.xml:608: <channel-type id="volumemute">
./org.openhab.binding.pioneeravr/ESH-INF/thing/thing-types.xml:325: <channel-type id="muteChannel">
./org.openhab.binding.rotelra1x/ESH-INF/thing/thing-types.xml:46: <channel-type id="mute">
./org.eclipse.smarthome.binding.fsinternetradio/ESH-INF/thing/thing-types.xml:51: <channel-type id="power">
./org.openhab.binding.yamahareceiver/ESH-INF/thing/thing-types.xml:85: <channel-type id="power">
./org.openhab.binding.squeezebox/ESH-INF/thing/thing-types.xml:131: <channel-type id="power" advanced="true">
/org.openhab.binding.orvibo/ESH-INF/thing/thing-types.xml:23: <channel-type id="power">
./org.openhab.binding.lgwebos/ESH-INF/thing/thing-types.xml:28: <channel-type id="powerType">
./org.openhab.binding.zway/ESH-INF/thing/channels.xml:111: <channel-type id="switchPowerOutlet">
./org.openhab.binding.mihome/ESH-INF/thing/channel.xml:191: <channel-type id="power">
./org.openhab.binding.wifiled/ESH-INF/thing/wifiled.xml:74: <channel-type id="power">
./org.openhab.binding.lgtvserial/ESH-INF/thing/thing-types.xml:30: <channel-type id="power">
./org.openhab.binding.onkyo/ESH-INF/thing/channels.xml:7: <channel-type id="power">
./org.openhab.binding.samsungtv/ESH-INF/thing/channel-types.xml:91: <channel-type id="power">
./org.openhab.binding.atlona/ESH-INF/thing/thing-types.xml:557: <channel-type id="power">
./org.openhab.binding.pioneeravr/ESH-INF/thing/thing-types.xml:303: <channel-type id="powerChannel">
./org.openhab.binding.rotelra1x/ESH-INF/thing/thing-types.xml:39: <channel-type id="power">
./org.openhab.binding.coolmasternet/ESH-INF/thing/thing-types.xml:64: <channel-type id="power">
./org.eclipse.smarthome.binding.sonos/ESH-INF/thing/channels.xml:258: <channel-type id="volume">
./org.openhab.binding.allplay/ESH-INF/thing/thing-types.xml:164: <channel-type id="volume">
./org.openhab.binding.yamahareceiver/ESH-INF/thing/thing-types.xml:130: <channel-type id="volume">
./org.openhab.binding.squeezebox/ESH-INF/thing/thing-types.xml:141: <channel-type id="volume">
./org.openhab.binding.chromecast/ESH-INF/thing/thing-types.xml:154: <channel-type id="volume">
./org.openhab.binding.mihome/ESH-INF/thing/channel.xml:64: <channel-type id="volume">
./org.openhab.binding.pulseaudio/ESH-INF/thing/channels.xml:6: <channel-type id="volume">
./org.openhab.binding.lgtvserial/ESH-INF/thing/thing-types.xml:54: <channel-type id="volume">
./org.openhab.binding.onkyo/ESH-INF/thing/channels.xml:53: <channel-type id="volume">
./org.openhab.binding.kodi/ESH-INF/thing/thing-types.xml:50: <channel-type id="volume">
./org.openhab.binding.samsungtv/ESH-INF/thing/channel-types.xml:6: <channel-type id="volume">
./org.openhab.binding.atlona/ESH-INF/thing/thing-types.xml:602: <channel-type id="volume">
./org.openhab.binding.rotelra1x/ESH-INF/thing/thing-types.xml:53: <channel-type id="volume">
./org.eclipse.smarthome.binding.yahooweather/ESH-INF/thing/thing-types.xml:41: <channel-type id="humidity">
./org.openhab.binding.nest/ESH-INF/thing/channels.xml:284: <channel-type id="Humidity">
./org.openhab.binding.netatmo/ESH-INF/thing/channels.xml:235: <channel-type id="humidity">
./org.openhab.binding.gardena/ESH-INF/thing/thing-types.xml:470: <channel-type id="humidity">
./org.openhab.binding.rfxcom/ESH-INF/thing/channels.xml:165: <channel-type id="humidity">
./org.openhab.binding.plugwise/ESH-INF/thing/channel.xml:14: <channel-type id="humidity">
./org.openhab.binding.tellstick/ESH-INF/thing/sensor.xml:62: <channel-type id="humidity">
./org.openhab.binding.mihome/ESH-INF/thing/channel.xml:121: <channel-type id="humidity">
./org.openhab.binding.airquality/ESH-INF/thing/thing-types.xml:158: <channel-type id="humidity" advanced="true">
./org.openhab.binding.jeelink/ESH-INF/thing/thing-types.xml:247: <channel-type id="humidity">
./org.openhab.binding.sensebox/ESH-INF/thing/channels.xml:117: <channel-type id="humidity">
./org.openhab.binding.meteostick/ESH-INF/thing/thing-types.xml:91: <channel-type id="humidity">
./org.eclipse.smarthome.binding.yahooweather/ESH-INF/thing/thing-types.xml:50: <channel-type id="pressure">
./org.eclipse.smarthome.binding.weatherunderground/ESH-INF/thing/thing-types.xml:404: <channel-type id="pressure">
./org.openhab.binding.netatmo/ESH-INF/thing/channels.xml:205: <channel-type id="pressure">
./org.openhab.binding.rfxcom/ESH-INF/thing/channels.xml:187: <channel-type id="pressure">
./org.openhab.binding.synopanalyzer/ESH-INF/thing/thing-types.xml:50: <channel-type id="pressure">
./org.openhab.binding.oceanic/ESH-INF/thing/channel-types.xml:89: <channel-type id="pressure">
./org.openhab.binding.mihome/ESH-INF/thing/channel.xml:129: <channel-type id="pressure">
./org.openhab.binding.airquality/ESH-INF/thing/thing-types.xml:150: <channel-type id="pressure" advanced="true">
./org.openhab.binding.sensebox/ESH-INF/thing/channels.xml:97: <channel-type id="pressure">
./org.openhab.binding.meteostick/ESH-INF/thing/thing-types.xml:100: <channel-type id="pressure">
./org.eclipse.smarthome.binding.sonos/ESH-INF/thing/channels.xml:81: <channel-type id="currenttitle">
./org.openhab.binding.allplay/ESH-INF/thing/thing-types.xml:103: <channel-type id="currenttitle">
./org.openhab.binding.squeezebox/ESH-INF/thing/thing-types.xml:235: <channel-type id="title">
./org.openhab.binding.chromecast/ESH-INF/thing/thing-types.xml:352: <channel-type id="title" advanced="true">
./org.openhab.binding.feed/ESH-INF/thing/thing-types.xml:73: <channel-type id="title" advanced="true">
./org.openhab.binding.onkyo/ESH-INF/thing/channels.xml:143: <channel-type id="title" advanced="true">
./org.openhab.binding.kodi/ESH-INF/thing/thing-types.xml:351: <channel-type id="title">
./org.openhab.binding.samsungtv/ESH-INF/thing/channel-types.xml:65: <channel-type id="programtitle">
./org.openhab.binding.russound/ESH-INF/thing/thing-types.xml:512: <channel-type id="srcMMTitle" advanced="true">
./org.eclipse.smarthome.binding.dmx/ESH-INF/thing/channels.xml:4: <channel-type id="brightness">
./org.eclipse.smarthome.binding.lifx/ESH-INF/thing/channel.xml:6: <channel-type id="brightness">
./org.eclipse.smarthome.binding.hue/ESH-INF/thing/channels.xml:21: <channel-type id="brightness">
./org.eclipse.smarthome.binding.wemo/ESH-INF/thing/thing-types.xml:259: <channel-type id="brightness">
./org.eclipse.smarthome.binding.tradfri/ESH-INF/thing/thing-types.xml:122: <channel-type id="brightness">
./org.openhab.binding.tplinksmarthome/ESH-INF/thing/channels.xml:68: <channel-type id="brightness">
./org.openhab.binding.nikohomecontrol/ESH-INF/thing/thing-types.xml:99: <channel-type id="brightness">
./org.openhab.binding.mihome/ESH-INF/thing/channel.xml:18: <channel-type id="brightness">
./org.openhab.binding.samsungtv/ESH-INF/thing/channel-types.xml:19: <channel-type id="brightness" advanced="true"> (TV screen brightness)
./org.openhab.binding.rotelra1x/ESH-INF/thing/thing-types.xml:87: <channel-type id="brightness" advanced="true"> (screen backlight brightness)
./org.eclipse.smarthome.binding.dmx/ESH-INF/thing/channels.xml:24: <channel-type id="color">
./org.eclipse.smarthome.binding.lifx/ESH-INF/thing/channel.xml:17: <channel-type id="color">
./org.eclipse.smarthome.binding.hue/ESH-INF/thing/channels.xml:7: <channel-type id="color">
./org.eclipse.smarthome.binding.tradfri/ESH-INF/thing/thing-types.xml:139: <channel-type id="color">
./org.openhab.binding.tplinksmarthome/ESH-INF/thing/channels.xml:51: <channel-type id="color">
./org.openhab.binding.mihome/ESH-INF/thing/channel.xml:39: <channel-type id="color">
./org.openhab.binding.wifiled/ESH-INF/thing/wifiled.xml:79: <channel-type id="color">
./org.openhab.binding.feican/ESH-INF/thing/channels.xml:7: <channel-type id="color">
./org.eclipse.smarthome.binding.dmx/ESH-INF/thing/channels.xml:14: <channel-type id="color_temperature">
./org.eclipse.smarthome.binding.hue/ESH-INF/thing/channels.xml:47: <channel-type id="color_temperature">
./org.eclipse.smarthome.binding.tradfri/ESH-INF/thing/thing-types.xml:132: <channel-type id="color_temperature">
./org.openhab.binding.tplinksmarthome/ESH-INF/thing/channels.xml:61: <channel-type id="colorTemperature">
./org.openhab.binding.mihome/ESH-INF/thing/channel.xml:49: <channel-type id="colorTemperature">
./org.openhab.binding.lgtvserial/ESH-INF/thing/thing-types.xml:74: <channel-type id="color-temperature">
./org.openhab.binding.samsungtv/ESH-INF/thing/channel-types.xml:37: <channel-type id="colortemperature" advanced="true">
./org.openhab.binding.feican/ESH-INF/thing/channels.xml:18: <channel-type id="color_temperature">
./org.eclipse.smarthome.binding.sonos/ESH-INF/thing/channels.xml:74: <channel-type id="currentartist">
./org.openhab.binding.allplay/ESH-INF/thing/thing-types.xml:85: <channel-type id="currentartist">
./org.openhab.binding.yamahareceiver/ESH-INF/thing/thing-types.xml:182: <channel-type id="playback_artist">
./org.openhab.binding.squeezebox/ESH-INF/thing/thing-types.xml:253: <channel-type id="artist">
./org.openhab.binding.chromecast/ESH-INF/thing/thing-types.xml:247: <channel-type id="artist" advanced="true">
./org.openhab.binding.onkyo/ESH-INF/thing/channels.xml:167: <channel-type id="artist" advanced="true">
./org.openhab.binding.kodi/ESH-INF/thing/thing-types.xml:369: <channel-type id="artist">
./org.openhab.binding.russound/ESH-INF/thing/thing-types.xml:408: <channel-type id="srcArtistName">
./org.eclipse.smarthome.binding.weatherunderground/ESH-INF/thing/thing-types.xml:214: <channel-type id="location" advanced="true">
./org.openhab.binding.netatmo/ESH-INF/thing/channels.xml:14: <channel-type id="location">
./org.openhab.binding.tesla/ESH-INF/thing/models.xml:379: <channel-type id="location" advanced="false">
./org.openhab.binding.minecraft/ESH-INF/thing/thing-types.xml:109: <channel-type id="location">
./org.openhab.binding.icloud/ESH-INF/thing/thing-types.xml:70: <channel-type id="Location">
./org.openhab.binding.sensebox/ESH-INF/thing/channels.xml:45: <channel-type id="location">
./org.eclipse.smarthome.binding.wemo/ESH-INF/thing/thing-types.xml:170: <channel-type id="motionDetection">
./org.openhab.binding.bigassfan/ESH-INF/thing/thing-types.xml:214: <channel-type id="motion">
./org.openhab.binding.rfxcom/ESH-INF/thing/channels.xml:73: <channel-type id="motion">
./org.openhab.binding.zway/ESH-INF/thing/channels.xml:104: <channel-type id="sensorMotion">
./org.openhab.binding.mihome/ESH-INF/thing/channel.xml:169: <channel-type id="motion">
./org.openhab.binding.helios/ESH-INF/thing/channel-types.xml:121: <channel-type id="motion">
./org.openhab.binding.innogysmarthome/ESH-INF/thing/channels.xml:128: <channel-type id="MotionDetectionSensor">
./org.eclipse.smarthome.binding.sonos/ESH-INF/thing/channels.xml:39: <channel-type id="control">
./org.openhab.binding.allplay/ESH-INF/thing/thing-types.xml:61: <channel-type id="control">
./org.openhab.binding.squeezebox/ESH-INF/thing/thing-types.xml:173: <channel-type id="control">
./org.openhab.binding.chromecast/ESH-INF/thing/thing-types.xml:148: <channel-type id="control">
./org.openhab.binding.onkyo/ESH-INF/thing/channels.xml:60: <channel-type id="control" advanced="true">
./org.openhab.binding.kodi/ESH-INF/thing/thing-types.xml:56: <channel-type id="control">
./org.eclipse.smarthome.binding.sonos/ESH-INF/thing/channels.xml:246: <channel-type id="stop" advanced="true">
./org.openhab.binding.allplay/ESH-INF/thing/thing-types.xml:154: <channel-type id="stop" advanced="true">
./org.openhab.binding.freebox/ESH-INF/thing/thing-types.xml:523: <channel-type id="stop">
./org.openhab.binding.squeezebox/ESH-INF/thing/thing-types.xml:148: <channel-type id="stop" advanced="true">
./org.openhab.binding.kodi/ESH-INF/thing/thing-types.xml:62: <channel-type id="stop">
./org.openhab.binding.miele/ESH-INF/thing/channeltypes.xml:75: <channel-type id="stop" advanced="false">
./org.eclipse.smarthome.binding.weatherunderground/ESH-INF/thing/thing-types.xml:321: <channel-type id="windDirection">
./org.openhab.binding.rfxcom/ESH-INF/thing/channels.xml:217: <channel-type id="winddirection">
./org.openhab.binding.synopanalyzer/ESH-INF/thing/thing-types.xml:68: <channel-type id="wind-direction">
./org.openhab.binding.windcentrale/ESH-INF/thing/millThing.xml:62: <channel-type id="windDirection">
./org.openhab.binding.tellstick/ESH-INF/thing/sensor.xml:102: <channel-type id="winddirection">
./org.openhab.binding.meteostick/ESH-INF/thing/thing-types.xml:109: <channel-type id="wind-direction">
./org.eclipse.smarthome.binding.weatherunderground/ESH-INF/thing/thing-types.xml:372: <channel-type id="windSpeed">
./org.openhab.binding.rfxcom/ESH-INF/thing/channels.xml:210: <channel-type id="windspeed">
./org.openhab.binding.synopanalyzer/ESH-INF/thing/thing-types.xml:93: <channel-type id="wind-speed-ms">
./org.openhab.binding.windcentrale/ESH-INF/thing/millThing.xml:56: <channel-type id="windSpeed">
./org.openhab.binding.meteostick/ESH-INF/thing/thing-types.xml:118: <channel-type id="wind-speed">
./org.openhab.binding.bigassfan/ESH-INF/thing/thing-types.xml:87: <channel-type id="fan-speed">
./org.openhab.binding.freebox/ESH-INF/thing/thing-types.xml:297: <channel-type id="fanspeed" advanced="true">
./org.openhab.binding.vitotronic/ESH-INF/thing/thing-types.xml:240: <channel-type id="fanspeed">
./org.openhab.binding.coolmasternet/ESH-INF/thing/thing-types.xml:103: <channel-type id="fan_speed">
./org.eclipse.smarthome.binding.weatherunderground/ESH-INF/thing/thing-types.xml:457: <channel-type id="rainHour">
./org.openhab.binding.netatmo/ESH-INF/thing/channels.xml:274: <channel-type id="rain">
./org.openhab.binding.opensprinkler/ESH-INF/thing/thing-types.xml:446: <channel-type id="rainsensor">
./org.openhab.binding.meteostick/ESH-INF/thing/thing-types.xml:145: <channel-type id="rain-currenthour">
./org.eclipse.smarthome.binding.weatherunderground/ESH-INF/thing/thing-types.xml:441: <channel-type id="UVIndex" advanced="true">
./org.openhab.binding.rfxcom/ESH-INF/thing/channels.xml:134: <channel-type id="uv">
./org.openhab.binding.sensebox/ESH-INF/thing/channels.xml:57: <channel-type id="uvIntensity">
./org.eclipse.smarthome.binding.bluetooth.blukii/ESH-INF/thing/blukii.xml:56: <channel-type id="blukii_luminance">
./org.openhab.binding.sensebox/ESH-INF/thing/channels.xml:77: <channel-type id="luminance">
./org.openhab.binding.innogysmarthome/ESH-INF/thing/channels.xml:137: <channel-type id="LuminanceSensor"> (in percent???)
./org.eclipse.smarthome.binding.weatherunderground/ESH-INF/thing/thing-types.xml:465: <channel-type id="snow">
Please consider for weather data that we should have one binding defined per provider. System channels would be interesting in this case to not have each binding defining the same channels.
Of course we will also consider weather channel in the system-channel list. If a channel is used "often enough" we will create a system channel for it.
Regarding my fore-mentioned problem with temperature
, pressure
, humidity
:
For temperature
we could start with a outdoor_temperature
channel which can then be used by weather bindings, but also in a heating binding if the heating device has a sensor for the temperature outside the house.
pressure
should probably become atmospheric_pressure
to be used by weather bindings.
For humidity
I am not sure how to proceed, i.e. how to call it and what to replace by the system channel.
Please note that you missed the netatmo binding for few channels like wind direction and winnd speed for example.
As the idea is to have one binding per weather data provider, even if we have currently only 2 bindings implemented in ESH and OH2, we could have later around 8 weather bindings (look at the openhab 1 weather binding how many providers are considered).
I am not sure but it is probable that the ESH Yahoo weather binding did not expose all information provided by the service because only temperature, humidity and pressure looks weird to me.
These are all netatmo channel for now:
~/openhab2-master/git/openhab2-addons/addons/binding/org.openhab.binding.netatmo [master]$ find . -iname "*.xml" -exec grep -Hin "channel-type id=" {} \;
./ESH-INF/thing/welcomecamera.xml:30: <channel-type id="status">
./ESH-INF/thing/welcomecamera.xml:37: <channel-type id="sd_status">
./ESH-INF/thing/welcomecamera.xml:44: <channel-type id="alim_status">
./ESH-INF/thing/welcomecamera.xml:51: <channel-type id="is_locale" advanced="true">
./ESH-INF/thing/welcomecamera.xml:58: <channel-type id="live_picture_url" advanced="true">
./ESH-INF/thing/welcomecamera.xml:65: <channel-type id="live_picture" >
./ESH-INF/thing/welcomecamera.xml:72: <channel-type id="live_stream_url" advanced="true">
./ESH-INF/thing/channels.xml:7: <channel-type id="lastStatusStore" advanced="true">
./ESH-INF/thing/channels.xml:14: <channel-type id="location">
./ESH-INF/thing/channels.xml:21: <channel-type id="temperature">
./ESH-INF/thing/channels.xml:29: <channel-type id="minTemp" advanced="true">
./ESH-INF/thing/channels.xml:37: <channel-type id="maxTemp" advanced="true">
./ESH-INF/thing/channels.xml:45: <channel-type id="temperatureTrend" advanced="true">
./ESH-INF/thing/channels.xml:59: <channel-type id="setpointTemp">
./ESH-INF/thing/channels.xml:67: <channel-type id="boilerOn">
./ESH-INF/thing/channels.xml:75: <channel-type id="boilerOff">
./ESH-INF/thing/channels.xml:83: <channel-type id="setpointMode">
./ESH-INF/thing/channels.xml:99: <channel-type id="ThermRelayCmd" advanced="false">
./ESH-INF/thing/channels.xml:106: <channel-type id="ThermOrientation" advanced="true">
./ESH-INF/thing/channels.xml:113: <channel-type id="timeUtc" advanced="true">
./ESH-INF/thing/channels.xml:120: <channel-type id="lastPlugSeen" advanced="true">
./ESH-INF/thing/channels.xml:127: <channel-type id="dateMinTemp" advanced="true">
./ESH-INF/thing/channels.xml:134: <channel-type id="dateMaxTemp" advanced="true">
./ESH-INF/thing/channels.xml:141: <channel-type id="lastBilan" advanced="true">
./ESH-INF/thing/channels.xml:148: <channel-type id="connectedBoiler" advanced="true">
./ESH-INF/thing/channels.xml:154: <channel-type id="lastMessage" advanced="true">
./ESH-INF/thing/channels.xml:161: <channel-type id="setpointEndTime" advanced="true">
./ESH-INF/thing/channels.xml:168: <channel-type id="lastThermSeen" advanced="true">
./ESH-INF/thing/channels.xml:175: <channel-type id="co2">
./ESH-INF/thing/channels.xml:182: <channel-type id="noise">
./ESH-INF/thing/channels.xml:190: <channel-type id="healthindex">
./ESH-INF/thing/channels.xml:205: <channel-type id="pressure">
./ESH-INF/thing/channels.xml:213: <channel-type id="pressureTrend" advanced="true">
./ESH-INF/thing/channels.xml:227: <channel-type id="absolutePressure" advanced="true">
./ESH-INF/thing/channels.xml:235: <channel-type id="humidity">
./ESH-INF/thing/channels.xml:243: <channel-type id="humidex">
./ESH-INF/thing/channels.xml:251: <channel-type id="heatIndex">
./ESH-INF/thing/channels.xml:259: <channel-type id="dewPoint" advanced="true">
./ESH-INF/thing/channels.xml:267: <channel-type id="dewPointDepression" advanced="true">
./ESH-INF/thing/channels.xml:274: <channel-type id="rain">
./ESH-INF/thing/channels.xml:282: <channel-type id="rain1" advanced="true">
./ESH-INF/thing/channels.xml:290: <channel-type id="rain24" advanced="true">
./ESH-INF/thing/channels.xml:298: <channel-type id="WindAngle">
./ESH-INF/thing/channels.xml:306: <channel-type id="WindStrength">
./ESH-INF/thing/channels.xml:314: <channel-type id="GustAngle">
./ESH-INF/thing/channels.xml:322: <channel-type id="GustStrength">
./ESH-INF/thing/channels.xml:330: <channel-type id="unit">
./ESH-INF/thing/channels.xml:342: <channel-type id="windUnit">
./ESH-INF/thing/channels.xml:357: <channel-type id="pressureUnit">
./ESH-INF/thing/channels.xml:370: <channel-type id="homeEvent">
./ESH-INF/thing/welcomehome.xml:40: <channel-type id="homecity">
./ESH-INF/thing/welcomehome.xml:46: <channel-type id="homecountry">
./ESH-INF/thing/welcomehome.xml:52: <channel-type id="hometimezone">
./ESH-INF/thing/welcomehome.xml:58: <channel-type id="homepersoncount" advanced="false">
./ESH-INF/thing/welcomehome.xml:64: <channel-type id="homeunknowncount" advanced="true">
./ESH-INF/thing/welcomehome.xml:71: <channel-type id="type">
./ESH-INF/thing/welcomehome.xml:77: <channel-type id="time">
./ESH-INF/thing/welcomehome.xml:83: <channel-type id="camera_id">
./ESH-INF/thing/welcomehome.xml:89: <channel-type id="person_id">
./ESH-INF/thing/welcomehome.xml:95: <channel-type id="snapshot_url" advanced="true">
./ESH-INF/thing/welcomehome.xml:102: <channel-type id="snapshot" >
./ESH-INF/thing/welcomehome.xml:109: <channel-type id="video_url" advanced="true">
./ESH-INF/thing/welcomehome.xml:115: <channel-type id="video_status">
./ESH-INF/thing/welcomehome.xml:121: <channel-type id="is_arrival">
./ESH-INF/thing/welcomehome.xml:127: <channel-type id="message">
./ESH-INF/thing/welcomehome.xml:133: <channel-type id="sub_type" advanced="true">
./ESH-INF/thing/welcomeperson.xml:30: <channel-type id="last_seen">
./ESH-INF/thing/welcomeperson.xml:37: <channel-type id="person_athome">
./ESH-INF/thing/welcomeperson.xml:43: <channel-type id="person_eventmsg">
./ESH-INF/thing/welcomeperson.xml:50: <channel-type id="person_eventtime">
./ESH-INF/thing/welcomeperson.xml:57: <channel-type id="person_avatar_url" advanced="true">
./ESH-INF/thing/welcomeperson.xml:64: <channel-type id="person_avatar" >
./ESH-INF/thing/welcomeperson.xml:71: <channel-type id="person_event" >
./ESH-INF/thing/welcomeperson.xml:78: <channel-type id="person_event_url" advanced="true">
By "missing channels", do you mean these?
./ESH-INF/thing/channels.xml:298: <channel-type id="WindAngle">
./ESH-INF/thing/channels.xml:306: <channel-type id="WindStrength">
Is the angle of the wind the same as direction? Maybe it is, But maybe some other bindings treat this as "N, S, NW, SE", etc. And is the "strength" the speed in like "m/s"?
If it is like that, for sure we can add them! I guess my list above is not complete anyway because I have done a manual scan through all channels and I might have missed a few.
If you want to add new bindings later with potential candidates for further system channels, I do not see any problem with it, but I would like to leave this out of this discussion. This system channel list is not build in stone :) WDYT?
In https://github.com/eclipse/smarthome/issues/1093#issuecomment-254009786 @kaikreuzer mentioned these 3 potential system-channels:
"lock" with states "LOCKED", "UNLOCKED", "JAMMED". Question to the native speakers: Would "secured" really be a better word here? To me it sounds weird...
"acMode": With states OFF, AUTO, HEAT, COOL.
"rotationDirection": "CLOCKWISE", "COUNTERCLOCKWISE"
I just link them here to have a collection of all suggestions in one issue. We still have to check how many bindings make use of them and if its worth to (already) create a system channel type for them.
Do we have any consolidated list of suggested channels now? I must admit I am slightly lost with all the different tables and grep results in this issue...
Regarding my https://github.com/eclipse/smarthome/issues/3756#issuecomment-382370721: I just checked the occurrences of "lock", "acMode", and "rotationDirection" in all ESH and openhab2-addons bindings.
lock: 6
./org.openhab.binding.nest/ESH-INF/thing/channels.xml:373: <channel-type id="Locked" advanced="true">
./org.openhab.binding.lutron/ESH-INF/thing/thing-types.xml:593: <channel-type id="scenelock">
./org.openhab.binding.lutron/ESH-INF/thing/thing-types.xml:607: <channel-type id="zonelock">
./org.openhab.binding.tesla/ESH-INF/thing/models.xml:292: <channel-type id="doorlock">
./org.openhab.binding.zway/ESH-INF/thing/channels.xml:141: <channel-type id="doorlock">
./org.openhab.binding.keba/ESH-INF/thing/kecontact.xml:86: <channel-type id="locked"> (read-only)
./org.openhab.binding.atlona/ESH-INF/thing/thing-types.xml:562: <channel-type id="panellock" advanced="true">
acMode: 4
./org.openhab.binding.bigassfan/ESH-INF/thing/thing-types.xml:115: <channel-type id="fan-smartmode">
./org.openhab.binding.nest/ESH-INF/thing/channels.xml:380: <channel-type id="Mode">
./org.openhab.binding.nest/ESH-INF/thing/channels.xml:395: <channel-type id="PreviousMode" advanced="true">
./org.openhab.binding.pentair/ESH-INF/thing/easytouch.xml:81: <channel-type id="heatmode"> (uses numbers instead of string)
./org.openhab.binding.coolmasternet/ESH-INF/thing/thing-types.xml:71: <channel-type id="hvac_mode"> (lower-case strings)
rotationDirection: 0
The question now is: Do we agree on this?
What about setting this number to 5, so at least 5 bindings have to use the same channel-type before it can become a system-channel?
If so, @cweitkamp Could you please be so kind to update the table in the first post accordingly?
To sum up the postings from above:
In addition to the 3 existing system channels: system.signal-strength
, system.low-battery
, and system.battery-level
I would propose to add the following new channels, because at least 5 bindings make use of them. More can be added upon necessity.
Channel Type | Category | Accessible Mode | Item Type | Description | Other |
---|---|---|---|---|---|
system.mute | SoundVolume | RW | Switch | Turn on/off the volume of a device | |
system.power | - | RW | Switch | Turn a device on/off | |
system.volume | SoundVolume | RW | Dimmer | Change the sound volume of a device | pattern="%d %%", min="0", max="100" |
system.media-title | - | R | String | Title of a (played) song | |
system.brightness | Light | RW | Dimmer | pattern="%d %%", min="0", max="100" | |
system.color | ColorLight | RW | Color | ||
system.color-temperature | ColorLight | RW | Dimmer | pattern="%d", min="0", max="100" | |
system.media-artist | - | R | String | Artist of a (played) song | |
system.location | - | R | Location | Location in lat./lon./height coordinates | |
system.motion | Motion | R | Switch | Motion detected by the device | |
system.media-control | MediaControl | RW | Player | ||
system.wind-direction | Wind | R | Number:Angle | pattern="%.0f %unit%", min="0", max="360" | |
system.wind-speed | Wind | R | Number:Speed | pattern="%.1f %unit%" | |
system:outdoor-temperature | Temperature | R | Number:Temperature | Current Outdoor Temperature | pattern="%.1f %unit%" |
system:atmospheric-humidity | Humidity | R | Number:Dimensionless | Atmospheric Humidity | pattern="%.0f %unit%" |
system:barometric-pressure | Pressure | R | Number:Pressure | Barometric Pressure | pattern="%.3f %unit%" |
I intentionally left out temperature
because this cannot provide any useful default tags, since it might be an outdoor temperature, indoor temperature, etc. The same accounts for humidity
and pressure
.
One open question remains: What if one binding declares a channel as read-only, like lock
for example and another one offers the possibility to write to this channel? Technically both channels are the same but the developer that uses the system.lock
channel would have to override the readonly
value. What do we do in such cases?
EDIT: Split location
and lock
channel into one read-only and one writable channel.
EDIT (20180522 09:40): I incorporated the suggested changes from https://github.com/eclipse/smarthome/issues/3756#issuecomment-390466773
EDIT (20180524 13:57): Use MediaControl category for system.media-control channel
EDIT (20180528 08:55): Added system.media-play-uri
channel
EDIT (20180528 10:09): Removed system.media-play-uri
channel again
@maggu2810 Since you did not comment on this issue yet. What is your opinion on adding new system channels? Do you agree with the adjusted table in https://github.com/eclipse/smarthome/issues/3756#issuecomment-388822117 ? If not, what do you suggest to change?
I am fine with this table in general. What I don't know is about the handling or r vs. rw on system channels. If a thing would like to present the artist and title of a currently played song, but there is only the option to display it and it is not changeable by the user... Can we use the system channel that states R/W or do we have to use a custom channel, then?
Some feedback:
artist
, title
and location
channels - I would suggest to have them all as read-only as system channels.system.control
should maybe be renamed to media-control
or something more specific.step="1"
as I do not see any reason to artificially restrict it to integers.system.stop
is not really clear to me and why for all media related stop operations the Player type doesn't cover this already. Anyhow, this is in general a "command only" / "stateless" channel, so I don't think this is appropriate as a system channel.system.lock
and system.locked
likewise - I think these features are pretty fuzzy and can do mean very different things for different bindings. We should rather think about having a "lock" channel, which is specific for doorlocks and which also describes state/command options.outdoor-temperature
, atmospheric-humidity
and barometric-pressure
as those are very common. Any other (e.g. indoor) temperature and humidity sensors could still use custom channels, but at least we would have the main weather information covered.I have changed the table in https://github.com/eclipse/smarthome/issues/3756#issuecomment-388822117 as follows:
@cweitkamp Since you have started this issue, do you agree with the resulting table in https://github.com/eclipse/smarthome/issues/3756#issuecomment-388822117 ?
@lolodomo After discussing the topic with @kaikreuzer I have added the three main weather channels to the table. Given the requirement that we have to have at least 5 existing bindings that share a channel, do you agree with the table above?
@triller-telekom Thank you very much for your work on this issue. I am currently a little bit busy. I will try to review your table and update the initial post accordingly in the next few days.
@cweitkamp No worries. I have to admit that I "hijacked" your table and all that is left is linked in the aforementioned comment. So you do not have to update your table but rather "just" comment and what you'd like to see changed in it. Thank you!
@triller-telekom The table looks fine. I have two minor comments on the items:
system.location
Do you think it is worth to introduce a new channel category 'Location' for it?system.media-control
Could be put into category 'MediaControl'.Currently the system.stop
or system.media-stop
channel-type is valid for me.
why for all media related stop operations the Player type doesn't cover this already
@kaikreuzer Most of the UIs render the Player item without a Stop-Button. Sending a command to that item leads to a warning in the logs (see https://community.openhab.org/t/open-tv-channel-in-xbmc-kodi/17330/18). I wondered about the dedicated stop channels for each binding too and found this https://github.com/eclipse/smarthome/issues/2741#issuecomment-271607692 . Shall we open a new issue for this to discuss it?
Valid data types are: ( PlayPauseType RewindFastforwardType UnDefType )
Paper UI
Basic UI
@cweitkamp Thank you for your feedback. I have changed the system.media-control
as you suggested.
We do not have the location
category for channels in https://www.eclipse.org/smarthome/documentation/concepts/categories.html#channel-categories so far. If we add it there, how would a possible icon for it look like? A typical "location marker"?
Regarding the stop channel, I would suggest to leave it out for now and discuss it in a separate issue since @kaikreuzer seems to also have changed its mind since https://github.com/eclipse/smarthome/issues/2741#issuecomment-271607692 so maybe its worth discussing this again.
how would a possible icon for it look like? A typical "location marker"?
Yes, I think so. Everyone is familiar with it. My first guess was to use the existing icon which is rendered on a Mapview element. But it is branded. Isn't it?
What do you think about adding one or two system channel types for playing a media/audio file (e.g. system.media-play-uri) and for playing a notification (e.g. system.media-play-notification)? Later one can be used for audio sink implementations.
What do you think about adding one or two system channel types for playing a media/audio file (e.g. system.media-play-uri) and for playing a notification (e.g. system.media-play-notification)? Later one can be used for audio sink implementations.
If we have a decent amount of bindings providing such channels I am fine with it. I just did a grep
though the bindings but I cannot find at least 5 bindings providing matching channels for system.media-play-notification
. So I would leave it out for now. For sure it can be added later once we have more bindings with such a channel.
In openhab2-addons I find:
find . -iname "*.xml" -exec grep -Hin "channel-type id=" {} \; | grep notif
./org.openhab.binding.tesla/ESH-INF/thing/models.xml:397: <channel-type id="notificationsenabled" advanced="true">
./org.openhab.binding.tesla/ESH-INF/thing/models.xml:403: <channel-type id="notificationssupported" advanced="true">
./org.openhab.binding.kodi/ESH-INF/thing/thing-types.xml:94: <channel-type id="shownotification" advanced="true">
./org.openhab.binding.kodi/ESH-INF/thing/thing-types.xml:396: <channel-type id="playnotification" advanced="true">
and in ESH
find . -iname "*.xml" -exec grep -Hin "channel-type id=" {} \; | grep notif
./org.eclipse.smarthome.binding.sonos/ESH-INF/thing/channels.xml:134: <channel-type id="notificationsound" advanced="true">
./org.eclipse.smarthome.binding.bosesoundtouch/ESH-INF/thing/channels.xml:285: <channel-type id="notificationsound" advanced="true">
So no real match for a system.media-play-notification
type.
However for system.media-play-uri
there are 5 bindings which have such a channel, so its a good candidate!
In openhab2-addons:
find . -iname "*.xml" -exec grep -Hin "channel-type id=" {} \; | grep uri
find . -iname "*.xml" -exec grep -Hin "channel-type id=" {} \; | grep url
./org.openhab.binding.chromecast/ESH-INF/thing/thing-types.xml:167: <channel-type id="playuri" advanced="true">
./org.openhab.binding.onkyo/ESH-INF/thing/channels.xml:104: <channel-type id="playuri" advanced="true">
./org.openhab.binding.kodi/ESH-INF/thing/thing-types.xml:70: <channel-type id="playuri" advanced="true">
./org.openhab.binding.freebox/ESH-INF/thing/thing-types.xml:517: <channel-type id="playurl">
in ESH:
find . -iname "*.xml" -exec grep -Hin "channel-type id=" {} \; | grep uri
find . -iname "*.xml" -exec grep -Hin "channel-type id=" {} \; | grep url
./org.eclipse.smarthome.binding.sonos/ESH-INF/thing/channels.xml:158: <channel-type id="playuri" advanced="true">
I will add system.media-play-uri
to my table above.
@cweitkamp The audio sinks were actually supposed to make such channels superfluous. They do not make any sense for UIs and within rules, you should rather use the audio actions instead. What we should imho rather think about is to offer a special method for playing notifications in the audio sink interface, which would make the audio sink resume what it was playing before the notification.
I didn't think about the AudioSinks. I have removed the channel from the table again.
@cweitkamp: Since you have started this discussion, would you like to volunteer to implement the final table from https://github.com/eclipse/smarthome/issues/3756#issuecomment-388822117 ?
@triller-telekom Yes, of course. But to be honest I don't have much time for it at the moment. Any help is very much appreciated. Maybe @lolodomo wants to finish the work in PR #5311.
@lolodomo Would you like to amend your PR #5311 to incorporate the system channels we agreed on in https://github.com/eclipse/smarthome/issues/3756#issuecomment-388822117 ?
Even if this short list of new system channels is very disappointing in my point of view, I will try to add them when I have time for that. That is clearly not at top of my TODO list.
Now that we have 2 new weather bindings.in the pipe, openweathermap and meteoblue, could you please reconsider my proposal ?
PS: I have not yet checked the channels of these new bindings but it is just obvious thsat they will have same channel types as existing ones.
Having had a brief look at the channels of the openweathermap and meteoblue I only see outdoor-temperature, atmospheric-humidity, barometric-pressure and winddirection channels as potential candidates which were already added to the table above.
All other channel seem pretty specify, even wind speed in the meteo blue has 3 different channels: maxWindSpeed, minWindspeed, meanWindSpeed
Which other channels do you see that appear in at least 5 bindings? As I said before the list of system channels is NOT fixed, we can certainly add more to them if there is the need for it.
Based on these comments I like to start a discussion about adding new default system channels. I like to create a list of frequently used channel types for each channel category.
Some ideas: