98_FireTV: Fernbedienung eines Amazon FireTV per adb

Begonnen von nesges, 09 März 2017, 18:04:40

Vorheriges Thema - Nächstes Thema

Clyde

Der Status des Reading screen-state wird bei mir nicht automatisch aktualisiert. Wenn ich die Seite neu lade bzw. per get einlese aktualisiert sich der Wert auf den gegenwärtigen Zustand.

Da ich den Fernseher in Abhängigkeit dieses Readings an/aus schalten möchte, wäre ein automatisches Aktualisieren besser. Könnte man das so ändern?
2x Cubietruck, CUL868, HM-USB-CFG2
FS20, FHT, KS300, HM, MAX, Tradfri

nesges

Habe grade Version 0.6.2 veröffentlicht. Es gibt jetzt ein Attribut "interval". Wird es auf einen numerischen Wert größer 0 gesetzt, wird ein zyklischer Refresh von screen_state im Abstand von interval Sekunden gestartet.

Markus M.

Zitat von: nesges am 17 Juli 2017, 10:03:11Es gibt jetzt ein Attribut "interval". Wird es auf einen numerischen Wert größer 0 gesetzt, wird ein zyklischer Refresh von screen_state im Abstand von interval Sekunden gestartet.

Der Refresh hatte doch eigentlich schon gepasst, nur das Event abzufeuern hat nicht funktioniert.
Verursacht das jetzt zusätzliche Abfragen?
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

nesges

Der Refresh (genauer: FireTV_screen_state) wurde in den Set- und Get-Methoden aufgerufen. Dadurch wird zB beim Fhemweb-Refresh und beim senden von Befehlen gepollt. Da der Status im Fire-TV aber verzögert gesetzt wird, steht er zu diesen Zeitpunkten nicht zuverlässig zur Verfügung. Deshalb muss man - sofern man den Wert zuverlässig nutzen möchte - auf klassisches zyklisches Polling zurück fallen. Das ist der neu implementierte Part.

D.h.: ja, mit Setzen von interval werden zusätzliche Abfragen (genauer:  FireTV_FetchStatus->FireTV_screen_state) ausgelöst

Markus M.

Aah ok!
Das hatte ich mir schon selber gebaut, hab aber leider vergessen es hier zu posten.

Ein paar Punkte kannst du vielleicht übernehmen:
Schau dir mal an wie ich die ADB Abfragen beim Screen State zusammengefasst habe, ich glaube dass dein Code aktuell zu viele adb Calls startet, weil du teilweise mehrmalige Vergleiche auf Funktionsergebnisse machst ohne das Ergebnis zwischenzuspeichern.
Und bitte nicht direkt in $hash->{STATE} schreiben, das ist uncool ;)

Sorry für den etwas erschwerten Diff, hab alles mit PRESENCE rausgenommen da ich das nicht nutze.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

nesges

Zitat von: Markus M. am 17 Juli 2017, 11:32:11
Ein paar Punkte kannst du vielleicht übernehmen:
Schau dir mal an wie ich die ADB Abfragen beim Screen State zusammengefasst habe, ich glaube dass dein Code aktuell zu viele adb Calls startet, weil du teilweise mehrmalige Vergleiche auf Funktionsergebnisse machst ohne das Ergebnis zwischenzuspeichern.

Stimmt, die FireTV_dumpsys_has() kann man da noch optimieren. Schau ich mir an, Danke!

ZitatUnd bitte nicht direkt in $hash->{STATE} schreiben, das ist uncool ;)

Wie ist's richtig?

Markus M.

Zitat von: nesges am 17 Juli 2017, 13:38:32
Wie ist's richtig?

Einfach nur ins state Reading.
Sonst überschreibst du was auch immer der User in stateFormat festgelegt hat.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

MadMax-FHEM

Hi nesges!

Vielen, vielen Dank für das Modul!!

Habe ja schon länger einen FireTV-Stick und schon fleißig mitgelesen...
...aber noch keine Zeit es zu installieren...

Bis jetzt! :)

Läuft (bislang) super!
Aktuell noch auf dem Testsystem (wie alle "neuen" Module) aber so wie es aussieht wohl nicht mehr lange ;)

Jetzt mal testen... :)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

enno

Moin nesges

vielen Dank für das Modul. Habe ich gestern auf dem Testsystem installiert. Klappt soweit wie oben beschrieben.

Ich suche jetzt noch eine Möglichkeit wie ich den Status currentapp als Reading bekomme. Versuche mit userreadings führen zum Stillstand von FHEM. Vermutlich muss ich das anders lösen. Habt ihr einen TIP?

Hier mein Versuch der es nicht tut:

attr FIRETV userReadings FIRETV currentapp {fhem("get FIRETV currentapp")}

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

MadMax-FHEM

#69
Hi Enno,

quick and dirty:

in der Sub, welche den "screen_state" setzt (und zyklisch gerufen wird), folgendes ergänzen:


sub FireTV_screen_state($) {
    my $hash = shift;

...

    my $current_app = FireTV_currentFocus($hash);
    readingsSingleUpdate($hash, "current_app", $current_app, 1);

    readingsSingleUpdate($hash, "screen_state", $screen_state, 1);

    return $screen_state;
}



EDIT: genauso quick nicht ganz so dirty (statt den beiden readingsSingleUpdate):


readingsBeginUpdate($hash);
readingsBulkUpdate($hash,"current_app",$current_app);
readingsBulkUpdate($hash,"screen_state",$screen_state);
readingsEndUpdate($hash, 1);


