Alexa-FHEM mit homebridgeMapping

Begonnen von Marlen, 18 Januar 2022, 13:08:39

Vorheriges Thema - Nächstes Thema

Marlen

Hallo,

ich versuch mich gerade mit Alexa-FHEM, tolles "Modul" übrigens!  :-*

Aber irgendwie bekomme ich meinen Bewegungsmelder (per ESPeasy) nicht als Bewegungsmelder in der Alexa angezeigt.

defmod ESPEasy_ESP_Gargensteuerung_Bewegung ESPEasy 192.168.178.163 80 espBridge ESP_Gargensteuerung_Bewegung
attr ESPEasy_ESP_Gargensteuerung_Bewegung IODev espBridge
attr ESPEasy_ESP_Gargensteuerung_Bewegung Interval 300
attr ESPEasy_ESP_Gargensteuerung_Bewegung alexaName Bewegungsmelder Garage
attr ESPEasy_ESP_Gargensteuerung_Bewegung alexaProactiveEvents 1
attr ESPEasy_ESP_Gargensteuerung_Bewegung genericDeviceType MotionSensor
attr ESPEasy_ESP_Gargensteuerung_Bewegung group ESPEasy Device
attr ESPEasy_ESP_Gargensteuerung_Bewegung homebridgeMapping homebridgeMapping \
detectionState=Switch,values=off:0;;on:1
attr ESPEasy_ESP_Gargensteuerung_Bewegung presenceCheck 1
attr ESPEasy_ESP_Gargensteuerung_Bewegung readingSwitchText 1
attr ESPEasy_ESP_Gargensteuerung_Bewegung room Ausgänge_Funk_GA,ESPEasy
attr ESPEasy_ESP_Gargensteuerung_Bewegung setState 3
attr ESPEasy_ESP_Gargensteuerung_Bewegung stateFormat Bewegung: Switch

setstate ESPEasy_ESP_Gargensteuerung_Bewegung Bewegung: off
setstate ESPEasy_ESP_Gargensteuerung_Bewegung 2022-01-18 11:46:51 IODev espBridge
setstate ESPEasy_ESP_Gargensteuerung_Bewegung 2022-01-18 12:46:06 Switch off
setstate ESPEasy_ESP_Gargensteuerung_Bewegung 2022-01-18 13:07:20 presence absent
setstate ESPEasy_ESP_Gargensteuerung_Bewegung 2022-01-18 13:07:20 state absent



Was mach ich da falsch?

LG
  Marlen

MadMax-FHEM

#1
Post doch mal ein list statt dem rawDef...

Und das:

Zitat
attr ESPEasy_ESP_Gargensteuerung_Bewegung homebridgeMapping homebridgeMapping \
detectionState=Switch,values=off:0;;on:1
ist falsch, da ist ja mindestens schon mal ein homebridgeMapping zuviel ;)

EDIT:
Zitat von: https://wiki.fhem.de/wiki/FHEM_Connector_f%C3%BCr_Amazon_Alexa
Kontaktsensoren (ab alexa-fhem version 0.5.47)

    Automatisch wenn ein Reading motion vorhanden ist oder es sich um einen Zigbee bewgungsmelder an einer HUE oder deCONZ Bridge handelt
    Über genericDeviceType MotionSensor
    homebridgeMapping MotionDetected:reading=<reading>,values=<wert für bewgung>:1;<wert für keine bewegung>:0
statt homebridgeMapping würde auch ein userreadings gehen, welches aus dem Reading "Bewegung" ein neues Reading "motion" macht mit 0/1 ;)

EDIT:
dein homebridgeMapping müsste ja eher so sein

attr ESPEasy_ESP_Gargensteuerung_Bewegung homebridgeMapping MotionDetected:reading=Bewegung,values=on:1;off:0


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)

Marlen

Oh man bin echt blond!

Aber danke!  :-*

MadMax-FHEM

Zitat von: Marlen am 18 Januar 2022, 14:14:20
Oh man bin echt blond!

Aber danke!  :-*

Naja... ;)

