Module für XBMC

Begonnen von Dennis B., 06 Januar 2013, 22:32:24

Vorheriges Thema - Nächstes Thema

All-Ex

Hallo,

ich nutze das Modul erfolgreich, aber eine Frage/Anregung habe ich:

Auf meinem XBMC-Rechner hatte ich etwas abgespielt und ihn dann ausgeschaltet. Nun zeigt das Modul u.a. folgende Readings:
     2015-12-15 18:03:18   playStatus      playing
     2015-12-15 18:04:04   state           disconnected


Wäre es nicht logisch, den playStatus auf leer ("") zu setzen, wenn XBMC disconnected ist? Schließlich ist der playStatus ja unbekannt, wenn XBMC disconnected ist.

In meinem Use Case habe ich einen Taster, der abhängig vom playStatus verschiedene Dinge auslösen soll. Jetzt muss ich neben dem Reading playStatus auch noch state auswerten, um zu prüfen, ob beim Taster-Event wirklich etwas abgespielt wird. Wenn bei state = disconnected der playStatus auf "" stehen würde, wären entsprechende Abfragen einfacher zu gestalten.

Oder ist das eine schlechte Idee?

P.A.Trick

Du kannst dir das Reading doch selbst überschreiben mit einem notify o.ä. wenn du diese Funktion benötigst?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

vbs

Ich finde die Idee nicht schlecht und kenne auch die Problematik. Ich werte bei mir auch sowohl playStatus als auch system aus. Für ein paar Readings hatte ich mal das Löschen eingebaut: Zum Beispiel wenn man Musik abspielt, wird episodeid gelöscht, was ja dann offensichtlich nicht mehr aktuell ist (weil zum Videoplayer gehörig).
Bin da hin und her gerissen: Einerseits ist es doof, andererseits entspricht es mMn der FHEM-Logik, den letztbekannten Wert des Readings mit dem Zeitstempel anzuzeigen. Würde ein Thermometer-Device das Temperatur-Reading löschen, falls sich das Thermometer abmelden würde? Ernstgemeinte Frage.
Also ich bin da für Diskussionen offen und lasse mich gerne von Argumenten bzw. einer Mehrheit überzeugen :)

P.A.Trick

Nun wenn die LAN/WAN Verbindung abbricht weiß ich doch auch nicht den korrekten Status oder? Meine Meinung: Ich würde die Logik auch so sehen......letzter Wert mit Timestamp!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

TeeVau

Hallo,

ich persönlich halte von dem ganzen "Readings löschen wenn aktuell nicht gebraucht" nichts. Die Readings sind, meiner Ansicht nach, Inhalte des Backends. Und dort gibt es eben eine ganze Reihe an Informationen, die vielleicht aktuell nicht gebraucht werden. Wirklich stören tut es aber auch nichts ;-)
Meiner Ansicht nach treten damit mehr Probleme auf als es Nutzen bringt (z.B. wenn ein Reading mit Inhalt A gelöscht wird und nach kurzer Zeit wieder mit Inhalt A erstellt wird). Dann greift nämlich ggf. ein notify darauf, obwohl sich der Zustand von dem Reading gar nicht geändert hat. Ich finde es leichter aus einer Sammlung von Informationen mir die passenden rauszusuchen, anstatt raus zu finden ob die "aktuellen" informationen wirklich aktuell/verändert sind oder nicht.

Oder arbeiten wirklich so viele Menschen mit der Detailansicht? Im täglichen Leben versuche ich das zu vermeiden, weshalb mich auch nicht wirklich 50 Readings stören :-D

Guten Start in den Tag, Tobias
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

All-Ex

Danke für eure Antworten, mit den Readings wie sie aktuell sind komm ich ja auch klar ;-)

Ich hab auch noch ein anderes Projektchen, und zwar möchte ich gerne eine Lampe etwas hochdimmen, wenn ich während des Abspanns eines Films die Lautstärke ändere. Meistens mache ich irgendwann im Abspann den Ton etwas leiser, weil ich mich dann unterhalte. Dann wäre es praktisch, etwas Licht zu haben (so wie im Kino auch). Sonst ändere ich die Lautstärke während des Films selten, das wäre also erstmal genau genug.

Mein Ansatz wäre, bei einer Lautstärkeänderung während der letzten 8 Minuten eines Films das Licht hochzufahren. Die Lautstärkeänderung erkenne ich mittels YAMAHA_AVR problemlos. Aber wie kann ich die letzten Filmminuten in XBMC erkennen?

In XBMC gibt die Readings
time - current position in the playing media item (only updated on play/pause)
totaltime - total run time of the current media item

Meine Idee ist, alle 15 Sekunden ein neues Reading anzulegen:
currentposition = time + aktuelle uhrzeit - uhrzeit des letzten time-events
und dann zu prüfen ob totaltime - currentposition < 8 Minuten ist. Wenn das der Fall ist wäre das neue Reading wahr und sonst falsch.

Zeitberechnung in Perl ist für mich recht schwierig, wie kann ich das z.B. mit einem DOIF implementieren?

Die Luxusvariante wäre natürlich ein Plugin oder sonstige Möglichkeit, womit KODI den Abspann selbst dynamisch erkennt und das ganze als Reading liefert. Z.B. durch Bilderkennung des meist schwarzen Hintergrundes im Abspann, oder Anzapfen einer Datenbank, sofern es so etwas gibt wo die Länge des Abspanns gepflegt wäre. Kennt ihr da etwas?

