[FHEM-Tablet-UI] Widgets for fhem-tablet-ui

Begonnen von nesges, 10 April 2015, 10:30:25

Vorheriges Thema - Nächstes Thema

tomster

Es geht sogar noch genauer (1.Click):
2015-05-20 22:02:05 DENON_AVR Denon mute on
2015-05-20 22:02:05 DENON_AVR Denon mute: on
2015-05-20 22:02:05 DENON_AVR Denon currentStatus: mute on


2. Click: wie gehabt.

nesges

Dein data-set ist nicht vollständig. Da das ein undefinierter Zustand ist, wird bei allen Zuständen ohne Zuordnung der erste Befehl aus dem set-Array gesendet:

disconnected     -> mute on
off              -> mute off
mute on          -> ?  -> mute on
[0-9]|[1-9][0-9] -> ?  -> mute on


mute off hast du im data-get-on nicht definiert und data-set-default hast du nicht gesetzt, dann stellt sich das gleiche Problem wie oben und es wird ebenfalls der erste Befehl aus dem set-Array gesendet.

Siehe Wiki: multistatebutton

tomster

Das mit dem data-set hab ich gesehen, bzw. bewusst so gemacht, da ich dachte, dass die Logik zunächst den ersten Befehl aus dem array nimmt.
In meinem Fall "mute on". Nachdem dabei auch currentStatus auf "mute on" gesetzt wird, dachte ich, dass das Widget damit versteht, dass als nächster Befehl "mute off" zu setzen sei. Auch wenn danach natürlich das Widget "in der Luft hängt", weil ja kein Status "mute off" definiert ist, hatte ich gehofft, dass dann wieder die Logik nach dem ersten Befehl im Array greift: -> "mute on".

Mit data-set_default="mute on" geht gar nüscht...

tomster

#123
Könnte aber sein, dass das Widget durcheinanderkommt, weil es ja set mute of an das Device-Reading "mute" geschickt hat. Zurück kommt aber "mute off" vom userReading currentStatus...

--edit--
Ahh, jetzt hab ich das Wiki erst gesehen. Damit wird mein Fehler klar. Ich bin davon ausgegangen, dass das set-array stupide round-robin abgearbeitet wird...

nesges

Zitat von: nesges am 20 Mai 2015, 13:10:13
Bisher nicht, ist aber ne gute Idee. Ich baue den ganzen Wochentag als "l" (kleines L), gekürzt auf drei Buchstaben als "D" ein.

Update clock:

Folgende Formate sind hinzugefügt worden:
  • l (kleines L): Wochentag
  • D: Wochentag gekürzt
  • S: Anhang der englischen Aufzählung für einen Monatstag, zwei Zeichen
  • F: Monat als ganzes Wort, wie Januar oder März
  • M: Monatsname gekürzt
  • g: Stunde im 12-Stunden-Format, ohne führende Nullen
  • h: Stunde im 12-Stunden-Format, mit führenden Nullen
  • a: am/pm
  • A: AM/PM

Die Formate l, D, F und M werden standardmässig mit deutschen Namen ersetzt. In den Attributen data-days und data-months können Arrays für die Werte der Tage bzw. Monate angegeben werden. Alternativ kann das Keyword "english" für englische Tages/Monatsbezeichnungen verwendet werden. Die Länge von D und M kann durch die Attribute data-shortday-length bzw data-shortmonth-length bestimmt werden. Der Default ist jeweils 3.

Siehe auch Wiki: clock

nesges

Zitat von: tomster am 20 Mai 2015, 13:10:04
Nö, man kann (zumindest bei den paar von mir versuchten) auch ein 1000x1000 dahintersetzen und es kommt ein ziiiiiemlich großes Cover zurück.Wenn ich nun z.B. besagtes 1000px-Bild hole und es dann nur angezeigt (<img width="150" height="150">) auf die gewünschte Große bringen würde, ist die Auflösung auf Displays entsprechend detaillierter als bei einem 150px-Bild...

Ich habe eine neues Attribut data-pxratio eingebaut, das beim holen der Grafik mit data-size multipliziert wird. Default ist 1, für Retina-Displays sind Werte zwischen 1.3 und 2 wahrscheinlich ideal. Bitte einmal testen.

Uninteressante Events werden jetzt ignoriert, die Anzahl der iTunes-Abfragen sollte signifikant sinken.

tomster

Herr Nesges, Chapeau!
Hab zwar kein Retina-Display, werde mir aber morgen eins besorgen und Testen, Testen, Testen!

tomster

Ich kann immer noch Zwischendrin-Reloads feststellen,

