433 MHz Fernbedienung als Lautstärkeregler

Begonnen von TomLee, 05 September 2016, 00:17:12

Vorheriges Thema - Nächstes Thema

TomLee

Hallo,

ich möchte die Fernbedienung (IT) auch als Lautstärkeregler (Taste On + /Taste Off) nutzen.

Grundlage für mein Vorhaben ist der Code "Zusatzfunktion Volume- Slider und Bedienung per FS20- Wandtaster", der auf folgender  Seite zu finden ist:

http://www.fhemwiki.de/wiki/Modul_StreamRadio_Einrichtungshilfe

Angepasst sieht das nun zur Zeit so bei mir so aus:

Internals:
   NAME       Dum_Volume_D
   NR         321
   STATE      50
   TYPE       dummy
   Readings:
     2016-09-04 23:11:11   state           50
Attributes:
   setList    setList state:slider,0,1,100
   webCmd     state


Internals:
   DEF        Dum_Volume_D { my $vol = Value("Dum_Volume_D"); fhem "set Sonos_Wohnzimmer_PLAY3 Volume $vol"; }
   NAME       Func_Volume_N
   NOTIFYDEV  Dum_Volume_D
   NR         322
   NTFY_ORDER 50-Func_Volume_N
   REGEXP     Dum_Volume_D
   STATE      2016-09-04 23:11:11
   TYPE       notify
   Readings:
     2016-09-04 22:53:49   state           active
Attributes:


Internals:
DEF        0F00FFFF0F 0F F0
   IODev      nanoCUL433
   LASTInputDev nanoCUL433
   MSGCNT     47
   NAME       FB_433_TasteD
   NR         278
   STATE      off
   TYPE       IT
   XMIT       0f00ffff0f
   XMITdimdown 00
   XMITdimup  00
   XMIToff    f0
   XMITon     0f
   nanoCUL433_MSGCNT 47
   nanoCUL433_RAWMSG i105514
   nanoCUL433_RSSI -57.5
   nanoCUL433_TIME 2016-09-04 23:11:11
   Code:
     1          0f00ffff0f
   Readings:
     2016-09-04 23:11:11   dim             0
     2016-08-05 11:02:13   protocol        V1
     2016-09-04 23:11:11   state           off
Attributes:
   IODev      nanoCUL433
   dummy      1
   model      itdimmer
   room       IT


Internals:
  DEF        FB_433_TasteD:* {

  my $dim = (ReadingsVal("FB_433_TasteD", "dim", "0"));
  my $Vol_plus = Value("Dum_Volume_D") + 5;
  my $Vol_minus = Value("Dum_Volume_D") - 5;

  if ($dim eq "0" and $Vol_plus >= 100) {
    fhem("set Dum_Volume_D 100");
  }
  if ($dim eq "1" and $Vol_minus <= 0) {
    fhem("set Dum_Volume_D 0");
  }
  if ($dim eq "0" and $Vol_plus <= 100) {
    fhem("set Dum_Volume_D $Vol_plus");
  }
  if ($dim eq "1" and $Vol_minus >= 0) {
    fhem("set Dum_Volume_D $Vol_minus");
  }
}
   NAME       Func_Radio_Play_N
   NOTIFYDEV  FB_433_TasteD
   NR         325
   NTFY_ORDER 50-Func_Radio_Play_N
   REGEXP     FB_433_TasteD:*
   STATE      2016-09-04 23:11:11
   TYPE       notify
   Readings:
     2016-09-04 22:53:49   state           active
Attributes:
   room       Radio


Funktioniert auch erstmal, jedoch erfolgt beim Tastendruck kein 5er Schritt (wie im notify Func_Radio_Play_N angegeben) sondern ein 10er Schritt. Warum das ? Kann mir da wer weiterhelfen.

Im Eventmonitor wird bei Tastendruck folgendes ausgegeben:

2016-09-05 00:07:21 dummy Dum_Volume_D 55
2016-09-05 00:07:21 dummy Dum_Volume_D 60
2016-09-05 00:07:21 IT FB_433_TasteD dim: 0
2016-09-05 00:07:21 IT FB_433_TasteD off
2016-09-05 00:07:21 CUL nanoCUL433 UNKNOWNCODE i10555f


Volume Stand zu diesem Zeitpunkt auf 50

viegener

Ich nehme mal an, ohne alle Details überprüft zu haben, dass vielleicht:

1) Der Tastendruck und das loslassen der taste jeweils einen Event auslöst, sodass 2 Events erzeugt werden auf die Dein notify reagiert und 2 mal erhöht
2) Vielleicht senden die Tasten ja das Kommando mehrfach (leicht unterschiedlich)?

Beides müsste im event monitor zu überprüfen sein. Wie gesagt, dass sind erstmal nur Vermutungen
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

TomLee

Hallo,

hab das notify Func_Radio_Play_N wie folgt geändert:

Internals:
   DEF        FB_433_TasteD:* {

  my $dim = (ReadingsVal("FB_433_TasteD", "state", "off"));
  my $Vol_plus = Value("Dum_Volume_D") + 5;
  my $Vol_minus = Value("Dum_Volume_D") - 5;

  if ($dim eq "on" and $Vol_plus >= 100) {
    fhem("set Dum_Volume_D 100");
  }
  if ($dim eq "off" and $Vol_minus <= 0) {
    fhem("set Dum_Volume_D 0");
  }
  if ($dim eq "on" and $Vol_plus <= 100) {
    fhem("set Dum_Volume_D $Vol_plus");
  }
  if ($dim eq "off" and $Vol_minus >= 0) {
    fhem("set Dum_Volume_D $Vol_minus");
  }
}
   NAME       Func_Radio_Play_N
   NOTIFYDEV  FB_433_TasteD
   NR         325
   NTFY_ORDER 50-Func_Radio_Play_N
   REGEXP     FB_433_TasteD:*
   STATE      2016-09-06 16:35:28
   TYPE       notify
   Readings:
     2016-09-06 15:36:24   state           active
Attributes:
   room       Radio


Und den ITdimmer in einen ITswitch:

Internals:
   DEF        0F00FFFF0F 0F F0
   IODev      nanoCUL433
   LASTInputDev nanoCUL433
   MSGCNT     101
   NAME       FB_433_TasteD
   NR         278
   STATE      off
   TYPE       IT
   XMIT       0f00ffff0f
   XMITdimdown 00
   XMITdimup  00
   XMIToff    f0
   XMITon     0f
   nanoCUL433_MSGCNT 101
   nanoCUL433_RAWMSG i105514
   nanoCUL433_RSSI -52.5
   nanoCUL433_TIME 2016-09-06 16:35:28
   Code:
     1          0f00ffff0f
   Readings:
     2016-09-06 13:54:59   dim             1
     2016-08-05 11:02:13   protocol        V1
     2016-09-06 16:35:28   state           off
Attributes:
   IODev      nanoCUL433
   model      itswitch
   room       IT
   verbose    0


Das funktioniert soweit☺.

Im Event-Monitor ist allerdings weiterhin bei Tastendruck die Unknowncode Fehlermeldung vorhanden:

016-09-06 16:46:40 dummy Dum_Volume_D 15
2016-09-06 16:46:40 IT FB_433_TasteD on
2016-09-06 16:46:40 CUL nanoCUL433 UNKNOWNCODE i10555f


Womit ich aber leben kann.Wissen würd ichs aber trotzdem gerne warum das so ist.