FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: hal2001 am 26 Dezember 2013, 14:17:21

Titel: Toggle per Icon
Beitrag von: hal2001 am 26 Dezember 2013, 14:17:21
Hallo zusammen und Frohe Weihnachten,

bei mir funktioniert bei allen HM-Komponenten der Icon-Refresh via Longpoll bei einem Toggle durch Klicken auf das Icon nicht. Der Toggle-Befehl wird richtig ausgeführt (mit einem manuellen Refresh beim Browser wird dann auch das richtige neue Icon angezeigt). Bei anderen Komponenten (z.B. FS20) funktioniert auch der automatische Icon-Refresh nach einem Toggle richtig. Bei HM-Komponenten funktioniert der Icon-Refresh auch richtig, wenn ich auf die Befehle (z.B. toggle, on, off, ...) klicke -- leider nicht, wenn ich direkt auf das Icon klicke.

Browser, webCMD und devStateIcon kann ich als Ursache meines Erachtens ausschließen. Funktioniert die Update-Funktion des State-Readings ggf. nach dem Klicken auf das Icon nicht richtig?

Danke und Gruß, Jan
Titel: Antw:Toggle per Icon
Beitrag von: Puschel74 am 26 Dezember 2013, 14:58:05
Hallo,

ZitatBrowser, webCMD und devStateIcon kann ich als Ursache meines Erachtens ausschließen.

Browser würde ich per se nicht ausschliessen.
Welchen verwendest du?

Grüße
Titel: Antw:Toggle per Icon
Beitrag von: justme1968 am 26 Dezember 2013, 15:01:15
das ist ein bekanntes problem wenn z.b. ein ein SVG plot im gleichen raum ist.

gruss
  andre
Titel: Antw:Toggle per Icon
Beitrag von: hal2001 am 26 Dezember 2013, 15:10:55
Als Browser habe ich verschiedene getestet: Chrome, Firefox, IE unter Windows (7, 8, XP), Linux (Ubuntu, Debian) und Android. Alle zeigen das gleiche Phänomen.

In den Räumen sind keine SVG-Plots enthalten -- nur die SVG-Icons von Openautomation.

Was kann ich weiter testen?

Danke, Jan
Titel: Antw:Toggle per Icon
Beitrag von: justme1968 am 26 Dezember 2013, 16:32:54
achte mal drauf ob beim klick die komplette Seite neu aufgebaut wird oder nur das icon umschaltet.

ich habe den neu aufbau der seite im verdacht. dadurch geht der zweite icon wechsel verloren. der erste ist auf den zustand set-... der zweite ist auf den endzustand.

bei mir gibt es räume bei denen wird beim klick auf ein hm icon nur das icon aktualisiert. dann funktioniert auch der zweite wechsel in den endzustand. und es gibt Räume bei denen die komplette seite neu aufgebaut wird. z.b. wenn ein plot  raum ist.

geht es bei dir nirgends? auch nicht wenn das device alleine in einem raum ist? auch nicht wenn weder device noch raum irgendwelche besondern Zeichen wie umlaute oder ähnliches enthalten? sondern nur a-z ?

gruss
  andre
Titel: Antw:Toggle per Icon
Beitrag von: hal2001 am 26 Dezember 2013, 19:01:24
Nein. Komplette Seite wird nicht neu aufgebaut. Auch der 2. und alle nächsten Klicks funktionieren, aber Icon ändert sich nicht.

Habe jetzt versuchsweise auch webCMD auf ":", d.h. leer gesetzt. Damit funktioniert jetzt alles wie gewünscht. Woran kann es liegen?

Danke, Jan
Titel: Antw:Toggle per Icon
Beitrag von: martinp876 am 27 Dezember 2013, 08:01:04
Hi Jan,

wenn du webCmd löschst sollte es klappen. FHEM versucht dann nach commandos und probiert sein bestes.

wenn webCmd gesetzt ist wird das erste der aufgeführten Kommandos beim Click auf das Icon ausgeführt. Daher wird bei CUL_HM für einen Schalter als default

webCmd  toggle:on:off:statusRequest

angelegt. Dann sollte das Toggle am icon kappen - und andere Kommandos einstellbar sein.

