FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: TomLee am 05 September 2016, 00:17:12

Titel: 433 MHz Fernbedienung als Lautstärkeregler
Beitrag von: TomLee am 05 September 2016, 00:17:12
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 (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
Titel: Antw:433 MHz Fernbedienung als Lautstärkeregler
Beitrag von: viegener am 06 September 2016, 01:10:49
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
Titel: Antw:433 MHz Fernbedienung als Lautstärkeregler
Beitrag von: TomLee am 06 September 2016, 16:54:13
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.