Viele Grüße
All-Ex

vbs

Ich kenne erstmal keinen Weg, dass Kodi das irgendwie selbst erkennt. Ich würde das mal über ein userreading versuchen, dass über time getriggert wird. Also immer wenn sich time ändert, wird auch dein userreading (timeLeft oder so) upgedatet. Das Reading könnte einfach die verbleibende Zeit in Sekunden anzeigen. Du müsstest dann nur die vorhandenen Zeitstrings (totaltime und time) parsen, in Sekunden umrechnen und subtrahieren. Da gibts im Netz sicherlich fertige Perl-Beispiele zum Parsen von Zeit-Strings.

All-Ex

#622
Ich habe jetzt ein Userreading namens endcredits erstellt. Während der letzten 7 % der Filmlänge steht das Reading auf 1, sonst auf 0:

endcredits { join("",ReadingsVal($name,"time",0),ReadingsVal($name,"totaltime",0)) =~ /(\d\d):(\d\d):(\d\d).(\d\d\d)(\d\d):(\d\d):(\d\d).(\d\d\d)/; return ($1*24*60 + $2*60 + $3) / ($5*24*60 + $6*60 + $7) > 0.93 ? 1 : 0 }

coyote8219

Hallo,

ich hätte eine kurze Frage, ich habe das Kodi Modul im Einsatz, um mein Licht sowie meine Maskierung zu steuern...

Nun habe ich das Problem, das Licht und Maskierung alle 60 Sekunden geschaltet werden. Sprich ich habe programmiert, das bei Play das Licht aus geht und bei einen bestimmten Seitenverhältnis die Maskierung via Relais ausgelöst wird...Nun schaltet das ganze immer wieder in die zuvor vorgegebenen Zustände, obwohl es ja schon richtig ist... Kann ich das ständige Statusabfragen abschalten oder wie könnte ich das lösen, das die Befehle nur dann geschaltet werden, wenn sie nötig sind?

Amenophis86

Haste es mal mit einem event-on-change-reading versucht?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

coyote8219

Das hat mir geholfen... Danke...

Hat jemand eine Idee wie ich eine reading nach dem Pause und dann wieder Play drücken unterdrücken kann?


vbs

Bin mir nicht sicher, ob ich verstanden habe, was du machen möchtest. Könntest du die Frage einmal neu formulieren bitte?

jaho

Hallo Zusammen,

Ich wollte nur kurz nachfragen, ob es vielleicht eine Möglichkeit gibt, den von Kodi erfassten 3D-Modus (SBS/TAB/etc.) auch mit als Reading auszugeben?
(Der sd_*stereomode bleibt bei mir trotz korrekt erkannter Datei leer - die Information ist also offensichtlich nicht im Videostream enthalten.)

Hintergrund ist, dass ich gerne über Fhem meinen Fernseher in den richtigen 3D-Modus schalten möchte.
Wenn das als Reading nicht machbar ist, muss ich es mir aus dem Dateinamen parsen, aber ich fände es schöner das ausschließlich über den GUI-Modus-Wechsel von Kodi zu triggern um die Möglichkeit zu behalten, gelegentlich 3D-Filme in 2D anzusehen.

Grüße,
Jan

vbs

Meines Wissens gibt es die Information leider nicht über die JSON-API. Zumindest konnte ich nichts finden. Geht also leider nicht. Falls sowas jemand findet, dann bitte Bescheid sagen, dann bau ich es ein. Also es bleibt vermutlich nur das Parsen vom Dateinamen im Moment.
Nur mal so: Wie guckst du 3D-Filme als 2D?

jaho

#629
Erstmal schon einmal danke für die schnelle Reaktion :)

Ich habe dazu nur das hier gefunden: http://forum.kodi.tv/showthread.php?tid=228653 , bekomme das aber leider nicht zum laufen...
Es scheint auch noch GUI.GetStereoscopicModes und GUI.SetStereoscopicMode zu geben, also müsste das doch theoretisch auch ambfragbar sein, oder?
Ich kann dazu leider keine API-Dokumentation finden, gibt es da einen Tipp wo man das nachschauen kann?

Das Umschalten in 2D übernimmt Kodi für mich (siehe Bild) - ist dann natürlich nur die halbe Auflösung da er dann nur eine Hälfte des Streams zeigt. Aber wenn man ein weibliches Etwas mit auf dem Sofa hat, das keine Brille tragen möchte, kann das manchmal ganz praktisch sein  ::)

Grüße,
Jan

edit (Ergänzung):

Bin über den Json-RPC-Browser etwas weitergekommen. GUI.getProperties mit stereoscopicmode spuckt mir vernünftige Ergebnisse aus:

{
    "stereoscopicmode": {
        "label": "Deaktiviert",
        "mode": "off"
    }
}
{
    "stereoscopicmode": {
        "label": "Über/Unter",
        "mode": "split_horizontal"
    }
}
{
    "stereoscopicmode": {
        "label": "Nebeneinander",
        "mode": "split_vertical"
    }
}

Wäre also jetzt noch über eine Hilfestellung dankbar, das ins Modul zu bekommen. (Wenn es für die Allgemeinheit sinnvoll ist!?) ;)