Gruss Martin
Titel: Toggle per Icon
Beitrag von: justme1968 am 27 Dezember 2013, 09:44:45
wenn webCmd gesetzt ist muss devState icon verwendet werden um die kommandos für ein klick auf das icon zu definieren. es wird schon seit einiger zeit nicht mehr das erste kommando aus webCmd genommen.

ich hatte aber sie eigentliche frage so verstanden das das kommando ausgeführt wird aber das icon nicht wechselt.

wenn es das nicht war passen meine antworten oben natürlich nicht.

gruss
  andre
Titel: Antw:Toggle per Icon
Beitrag von: hal2001 am 27 Dezember 2013, 12:51:56
Es war, wie Andre richtig vermutet hat, nicht die Ausführung das Problem, sondern die Aktualisierung des Icons. Nachdem webCmd aber komplett leer ist (":"), funktioniert auch das Update des Icons. Muß man das verstehen?

Danke, Jan
Titel: Antw:Toggle per Icon
Beitrag von: martinp876 am 27 Dezember 2013, 13:30:49
@Jan,

muss man nicht. Bei mir wird es upgedated, auch mit webCmd. webCmd sollte mit dem update nichts zu tun haben.


@ Andre,

bei mir toggeln die Lampen immer noch, auch ohne devStateIcon. Wer also legt das jetzt fest wenn devStateIcon nicht genutzt wird? Ich wollte dem User einen default einrichten - abhängig von den Möglichkeiten der Entity. WebCmd ist immer noch die einzige möglichkeit, die ich habe eine liste von "buttons" zu generieren. devStateIcon macht etwas anderes - nur ein Kommando sichtbar.

Wenn ich im CommandRef lese sehe ich unter webCmd

The first specified command is looked up in the "set device ?" list. If there... then a different widget will be displayed:

    if then .....
    else a dropdown with all the modifier values is displayed

verstehe ich nicht. Ist das wirklich im Context zu webCmd?

setList ist bei attributen aufgeführt, scheint aber keines zu sein. Wird auch beschrieben als die Liste, die man bei set <entity> ? erhält. Beschreibung verstehe ich nicht. setList ist mehrfach im Commandref definiert - es kann nur einen geben ;)

devStateIcon
.....Example:
        attr lamp devStateIcon on:closed off:open


funktioniert nicht, icons gibt es im default nicht. besser
devStateIcon
.....Example:
        attr lamp devStateIcon on:shutter_closed:off off:shutter_open:on


ZitatwebCmd
....Has no effect on smallscreen devices
was sind smallscreen devices? Oder sind es icons?
Wo finde ich jetzt, was hinter dem Icon-Click liegt?

Generell fände ich es besser entites anstatt devices zu nutzen. beispielsweise 'notify' kann nicht jeder mit einem 'device' assoziieren.

Kennst du die Details?
Gruss, Danke Martin


Titel: Antw:Toggle per Icon
Beitrag von: justme1968 am 27 Dezember 2013, 14:14:27
hallo martin,

ich hatte vor einiger zeit mal das hier geschrieben: http://forum.fhem.de/index.php/topic,12080.msg71651.html#msg71651 (http://forum.fhem.de/index.php/topic,12080.msg71651.html#msg71651).

devStateIcon ist dafür zuständig welcher icon für welchen STATE angezeigt wird und was jeweils beim klick darauf passieren soll. dazu ist unbedingt die version mit den jeweils drei parametern zu verwenden. STATE:icon:cmd.

webCmd ist nur für die liste der kommandos in der raum übersicht zuständig.

die beiden haben nichts mehr mit einander zu tun. der alte default das beim klick auf das icon das erste Kommando aus der webCmd liste verwendet wurde ist schon seit längerem nicht mehr da.

was es noch gibt ist ein default das sobald nichts anderes gesetzt ist und das device ein on und ein off hat

setList gibt es nur für dummy und readingsProxy als attribut. die liste der möglichen kommandos kommt sonst immer aus einem 'set <device> ?' aufruf den fhem web explizit macht. diese list wird manchmal glaube ich auch einfach setList genannt. es ist die liste der im device erlaubten set.

das ...first... ist glaube ich ein tippfehler und es sollte 'first the specified command is...' heissen. dieser absatz bschreibt nur wie das gui element bestimmt wird das zu einem kommando dargestellt wird. also ob slider oder combobox oder colorpicker oder text feld oder nur der name des commandos zum anklicken.

