Autor Thema: Yamaha bei Anruf leiser anschließend wieder auf den vorigen Wert stellen.  (Gelesen 3488 mal)

Offline AK-868

  • Full Member
  • ***
  • Beiträge: 257
Hallo zusammen,

ich würde gerne die Lautstärke des Yamahas senken wenn ein Anruf eingeht. Derzeit reduziert er auf -50db, nach dem Gespräch soll er wieder den vorigen Wert z.B. -35db einstellen.
Das Funktioniert auch, fast. Aber nur solange bis der Yamaha wieder abgefragt wird. Dann wird das userReading überschrieben, auf -50db und es wird nicht wieder lauter.

Gibt es eine Möglichkeit das userReading irgendwo global abzulegen? Oder muss ich einen Dummy dafür anlegen?

Ein Hinweis wäre super.


define Telefon FB_CALLMONITOR 192.168.0.1
attr Telefon room Kueche

define notify_Telefon notify Telefon:.* {\
 if ("%" eq "event: ring" || "%" eq "event: call")\
 {\
   if(defined($defs{AV_Receiver}))\
   {\
     fhem ("attr AV_Receiver userReadings Lautstaerke_Unterschied difference { ReadingsVal('AV_Receiver', 'volume_level', '-50')}");;\
     fhem ("set AV_Receiver volume -50");;\
   }\
 }\
 elsif ("%" eq "event: disconnect")\
 {\
   if(defined($defs{AV_Receiver}))\
   {\
     fhem ("set AV_Receiver volume " . (ReadingsVal('AV_Receiver', 'volume_level', '-40') - ReadingsVal('AV_Receiver', 'Lautstaerke_Unterschied', '0')));;\
   }\
 }\
}



sonniger Gruß aus OWL
Hardware FHEM:
Neue Fritzbox 7390 keine Labor von AVM
Konfigurationsadapter Lan
Funk-Schließerkontaktschnittstellen
Funk-Fenster/Türkontakt
Funk-Schaltaktoren UP ein und zweifach
Funk-Jalousieaktoren
Funk-Rauchmelder


Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21292
userReading ist nicht um als user einmalig ein reading anzulegen sondern das wird jedes mal wenn sich an den readings etwas ändert aufgerufen um von den normalen readings abgeleitete readings zu erzeugen und aktuell zu halten. also z.b. um aus einem zähler den stromverbrauch oder die niederschlagsmenge zu berchnen. immer wieder wenn sich am zähler etwas ändert.

sobald du legst userReadings anlegst werden sie bei jedem update aufgerufen und aktualisiert.

was du möchtest ist dir beim leiser machen merken das du gerade leiser gemacht hast und dann beim auflegen genau ein mal wieder lauter machen.

dazu kannst du mit readingsSingleUpdate ein mal ein reading schreiben. z.b. so:
 my $hash =  $defs{AV_Receiver};
  readingsSingleUpdate($hash,"volume_old", ReadingsVal('AV_Receiver', 'volume', ''),1) if( defined($hash) );


und dann bei auflegen die alte lautsärke wieder herstellen und den gemerkten wert löschen:
my volume_old = ReadingsVal('AV_Receiver', 'volume_old', '');
fhem ("set AV_Receiver volume " . ReadingsVal('AV_Receiver', 'volume_old', '-40') ) if( volume_old );
CommandDeleteReading("","AV_Receiver volume_old" );


oder entsprechend mit einem user atttibut statt einem reading.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, …

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