ja, das geht in die richtige Richtung, damit meine ich die Abwendung der Firmwareversions orientierten Variante zur Model-ID Variante.
Weil eben weitere Werkzeuge (wie etwa iobroker) eben nicht die Firmware identifizieren. Also ganz gro0es Lob, vielen Dank.
Kleiner Wunsch: (habe noch nicht gesehen, ob vielleicht schon realisiert) selbes Symbol, aber unterschiedliuche Farben je Model-ID.
Allerdings scheinen mir manche Varianten doch "nur" einen anderen Wertebereich oder eine andere Bezeichnung eines Messpunktes zu haben.
Daher möchte ich Dich bitten, auch eine Variante mit "multi-channel" Layout einzubinden. Eigentlich alles diskutiert hier meine Gründe:
- die Payload (der Sketch) braucht nicht/nur für andere Sensoren oder andere Bereiche (z.B. statt 2* unint8 gegenüber 1* int16 oder 255 Bit gegenüber 4 signifikaten Bit) angepasst werden
- das ist einfach und verständlich, der Autor will ja gerade andere Werte transportieren, kennt also seine payload
- die Darstellung im WebGUI erfolgt in einzelnen "Channels"
- diese Channels können "unsichtbar" gemacht werden (Geräteeinstellungen, Haken bei "Sichtbar" entfernen)
- jedem Channel kann ein Name zugeordnet werden (auch änderbar), dadurch kann ein Wert mal "Ventilposition", "UV-Index" oder "Wassertemperatur unten" benannt werden (ebenfalls in den Geräteeinstellungen), und das bei GLEICHER Model-ID (natürlich unterschiedlicher Serial)
Auch wenn es aktuell nicht viel Bedeutung hat finde ich die "no_sensor" Klassifizierung gut, vielleicht wertet die ccu/raspberrymatic das mal aus.
Das führt aber dazu, daass etwa Lux z.B. int anstatt uint sein sollte, und "-1" als "no_sensor", finde ich besser als lux=200000 = "no_sensor".
Damit habe ich diverse Varianten auf Basis UNI-SENSOR1 realisiert.
Hier ein Beispiel dazu, für Kenner der Materie selbsterklärend:
Code: Alles auswählen
...
<channel index="1" type="WEATHER">
<link_roles>
<source name="WEATHER" />
</link_roles>
<paramset type="MASTER" id="HB-UNI-Sensor4_master" />
<paramset type="VALUES" id="HB-UNI-Sensor4_values">
<parameter id="TEMPERATURE" operations="read,event">
<logical type="float" min="-99.9" max="120.0" unit="°C">
<special_value id="NO_SENSOR" value="-99.9" />
</logical>
<physical type="integer" interface="command" value_id="TEMPERATURE">
<event frame="WEATHER_EVENT" />
</physical>
<conversion type="float_integer_scale" factor="10.0" />
<description>
<field id="AutoconfRoles" value="WEATHER" />
</description>
</parameter>
</paramset>
<paramset type="LINK" id="HB-UNI-Sensor4_link"></paramset>
</channel>
<channel index="2" type="WEATHER_AP">
<paramset type="MASTER" id="HB-UNI-Sensor4_master" />
<paramset type="VALUES" id="HB-UNI-Sensor4_values">
<parameter id="AIR_PRESSURE" operations="read,event">
<logical type="float" min="500.0" max="1200.0" unit="hPa">
<special_value id="NO_SENSOR" value="0.0" />
</logical>
<physical type="integer" interface="command" value_id="AIR_PRESSURE">
<event frame="WEATHER_EVENT" />
</physical>
<conversion type="float_integer_scale" factor="10.0" />
<description>
<field id="AutoconfRoles" value="WEATHER" />
</description>
</parameter>
</paramset>
</channel>
<channel index="3" type="WEATHER_HU" autoregister="true">
<paramset type="MASTER" id="HB-UNI-Sensor4_master" />
<paramset type="VALUES" id="HB-UNI-Sensor4_values">
<parameter id="HUMIDITY" operations="read,event">
<logical type="integer" min="0" max="100" unit="%">
<special_value id="NO_SENSOR" value="200" /> (finde ich unschön, besser wäre int8, mit 0-100% und -1% = NO_SENSOR)
</logical>
<physical type="integer" interface="command" value_id="HUMIDITY">
<event frame="WEATHER_EVENT" />
</physical>
<description>
<field id="AutoconfRoles" value="WEATHER" />
</description>
</parameter>
</paramset>
</channel>
<channel index="4" type="WEATHER_LU" autoregister="true">
<paramset type="MASTER" id="HB-UNI-Sensor4_master" />
<paramset type="VALUES" id="HB-UNI-Sensor4_values">
<parameter id="LUX" operations="read,event">
<logical type="float" min="0.00" max="200000.00" unit="Lux">
<special_value id="NO_SENSOR" value="200000.00" /> (ebenso unschön)
</logical>
<physical type="integer" interface="command" value_id="LUX" no_init="true">
<event frame="WEATHER_EVENT" />
</physical>
<conversion type="float_integer_scale" factor="100.0" />
</parameter>
</paramset>
</channel>
<channel index="5" type="WEATHER_VA" autoregister="true">
<paramset type="MASTER" id="HB-UNI-Sensor4_master" />
<paramset type="VALUES" id="HB-UNI-Sensor4_values">
<parameter id="VALVE_STATE" operations="read,event">
<logical type="integer" min="0" max="200" unit="">
<special_value id="NO_SENSOR" value="200" />
</logical>
<physical type="integer" interface="command" value_id="VALVE_STATE" no_init="true">
<event frame="WEATHER_EVENT" />
</physical>
</parameter>
</paramset>
</channel>
<channel index="6" type="WEATHER_OV" autoregister="true">
<paramset type="MASTER" id="HB-UNI-Sensor5_master" />
<paramset type="VALUES" id="HB-UNI-Sensor5_values">
<parameter id="OPERATING_VOLTAGE" operations="read,event">
<logical type="float" min="0.5" max="15.5" unit="V" />
<physical type="integer" interface="command" value_id="OPERATING_VOLTAGE">
<event frame="WEATHER_EVENT" />
</physical>
<conversion type="float_integer_scale" factor="1000.0" />
</parameter>
</paramset>
</channel>
<channel index="7" type="WEATHER_T2" autoregister="true">
<paramset type="MASTER" id="HB-UNI-Sensor4_master" />
<paramset type="VALUES" id="HB-UNI-Sensor4_values">
<parameter id="VALUEH" operations="read,event">
<logical type="integer" min="0" max="255" unit="">
<special_value id="NO_SENSOR" value="255" />
</logical>
<physical type="integer" interface="command" value_id="VALUEH" no_init="true">
<event frame="WEATHER_EVENT" />
</physical>
</parameter>
<parameter id="VALUEL" operations="read,event">
<logical type="integer" min="0" max="255" unit="">
<special_value id="NO_SENSOR" value="255" />
</logical>
<physical type="integer" interface="command" value_id="VALUEL" no_init="true">
<event frame="WEATHER_EVENT" />
</physical>
</parameter>
</paramset>
</channel>
</channels>
<frames>
<frame id="WEATHER_EVENT" direction="from_device" event="true" fixed_channel="1" type="0x70">
<parameter type="integer" signed="true" index="9" size="1.7" param="TEMPERATURE" />
</frame>
<frame id="WEATHER_EVENT" direction="from_device" event="true" fixed_channel="2" type="0x70">
<parameter type="integer" index="11" size="2.0" param="AIR_PRESSURE" />
</frame>
<frame id="WEATHER_EVENT" direction="from_device" event="true" fixed_channel="3" type="0x70">
<parameter type="integer" index="13" size="1.0" param="HUMIDITY" />
</frame>
<frame id="WEATHER_EVENT" direction="from_device" event="true" fixed_channel="4" type="0x70">
<parameter type="integer" index="14" size="4.0" param="LUX" />
</frame>
<frame id="WEATHER_EVENT" direction="from_device" event="true" fixed_channel="5" type="0x70">
<parameter type="integer" index="18" size="1.0" param="VALVE_STATE" />
</frame>
<frame id="WEATHER_EVENT" direction="from_device" event="true" fixed_channel="6" type="0x70">
<parameter type="integer" index="19" size="2.0" param="OPERATING_VOLTAGE" />
</frame>
<frame id="WEATHER_EVENT" direction="from_device" event="true" fixed_channel="7" type="0x70">
<parameter type="integer" index="21" size="1.0" param="VALUEH" />
</frame>
<frame id="WEATHER_EVENT" direction="from_device" event="true" fixed_channel="7" type="0x70">
<parameter type="integer" index="22" size="1.0" param="VALUEL" />
</frame>
</frames>
Nur so meine Idee. Für mich selbst habe ich das schon seit einiger Zeit (manuell update- und rebootfest) eingebaut. Passt aber glaube ich gut in die aktuelle Diskussion rein.
bleibt gesund und ciao
Harvey
PS: im Beispiel XML, was nur den unteren Teil enthält, stehen Anmerkungen drin, also noch die Anmerkungen löschen