smallscreen ist wenn für ein WEB device das attribut stylesheetPrefix auf smallscreen gesetzt ist. z.b. in der default installation auf port 8084. um es auf dem handy zu verwenden. dann wird die webCmd liste nicht in der raum übersicht angezeigt um platz zu sparen.

bis auf die ausnahme/fallback mit on/off und nichts anderes definiert ist nur devStateIcon dafür zuständig zu bestimmen was beim klick auf das icon passiert.

das alles hat (oder sollte zumindest.  scheinbar gibt es noch einen seiteneffekt) aber nichts damit zu tun haben das das icon nach einem klick auf den neuen zustand aktualisiert wird. unter bestimmten bedingungen (eine davon schein zu sein das ein svg plot im gleichen raum ist. aber scheinbar auch nicht mehr immer) passiert es das beim klick auf das icon eins hm device nur der erste wechsel in den state set-... passiert und der zweite wechsel in den endgültigen state verloren geht. ich vermute durch den neuaufbau der ganzen seite. wenn jetzt das icon im state set-... 'hängen bleibt' ist meist kein passendes kommando für dem klick mehr hinterlegt und es passiert nichts mehr. das kann man umgehen in dem man auch für set-xxx ein passendes kommando mit devStateIcon hinterlegt. das behebt aber nicht das eigentliche problem mit dem refresh.

gruss
  andre
Titel: Antw:Toggle per Icon
Beitrag von: martinp876 am 27 Dezember 2013, 14:48:46
Hallo Andre,

evtl sollte man das Commadnref  hier etwas eindeutiger machen.
smallscreen gehört zur FHEMWEB entity und ist eine option des attribut stylesheetPrefix. Sollte es dann auch dort beschrieben werden?

das mit set<entity> ? ist mir klar - aber warum dummy das  nicht ebenso macht wie alle andern ist mir nicht transparent. Wäre doch kein Problem. Sich unter Umtänden modifizierende Kommandolisten gibt es bei HM an mehrere stellen.

Aber zurück zum Thema hier - könnte es auch ein timing-problem sein? Antwort kommt zu schnell oder zu langsam? race-condition?
HM hat den status doch korrekt gesetzt - oder steht noch set_ im Status?

Gruss Martin
Titel: Antw:Toggle per Icon
Beitrag von: justme1968 am 27 Dezember 2013, 14:58:33
im unterschied zu jedem anderen device hat ein dummy (und der readingsProxy) eine kommando liste die der anwender vorgibt. deshalb das attribut. um dem user zu ermöglichen es zu konfigurieren. intern und in der kommunikation zwischen dummy und web frontend ist alles genau so wie bei jedem anderen device und es wird 'set <device> ?' verwendet.

es kann gut sein das es zum teil auch ein timing problem ist. die fälle die ich bei mir beobachte haben immer damit zu tun das beim klick die ganze webweite neu aufgebaut wird. das ist an sich schon falsch und passiert wenn mit dem xhr aufruf etwas nicht stimmt.

das hat dann zur folge das das zweite status wechseln verloren geht. ich vermute durch den seiten aufbau. hal2001 hat aber oben geschrieben das bei ihm die seite nicht neu aufgebaut wird.

bei den fällen die ich beobachte wird der status intern richtig gesetzt. nur der zweite longpoll aufruf fehlt oder kommt nicht am browser an.

wirklich debuggen kann man es leider nur wenn man im javascrpt code debug ausgaben einbaut und die developer console des browsers verwendet.

gruss
  andre
Titel: Antw:Toggle per Icon
Beitrag von: martinp876 am 27 Dezember 2013, 15:35:27
Zitathal2001 hat aber oben geschrieben das bei ihm die seite nicht neu aufgebaut wird.
ist das richtig? Bitte genau hinsehen - das Icon wurde nach "set_..:" equivalent geändert - oder? Also ein Wechsel war wohl da? War es nur das Icon oder die ganze Seite? Und die Frage ist, wie lange es gedauert hat. mit apptime kann man etwas messen... stellt aber nicht alle delays dar.

Gruss Martin
Titel: Antw:Toggle per Icon
Beitrag von: justme1968 am 27 Dezember 2013, 15:44:28
zumindest an einer stelle hat er geschrieben:
ZitatNein. Komplette Seite wird nicht neu aufgebaut.

