OK, OK, es muss gar nicht von hinten durch die Brust sein, der Grund wird wohl sein das ich mich erst wieder eindenken musste und vor der Frage zu wenig mit beschäftigt habe.
So klappts wie ich mir das vorgestellt habe, mit Bestätigungston, der war bei meinem vorherigen Gedanken gar nicht vorgesehen/beachtet gewesen:
if ($dudevstate eq 'Einkaufsliste') {
# blue button 1x -> Einkaufsliste
my $sound = sub {fhem("set $kecho sounds Glocken");};
my $a1 = sub { system('lpr -P HL-2035 -o media=Custom.95x138mm /opt/fhem/einkaufsliste.txt &');};
my $a2 = sub {my @array = split(",",ReadingsVal("Echo","list_SHOPPING_ITEM",""));
foreach my $sk (@array) {fhem ("set Echo item_shopping_delete $sk")}};
my $sr2cmnd = {
'0x20df22dd' => \&$a1,
'0x20dfda25' => \&$a2};
return fhem("set $kecho speak $dudevstate") if $rcCode eq "0x20df55aa";
return $sr2cmnd->{$rcCode}->().$sound->() if ref $sr2cmnd->{$rcCode} eq 'CODE';
return;
}
Was jetzt hier bei dem Thema Einkaufsliste drucken immer noch nicht passt ist die Meldung:
ERROR evaluating my $EVENT= $evalSpecials->{'%EVENT'};my $EVTPART0= $evalSpecials->{'%EVTPART0'};my $NAME= $evalSpecials->{'%NAME'};my $SELF= $evalSpecials->{'%SELF'};my $TYPE= $evalSpecials->{'%TYPE'};{FileWrite({ FileName=>"/opt/fhem/einkaufsliste.txt", ForceType=>"file", NoNL => 0},split(/\,/,$EVTPART1))}: Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 10719) line 1.
die beim löschen der Liste von diesem notify kommt:
defmod not_Echo_Einkaufsliste notify Echo:list_SHOPPING_ITEM:.* {FileWrite({ FileName=>"/opt/fhem/einkaufsliste.txt", ForceType=>"file", NoNL => 0},split(/\,/,$EVTPART1))}
Damals hatte keiner eine Idee wie man das verhindern könnte, mein Gedanke ist jetzt nix_machen wenn Echo:list_SHOPPING_ITEM:.* leer/nix ist ?
Damit beschäftige ich mich als nächstes, aber auch hier schlag ich einen Vorschlag nicht aus, der mir zuvorkommt.