[Gelöst] MQTT für WLED, rgb reading mit # klappt nicht

Begonnen von stefanru, 22 März 2019, 21:16:26

Vorheriges Thema - Nächstes Thema

TomLee

ZitatIn WLED habe ich "wled/8x8_1" angegeben.

Das "_1" dem Topic anhängst ist hier das Problem. Die Templates sollte man mit den default-Vorgaben nutzen oder man weiß was man tut  :P

Hier in der WLED_set Funktion wird der Topic von dem Internal CID abgeleitet, sehe gerade nicht warum DeeSPe das so umgesetzt hat.
Kann mir vorstellen wenn man das Template umbaut auf devicetopic würde das Template auch mit dem _1 angehangen funzen.
sub WLED_set {
  my $dev  = shift // return;
  my $read = shift // return;
  my $val  = shift // return;
  my $cid = InternalVal($dev,'CID',undef) // return;
  my @wled = split('_',$cid);
  my $arr  = ReadingsVal($dev,'.'.$read.'s',undef) // return WLED_get($dev);
  my $top  = lc($wled[0]).'/'.$wled[1].'/api F';
  $top .= $read eq 'effect'?'X=':'P=';
  my $id;
  my $i = 0;
  for (split(',',$arr)){
    if ($_ ne $val) {
      $i++;
      next;
    } else {
      $id = $i;
      last;
    }
  }
  return defined $id ? $top.$id : undef;
}

Entferne das _1 (neustart des Controller nicht vergessen sonst wird die Änderung nicht übernommen) und die setter sollten funktionieren.