FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: ToM_ToM am 29 Januar 2016, 17:55:33

Titel: TabletUI Regex in Switch funktioniert nicht
Beitrag von: ToM_ToM am 29 Januar 2016, 17:55:33
Hallo Zusammen,

ich kämpfe nun schon ewig mit dem Switch-Widget und möchte gerne die regulären Ausdrücke dort verwenden wie sie auch im Beispiel angegeben sind. Leider funktionieren diese bei mir jedoch nicht.
Wenn mein Sonos System den Song abspielt, ist der Status "PLAYING". Sofern ich ihn pausiere, kann der Status aber "STOPPED" oder "PAUSED_PLAYBACK" sein. Daher wollte ich hier mit REGEX arbeiten.

Anbei mein Code.


<div data-type="switch" class="left"
  data-device="Sonos_Wohnzimmer"
  data-icons='["fa-pause", "fa-play"]'
  data-states='["PLAYING", "STOPPED"]'
  data-on-background-color="#505050"
  data-off-background-color="#505050"
  data-get="transportState"
  data-get-on="PLAYING"
  data-get-off="!PLAYING"
  data-set-on="Play"
  data-set-off="Pause">
</div>


Muss ich die regulären Ausdrücke vorher noch irgendwo aktivieren?

Vielen Dank!
Thomas
Titel: Antw:TabletUI Regex in Switch funktioniert nicht
Beitrag von: roman1528 am 30 Januar 2016, 14:34:40
Zitat von: ToM_ToM am 29 Januar 2016, 17:55:33
Hallo Zusammen,

ich kämpfe nun schon ewig mit dem Switch-Widget und möchte gerne die regulären Ausdrücke dort verwenden wie sie auch im Beispiel angegeben sind. Leider funktionieren diese bei mir jedoch nicht.
Wenn mein Sonos System den Song abspielt, ist der Status "PLAYING". Sofern ich ihn pausiere, kann der Status aber "STOPPED" oder "PAUSED_PLAYBACK" sein. Daher wollte ich hier mit REGEX arbeiten.

Anbei mein Code.


<div data-type="switch" class="left"
  data-device="Sonos_Wohnzimmer"
  data-icons='["fa-pause", "fa-play"]'
  data-states='["PLAYING", "STOPPED"]'
  data-on-background-color="#505050"
  data-off-background-color="#505050"
  data-get="transportState"
  data-get-on="PLAYING"
  data-get-off="!PLAYING"
  data-set-on="Play"
  data-set-off="Pause">
</div>


Muss ich die regulären Ausdrücke vorher noch irgendwo aktivieren?

Vielen Dank!
Thomas

Moin.

Wenn du data-states verwendest brauchst du data-get-on und data-get-off nicht!!!!

Versuch mal: Such nach: State 1: PLAYINGirgendwas      und nach: State 2: VomAnfangALLESANDEREAUßERPLAYINGirgendwas

<div data-type="switch" class="left"
  data-device="Sonos_Wohnzimmer"
  data-icons='["fa-pause", "fa-play"]'
  data-states='["PLAYING.*", "^(?!PLAYING.*)"]'
  data-on-background-color="#505050"
  data-off-background-color="#505050"
  data-get="transportState"
  data-set-on="Play"
  data-set-off="Pause">
</div>


oder: sucht nach State 1: PLAYING     und nach State 2: STOPPED oder PAUSED_PLAYBACK


<div data-type="switch" class="left"
  data-device="Sonos_Wohnzimmer"
  data-icons='["fa-pause", "fa-play"]'
  data-states='["PLAYING.*", "(STOPPED)|(PAUSED_PLAYBACK)"]'
  data-on-background-color="#505050"
  data-off-background-color="#505050"
  data-get="transportState"
  data-set-on="Play"
  data-set-off="Pause">
</div>


Bin kein RegEx Profi... da gibt es garantiert elegantere Lösungen und getestet hab ich das jetzt auch nicht. Aber so ähnlich verwende ich das bei mir.