Äh, geht es nun?

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)

Marlen

Ja, funktioniert.

Aber woher weiß man welche Readings man braucht damit es richtig erkannt wird.
Ich denk da an Dimmer, Garagentor, Thermostat.

LG
  Marlen

MadMax-FHEM

Zitat von: Marlen am 18 Januar 2022, 20:18:38
Ja, funktioniert.

Aber woher weiß man welche Readings man braucht damit es richtig erkannt wird.
Ich denk da an Dimmer, Garagentor, Thermostat.

LG
  Marlen

Das ist (von mir) gar nicht so einfach zu beantworten...

Ich könnte jetzt sagen "Standardnamen" ;)

temperature, measured-temp, desired-temp, pct, position, ...

Hier sind ein paar Sachen aufgeführt: https://wiki.fhem.de/wiki/Alexa_und_Mappings

Ansonsten halt (wie im Wiki https://wiki.fhem.de/wiki/FHEM_Connector_f%C3%BCr_Amazon_Alexa beschrieben): erst mal ohne Mapping testen, wenn es nciht erkannt wird (wie man will / alexa-fhem Log schauen), dann eben mit homebridgeMapping "nachhelfen".

Wie die "Characteristics" sind usw. muss man halt nachschlagen...

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)

mr_petz

#6
Hi.
Zu erwähnen wäre auch dieser Link um einen Einblick zu bekommen wie was gehen könnte:
https://wiki.fhem.de/wiki/Homebridge_User_Configs
LG mr_petz

Edit: Hier sind auch noch paar Beispiele:
https://stefans-itblog.de/homebridge-mappings-in-fhem/

MDietrich

Moin,
nach mehreren schlaflosen Nächten, viel lesen und ausprobieren komme ich nicht weiter.

Ich habe einen Philips Fernseher, der von Haus aus Alexa nicht unterstützt und der sich auch mit dem PHTV Modul nicht ansprechen lässt.
Mit einem kleinen Python Programm kann ich mittlerweile mit FHEM den Fernseher steuern, siehe:
https://forum.fhem.de/index.php/topic,21109.msg1203466.html#msg1203466

Jetzt möchte ich auch via FHEM mit Alexa auf den Fernseher zugreifen, und scheitere außer beim Wechseln in den 'standby' Modus am Mapping. Ich schaffe es nicht die Kommandos, so wie sie ALEXA versteht in eine Form zu bringen, dass das Script damit arbeiten kann, z.B. Ton aus liefert mute 0, ich brauche aber nur das mute.

