Es kann alles sein, ich brauche aber Beispiele.
Es gibt kein Dialog, wenn alle Parameter gesetzt sind. Ob Inhalt des Parameters im Sinne des Erfinders ist,wird aber nicht geprueft.
Korrekt, aber wenn irgendwas schief läuft, also ein Parameter - aus welchen Gründen auch immer - nicht automatisch bestimmt werden kann, kommt ein Dialogfeld. In das kann man zwar was eintragen, aber ganz egal, was man da eingibt, es hat keine Auswirkungen.
Beispiel: Man manipuliere die readingList eines tasmota, z.B. so (tulu statt tele):
defmod tasmota_test3 MQTT2_DEVICE DVES_9B01BD
attr tasmota_test3 IODev MQTT2_FHEM_Server
attr tasmota_test3 readingList DVES_9B01BD:tulu/sonoffkitchen/STATE:.* { json2nameValue($EVENT) }\
DVES_9B01BD:tulu/sonoffkitchen/INFO:.* { json2nameValue($EVENT) }
attr tasmota_test3 room MQTT2_DEVICE
und versuche dann, darauf eines der Tasmota-templates anzuwenden.
Ergebnis: Es passiert nichts, selbst wenn man da "das richtige" (sonoffkitchen) oder irgendwas anderes einträgt.
Erwartung wäre: der eingegebene Text ersetzt den Parameter.
Wenn ich damit gemeint bin: da brauche ich deutlich mehr Kontext.
Ok, es geht um die Thematik, die
hier und in den paar Beiträgen davor angerissen wird:
Nutzt jemand z.B. homekit, macht es Sinn, gleich die passende Parametrierung vorzunehmen (siriName, genericDeviceType, und eigentlich muß das Gerät dann noch in den Raum Homekit). Entsprechendes gilt für AutoShuttersControl, vermutlich auch andere Sprachsteuerungen etc...
Mal sind es mehrere Attribute, die gesetzt werden müssen (mit sinnvollem individuellem Inhalt, z.B. für siriName), mal ist es nur ein klar definiertes Attribut (ASC). Allen ist gemeinsam: sie können nur gesetzt werden, wenn das betr. Modul überhaupt geladen ist (könnte man ggf, auch prüfen, aber irgendwann ist auch gut...)
Vielleicht wird es klarer mit folgendem Fantasie-template:
# shelly2 using original firmware in roller mode.
name:A_11b_shelly2_roller
filter:TYPE=MQTT2_DEVICE
desc:shelly2 using original firmware. <br>NOTE: shelly2 roller operated, change settings first!
par:DEVNAME;Shelly2 name in the topic;{ AttrVal("DEVICE","readingList","") =~ m,shellies/([^/]*)/, ? $1 : undef }
attr DEVICE comment shelly2 roller operated
attr DEVICE setList \
open:noArg shellies/DEVNAME/roller/0/command open\
close:noArg shellies/DEVNAME/roller/0/command close\
stop:noArg shellies/DEVNAME/roller/0/command stop\
pct:slider,0,1,100 shellies/DEVNAME/roller/0/command/pos $EVTPART1\
DoRecalibration:noArg shellies/DEVNAME/roller/0/command rc
attr DEVICE readingList shellies/DEVNAME/roller/0/pos:.* pct\
shellies/DEVNAME/status/0/rollers:.* power\
shellies/DEVNAME/online:.* online\
shellies/DEVNAME/announce:.* { json2nameValue($EVENT) }\
shellies/DEVNAME/roller/0:.* state\
shellies/DEVNAME/input/1:.* input1\
shellies/DEVNAME/input/0:.* input0
attr DEVICE devStateIcon 0:fts_shutter_100 100:fts_shutter_10 9\d.*:fts_shutter_10 8\d.*:fts_shutter_20 7\d.*:fts_shutter_30 6\d.*:fts_shutter_40 5\d.*:fts_shutter_50 4\d.*:fts_shutter_60 3\d.*:fts_shutter_70 2\d.*:fts_shutter_80 1\d.*:fts_shutter_90 0\d.*:fts_shutter_100 set_.*:fts_shutter_updown
attr DEVICE stateFormat pct
deleteReading DEVICE .*
attr DEVICE setStateList open close stop
option01:SIRINAME;When using homekit enter desired siriname and click OK, otherwise CANCEL;
attr DEVICE siriName SIRINAME
attr DEVICE genericDeviceType blind
par:ROOM_ATTRIBUTE;Extend room attribute with Homekit;{ my $rooms = AttrVal("DEVICE","room","none"); $rooms =~ m,none, ? "Homekit" : $rooms =~ m,Homekit, ? $rooms : $rooms.",Homekit" }
attr DEVICE room ROOM_ATTRIBUTE
option01end
option02:;Set AutoShuttersControl attribute?
attr DEVICE ASC 2
option02end
finalhint:Thank you for using mqtt2Template. Now have fun using your device and don't forget to save changes.
attr DEVICE model A_11b_shelly2_roller
Das könnte man entweder Option für Option durchgehen, oder einmal ein Dialogfeld anzeigen, das für jede Optionsgruppe ein "Kreuzchenfeld" vorneweg hat, das das jeweils aktiviert. (Ich habe aber keine Ahnung, wie man das mit erforderlichem Userinput machen würde; hier ggf. nachgelagerte Abfragen...?).
Aber das ist der totale Luxus, über den wir hier sprechen...