Viel Erfolg weiter.

Grüße^^
Titel: Antw:TabletUI Regex in Switch funktioniert nicht
Beitrag von: ToM_ToM am 30 Januar 2016, 21:03:00
Hey vielen Dank für die Antwort.

Beide Varianten hatte ich auch schon ausprobiert und sie funktionieren bei mir nicht. Also allgemein scheint der die regulären Ausdrücke nicht zu verarbeiten.
Hast du noch irgendwas zusätzlich installiert?

Bei mir ändert sich das Icon nicht bzw. zeigt mir das Standard Icon (Glühbirne).

VG, Thomas.
Titel: Antw:TabletUI Regex in Switch funktioniert nicht
Beitrag von: setstate am 30 Januar 2016, 23:51:51
Es müsste so funktionieren, wie von Roman1528 vorgeschlagen.

Ist das wirklich das richtige Reading? Was sagt 'list Sonos_Wohnzimmer transportState" ?
Titel: Antw:TabletUI Regex in Switch funktioniert nicht
Beitrag von: ToM_ToM am 31 Januar 2016, 02:57:51
Ja, es ist das richtige Reading.
Wenn ich direkt die 2 Werte "PLAYING" und "STOPPED" verwende, geht es ja korrekt.
Nur mit den REGEX leider nicht.

list Sonos_Wohnzimmer transportState liefert die Werte:

Sonos_Wohnzimmer 2016-01-30 21:06:20 STOPPED

und wenn Musik läuft:

Sonos_Wohnzimmer 2016-01-31 02:57:12 PLAYING
Titel: Antw:TabletUI Regex in Switch funktioniert nicht
Beitrag von: ToM_ToM am 03 Februar 2016, 08:24:07
Kann es vielleicht daran liegen dass ich WebViewControl verwende und das vielleicht Probleme macht?
Titel: Antw:TabletUI Regex in Switch funktioniert nicht
Beitrag von: setstate am 03 Februar 2016, 08:36:08
neee, müsste auch so gehen. WVC nutzt die Standard JS-Engine des OS.
Schicke noch mal deinen aktuellen HTML Teil für den Switch. Ich versuche das bei mir dann nochmal mit Dummies zu simulieren.
Titel: Antw:TabletUI Regex in Switch funktioniert nicht
Beitrag von: Pythonf am 03 Februar 2016, 15:47:13
Ich kann mich hier anschließen, bei mir funktioniert es leider auch nicht:
<div data-type="switch" class="inline"
data-device="RaspberryPi"
data-icons='["fa-pause", "fa-play"]'
data-states='["playing.*", "(stopped)|(paused)"]'
data-on-background-color="#505050"
data-off-background-color="#505050"
data-get="playStatus"
data-set-on="play"
data-set-off="pause">
</div>

<title>HOME</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
        <meta name="widget_base_width" content="152">
        <meta name="widget_base_height" content="155">
<meta name="widget_margin" content="1">
        <meta name="mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="longpoll" content="1"> <!-- 1=longpoll;0=shortpoll every 30sec -->
<meta name="gridster_disable" content="1">
        <meta name="debug" content="0"> <!-- 1=output to console;0=no output -->

<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>

        <link rel="stylesheet" href="/fhem/tablet/lib/jquery.gridster.min.css" />
        <link rel="stylesheet" href="/fhem/tablet/css/fhem-tablet-ui.css" />
        <link rel="stylesheet" href="/fhem/tablet/lib/font-awesome.min.css" />
        <link rel="stylesheet" href="/fhem/tablet/lib/jquery.toast.min.css" />