Hier das alexa-fhem log bei restart von Alexa:
[29.1.2022, 04:38:22] {
  '00001001-0000-1000-8000-135D67EC4377': {
    reading: 'volume',
    cmd: 'volume',
    delay: true,
    name: 'Volume',
    format: 'UINT8',
    unit: 'PERCENTAGE',
    minValue: 0,
    maxValue: 100,
    minStep: 1,
    device: 'd_pylipsOut',
    informId: 'd_pylipsOut-volume',
    characteristic_type: '00001001-0000-1000-8000-135D67EC4377',
    log: [Function: bound ] {
      debug: [Function (anonymous)],
      info: [Function (anonymous)],
      warn: [Function (anonymous)],
      error: [Function (anonymous)],
      log: [Function (anonymous)],
      prefix: 'FHEM'
    },
    cached: 5,
    characteristic: undefined
  },
  Mute: {
    reading: 'mute',
    cmd: 'mute',
    device: 'd_pylipsOut',
    informId: 'd_pylipsOut-mute',
    characteristic_type: 'Mute',
    log: [Function: bound ] {
      debug: [Function (anonymous)],
      info: [Function (anonymous)],
      warn: [Function (anonymous)],
      error: [Function (anonymous)],
      log: [Function (anonymous)],
      prefix: 'FHEM'
    },
    characteristic: undefined
  },
  On: {
    reading: 'powerstate',
    valueOn: 'on',
    valueOff: 'off',
    cmdOn: 'standby',
    cmdOff: 'standby',
    device: 'd_pylipsOut',
    informId: 'd_pylipsOut-powerstate',
    characteristic_type: 'On',
    log: [Function: bound ] {
      debug: [Function (anonymous)],
      info: [Function (anonymous)],
      warn: [Function (anonymous)],
      error: [Function (anonymous)],
      log: [Function (anonymous)],
      prefix: 'FHEM'
    },
    characteristic: undefined
  }
}
[29.1.2022, 04:38:22] {"event":{"header":{"namespace":"Alexa.Discovery","name":"AddOrUpdateReport","payloadVersion":"3","messageId":"bc0f599e-73ae-4ac8-aee0-7c9ac7e5f8db"},"payload":{"endpoints":[{"endpointId":"61e6fcdc-f33f-73da-afa5-0735e082b7c522bd","manufacturerName":"dummy","description":"n: d_pylipsOut, r: wohnzimmer","friendlyName":"fernseher","displayCategories":["SPEAKER"],"additionalAttributes":{"manufacturer":"FHEM","model":""},"capabilities":[{"type":"AlexaInterface","interface":"Alexa","version":"3"},{"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":"d_pylipsOut","fuuid":"61e6fcdc-f33f-73da-afa5-0735e082b7c522bd"}}],"scope":{"type":"BearerToken","token":"access-token-from-Amazon"}}}}
[29.1.2022, 04:38:22] posting skill event


und der Auszug nach dem Kommando "Ton aus":
[29.1.2022, 04:45:08] >>>> [ssh] {"directive":{"header":{"messageId":"d12c157f-7b77-4f32-9a13-abb47c9684d0","namespace":"Alexa.Speaker","name":"SetMute","payloadVersion":"3","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"22478B15-78BBE25E29772F22"},"endpointId":"61e6fcdc-f33f-73da-afa5-0735e082b7c522bd","cookie":{"device":"d_pylipsOut","fuuid":"61e6fcdc-f33f-73da-afa5-0735e082b7c522bd"}},"payload":{"mute":true}}}
[29.1.2022, 04:45:08] [FHEM] d_pylipsOut: executing set cmd for Mute with value 1
[29.1.2022, 04:45:08] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20d_pylipsOut%20mute%201&fwcsrf=csrf_763047091817050&XHR=1
[29.1.2022, 04:45:08] <<<< [ssh] {"context":{"properties":[{"namespace":"Alexa.Speaker","name":"muted","value":true,"timeOfSample":"2022-01-29T03:45:08.813Z","uncertaintyInMilliseconds":500}]},"event":{"header":{"namespace":"Alexa","name":"Response","payloadVersion":"3","messageId":"0a6862ea-b971-4899-8008-8d82fce352f6","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"22478B15-78BBE25E29772F22"},"endpointId":"61e6fcdc-f33f-73da-afa5-0735e082b7c522bd"},"payload":{}}}


zum Schluß noch der List vom Dummy:
Internals:
   DEF       
   FUUID      61e6fcdc-f33f-73da-afa5-0735e082b7c522bd
   NAME       d_pylipsOut
   NR         231
   STATE      mute 1
   TYPE       dummy
   OLDREADINGS:
   READINGS:
     2022-01-29 03:00:04   powerstate     
     2022-01-29 04:45:08   state           mute 1
Attributes:
   alexaName  Fernseher
   alexaRoom  Wohnzimmer
   alias      Fernseher
   gassistantName Fernseher
   genericDeviceType tv
   homebridgeMapping On=powerstate,valueOn=on,valueOff=off,cmdOn=standby,cmdOff=standby
   room       Amazon,Dummy
   verbose    1


Im Moment sehe ich den Wald vor lauter Bäumen nicht mehr und wäre für Tipps und Hinweise dankbar.

LG
MDietrich

FB 6591 Cable / Raspberry 3b+ (Bookworm) / 4xECHO DOT 4/ Homematic Thermostate, Fenster- und Fenster-Sensoren / Philips HUE / CUL-HM /  Zigbee Schalter und Lampen / Shelly 1

MadMax-FHEM

#8
@MDietrich: besser nicht einfach einen Thread "kapern", der ganz andere Funktionalität/Devices etc. hat...

Besser einen neuen machen.

Wie steuert denn der dummy dann das Script?

notify/DOIF?

Dann auch lists davon...

Ich würde dem dummy per z.B. setList on, off, mute, volume, channel (falls auch benötigt) "spendieren" und dann alle Setter mal durchprobieren.
Dann hast du die notwendigen Readings für ein Multimesia-Device und brauchst nur noch genericDeviceType media (oder so) setzen.

Dann erkennt alexa-fhem das automatisch.
EDIT: also ganz ohne homebridgeMapping

Die Readings werden dann per Sprache gesetzt und du kannst per notify (oder DOIF) reagieren und das Script ansprechen...

Ich kann später mal meinen Media-dummy inkl. notify und Sub posten...

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)

MadMax-FHEM

#9
So hier mal der "Media-dummy" als RawDef:


defmod dmControl_MediaBox dummy
attr dmControl_MediaBox alexaName media box
attr dmControl_MediaBox alias Mediabox
attr dmControl_MediaBox genericDeviceType media
attr dmControl_MediaBox group Multimedia
attr dmControl_MediaBox homebridgeMapping PlaybackController:reading=playback,values=Play;;Pause;;Stop;;Previous;;Next,cmd=playback ChannelController:reading=channel,cmd=channel
attr dmControl_MediaBox icon rc_MEDIAMENU
attr dmControl_MediaBox oldreadings volume
attr dmControl_MediaBox readingList volume mute playback channel
attr dmControl_MediaBox room Wohnzimmer,alexa
attr dmControl_MediaBox setList playback:Play,Pause on off volume mute:0,1 channel:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
attr dmControl_MediaBox stateFormat channel
attr dmControl_MediaBox webCmd :

setstate dmControl_MediaBox 2
setstate dmControl_MediaBox 2022-01-16 22:00:46 channel 2
setstate dmControl_MediaBox 2021-10-20 23:35:19 mute 0
setstate dmControl_MediaBox 2022-01-05 18:07:00 playback Play
setstate dmControl_MediaBox 2022-01-26 23:40:50 state off
setstate dmControl_MediaBox 2022-01-05 19:54:29 volume 100


Wichtig sind halt, die Readings, also entweder meine RawDef anpassen und inkl. der setstate übernehmen oder eben mal alle Readings setzen.
Dann erkennt alexa-fhem den dummy autom. als Media-Device (wie auch im Wiki zu lesen: genericDeviceType und Readings passen [inkl. setter] dann erkennt alexa-fhem das autom. ohne irgendwelches homebridgeMapping. Anosnaten muss halt mit homebridgeMapping "angepasst" werden / "Sprachbefehle" lassen sich mit homebridgeMapping nicht "erzeugen" ;)  )

EDIT: u.U. kann das homebridgeMapping auch komplett weg. Der dummy hat schon ein gewisses Alter ;)

Hier noch das notify:


defmod nControl_MediaBox notify (dmControl_MediaBox:on|dmControl_MediaBox:off|dmControl_MediaBox:channel|dmControl_MediaBox:mute|dmControl_MediaBox:volume|dmControl_MediaBox:playback).* {my_ControlMediaBox($NAME, $EVENT)}


Und die Sub ("gekürzt" und evtl. nicht ganz "lauffähig", soll nur zeigen was geht etc.):

sub my_ControlMediaBox($$)
{
  my ($Device,$Event) = @_;
  my $CurrentActivity = ReadingsVal("HarmonyHub", "currentActivity", "n.a.");
  my @SenderListe = ("Das Erste", "ZDF", "br heimat", "sat.1", "RTL II", "rtl", "ProSieben", "VOX", "kabel eins", "n24 doku", "dmax", "n. d. r.", "hr info", "wdr dortmund", "swr 2", "mdr sachsen", "rbb", "???", "zdf_neo");
  my $Volume = ReadingsNum("SR6013", "volume", 0);
  my $ActVolMB = ReadingsNum($Device, "volume", 0);
  my $OldVolMB = OldReadingsNum($Device, "volume", 0);
 
  Log3(undef, 3,"my_ControlMediaBox Device: $Device    Event: $Event");
 
#  if($Event eq "on")
#  {
#    fhem("set HarmonyHub activity Fernsehen");
#  }
#  elsif($Event eq "off")
#  {
#    {fhem "set HarmonyHub activity PowerOff"}
#  }
#  elsif($Event =~ m/mute/)
  if($Event =~ m/mute/)
  {
    if($Event =~ m/1/)
    {
      fhem("set HarmonyHub command Mute");
      if($CurrentActivity eq "Fernsehen")
      {
        fhem("set PhilipsTVmsg msg icon=audio_volume_mute");
      }
    }
    elsif($Event =~ m/0/)
    {
      fhem("set HarmonyHub command Mute");
      if($CurrentActivity eq "Fernsehen")
      {
        fhem("set PhilipsTVmsg msg icon=audio_volume $Volume");
      }
    }
  }
  elsif($Event =~ m/volume/)
  {
    if($OldVolMB > $ActVolMB || $ActVolMB == 0)
    {
      my $NewVolume = ReadingsNum("SR6013", "volume", 0) - 5;
      fhem("set SR6013 volume $NewVolume");
      if($CurrentActivity eq "Fernsehen")
      {
        fhem("set PhilipsTVmsg msg icon=audio_volume_low volume: $NewVolume");
      }
    }
  else
  {
      if(ReadingsVal($Device, "mute", 0) eq "1")
      {
        fhem("set HarmonyHub command Mute");
        fhem("setreading $Device mute 0");
        if($CurrentActivity eq "Fernsehen")
        {
          fhem("set PhilipsTVmsg msg icon=audio_volume $Volume");
        }
      }
      else
      {
        my $NewVolume = ReadingsNum("SR6013", "volume", 0) + 5;
        fhem("set SR6013 volume $NewVolume");
        if($CurrentActivity eq "Fernsehen")
        {
          fhem("set PhilipsTVmsg msg icon=audio_volume_high volume: $NewVolume");
        }
      }
    }
  }
  elsif($Event =~ m/playback/ &&  $CurrentActivity ne "Fernsehen")
  {
    my $PlayState = (split(/: /, $Event))[1];
    if($CurrentActivity =~ m/Amazon/)
    {
      fhem("set harmony_41290995 command $PlayState");
    }
    # evtl. sonst einfach $PlayState an den HarmonyHub
    # weil nur FireTV und AlexaMusic nicht passen (neben Fernsehen)
    elsif($CurrentActivity =~ m/BluRay/)
    {
      fhem("set harmony_41290504 command $PlayState");
    }

    Log3(undef, 3,"my_ControlMediaBox Device: $Device    Event: $Event    PlayState: $PlayState");
  }
  # TODO: oder KODI
  elsif($Event =~ m/channel/ && $CurrentActivity eq "Fernsehen")
  {
    my $ChannelNr = (split(/: /, $Event))[1];

#    if(int($ChannelNr) eq $ChannelNr)
    if(looks_like_number($ChannelNr))
    {
      Log3(undef, 3,"my_ControlMediaBox auf Kanalnummer $ChannelNr geschalten");
      fhem("set HarmonyHub channel $ChannelNr");
    }
    else
    {
      #   my $SenderName = lc $ChannelNr;
      my $SenderName = $ChannelNr;
      my $ActSender = "";
      $ChannelNr = 1;

      foreach $ActSender (@SenderListe)
      {
        Log3(undef, 3,"my_ControlMediaBox ChannelNr: $ChannelNr    SenderName: $SenderName      ActSender: $ActSender");

    #        if($ActSender =~ m/$SenderName/)
    #        if($SenderName =~ m/$ActSender/)
        if($SenderName eq $ActSender)
        {
          fhem("set HarmonyHub channel $ChannelNr");
          Log3(undef, 3,"my_ControlMediaBox auf Kanalname $ChannelNr geschalten");
          last;
        }
        $ChannelNr++;
      }
    }
  }
}


EDIT: hab sie jetzt doch vollständig gelassen...
Wird aber trotzdem nicht laufen, weil ich ja auf meinen Verstärker SR6013 zugreife (Lautstärke) und per HarmonyHub die Kanäle schalte.

Das mit der Senderliste ist schon uralt und naja...
Aber war so eine Spielerei (und geht deutlich besser mittels hash oder auch ganz anders bzw. "nervt", dass Alexa die Sender immer wieder mal anders "interpretiert" ;)  Bzw. nutze ich das eh kaum nicht mehr / war nur: weil's geht bzw. ich einfach "rumspielen" wollte ;)  )

Du musst halt schauen, ob es passt und anpassbar ist und dann halt an den entsprechenden Stellen die Befehle für dein python-Script unterbringen...

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)

MDietrich

@ Joachim
Danke für deine detaillierte Information, das werde ich heute ausprobieren.

- ich hatte diesen Thread ausgewählt, da der Titel für mich generell genug klang und ich nicht noch etwas Neues anfangen wollte.

- den Fernseher steuere ich über ein sehr simples Notify, mit welchem ich ein Python Script starte:
defmod n_pylips notify (d_pylipsOut.*) {\
my $start = Value("d_pylipsOut");;\
fhem("set d_pylipsIn ".$start);;\
system("python3 /opt/pylips/pylips.py --command ".$start." &");;\
fhem("set d_pylipsIn Command not_send")\
}
attr n_pylips room Dummy
attr n_pylips verbose 5

setstate n_pylips 2022-01-30 09:48:31
setstate n_pylips 2022-01-30 09:40:38 state active
setstate n_pylips 2022-01-30 09:48:31 triggeredByDev d_pylipsOut
setstate n_pylips 2022-01-30 09:48:31 triggeredByEvent standby


Wenn ich deine Lösung richtig verstehe, dann ist dein Weg:
Sprachkommando -> Rückmeldung im Reading von dummy gesetzt von alexa-fhem -> Aufruf der sub via Notify  -> Mapping und Steuern des Geräts

Diesen Weg hatte ich auch überlegt, hatte aber die Hoffnung das Mapping via homebridgeMapping zu realisieren, d.h. ich bekomme ein Reading, das ich direkt als Parameter für mein Script benutzen kann.

Ich werde über meine Fortschritte berichten.

LG
MDietrich
FB 6591 Cable / Raspberry 3b+ (Bookworm) / 4xECHO DOT 4/ Homematic Thermostate, Fenster- und Fenster-Sensoren / Philips HUE / CUL-HM /  Zigbee Schalter und Lampen / Shelly 1

MadMax-FHEM

#11
Also du nimmst Value, damit gehst du auf STATE!! Ja das INTERNAL! Also nicht mal das "state Reading", daher stört dich auch die 0 und (zukünftig) auch weitere "Dinge", da du alexa fhem "nur" per set auf das (dummy) Device "wirken lässt".
Und es kommt hinzu, dass wenn du mal für z.B. FhemWeb die Anzeige mittels stateFormat anpasst/anpassen willst dein Konstrukt komplett aus den Fugen gerät ;)

Dann: dein notify reagiert auf praktisch alles was beim Device ankommt (was bei einem dummy nicht so schlimm ist aber auch da sollte man schon entsprechend "genauer/besser" sein, siehe mein notify)

Mein Weg (zum Teil korrekt erkannt bzw. hier noch mal zur Sicherheit inkl. weiteren Anmerkungen):

dummy Device als media Device bzgl. alexa-fhem
"Unterstützt" durch: deviceType media und dem Vorhandensein der notwendigen Readings wie: mute, volume, channel, on off usw.
(was du nicht brauchst willst: nicht angeben oder ignorieren)

Dann ja: alles was man per Alexa an einem Media-Device steuern kann, kann man am dummy per Sprache steuern.

Alexa, mach lauter / Alexa stelle Lautstärke auf XY / Alexa schalte einen Kanal rauf/runter / Alexa stelle Kanal auf Nummer XY usw.
Was geht und wie man sprechen muss: ausprobieren oder bei Amazon nachlesen ;)
(Ändert sich auch leider immer wieder mal)

Dann wird das entsprechende Reading gesetzt.
D.h. du kannst ja mal den dummy anlegen und an alexa-fhem "übergeben" und einfach mal "rumspielen".

Dann (wie richtig erkannt) reagiert das notify auf Veränderung der Readings.

In der Sub bekommst du mit, welches Reading denn verändert wurde und welcher Wert im Event mit kam (z.B. mute mit Wert 0).
Dies kannst du doch dann einfach in deine Routine/Script etc. stecken oder eben mittels if/else anpassen (wenn notwendig).

Z.B. if(mute == 0){Script-Aufruf für mute)elsif(mute == 1){Script-Aufruf für "unmute"}

Oder aber (falls das was "in die Sub kommt" nicht passt) per ReadingsVal die Werte (anderer) Readings "abfragen" (besser sla Value!!!):
ReadingsVal("Devicename", "Readingname", "Ersatzwert") und dann eben das für den Input nehmen.


Es sollte auch per homebridgeMapping und dann eben per unterschiedlicher set-Befehle und deiner "Konstruktion" gehen.
Dann musst du aber das homebridgeMapping entsprechend aufwändig gestalten. Also alle Charakteristiken mit den entsprechenden Readings (die du aber noch nicht hast? z.B. setList) angeben und auch dafür entsprechende Befehle im homebridgeMapping angeben, die dann eben den dummy mit einem für dein Script passenden set-Befehl versorgt...

Das finde ich persönlich aufwändiger als in einer Sub Readingwerte "abfragen" und entsprechende Script-Befehle abzusetzen...

Ander gesagt: wenn du unbedingt ausschließlich homebridgeMapping nutzen willst, dann bin ich raus :-\

Und damit wären wir wieder bei "Thread kapern": hier lesen halt erst mal nur "Leute" mit, die schon geantwortet haben und andere (mögliche Helfer) halt nur "zufällig"...

Bei einem neuen Thread ist die Wahrscheinlichkeit, dass viele (mögliche Helfer) reinschauen/antworten (deutlich) höher.

In einem vorhandenen Thread macht es nur Sinn (meine Meinung), wenn es eben der "Device-Support-Thread" eines bestimmten verwendeten Devices ist oder das Thema inkl. (aller) Randbedngungen (also selbes Vorgehen, selbe Devices etc.) wirklich möglichst 100%ig passt.
Nur weil ein Thread-Titel passt/zu passen scheint ist eher (meine Meinung) kein guter Grund sich da dann nach Hilfe zu bemühen ;)

D.h. wenn dir "mein Weg" nicht gefällt oder du den so nicht umsetzen kannst/willst, dann kannst du hier warten und schauen, ob sich jemadn meldet und weiter hilft oder (besser) einen neuen Thread im PASSENDEN UNTERFORUM aufmachen...

Wenn du es (erst mal) mit "meinem Weg" probieren willst, können wir auch hier weiter machen...
...oder (um das hier nicht komplett zu zerstören) auch in einem anderen Thread weiter machen (dann halt von hier nach dort verlinken, damit ich das finden kann :) )...

EDIT: was ist d_pylipsIn im Gegensatz zu d_pylipsOut ? Bzw. wie hängt das zusammen? Was ist für was? Evtl. ist das schon "zu kompliziert"/"unnötig"?

EDIT: was du in deinem notify machst kannst du mit meinem Konstrukt doch genauso machen? Statt Value() einfach mittels ReadingsVal das per alexa-fhem gesetzte Reading abfragen (sofern es nicht eh schon mit dem notify in die Sub kommt [wie bei mir eigentlich ja sein sollte]) und dann das satt der "Rückmeldung" von Value für deinen Scriptaufruf nehmen?

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)