FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: Init am 07 Juni 2017, 21:00:04

Titel: Switch zeigt nicht den aktuellen Status
Beitrag von: Init am 07 Juni 2017, 21:00:04
Hallo zusammen,

wie kann ich rausbekommen, warum mein Switch nicht immer den richtigen Status anzeigt?

Hier meine Code:
<div class="cell" data-type="switch" data-device="myHarmony" data-icon="fa-power-off" data-cmd="set" data-set="activity" data-set-on="Fernsehen" data-set-off="PowerOff" data-get="currentActivity" data-get-on="Fernsehen"></div>

Und hier ein Auszug von "list myHarmony":
Internals:
   CFGFN      multimedia.cfg
   CONNECTS   4
   ConnectionState LoggedIn
   DEF        192.168.178.10
   FD         55
   LAST_CONNECT 2017-06-07 10:11:49
   LAST_DISCONNECT 2017-06-07 10:11:47
   NAME       myHarmony
   NOTIFYDEV  global
   NR         847
   NTFY_ORDER 50-myHarmony
   STATE      Connected
   TYPE       harmony
   activityStatus 2
   currentActivityID 9135244
   hubSwVersion 4.12.36
   hubUpdate  0
   ip         192.168.178.10
   previousActivityID -1
   syncStatus 0
   Readings:
     2017-06-07 20:21:11   activity        Fernsehen
     2017-06-07 20:21:11   currentActivity Fernsehen
     2017-06-07 20:21:02   previousActivity PowerOff
     2017-06-07 10:11:49   state           Connected


Hat jemand eine Idee, was ich prüfen kann?

VG
Marc
Titel: Antw:Switch zeigt nicht den aktuellen Status
Beitrag von: Init am 10 Juni 2017, 10:54:41
Keiner eine Idee, was ich prüfen kann?

