Reading wird nicht erzeugt sondern sogar entfernt

Begonnen von bombardi, 08 April 2024, 13:42:59

Vorheriges Thema - Nächstes Thema

bombardi

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 ?

frober

Mache hier (MuelldeviceVal($devicename,$devicename,$sdevicename,"_weekday","weekday_unknown"))
und bei ReadingsVal die äußere Klammer mal weg.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

bombardi

Die Klammern sind leider nicht die Lösung, die Readings werden nur erzeugt wenn ich deren Namen ändere, wie im startpost beschrieben.