<link rel="stylesheet" href="/fhem/tablet/lib/fhemSVG.css" />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" />
        <link rel="stylesheet" href="/fhem/tablet/css/fhem-tablet-ui-user_tablet.css" />

        <script type="text/javascript" src="/fhem/pgm2/jquery.min.js"></script>
        <script type="text/javascript" src="/fhem/tablet/lib/jquery.knob.mod.min.js"></script>
        <script type="text/javascript" src="/fhem/tablet/lib/jquery.toast.min.js"></script>
        <script type="text/javascript" src="/fhem/tablet/lib/jquery.circlemenu.js"></script>
        <script type="text/javascript" src="/fhem/tablet/lib/powerange.min.js"></script>
        <script type="text/javascript" src="/fhem/tablet/lib/jquery.gridster.min.js"></script>
        <script type="text/javascript" src="/fhem/tablet/lib/fa-multi-button.min.js"></script>
        <script type="text/javascript" src="/fhem/tablet/js/fhem-tablet-ui.js"></script>
<script type="text/javascript" src="/fhem/pgm2/cordova-2.3.0.js"></script>
<script type="text/javascript" src="/fhem/pgm2/webviewcontrol.js"></script>
<script type="text/javascript">var wvcDevices = {'TAB3':'TAB3'}; var wvcUserCssFile="webviewcontrol.css"</script>

Schalten funktioniert, aber das Icon wird nicht aktualisiert, nur beim reload der Seite

Bei mir hat sich das Problem gelöst, in dem ich im SB_Player do_not_notify false und event-on-change-reading .* gesetzt habe.

EDIT: Es geht teilweise und geht dann wieder nicht. Es ging jetzt kurze Zeit wieder nicht und dann auf einmal geht es wieder. Erklären warum kann ich aber leider nicht. Wenn ich die Seite neu lade geht es erstmal wieder nicht, dauert dann circa 30s und funktioniert wieder. longpoll ist aktiviert.
Titel: Antw:TabletUI Regex in Switch funktioniert nicht
Beitrag von: setstate am 04 Februar 2016, 07:49:41
1.) Mit WVC startet longpoll erst nach 30 Sekunden. Mit debug=1 sieht man eine toast Message, die das sagt und man sieht auch, ab wann longpoll aktiv ist. Wenn es schneller starten soll, muss man das angeben: <meta name="longpoll_delay" content="1000">
2.) Die Header Definition ist ungünstig und führt bei mir zu sporadischen "Nichtladen" der Seite, wie es hier schon dutzende Problemmeldungen gibt. So sollte der Header aussehen:

<title>HOME</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
        <meta name="widget_base_width" content="152">
        <meta name="widget_base_height" content="155">
                <meta name="widget_margin" content="1">
        <meta name="mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="longpoll" content="1"> <!-- 1=longpoll;0=shortpoll every 30sec -->
                <meta name="gridster_disable" content="1">
        <meta name="debug" content="1"> <!-- 1=output to console;0=no output -->

        <meta http-equiv='cache-control' content='no-cache'>
        <meta http-equiv='expires' content='0'>
        <meta http-equiv='pragma' content='no-cache'>

    <link rel="stylesheet" href="/fhem/tablet/lib/jquery.gridster.min.css" />
    <link rel="stylesheet" href="/fhem/tablet/css/fhem-tablet-ui.css" />
    <link rel="stylesheet" href="/fhem/tablet/lib/font-awesome.min.css" />
    <link rel="stylesheet" href="/fhem/tablet/lib/jquery.toast.min.css" />

    <!-- define your personal style here, it wont be overwritten  -->
    <!-- link rel="stylesheet" href="/fhem/tablet/css/fhem-green-ui.css" / -->
    <link rel="stylesheet" href="/fhem/tablet/css/fhem-tablet-ui-user.css" />

    <script src="/fhem/pgm2/jquery.min.js" defer></script>
    <script src="/fhem/tablet/lib/jquery.toast.min.js" defer></script>
    <script src="/fhem/tablet/lib/jquery.gridster.min.js" defer></script>
    <script src="/fhem/tablet/js/fhem-tablet-ui.js" defer></script>

    <script type="text/javascript" src="/fhem/pgm2/cordova-2.3.0.js"></script>
    <script type="text/javascript" src="/fhem/pgm2/webviewcontrol.js"></script>
    <script type="text/javascript">var wvcDevices = {'TAB3':'TAB3'}; var wvcUserCssFile="webviewcontrol.css"</script>
