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?
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)
Doofe Frage - wie setz ich das im Code? :P
Ich schreib grad ein Modul für die Anbindung meiner Enthärtungsanlage an FHEM
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
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.
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?
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.
Zitat von: Guybrush am 14 Mai 2025, 09:59:07Zitat 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?
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
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?
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
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";
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...
auf meiner Testumgebung hab ich FHEM heute sicher 20-30x neu gestartet. läuft immer noch ;D
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?
teste ich nachher auch nochmal, aber ich mach eigentlich immer ein forced refresh, wo das dann auch alles neu geladen wird
funktioniert auch mit geleertem cache!
Hmmm, dann ist auch gut.
Der Sinn der von Rudi gemachten Einschränkung "das widget muss bereits geladen sein" verstehe ich dann zwar insgesamt nicht, aber wichtig ist ja, dass es am Ende macht, was du möchtest ;D .
Moin zusammen,
Um welche JUDO geht es denn hier?
Ich habe meine nur mit httpmod in Fhem.
Eventuell wäre es schön im Titel den Gerätetyp noch zu ergänzen.
VG Christian
Um alle Geräte von Judo, die die neue REST API unterstützen. Da läuft dann nichts über die Judo Cloud. Einziges Problem ist, dass die Schnittstelle nicht vollständig dokumentiert ist. Aber läuft soweit schon stabil bei mir
ich hab z.b. eine i-Soft Pro
Zitat von: Guybrush am 17 Mai 2025, 09:16:09Um alle Geräte von Judo, die die neue REST API unterstützen. Da läuft dann nichts über die Judo Cloud. Einziges Problem ist, dass die Schnittstelle nicht vollständig dokumentiert ist. Aber läuft soweit schon stabil bei mir
ich hab z.b. eine i-Soft Pro
In meiner Implementierung wird auch die lokale API verwendet.
https://forum.fhem.de/index.php?topic=141675.0
kannst du gerne mal testen und feedback geben
Zitat von: Guybrush am 17 Mai 2025, 19:11:29https://forum.fhem.de/index.php?topic=141675.0
kannst du gerne mal testen und feedback geben
Mir ging es darum, dass Du die Funktionalität übernehmen könntest ;-)
die von dir dort beschriebene Vorgehensweise funktioniert bei mir nicht. Hatte ich zuvor auch gesehen, dass du da schon ein proof of concept implementiert hattest. Ich habe bei meiner Enthärtungsanlage nur den port 80 bzw 443 offen, je nachdem ob SSL aktiviert ist oder nicht. Möglich, dass es bei neuen Geräten nur noch über die REST API geht. die Anlage hat nicht mal ein webinterface. scheinbar geht da nur die api oder cloud..