muss aber morgen in der Früh noch Mal genauer nachsehen was diese verursacht. Halt mir schon ein Auge zu heute. Pixel-Overflow? Alter? Uff, zum Glück nur die Uhrzeit ;-)

setstate

Zitat von: nesges am 20 Mai 2015, 23:54:39
Ich habe eine neues Attribut data-pxratio eingebaut, das beim holen der Grafik mit data-size multipliziert wird. Default ist 1, für Retina-Displays sind Werte zwischen 1.3 und 2 wahrscheinlich ideal. Bitte einmal testen.

Hallo Thomas,

mach das automatisch, dann müssen nicht so viele data-* benutzt werden!
Im Thermostat Widget mache ich das bei den Canvas Fonts

Die Funktion 'window.devicePixelRatio' liefert genau diesen 1,2,3x Faktor

Phil__

Hallo an alle,

der User-Demo Thread und das zugehörige Git stehen bereit.
Ich hoffe auf rege Beteiligung!

http://forum.fhem.de/index.php?topic=37378.msg296510#msg296510

https://github.com/ovibox/fhem-ftui-user-demos


@nesges:
Könntest du die beiden Seiten im Startpost und in deinem Git verlinken?!
Server: Intel DH77EB + Core i3-2120 mit Ubuntu Server 14.04
Backup: Beaglebone Black
Homematic: HM-LAN-Adapter, HM-CC-RT-DN, HM-CC-TC, HM-LC-SW1-PL2, HM-SEC-RHS, HM-SEC-SC, HM-TC-IT-WM-W-EU, HM-WDS10-TH-O
Weitere: Denon-AVR, PhilipsTV, PhilipsHue, Raspi+XBMC
Nexus 7 (WebViewControl + FTUI)

nesges

Zitat von: setstate am 21 Mai 2015, 01:59:53
Die Funktion 'window.devicePixelRatio' liefert genau diesen 1,2,3x Faktor

Perfekt, Danke! :)

nesges

Zitat von: Phil__ am 21 Mai 2015, 08:27:47
@nesges:
Könntest du die beiden Seiten im Startpost und in deinem Git verlinken?!

Erledigt :)

tomster

#132
So, hab's Mal ein bisschen laufen lassen:


