[Gelöst] Problem mit Switch-Widget für zwei Zustände

Begonnen von dadoc, 12 März 2018, 12:41:19

Vorheriges Thema - Nächstes Thema

dadoc

Hallo zusammen,
ich bekomme einen Umschalt-Switch (für das Syncen bzw. unsyncen von Squeezebox-Playern) nicht richtig hin.
Die gesyncten Player stehen im Reading "synced" des Players, für die der Switch gelten soll. Ich möchte, dass der Befehl
set SB_Denon sync SB_Office
geschickt wird, wenn das Reading "SB_Office" nicht enthält, und
set SB_Denon unsync SB_Office
wenn das Reading "SB_Office" enthält (es enthält dann z.B. "SB_Denon,SB_Office,SB_Kueche").

Mit
<div class="top-space inline">
    <div data-type="switch"
        data-device="SB_Denon"
        data-get="synced"
        data-get-on="(.*?Office.*?)"
data-get-off="!(.*?Office.*?)"
data-set-on="sync SB_Office"
data-set-off="unsync SB_Office"
data-on-color="green"
data-off-color="red"
data-icon="fa-link"
data-background-icon="-"

</div>
    <div data-type="label"
class="cell">Office
</div>
</div>

funktioniert es bestens.
Mit
<div class="top-space inline">
    <div data-type="switch"
        data-device="SB_Denon"
        data-get="synced"
        data-states='["(.*?Office.*?)","!(.*?Office.*?)"]'
data-set-states='["unsync SB_Office","sync SB_Office"]'
data-icons='["fa-link","fa-unlink"]'
        data-colors='["green","red"]'
data-background-icons='["-","-"]'
>
</div>
    <div data-type="label"
class="cell">Office
</div>
</div>

dagegen nicht bzw. anfang ein paarmal, und dann wird immer nur der sync-Befehl losgeschickt, auch wenn ich den Player im WebUI von Hand ge-unsynced habe.
Die Icons spiegeln den Status des Readings korrekt wieder, auch bei Umschalten im WebUI.
Habe ich da einen Fehler in der Abfrage des Readings? Aber warum funktioniert dann das Umschalten anfangs ein paarmal? Und warum funktioniert es beim normalen Switch?
Danke für Eure Hilfe &
Viele Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

setstate

eher so?


        data-states='[".*Office.*","^((?!Office).)*$"]'
data-set-states='["unsync SB_Office","sync SB_Office"]'
data-icons='["fa-link","fa-unlink"]'
        data-colors='["green","red"]'


contains RegEx: ^.*Office.*$

Not contains RegEx: ^((?!Office).)*$

dadoc

Danke! Das sind die Dinge, auf die ich auch in drei Leben wohl nicht gekommen wäre. Und das obwohl ich vor dem Posten tapfer nochmal alles, was ich zu RegExp finden konnte, durchstudiert und in diversen Online-RegExp- Analyzers ausprobiert hatte...
Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

dadoc

Hmm... die Freude währte nur kurz, denn es zeigt sich dasselbe (?) Problem wie vorher: Es funktioniert eine Weile korrekt, dann wiederum wird immer nur der zweite Befehl aus data-set-states abgeschickt, auch wenn das synced-Reading "SB_Office" enthält.

M.a.W.: Nach einer Weile "erkennt" das Switch-Widget einen der data-states aus dem Reading "synced" nicht mehr richtig, nämlich ".*Office.*" bzw. ".*Denon.*" bzw. ".*Kueche.*"
Nur bei einem der vier Player funktioniert das im Tablet UI durchgängig (d.h.  ".*Office.*" wird immer erkannt), obwohl derselbe Code und dieselbe Definition - k.A., warum.

Die zweiten data-states (Suchbegriff Office, Kueche, Denon) sind nicht im Reading enthalten) werden dagegen immer richtig erkannt.

Das Icon und dessen Farbe werden für beide States immer richtig gesetzt, obwohl sie ja über dieselbe Regex kontrolliert werden.

Der Sync-Part für einen Player sieht z.B. so aus:

<div class="top-space">
<div data-type="switch"
data-device="SB_Kueche"
data-get="synced"
data-states='[".*Denon.*","^((?!Denon).)*$"]'
data-set-states='["unsync","sync SB_Denon asSlave"]'
data-icons='["fa-volume-up","fa-unlink"]'
data-colors='["green","red"]'
class=" compressed"
data-background-icon="-"

</div>
<div data-type="label"
class="">Küche
</div>
</div>


Was kannn da los sein?

Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

setstate

Das musst du mal in einem zweiten Tab das ftui_check.html aufmachen und beobachten, welchen Wert FTUI kennt. Im Hauptfile muss debug > 0 gesetzt sein.