Wenn mir das Tablet nicht den aktuellen Status anzeigt, dann ist es wirklich irreführend  :-[

Hier meiner HeadDefinition:
    <meta name="longpoll" content="1">
    <meta name="longpoll_type" content="1">
    <meta name="longpoll_filter" content=".*">
    <meta name="longpoll_maxage" content="240">
    <meta name="shortpoll_interval" content="10">
   
    <meta name="debug" content="1"> <!-- verbose level 1-6 = output to console;0 = not output -->

    <meta name="mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta http-equiv="Cache-Control" content="no-store" />


Viele Grüße
Marc
Titel: Antw:Switch zeigt nicht den aktuellen Status
Beitrag von: Tomatenjoghurt am 12 Juni 2017, 09:35:41
Was heißt denn es wird "nicht immer" der aktuelle Status angezeigt? Wann wird er denn aktuell angezeigt? Wann nicht? Kannst du eine Systematik feststellen?
Hilft evtl. ein Reload der Webseite (F5 im Browser)?

Ich habe nämlich ein ähnliches Problem...meine Switches werden auch nicht per "Knopfdruck" aktualisiert. Der Status wird bei mir nach dem Druck auf den Knopf korrekt an FHEM gesendet und auch andere Widgets werden korrekt via Longpoll aktualisiert. Für die Switches muss ich allerdings jeds Mal einen Hard-Reload (F5, bzw. auf dem Tablet von oben nach unten ziehen) der Webseite machen. Die Ursache dazu habe ich noch nicht gefunden, das Problem scheint auch nicht überall aufzutreten...
Mein Header sieht ähnlich aus wie deiner... :-\
Titel: Antw:Switch zeigt nicht den aktuellen Status
Beitrag von: Init am 13 Juni 2017, 20:11:46
Hallo!

Habe mich gerade noch einmal mit dem Problem beschäftigt. Habe die Seite komplett abgespeckt auf das eine Element:

<!DOCTYPE html>
<html>
<head>
    <meta name="longpoll" content="1">
    <meta name="longpoll_type" content="websocket">
    <meta name="longpoll_filter" content=".*">
    <meta name="longpoll_maxage" content="240">
    <meta name="shortpoll_interval" content="10">
   
    <link rel="stylesheet" href="lib/jquery.gridster.min.css" />
    <link rel="stylesheet" href="css/fhem-tablet-ui.css" />
    <link rel="stylesheet" href="css/fhem-mobil-ui.css" />
    <link rel="stylesheet" href="lib/font-awesome.min.css" />
    <link rel="stylesheet" href="lib/jquery.toast.min.css" />

    <script src="../pgm2/jquery.min.js"></script>
    <script src="lib/jquery.toast.min.js"></script>
    <script src="lib/jquery.gridster.min.js"></script>
    <script src="js/fhem-tablet-ui.js" defer></script>
</head>
<body>
<div data-type="switch" data-device="myHarmony" data-icon="fa-power-off" data-cmd="set" data-set="activity" data-set-on="Fernsehen" data-set-off="PowerOff" data-get="currentActivity" data-get-on="Fernsehen"></div>
</body>
</html>


Doch leider wird der Status nur nach einem FullRefesh (F5) aktualisiert.

Hier mein Define in fhem:
define myHarmony harmony 192.168.178.10
attr myHarmony room Multimedia


Bin echt ratlos.

Ein normaler Switch wird sofort aktualisiert:
<div data-type="switch" data-device="HMW_HSK1_Strahler_Terrasse"></div>


Hat niemand einen Ansatz?

VG
Marc
PS: Hat jemand eine Idee, warum ich im Firebug keine Ausgaben in der Console bekomme?
Titel: Antw:Switch zeigt nicht den aktuellen Status
Beitrag von: setstate am 13 Juni 2017, 21:32:11
Siehst du denn Events im FHEMWEB Eventviewer, wenn du dort den Filter auf "myHarmony" setzt?
Titel: Antw:Switch zeigt nicht den aktuellen Status
Beitrag von: Init am 13 Juni 2017, 22:10:35
Bekomme folgendes im Log:

017-06-13 21:44:18.571 harmony myHarmony currentActivity: stopping Fernsehen
2017-06-13 21:44:20.665 harmony AV_Receiver power: off
2017-06-13 21:44:20.669 harmony harmony_19381610 power: off
2017-06-13 21:44:20.673 harmony harmony_43455425 power: off
2017-06-13 21:44:20.678 harmony myHarmony currentActivity: PowerOff
2017-06-13 21:44:20.683 harmony myHarmony activity: PowerOff
2017-06-13 21:44:20.691 harmony myHarmony currentActivity: PowerOff
2017-06-13 21:44:20.728 harmony myHarmony currentActivity: PowerOff


Habe aber gerade mein Problem gefunden.

Ich habe nicht "data-get-off" definiert, da ich davon ausgegangen war, dass alles ungleich "data-get-on" als off interpretiert wird.

Wenn ich jetzt eine regex ungleich "Fernsehen" einsetzen würde, dann müsste es funktionieren.

Wobei ich in regex nicht wirklich ein Syntax für ungleich kenne, wenn das überhaupt möglich ist?!
Und die Lösung ist --> data-get-off="!Fernsehen"

Allerdings reagiert der Switch viel langsamer als ein normaler Switch.

Danke für Eure Unterstützung.
Titel: Antw:Switch zeigt nicht den aktuellen Status
Beitrag von: setstate am 13 Juni 2017, 22:37:22
Es müsste eher so heißen:

data-get-off="!on"
"!on" oder "!off" ist ein Keyword und bedeutet: "nicht das, was unter data-get-on bzw. data-get-off steht"

Mit RegEx sieht es etwas komplizierter aus
^((?!Fernsehen).)*$
Titel: Antw:Switch zeigt nicht den aktuellen Status
Beitrag von: Init am 13 Juni 2017, 22:43:38
Danke, so funktioniert das off auch schnell --> data-get-off="!on"