FHEM Forum

FHEM => Automatisierung => Perl für FHEM-User => Thema gestartet von: bombardi am 08 April 2024, 13:42:59

Titel: Reading wird nicht erzeugt sondern sogar entfernt
Beitrag von: bombardi am 08 April 2024, 13:42:59
Ich habe mir in myutils eine Routine geschrieben um meine Abfallreadings zu erzeugen.
Da ich mehrere Müllkalender verwalten muss wollte ich nicht x-mal die Userreadings kopieren.

Die Routine sieht wie folgt aus:
sub SetMuellsdevice($$)
{
  my ($devicename,$devicenumber) = @_;
  my @setreadingcommandarray;
  my $setreadingcommandarrayindex=0;
  my $sdevicename="s".$devicenumber."device";
##  my $setreadingcommand="setreading $devicename $sdevicename";
##  TelegramSend("telegramthomas","$sdevicename,$devicename,$devicenumber");
  $setreadingcommandarray[$setreadingcommandarrayindex++]="setreading $devicename $sdevicename ".Muelldevice($devicename,$devicenumber); 
  $setreadingcommandarray[$setreadingcommandarrayindex++]="setreading $devicename $sdevicename"."_weekday ".(MuelldeviceVal($devicename,$devicename,$sdevicename,"_weekday","weekday_unknown")); 
  $setreadingcommandarray[$setreadingcommandarrayindex++]="setreading $devicename $sdevicename"."_date ".MuelldeviceVal($devicename,$devicename,$sdevicename,"_date","date_unknown");
  $setreadingcommandarray[$setreadingcommandarrayindex++]="setreading $devicename $sdevicename"."_days ".MuelldeviceVal($devicename,$devicename,$sdevicename,"_days","-1");
  $setreadingcommandarray[$setreadingcommandarrayindex++]="setreading $devicename $sdevicename"."_acknowledged ".(ReadingsVal($devicename."_".$sdevicename."_acknowledged","state","off"));
  $setreadingcommandarray[$setreadingcommandarrayindex++]="setreading $devicename $sdevicename"."_anzeige ".Muellanzeige($devicename,$sdevicename);
  $setreadingcommandarray[$setreadingcommandarrayindex++]="setreading $devicename $sdevicename"."_color ".MuelldeviceVal("Muellfarben",$devicename,$sdevicename,"_color","#505050");
  $setreadingcommandarray[$setreadingcommandarrayindex++]="setreading $devicename $sdevicename"."_icon ".MuelldeviceVal($devicename,$devicename,$sdevicename,"_icon","bag_blink");
  $setreadingcommandarray[$setreadingcommandarrayindex++]="setreading $devicename $sdevicename"."_text ".MuelldeviceVal($devicename,$devicename,$sdevicename,"_text","text_unknown");

  for (my $i=0; $i<$setreadingcommandarrayindex; $i++)
  {
fhem("$setreadingcommandarray[$i]");
  TelegramSend("telegramthomas",$i.", ".$setreadingcommandarray[$i]);
  }
  return $setreadingcommandarrayindex;
}

Ich bekomme per Telegram die korrekten Setreading Befehle angezeigt, aber nicht alle funktionieren.
Für die Readings die auf _text, _date, _days, _weekday enden wird das Reading nicht erzeugt nur wenn ich den Befehl der mir per Telegram angezeigt wird in der FHEM Oberfläche eingebe wird der korrekte Wert als Reading erstellt. Starte ich danach die Routine erneut werden diese Readings sogar entfernt.
Ich habe probiert die Readingnamen zu ändern _txt, _daate, _daays, _weeekday, dann werden alle erzeugt.
Hat jemand eine Idee was hier schief läuft ?
Titel: Aw: Reading wird nicht erzeugt sondern sogar entfernt
Beitrag von: frober am 08 April 2024, 18:45:51
Mache hier (MuelldeviceVal($devicename,$devicename,$sdevicename,"_weekday","weekday_unknown"))
und bei ReadingsVal die äußere Klammer mal weg.
Titel: Aw: Reading wird nicht erzeugt sondern sogar entfernt
Beitrag von: bombardi am 10 April 2024, 08:51:55
Die Klammern sind leider nicht die Lösung, die Readings werden nur erzeugt wenn ich deren Namen ändere, wie im startpost beschrieben.