ich kann leider immer nur für das problem sprechen das ich selber beobachte und weiss noch nicht mal ob seins das gleiche ist.

bei mir sind die absoluten zeiten ganz egal. sogar wenn es aus irgendwelchen gründen 2 sekunden dauert bis der status zurück kommt funktioniert es so lange die seite nicht neu aufgebaut wird.

ich hab gerade versucht es noch mal nachzustellen. jetzt gerade kann ich es auch in dem raum von dem ich weiss das er immer probleme hatte nicht mehr nachstellen. sogar im raum everything geht es bei mir gerade.

ich würde vorschlagen das hal2001 mal eine komplette konfiguration für ein device in einem raum inklusive webCmd und devStateIcon hier postet bei der es bei ihm nicht funktioniert. das wäre zum eingrenzen hilfreich.

gruss
  andre
Titel: Antw:Toggle per Icon
Beitrag von: martinp876 am 27 Dezember 2013, 16:08:02
Ich kann noch einen update force empfehlen. So ein ähnliches Problem hatte ich einmal - war danach erledigt. Update hat (wenn nicht behoben) probleme, wenn es einmal einen Fehler gegeben hat (kein Speicher in meinem Fall).
Ein nachfolgender 'normaler' update taugen dann nicht mehr.

und schaden kann es nicht :)
Titel: Antw:Toggle per Icon
Beitrag von: justme1968 am 27 Dezember 2013, 18:42:17
ich kann es wieder reproduzieren. aber nur bei klick auf eines der webCmds. nicht beim click auf das icon.

beim click auf das icon wird die seite nicht neu aufgebaut und das icon wechselt brav zwei mal. z.b. von on über set-off nach off.

beim click auf ein webCmd wird die seite neu aufgebaut (weil das update nicht per xhr erfolgt) und ein event geht verloren und das icon bleibt in in set-... hängen.

man kann das wunderbar nachvollziehen wenn man zwei browser fenster für den gleichen raum auf macht. wenn man in dem einen raum dann auf ein webCmd klick wird die seite neu aufgebaut und das icon wechselt nur ein mal, in dem fenster in dem nicht geklickt wird wechselt das icon wechselt das icon sauber zwei mal.

gruss
  andre
Titel: Antw:Toggle per Icon
Beitrag von: kvo1 am 27 Dezember 2013, 18:48:57
Hallo Martin, Andre

ich habe ein ähnliches Verhalten wie es Andre beschreibt.
>>>>das ist ein bekanntes problem wenn z.b. ein ein SVG plot im gleichen raum ist.

Hatte 3 virt. Schalter in einem Raum zusammen mit SVG plots. ==> ICON ändert sich nicht

Die 3 virt. Schalter in einem sep. Raum gepackt , schon ändern sich die ICON.

klaus
Titel: Antw:Toggle per Icon
Beitrag von: martinp876 am 28 Dezember 2013, 10:43:17
Hi,

ja, kann ich auch nachvollziehen.
kann man schon sehen, wenn man longpoll ausschaltet wird 'nur' ein link dem Icon hinterlegt und es geht auch nicht.

habe es einmal bei Rudi einkippt

Gruss Martin
Titel: Antw:Toggle per Icon
Beitrag von: justme1968 am 28 Dezember 2013, 11:14:42
mal sehen ob er reagiert. ich bin schon seit dem sommer dran :)

gruss
  andre
Titel: Antw:Toggle per Icon
Beitrag von: mwein am 10 Dezember 2017, 15:05:28
Hallo
Gibs da inzwischen eine Lösung ?
Titel: Antw:Toggle per Icon
Beitrag von: justme1968 am 10 Dezember 2017, 22:34:30
2015 wurde longpoll komplett neu umgesetzt und seit dem gab es noch diverse weitere änderungen und verbesserungen an fhemweb und longpoll.

das alte problem aus diesem thread ist nicht mehr relevant bzw. sollte auch im zuge des umbaus schon lange behoben sein.

wenn etwas nicht so funktioniert wie du es erwartest mach am bestehen einen neuen thread mit einem genauen beispiel auf.
Titel: Antw:Toggle per Icon
Beitrag von: mwein am 16 Dezember 2017, 16:55:21
OK
Danke