Alexa und KeypadController?

Begonnen von gestein, 16 September 2022, 17:53:11

Vorheriges Thema - Nächstes Thema

gestein

Hallo,

Ich wollte gerade versuchen auf meinem Fernseher über Alexa die EPG-Daten anzuzeigen.
Dafür habe ich das Attribut "homebridgeMapping" um den folgenden Eintrag ergänzt:
Keypadcontroller:reading=keypad,cmd=keypad

Allerdings erkennt Alexa das dann nicht.

Im Logfile wird es in der Anforderung noch gesendet, aber in der Rückmeldung von Alexa ist es nicht mehr drinnen.
[16.9.2022, 16:05:26] [FHEM] Fetching FHEM devices...
[16.9.2022, 16:05:26] [FHEM] fetching: http://127.0.0.1:8083/fhem?cmd=jsonlist2%20NAME%3DdiAlexaFernsehen&fwcsrf=csrf_902963208343084&XHR=1
*** FHEM: connected
[16.9.2022, 16:05:28] [FHEM] got: 1 results
[16.9.2022, 16:05:28] [FHEM] diAlexaFernsehen is media
[16.9.2022, 16:05:28] [FHEM] diAlexaFernsehen has
[16.9.2022, 16:05:28] [FHEM]   Custom Volume [volume;cached]
[16.9.2022, 16:05:28] [FHEM]   On [undefined;undefined,undefined]
[16.9.2022, 16:05:28] [FHEM]   ChannelController [channel]
[16.9.2022, 16:05:28] [FHEM]   KeypadController [keypad]
[16.9.2022, 16:05:28] [FHEM]   InputController [channel]
[16.9.2022, 16:05:28] [FHEM]   PlaybackController [playback]
[16.9.2022, 16:05:28] [FHEM]   Mute [mute]
[16.9.2022, 16:05:28] [FHEM]   ModeController [mode]
[16.9.2022, 16:05:28] [FHEM] diAlexaFernsehen will not send proactive events
[16.9.2022, 16:05:28] [FHEM] diAlexaFernsehen uses ID: 63171992-f33f-7e6e-47da-bb355c4b14be7bd1
[16.9.2022, 16:05:28] [FHEM]     caching: Custom Volume: 85 (as number; from '85')
[16.9.2022, 16:05:28] { '00001001-0000-1000-8000-135D67EC4377':
   { reading: 'volume',
     cmd: 'volume',
     delay: true,
     name: 'Volume',
     format: 'UINT8',
     unit: 'PERCENTAGE',
     minValue: 0,
     maxValue: 100,
     minStep: 1,
     device: 'diAlexaFernsehen',
     informId: 'diAlexaFernsehen-volume',
     characteristic_type: '00001001-0000-1000-8000-135D67EC4377',
     log:
      { [Function: bound ]
        debug: [Function],
        info: [Function],
        warn: [Function],
        error: [Function],
        log: [Function],
        prefix: 'FHEM' },
     cached: 85,
     characteristic: undefined },
  On:
   { verb: 'schalte',
     valueOn: 'an;ein',
     valueOff: 'aus',
     valueToggle: 'um',
     device: 'diAlexaFernsehen',
     reading: 'state',
     informId: 'diAlexaFernsehen-state',
     characteristic_type: 'On',
     log:
      { [Function: bound ]
        debug: [Function],
        info: [Function],
        warn: [Function],
        error: [Function],
        log: [Function],
        prefix: 'FHEM' },
     characteristic: undefined },
  ChannelController:
   { reading: 'channel',
     cmd: 'channel',
     device: 'diAlexaFernsehen',
     informId: 'diAlexaFernsehen-channel',
     characteristic_type: 'ChannelController',
     log:
      { [Function: bound ]
        debug: [Function],
        info: [Function],
        warn: [Function],
        error: [Function],
        log: [Function],
        prefix: 'FHEM' },
     characteristic: undefined },
  KeypadController:
   { reading: 'keypad',
     cmd: 'keypad',
     device: 'diAlexaFernsehen',
     informId: 'diAlexaFernsehen-keypad',
     characteristic_type: 'KeypadController',
     log:
      { [Function: bound ]
        debug: [Function],
        info: [Function],
        warn: [Function],
        error: [Function],
        log: [Function],
        prefix: 'FHEM' },
     characteristic: undefined },
  InputController:
   { reading: 'channel',
     cmd: 'input',
     values:
      [ 'HDMI+1', 'VIDEO', 'apple', 'appleTV', 'PLAYSTATION', 'NETFLIX' ],
     device: 'diAlexaFernsehen',
     informId: 'diAlexaFernsehen-channel',
     characteristic_type: 'InputController',
     log:
      { [Function: bound ]
        debug: [Function],
        info: [Function],
        warn: [Function],
        error: [Function],
        log: [Function],
        prefix: 'FHEM' },
     value2homekit:
      { 'HDMI 1': 'HDMI 1',
        VIDEO: 'VIDEO',
        apple: 'apple',
        appleTV: 'appleTV',
        PLAYSTATION: 'PLAYSTATION',
        NETFLIX: 'NETFLIX' },
     value2homekit_re: [],
     characteristic: undefined },
  PlaybackController:
   { reading: 'playback',
     values: [ 'play', 'pause', 'stop', 'zurück', 'vorwärts' ],
     device: 'diAlexaFernsehen',
     informId: 'diAlexaFernsehen-playback',
     characteristic_type: 'PlaybackController',
     log:
      { [Function: bound ]
        debug: [Function],
        info: [Function],
        warn: [Function],
        error: [Function],
        log: [Function],
        prefix: 'FHEM' },
     value2homekit:
      { play: 'play',
        pause: 'pause',
        stop: 'stop',
        'zurück': 'zurück',
        'vorwärts': 'vorwärts' },
     value2homekit_re: [],
     characteristic: undefined },
  Mute:
   { reading: 'mute',
     cmd: 'mute',
     device: 'diAlexaFernsehen',
     informId: 'diAlexaFernsehen-mute',
     characteristic_type: 'Mute',
     log:
      { [Function: bound ]
        debug: [Function],
        info: [Function],
        warn: [Function],
        error: [Function],
        log: [Function],
        prefix: 'FHEM' },
     characteristic: undefined },
  ModeController:
   { reading: 'mode',
     cmd: 'mode',
     mode: 'status',
     values: [ 'start', 'play', 'pause', 'stop' ],
     device: 'diAlexaFernsehen',
     informId: 'diAlexaFernsehen-mode',
     characteristic_type: 'ModeController',
     log:
      { [Function: bound ]
        debug: [Function],
        info: [Function],
        warn: [Function],
        error: [Function],
        log: [Function],
        prefix: 'FHEM' },
     value2homekit:
      { start: 'start', play: 'play', pause: 'pause', stop: 'stop' },
     value2homekit_re: [],
     characteristic: undefined } }