dadoc

Bei den "Subscriptions" tauchen die SB Player nicht auf.
Bei den Filtern fällt mir auf, dass Begriffe teilweise durch Komma, teilweise durch Leerzeichen getrennt sind - woher kommen dies Filter eigentlich?

ShortPoll
lastTimestamp 16.3.2018, 12:32:31
StatusText OK
Duration 100
Filter
WEB,SB_Denon,SB_Kueche,SB_Office,SB_Firetablet,Regensensor_Regen,alarm_status_d,KS300 STATE longpoll volumeStraight volume synced SYNCMASTER


LongPoll
longPollType ajax
currLine 4231
readyState 1
lastEventTimestamp 16.3.2018, 12:33:46
lastUpdateTimestamp 16.3.2018, 12:31:59
LastDevice SB_Firetablet
LastReading STATE
LastValue off
Filter
.*


Zitatbeobachten, welchen Wert FTUI kennt.
Wie/wo kann ich denn das sehen?
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

setstate

Mit Komma sind die Devices getrennt. Ab dem ersten Leerzeichen sind es die Readings. Wenn es nicht in den Subscriptions auftaucht, hast du ein Problem ;-)

dadoc

So, nun habe ich nochmal auf die Check-Seite geschaut, und jetzt sind die Subscriptions da.


31 SB_Office synced 'SB_Office,SB_Kueche'
32 SB_Denon synced 'none'
36 SB_Kueche synced 'SB_Office,SB_Kueche'
37 SB_Firetablet synced 'none'

Das stimmt mit der Anzeige der Icons überein. Wenn ich jetzt auf diesen Switch klicke
<div class="top-space">
<div data-type="switch"
data-device="SB_Kueche"
data-get="synced"
data-states='[".*Office.*","^((?!Office).)*$"]'
data-set-states='["unsync","sync SB_Office asSlave"]'
data-icons='["fa-volume-up","fa-unlink"]'
data-colors='["green","red"]'
class=" compressed"
data-background-icon="-"

</div>
<div data-type="label"
class="">Kueche
</div>
</div>

wird nicht "unsync" geschickt, sondern "sync SB_Office asSlave"
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

setstate

Das ist sehr komisch. Muss ich mir genauer ansehen.

dadoc

Ja, vor allem weil es ja anfangs immer erst ein paarmal korrekt geht. Ich habe auch schon schrittweise alle Player rausgenommen und nur einen belassen, dann wieder einen nach dem anderen reingenommen, alle gingen, ohne dass ich etwas verändert hätte. Bis sie dann wieder nicht mehr gingen (mit Ausnahme des Firetablet Switch).
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

czcbe

Ist nicht gelöst, bei mir scheint das noch immer nicht so zu funktionieren, es wird kein unsync geschickt, sondern mehrmals der gleiche sync-Befehl hintereinander.

Welche Parameter dürfen mit welchen gemischt werden, also dürfen Arraywerte im selben Switch mit einzelnen Werten gemischt werden? D.h. häufig sieht man, dass "Standard-Attribute" mit "Attribute für zwei Zustände" im gleichen Switch vorkommen o.ä.

data-states='[".*Denon.*","^((?!Denon).)*$"]'

vs

data-get-off="!(.*?Office.*?)"
FHEM 5.9 mit TabletUI | Pagebuttonmenü | Win2012R2 | Lubuntu 18.04 | Load-Balancing/Failover 2xFHEM | cygwin | nanoCUL 433 | Harmony Hub | IT Funksteckdosen | Squeezebox-Server (LMS) | Kodi | Sprachsteuerung | Webcams | Wetteransage | Telegram Bot | Presence-Script | Winconnect-Powershell

dadoc

Zitat von: czcbe am 25 November 2018, 12:32:13
Ist nicht gelöst
Kann mich momentan nicht erinnern, dass ich das auf gelöst gesetzt hätte, allerdings habe ich mein SB-Mixer-Projekt seit damals vorläufig auf Eis gelegt...
Setstate wollte sich das ja mal genauer anschauen...
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

czcbe

ok, habs langsam, Oberfläche funktioniert, aber die Switches sind mir dennoch bisschen schleierhaft...
Übrigens: den Betreff kann man selber nachträglich wieder ändern
FHEM 5.9 mit TabletUI | Pagebuttonmenü | Win2012R2 | Lubuntu 18.04 | Load-Balancing/Failover 2xFHEM | cygwin | nanoCUL 433 | Harmony Hub | IT Funksteckdosen | Squeezebox-Server (LMS) | Kodi | Sprachsteuerung | Webcams | Wetteransage | Telegram Bot | Presence-Script | Winconnect-Powershell