11:07:30.187 "itunes_artwork" "update" Array [ "artist", "title" ] Array [ "Nobody To Love", "SIGMA" ] jquery.min.js line 2 > eval:129:20
11:07:30.191 "itunes_artwork" "itunes.start" Array [ "Nobody To Love", "SIGMA" ] jquery.min.js line 2 > eval:43:8
11:07:30.208 "itunes_artwork" "update" Array [ "artist", "title" ] Array [ "Nobody To Love", "SIGMA" ] jquery.min.js line 2 > eval:129:20
11:07:30.211 "itunes_artwork" "itunes.start" Array [ "Nobody To Love", "SIGMA" ] jquery.min.js line 2 > eval:43:8
11:07:30.707 "itunes_artwork" "itunes.artwork" "http://is3.mzstatic.com/image/pf/us/r30/Music4/v4/76/dc/69/76dc69b5-e320-2d18-4396-09525a803764/UMG_cvrart_00602547023940_01_RGB72_1500x1500_14UMGIM36666.396x396-75.jpg" jquery.min.js line 2 > eval:74:24
11:07:30.723 "itunes_artwork" "update" Array [ "artist", "title" ] Array [ "King", "SIGMA" ] jquery.min.js line 2 > eval:129:20
11:07:30.726 "itunes_artwork" "itunes.start" Array [ "King", "SIGMA" ] jquery.min.js line 2 > eval:43:8
11:07:30.733 "itunes_artwork" "update" Array [ "artist", "title" ] Array [ "King", "YEARS &amp; YEARS" ] jquery.min.js line 2 > eval:129:20
11:07:30.735 "itunes_artwork" "itunes.start" Array [ "King", "YEARS &amp; YEARS" ] jquery.min.js line 2 > eval:43:8
11:07:30.995 "itunes_artwork" "itunes.artwork" "http://is3.mzstatic.com/image/pf/us/r30/Music4/v4/76/dc/69/76dc69b5-e320-2d18-4396-09525a803764/UMG_cvrart_00602547023940_01_RGB72_1500x1500_14UMGIM36666.396x396-75.jpg" jquery.min.js line 2 > eval:74:24
11:07:31.020 "itunes_artwork" "itunes.results" "-" jquery.min.js line 2 > eval:79:20
11:07:31.022 "itunes_artwork" "itunes.start" Array [ "King" ] jquery.min.js line 2 > eval:43:8
11:07:31.140 "itunes_artwork" "itunes.artwork" "http://is1.mzstatic.com/image/pf/us/r30/Music/8e/bd/93/mzi.pixecwjy.396x396-75.jpg" jquery.min.js line 2 > eval:74:24
11:07:31.987 "itunes_artwork" "itunes.artwork" "http://is2.mzstatic.com/image/pf/us/r30/Music1/v4/7e/22/02/7e2202dc-de2c-1502-b313-b1bfb324a3a5/UMG_cvrart_00602547371881_01_RGB72_1500x1500_15UMGIM23337.396x396-75.jpg" jquery.min.js line 2 > eval:74:24
11:07:45.669 "idx" 1 "20.3" jquery.min.js line 2 > eval:49:20
11:07:45.672 "idx" 0 "19" jquery.min.js line 2 > eval:49:20
11:08:00.395 "itunes_artwork" "update" Array [ "artist", "title" ] Array [ "King", "YEARS &amp; YEARS" ] jquery.min.js line 2 > eval:129:20
11:08:00.398 "itunes_artwork" "itunes.start" Array [ "King", "YEARS &amp; YEARS" ] jquery.min.js line 2 > eval:43:8
11:08:00.403 "itunes_artwork" "update" Array [ "artist", "title" ] Array [ "King", "YEARS &amp; YEARS" ] jquery.min.js line 2 > eval:129:20
11:08:00.405 "itunes_artwork" "itunes.start" Array [ "King", "YEARS &amp; YEARS" ] jquery.min.js line 2 > eval:43:8
11:08:00.623 "itunes_artwork" "itunes.results" "-" jquery.min.js line 2 > eval:79:20
11:08:00.624 "itunes_artwork" "itunes.start" Array [ "King" ] jquery.min.js line 2 > eval:43:8
11:08:00.728 "itunes_artwork" "itunes.results" "-" jquery.min.js line 2 > eval:79:20
11:08:00.728 "itunes_artwork" "itunes.start" Array [ "King" ] jquery.min.js line 2 > eval:43:8
11:08:01.561 "itunes_artwork" "itunes.artwork" "http://is2.mzstatic.com/image/pf/us/r30/Music1/v4/7e/22/02/7e2202dc-de2c-1502-b313-b1bfb324a3a5/UMG_cvrart_00602547371881_01_RGB72_1500x1500_15UMGIM23337.396x396-75.jpg" jquery.min.js line 2 > eval:74:24
11:08:30.463 "itunes_artwork" "update" Array [ "artist", "title" ] Array [ "King", "YEARS &amp; YEARS" ] jquery.min.js line 2 > eval:129:20
11:08:30.465 "itunes_artwork" "itunes.start" Array [ "King", "YEARS &amp; YEARS" ] jquery.min.js line 2 > eval:43:8
11:08:30.471 "itunes_artwork" "update" Array [ "artist", "title" ] Array [ "King", "YEARS &amp; YEARS" ] jquery.min.js line 2 > eval:129:20
11:08:30.474 "itunes_artwork" "itunes.start" Array [ "King", "YEARS &amp; YEARS" ] jquery.min.js line 2 > eval:43:8
11:08:30.729 "itunes_artwork" "itunes.results" "-" jquery.min.js line 2 > eval:79:20
11:08:30.730 "itunes_artwork" "itunes.start" Array [ "King" ] jquery.min.js line 2 > eval:43:8
11:08:30.749 "itunes_artwork" "itunes.results" "-" jquery.min.js line 2 > eval:79:20
11:08:30.749 "itunes_artwork" "itunes.start" Array [ "King" ] jquery.min.js line 2 > eval:43:8
11:08:31.580 "itunes_artwork" "itunes.artwork" "http://is2.mzstatic.com/image/pf/us/r30/Music1/v4/7e/22/02/7e2202dc-de2c-1502-b313-b1bfb324a3a5/UMG_cvrart_00602547371881_01_RGB72_1500x1500_15UMGIM23337.396x396-75.jpg"

Das Script fragt alle 30 Sekunden bei iTunes an.
Das von Dir vorgeschlagene

attr MPD event-on-change-reading title,artist,name

bringt aber komplette Ruhe in die Anfragen. Nun wird wirklich nur noch mit iTunes gesprochen, wenn sich der gespielte Song ändert.

