Hauptmenü

widgetList in SetFn ?

Begonnen von Guybrush, 13 Mai 2025, 15:42:55

Vorheriges Thema - Nächstes Thema

Guybrush

Ich brauche für ein Modul eine Möglichkeit, mit der man bei einem Set Befehl 2 Dropdown Felder nutzen kann. Ich hab das versucht mit widgetList zu realisieren, aber das funktioniert nicht. Geht das denn nur bei z.B. setList und nicht innerhalb einer Set Funktion eines Moduls?

hier mal die Funktion aufs wesentliche zusammengekürzt:

sub JUDO_Set($@) {
  my ($hash, @param) = @_;
  return "Unknown argument $cmd, choose one of scene:widgetList,9,select,15min,30min,45min,60min,2h,6h,12h,permanent,3,select,Szene1,Szene2";
}

Ich ging jetzt eigentlich davon aus, dass mir damit nun 2 Dropdowns angezeigt werden. Ich seh aber nur eines mit allen Angaben von "widgetList,9,...Szene2"
Hab ich da einen Denkfehler oder geht das grundsätzlich nicht?

erwin

Hi,
das schaut eigentlich ok aus, zur Sicherheit, poste doch das widgetOverride Attribut...
l.g. erwin
PS: Ein Beispiel von mir:
widgetOverride blink@set:widgetList,2,textField,Anzahl_blinks,2,textField,Dauer(sec) Blinker@set:widgetList,4,select,on,off,blink,2,textField,Anzahl_blinks,2,textField,Dauer(sec)
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Guybrush

Doofe Frage - wie setz ich das im Code?  :P

Ich schreib grad ein Modul für die Anbindung meiner Enthärtungsanlage an FHEM

erwin

ok, ich war evtl. unpräzise:

