Switch zeigt nicht den aktuellen Status

Begonnen von Init, 07 Juni 2017, 21:00:04

Vorheriges Thema - Nächstes Thema

Init

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

Init

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

Tomatenjoghurt

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... :-\

Init

#3
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?

setstate

Siehst du denn Events im FHEMWEB Eventviewer, wenn du dort den Filter auf "myHarmony" setzt?

Init

#5
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.

setstate

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).)*$

Init

Danke, so funktioniert das off auch schnell --> data-get-off="!on"