In der Rückmeldung fehlt dann allerdings der Eintrag für den KeypadController:
[16.9.2022, 16:05:28] {"event":{"header":{"namespace":"Alexa.Discovery","name":"AddOrUpdateReport","payloadVersion":"3","messageId":"4c839193-92a3-4cf0-a3d1-713f126cb2fa"},"payload":{"endpoints":[{"endpointId":"63171992-f33f-7e6e-47da-bb355c4b14be7bd1","manufacturerName":"DOIF","description":"n: diAlexaFernsehen, r: wohnzimmer","friendlyName":"fernseher","displayCategories":["TV","SPEAKER"],"additionalAttributes":{"manufacturer":"FHEM","model":"<unknown>"},"capabilities":[{"type":"AlexaInterface","interface":"Alexa","version":"3"},
{"type":"AlexaInterface","interface":"Alexa.ChannelController","version":"3","properties":{"supported":[{"name":"channel"}],"proactivelyReported":false,"retrievable":true}},
{"type":"AlexaInterface","interface":"Alexa.InputController","version":"3","inputs":[{"name":"HDMI 1"},{"name":"VIDEO"},{"name":"apple"},{"name":"appleTV"},{"name":"PLAYSTATION"},{"name":"NETFLIX"}]},
{"type":"AlexaInterface","interface":"Alexa.PlaybackController","version":"3","properties":{},"supportedOperations":["play","pause","stop","zurück","vorwärts"]},
{"type":"AlexaInterface","interface":"Alexa.Speaker","version":"3","properties":{"supported":[{"name":"mute"},{"name":"volume"}],"proactivelyReported":false,"retrievable":true}},
{"type":"AlexaInterface","interface":"Alexa.PowerController","version":"3","properties":{"supported":[{"name":"powerState"}],"proactivelyReported":false,"retrievable":true}}],"cookie":{"device":"diAlexaFernsehen","fuuid":"63171992-f33f-7e6e-47da-bb355c4b14be7bd1"}}],"scope":{"type":"BearerToken","token":"access-token-from-Amazon"}}}}


Auch in der Alexa-App ist das Interface nicht ersichtlich.

Wie muss ich das Interface richtig angeben?

Danke, lg, Gerhard


justme1968

KeypadController ist teil des video skill api, nicht des smart home skill api.

ich habe noch keine doku gefunden aus der hervor geht das man teile das video skill api auch im smart home skill verwenden kann. unter anderm deshalb ist das aktuell auch nicht implementiert.

das was du 'anforderung' nennst ist nur die log ausgabe der lokal erkannten konfiguration. da alexa-fhem aber aktuell nichts davon kennt wird es für die capabilities antwort auch nicht weiter ausgewertet.

unabhängig davon: du schreibst ein mal Keypadcontroller und scheinbar ein anderes mal KeypadController. nur letzteres wäre richtig.

das zweite problem: wenn das ganze implementiert ist bekommst du von alexa einzelne tastendrücke an fhem geliefert. ist dein fernseher so weit eingebunden das du aus fhem heraus die cursor bewegungen tatsächlich steuern kannst?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

gestein

Hallo,

Oh, die Unterscheidung zwischen den einzelnen APIs war mir nicht bewusst. Danke.

Die Zeilen im log beginnend mit ,, Fetching FHEM devices..." sind also vom Alexa-Device in fhem.
Verstehe.

Und stimmt. ,,Keypadcontroller" ist natürlich falsch.
In meinem Attribut steht aber eigenartigerweise eh ,,KeypadController".

Mein richtiger Fernseher ist uralt, aber über irblaster in fhem eingebunden.
Daher habe ich mir ein DOIF programmiert, mit dem ich die Befehle von Alexa entgegennehme und in die irblaster-Befehle umsetze.
Leider spinnt die richtige Fernbedienung schon ziemlich.
Ein-/Ausschalten, mute/unmute und die Lautstärke einstellen klappt.
Die Kanäle funktionieren auch, aber zappen geht mit der Fernbedienung besser.
Manchmal wäre es toll die EPG-Übersicht ein-/ausblenden zu können.
Dafür dachte ich, dass der KeypadController verwendet werden muss.
Auf die unterschiedlichen API hatte ich nicht geachtet.

Danke auf alle Fälle.
Lg, Gerhard