1) um im WEB Interface mehrere select, Eingabefelder, ... zu haben, musst du attr xxx widgetOverride widgetList ..... in deinem device verwenden. Natürlich kannst du dieses Attribut auch während der device definition (z.b. in define-funktion) setzen.
2) die set-Fn im code ist dazu da, die Eingaben die du in die (mehrfachen ) Felder gemacht hast zu verarbeiten. Der Trick hierbei ist dass die Werte Kommasepariert (siehe cmd-ref) an die setFn übergeben werden.
sub X_Set ($$@)
{  my ( $hash, $name, $cmd, @args ) = @_;
   . . .
In deinem Beispiel würde in $args[0] der string "15min,szene2" stehen.
Das musst du im code auseinanderdröseln...
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Beta-User

#4
Die Widgets werden aus der Antwort zu getAllSets() generiert. Einfach das Widget im Rückgabestring auf "?" angeben und "gut ist".

Edit: Also eigentlich so, wie du es gemacht hattest :o ...
Hmmmm. Ist in Anfängerfragen ggf. nicht optimal untergebracht.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Guybrush

Zitat von: Beta-User am 13 Mai 2025, 23:29:21Hmmmm. Ist in Anfängerfragen ggf. nicht optimal untergebracht.

ich wollte erst unter development posten, aber dort konnte ich kein neues Thema erstellen  :P  In welchem board wäre es denn besser?

Guybrush

Zitat von: Beta-User am 13 Mai 2025, 23:29:21Die Widgets werden aus der Antwort zu getAllSets() generiert. Einfach das Widget im Rückgabestring auf "?" angeben und "gut ist".

Edit: Also eigentlich so, wie du es gemacht hattest :o ...

das irritiert mich ja auch.

das ist die vollständige def:
return "Unknown argument $cmd, choose one of password desiredWaterHardness:slider,0,1,20 saltSupplyWarning waterMaxDuration waterMaxFlow waterMaxVolumeFlow leakageProtection:open,close regeneration:noArg scene:widgetList,9,select,15min,30min,45min,60min,2h,6h,12h,permanent,3,select,Szene1,Szene2";

slider bei desiredWaterHardness geht, regeneration noArg wird auch berücksichtigt und dropdown bei leakageProtection geht auch. nur das doppelte / widgetList bei scene nicht.

Beta-User

Zitat von: Guybrush am 14 Mai 2025, 09:59:07
Zitat von: Beta-User am 13 Mai 2025, 23:29:21Hmmmm. Ist in Anfängerfragen ggf. nicht optimal untergebracht.

ich wollte erst unter development posten, aber dort konnte ich kein neues Thema erstellen  :P  In welchem board wäre es denn besser?
Hmmm, entweder als Tester oder Developer registrieren, dann geht es in Development, oder Frontend (FHEMWEB).
Zitat von: Guybrush am 14 Mai 2025, 10:02:26nur das doppelte / widgetList bei scene nicht.
Das "select"-Widget muss auch vorab geladen werden, vielleicht liegt es daran?

Allerdings irritiert mich dabei
Zitat von: Guybrush am 13 Mai 2025, 15:42:55Ich seh aber nur eines mit allen Angaben von "widgetList,9,...Szene2"
Das impliziert, dass "select" geladen worden wäre? Vielleicht mal testweise einen der anderen set-Befehle (leakageProtection?) mit select zurückgeben?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Guybrush

ich hb ja das select. aber eben nur eins wo auch ,3,select,Szene1,Szene2 etc drin steht. der trennt das nicht sondern stellts als ein dropdown dar

Beta-User

Zitat von: Guybrush am 14 Mai 2025, 20:15:02ich hb ja das select. aber eben nur eins wo auch ,3,select,Szene1,Szene2 etc drin steht. der trennt das nicht sondern stellts als ein dropdown dar
Was spricht dagegen, leakageProtoction mal tastweise als "einfaches" select zu ergänzen?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Guybrush

Zitat von: Beta-User am 14 Mai 2025, 20:18:56Was spricht dagegen, leakageProtoction mal tastweise als "einfaches" select zu ergänzen?

dass ich grad faul auf der couch liege und nur ein blödes ipad hier hab  ;D teste ich aber morgen mal

Guybrush

Magie. Gerade mit select bei leakageProtection getestet, was direkt ging. das widgetList ging dann aber auch, auch nachdem ich das select wieder entfernt hab bei leakageProtection... keine Ahnung was da los war, aber danke

das geht hier jedenfalls nun wie gewollt:
return "Unknown argument $cmd, choose one of password desiredWaterHardness:slider,0,1,20 saltSupplyWarning waterMaxDuration waterMaxFlow waterMaxVolumeFlow leakageProtection:open,close regeneration:noArg scene:widgetList,12,select,Alltag,Körper,Garten,Urlaub,Wäsche,Hochdruck,Pool,Heizung,Custom1,Custom2,Custom3,9,select,15min,30min,45min,60min,2h,6h,12h,permanent checkAddresses:noArg";

Beta-User

Zitat von: Guybrush am 15 Mai 2025, 15:24:27Magie. Gerade mit select bei leakageProtection getestet, was direkt ging. das widgetList ging dann aber auch, auch nachdem ich das select wieder entfernt hab bei leakageProtection... keine Ahnung was da los war, aber danke

das geht hier jedenfalls nun wie gewollt:
return "Unknown argument $cmd, choose one of password desiredWaterHardness:slider,0,1,20 saltSupplyWarning waterMaxDuration waterMaxFlow waterMaxVolumeFlow leakageProtection:open,close regeneration:noArg scene:widgetList,12,select,Alltag,Körper,Garten,Urlaub,Wäsche,Hochdruck,Pool,Heizung,Custom1,Custom2,Custom3,9,select,15min,30min,45min,60min,2h,6h,12h,permanent checkAddresses:noArg";
Das funktioniert vermutlich nur bis zum nächsten FHEM-Start - das Widget muss halt irgendwie (!) vorher geladen worden sein...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Guybrush

auf meiner Testumgebung hab ich FHEM heute sicher 20-30x neu gestartet. läuft immer noch  ;D

Beta-User

Zitat von: Guybrush am 15 Mai 2025, 17:43:05auf meiner Testumgebung hab ich FHEM heute sicher 20-30x neu gestartet. läuft immer noch  ;D
Vielleicht muss das nur bereits im Browser -Cache sein?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors