NEWS
Prüfung mehrerer Bedingungen
-
Hallo zusammen,
ich möchte mit einem Blockly verschiedene Bedingungen bei der Mediaweidergabe mit emby prüfen und in Abhängigkeit davon Licht schalten.
Konkret: Wenn es nach 20 Uhr ist und der Wiedergabe Status des Medienplayers auf Wiedergabe (playing) ist und im Genre Objekt "Horror" steht, soll das Licht Rot werden. Im Fall, dass dort nicht "Horror" steht soll es Blau leuchten. Irgendwo scheint noch ein Fehler zu sein, da zwar Licht angeht, aber nicht korrekt nach Genre. Hat jemand einen Tipp?
-
Wäre dann einfacher, wenn du den typischen Aufbau und Wert des Objektes "Genres" mal sendest.
Ansonsten alle Bedingungen mal einzeln checken...
-
@armilar So schaut er aus:
-
Wenn ich nur auf Uhrzeit und Wiedergabe-Status prüfe ohne weitere Bedingungen funktioniert das Schalten des Lichtes in eine Farbe.
-
@apachelance
Den "Aufbau". Also im Expertenmodus auf den Stift klicken und die Objektdaten posten (in Code-Tags </>). -
nimm mal das > 0 raus und konvertiere "nach Logikwert"
aus dem "sonst falls" nimmst du die Genreprüfung gänzlich raus
EDIT: nicht das es falsch verstanden wird. Du prüfst natürlich nicht den Wert des Triggers... Hier kommt es auf den "nach Logikwert" an.
-
@codierknecht Anbei:
{ "type": "state", "common": { "name": "Genres", "role": "state", "type": "string", "read": true, "write": false }, "native": {}, "from": "system.adapter.emby.0", "user": "system.user.admin", "ts": 1700242129505, "_id": "emby.0.9978dbe503e74d4ab65de44921021f49.media.genres", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
@apachelance
Den Wert von "Genres" solltest Du zunächst in eine Variable einlesen und damit weiterarbeiten.
Dann muss der Wert nicht 2x gelesen werden.Und bau mal ein paar Debug-Blöcke ein, um zu sehen was wo drin steht.
-
denke es ist ein simpler String der irgendwann und irgendwo das Wort "Horror" enthält. Wenn Horror einmal geprüft wird, dann reicht das doch.
Die restliche Zeit soll doch wenn die Kiste läuft das Licht sowieso nur blau sein
-
Falls du nicht weißt, was wir meinen, dann sende mal kurz das Blockly...
Nachbauen macht so wenig Spaß bei der Baustein-Sprache...
-
@apachelance
Wie sehen eigentlich die Objektdaten zu "State of the client" aus?
Ist das tatsächlich ein String oder vielleicht eine Zahl? -
@apachelance
Der Trigger-Datenpunkt enthält wirklich einen String (z.B. "playing")?
Man vermeidet doppelte Vergleiche: -
Nun das wäre ein Ding, wenn da nicht "playing" oder so etwas wie "stop" oder "pause" drin stehen würde...
-
@armilar
Mich würde es wundern, wenn es drin stehen würde -
Bin gespannt, ob das Rätsel geknackt wird
-
Ich hab es jetzt so umgebaut:
Das Seltsame ist, dass es mit der Wiedergabe vom PC Player (emby) funktioniert, wohingegen es vom Mediaplayer mit emby-Client die Farben nicht korrekt wechselt und immer nur rot anzeigt. Dabei ändere ich nur das "State of the Client" Objekt - einmal PC, einmal Mediaplayer.
So sieht das State Objekt aus:
{ "type": "state", "common": { "name": "State of the Client", "role": "media.state", "type": "string", "read": true, "write": true, "states": { "idle": "Idle", "paused": "Paused", "playing": "Playing" } }, "native": {}, "from": "system.adapter.emby.0", "user": "system.user.admin", "ts": 1700242129505, "_id": "emby.0.9978dbe503e74d4ab65de44921021f49.media.state", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
Schätze mal, dass du das Wort "Playing" groß schreiben solltest
-
@armilar sagte: Schätze mal, dass du das Wort "Playing" groß schreiben solltest
Nein, der Wert steht links unter common.states.
-
@codierknecht sagte in Prüfung mehrerer Bedingungen:
Mich würde es wundern, wenn es drin stehen würde
Dinge gibt's ... ts, ts, ts
-
@armilar Nein, muss klein sein.