11:25:31.425 "itunes_artwork" "update" Array [ "artist", "title" ] Array [ "Headlights", "CALVIN HARRIS FEAT. HAIM" ] jquery.min.js line 2 > eval:129:20
11:25:31.429 "itunes_artwork" "itunes.start" Array [ "Headlights", "CALVIN HARRIS FEAT. HAIM" ] jquery.min.js line 2 > eval:43:8
11:25:31.448 "itunes_artwork" "update" Array [ "artist", "title" ] Array [ "Headlights", "ROBIN SCHULZ FEAT. ILSEY" ] jquery.min.js line 2 > eval:129:20
11:25:31.451 "itunes_artwork" "itunes.start" Array [ "Headlights", "ROBIN SCHULZ FEAT. ILSEY" ] jquery.min.js line 2 > eval:43:8
11:25:31.939 "itunes_artwork" "itunes.results" "-" jquery.min.js line 2 > eval:79:20
11:25:31.940 "itunes_artwork" "itunes.start" Array [ "Headlights" ] jquery.min.js line 2 > eval:43:8
11:25:32.184 "itunes_artwork" "itunes.artwork" "http://is2.mzstatic.com/image/pf/us/r30/Music5/v4/fc/7d/e5/fc7de58d-0955-4997-5eea-b1854e22dc3c/dj.gnqatncu.396x396-75.jpg" jquery.min.js line 2 > eval:74:24
11:25:32.441 "itunes_artwork" "itunes.artwork" "http://is2.mzstatic.com/image/pf/us/r30/Music4/v4/b7/90/4e/b7904ea4-9db7-268e-5544-bc24d1af0f2c/UMG_cvrart_00602537542703_01_RGB72_1500x1500_13UAEIM06078.396x396-75.jpg" jquery.min.js line 2 > eval:74:24
11:27:31.417 "idx" 1 "20.2" jquery.min.js line 2 > eval:49:20
11:27:31.419 "idx" 0 "19" jquery.min.js line 2 > eval:49:20
11:29:11.585 "itunes_artwork" "update" Array [ "artist", "title" ] Array [ "So Sick", "ROBIN SCHULZ FEAT. ILSEY" ] jquery.min.js line 2 > eval:129:20
11:29:11.589 "itunes_artwork" "itunes.start" Array [ "So Sick", "ROBIN SCHULZ FEAT. ILSEY" ] jquery.min.js line 2 > eval:43:8
11:29:11.597 "itunes_artwork" "update" Array [ "artist", "title" ] Array [ "So Sick", "NE-YO" ] jquery.min.js line 2 > eval:129:20
11:29:11.600 "itunes_artwork" "itunes.start" Array [ "So Sick", "NE-YO" ] jquery.min.js line 2 > eval:43:8
11:29:12.110 "itunes_artwork" "itunes.results" "-" jquery.min.js line 2 > eval:79:20
11:29:12.111 "itunes_artwork" "itunes.start" Array [ "So Sick" ] jquery.min.js line 2 > eval:43:8
11:29:12.353 "itunes_artwork" "itunes.artwork" "http://is4.mzstatic.com/image/pf/us/r30/Music/bc/da/be/mzi.eghupvbb.396x396-75.jpg" jquery.min.js line 2 > eval:74:24


Vielen Dank für dieses Widget!
Jetzt noch ein Bildchen, wenn MPD quasi ausgeschalten ist (vielleicht so ähnlich wie das angehängte Bild) und/oder einen Spinner wenn es nach einem Cover sucht...

setstate

Wie macht ihr das mit dem Auslesen der Playlists beim MPD Modul?
Vielleicht habt ihr mein Post im MPD Thread gelesen? Das Modul crashed ja klp. wenn man mit UserReadings arbeitet. Als Workaround könnte man ja mit einem Dummy arbeiten, um die Playlist zu besorgen. Dann müsste das select Widget aber mit zwei devices umgehen können.

tomster

#134
Was genau meinst Du mit "playlist auslesen"?

Ich hatte nesges Script für now_name, etc. und playlists eingebaut, bekomme dann aber dauernd den "socketclose: Bad file descriptor"-Error im MPD. Drum hab ich es wieder ausgebaut, ohne das Reading "playlists" zu löschen. Also hab ich noch ein Reading, auf das das select-Widget zugreifen kann.

Mein Vorschlag war eigentlich (ohne das ich wissen würde, ob MPD die aktuell-gespielte Playlist überhaupt irgendwo ausgibt), dass man nesges playlists-Script so abändert, dass die Playlist-Sortierung immer die aktuell gespielte als 1. im array ausgibt. Damit würde im Select-Widget die aktuelle immer angezeigt und man kann die anderen dann im Dropdown wählen. Getriggert würde das Script dann vermutlich über ein "mpd_event change playlist" werden  müssen.