</head>


bzw.: wenn die href="/fhem/tablet/css/fhem-tablet-ui-user_tablet.css" nicht existiert, kommt es auch zu Seitenladefehler
3.) RegEx passen soweit
Titel: Antw:TabletUI Regex in Switch funktioniert nicht
Beitrag von: ToM_ToM am 04 Februar 2016, 17:55:21
Hey sorry für die später Antwort.

Das ist mein Code für das Widget.


<div data-type="switch" class="left"
  data-device="Sonos_Wohnzimmer"
  data-icons='["fa-pause", "fa-play"]'
  data-states='["PLAYING", "^(?!PLAYING)"]'
  data-on-background-color="#505050"
  data-off-background-color="#505050"
  data-get="transportState"
  data-set-on="Play"
  data-set-off="Pause">
</div>


Auch der funktioniert nicht:


<div data-type="switch" class="left"
  data-device="Sonos_Wohnzimmer"
  data-icons='["fa-pause", "fa-play"]'
  data-states='["PLAYING.*", "^(?!PLAYING.*)"]'
  data-on-background-color="#505050"
  data-off-background-color="#505050"
  data-get="transportState"
  data-set-on="Play"
  data-set-off="Pause">
</div>


Zu Beginn habe ich diese Lampe als Icon. Sobald ich dann z.B. ein Webradio starte, ändert sich das Icon korrekterweise ins Pause-Icon. Sobald ich das Radio aber stoppe und es somit nicht mehr den transportState "PLAYING" sondern "STOPPED" oder "PAUSE..." hat, ändert sich das Icon nicht und es wird weiterhin das Pause-Icon angezeigt.

VG, Thomas.
Titel: Antw:TabletUI Regex in Switch funktioniert nicht
Beitrag von: C0mmanda am 07 November 2016, 20:13:49
Moin,

hattest du das Problem in der Zwischenzeit lösen können?

Ich habe das gleiche Problem... schalten lässt sich alles aber "get-off" wird nicht erkannt.
Ich wollte "switch" nutzen um Lightscenes zu steuern was an sich auch wunderbar klappt, nur erkennt TabletUI eben nicht den "off" Status. (bzw. den Wechsel in eine andere Scene).

Wenn ich die gleiche Config für einen Dummy verwende funktioniert das ganze komischerweise einwandfrei.
Bei Lightscene jedoch nicht... :(

event-on-change und event-on-update ist alles ausprobiert bei der Lightscene, ohne Erfolg.

Jemand eine Idee?
Hier mal der Code eines Buttons:

    <div>
        <div data-type="switch" data-device="Lightscene_Home"
        data-set="scene"
          data-get-on="Absent" data-get-off="!Absent"
          data-set-off=""
          data-set-on="Absent" class="green"
          data-icon="oa-status_away_1" data-background-icon="fa-square" ></div>
        <div data-type="label" class="inline w1x large thin">Absent</div>
    </div>


grtz
CmdA
Titel: Antw:TabletUI Regex in Switch funktioniert nicht
Beitrag von: setstate am 07 November 2016, 20:41:22
data-get-off="!Absent" funktioniert nicht.

entweder mit Key-Word "!on" -> bedeutet: alles nur nicht das was unter data-get-on steht
data-get-off="!on"


oder als RegEx -> bedeutet: alles nur nicht "Absent"
data-get-off="(?!Absent).*"
Titel: Antw:TabletUI Regex in Switch funktioniert nicht
Beitrag von: C0mmanda am 07 November 2016, 21:10:16
Argh!

Es kann so einfach sein...
Da hatte ich wohl ein ganz großes Brett vorm Kopf :(

Es funktioniert.

1000 Dank!!

grtz
CmdA