EDIT 2: Noch mal ganz klar der Hinweis: quick&dirty. Update erfolgt hier mit dem Updateintervall von screen_state. Noch etwas "sauberer" wäre das Setzen des Readings "current_app" in der Sub FireTV_currentFocus und diese Sub dann zusätzlich zur Sub FireTV_screen_state in der Sub FireTV_FetchStatus aufzurufen... Die sauberste Lösung käme nat. von nesges... Evtl. wären/sind ja noch andere Readings interessant...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Laire

Ohne jetzt alle Beiträge detailliert durchgearbeitet zu haben, kurze Frage:

Kann ich mit Hilfe des Moduls erkennen, welche App gerade läuft bzw. gestartet wird und wenn ja wie schnell erkennt FHEM dieses?

Hintergrund: Ich habe Plex auf einem separaten Server laufen. und würde diesen gerne über FHEM mithilfe eines Notfify oder DOIF per WOL starten, wenn auf dem FireTV die Plex App gestartet wird. Mein System, auf dem Plex läuft, ist ziemlich flink beim hochfahren und starten, aber wäre störend wenn es dann ne halbe Minute dauert bis überhaupt FHEM reagiert und den Server anlaufen lässt.

MadMax-FHEM

Zitat von: Laire am 27 August 2017, 18:52:53
Ohne jetzt alle Beiträge detailliert durchgearbeitet zu haben, kurze Frage:

Kann ich mit Hilfe des Moduls erkennen, welche App gerade läuft bzw. gestartet wird und wenn ja wie schnell erkennt FHEM dieses?

Hintergrund: Ich habe Plex auf einem separaten Server laufen. und würde diesen gerne über FHEM mithilfe eines Notfify oder DOIF per WOL starten, wenn auf dem FireTV die Plex App gestartet wird. Mein System, auf dem Plex läuft, ist ziemlich flink beim hochfahren und starten, aber wäre störend wenn es dann ne halbe Minute dauert bis überhaupt FHEM reagiert und den Server anlaufen lässt.

Brauchst nicht alle lesen, nur die paar letzten ;)

Da es aktuell kein Reading gibt wo das drin steht (Frage von Enno), gibt es auch keinen Event ergo geht kein Notify...
(mal abgesehen von meiner quick&dirty Ergänzung)

Da das Modul (wie ich es verstehe) pollt, geht die Aktualisierung so schnell wie gepollt wird, lässt sich über das Attribut (so wie ich gesehen habe) intervall beeinflussen bzw. setzen...

Aktuell kann die laufende App nur mit get abgefragt werden...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

enno

@MadMax-FHEM: Danke für den Vorschlag. Bevor ich das versuche, wollte ich das erstmal mit einem "DOIF" versuchen. Habe allerdings noch nicht herausgefunden, ob ein reading mit get in DOIF gesetzt werden kann.

Ich werden mir erstmal wieder die https://fhem.de/commandref_DE.html#DOIF zu Gemüte führen.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

MadMax-FHEM

Hi Enno,

klar, kein Problem.

Allerdings kommt die Ausgabe von get FireTV currentapp in einem Popup...
Daher hat es vermutlich bei dir in dem/den Versuch/en auch blockiert...

Wenn es klappt poste die Lösung...

Viel Erfolg, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

AmunRe

Hi Zusammen,




Ich habe das modul schon lange am laufen, aber seit jetzt so zwei tagen geht es nicht mehr.


Im Log krieg ich nur folgenden Eintrag:


Zitat
No such device 192.168.0.106:5555
No such device 192.168.0.106:5555
No such device 192.168.0.106:5555
No such device 192.168.0.106:5555
No such device 192.168.0.106:5555
No such device 192.168.0.106:5555
No such device 192.168.0.106:5555
No such device 192.168.0.106:5555
No such device 192.168.0.106:5555
No such device 192.168.0.106:5555
No such device 192.168.0.106:5555
No such device 192.168.0.106:5555
No such device 192.168.0.106:5555
No such device 192.168.0.106:5555
No such device 192.168.0.106:5555


Dabei hab ich grad nachgesehen die IP stimmt noch. Und adb ist am Fire auch aktiviert.


ZitatInternals:
   ADB        /usr/bin/adb
   ADBVERSION Android Debug Bridge version 1.0.32


   ADDRESS    192.168.0.106
   CFGFN
   DEF        192.168.0.106
   IP         192.168.0.106
   MODE       lan-ping
   NAME       FireTV_Wohnzimmer
   NOTIFYDEV  global,FireTV_Wohnzimmer
   NR         275
   NTFY_ORDER 50-FireTV_Wohnzimmer
   PORT       5555
   STATE      present
   TIMEOUT_NORMAL 30
   TIMEOUT_PRESENT 30
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       FireTV
   VERSION    0.6.1
   adbconnected 1
   READINGS:
     2017-09-06 20:19:44   presence        present
     2017-09-06 20:19:51   screen_state    off
     2017-09-06 20:19:44   state           present
   helper:
     CURRENT_STATE present
     PRESENT_COUNT 0
     FireTV_Wohnzimmer:
       PRESENCE_loaded 1
       lastadbcmd /usr/bin/adb -s 192.168.0.106:5555 shell dumpsys power
       lastadbresponse error: device not found
       packages
Attributes:
   DbLogExclude .*
   room       FireTV,Wohnzimmer
4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs