hiho,
wieder mal sicher eine dumme frage, aber ich find den fehler nicht:
ich bekommen im log das warning2018.08.27 14:17:41 1: PERL WARNING: Use of uninitialized value $1 in concatenation (.) or string at (eval 148857) line 1, <FILE> line 1.
2018.08.27 14:17:41 1: eval: { open FILE, "/opt/fhem/share/fb2k_fatbastard.txt" or die "fehler: $!";; while (<FILE>){ $_ =~ /(.+?)::(.+)/;; fhem("setreading doif_fk2k_FatBastard $1 $2") } close FILE }
2018.08.27 14:17:41 1: stacktrace:
2018.08.27 14:17:41 1: main::__ANON__ called by (eval 148857) (1)
2018.08.27 14:17:41 1: (eval) called by fhem.pl (1113)
2018.08.27 14:17:41 1: main::AnalyzePerlCommand called by ./FHEM/98_DOIF.pm (1539)
2018.08.27 14:17:41 1: main::ParseCommandsDoIf called by ./FHEM/98_DOIF.pm (1954)
2018.08.27 14:17:41 1: main::DOIF_cmd called by ./FHEM/98_DOIF.pm (2213)
2018.08.27 14:17:41 1: main::DOIF_Trigger called by ./FHEM/98_DOIF.pm (2446)
2018.08.27 14:17:41 1: main::DOIF_TimerTrigger called by fhem.pl (3132)
2018.08.27 14:17:41 1: main::HandleTimeout called by fhem.pl (647)
, sobald mein doif anfängt, ein textfile auszulesen. eigentlich funzt das alles, alle userreadings werden genau dann befüllt, wann ich es will.
der fehler liegt wohl hier irgendwo
([fatbastard_winconnect:process_foobar2000] eq "1" and [+00:00:01])
({ open FILE, "/opt/fhem/share/fb2k_fatbastard.txt" or die "fehler: $!";; while (<FILE>){ $_ =~ /(.+?)::(.+)/;; fhem("setreading doif_fb2k_FatBastard $1 $2") } close FILE })
nur wo genau? ich hab da sicher wieder einen perl-fehler gebaut ... naja, ist auch wieder mal nur eine modifizierte abschreibübung.
sollts an den "::" liegen, wirds allerdings ein problem. man findet so gut wie keine key-folge, die nicht in irgend nem liedtitel oder interpreten vor kommt *g*. der doppelte doppelpunkt ist bis jetzt das am besten funktionierende, was ich gefunden hab.
kann mir geholfen werden, dieser befehlsteil vielleicht sogar verschönert/vereinfacht werden?
Falls es an den "::" liegen sollte (mein Perl-Wissen wird dir da nicht weiterhelfen), kannst du es entweder mit Variablen [$SELF:Doppeldoppelpunkt] (="::") umgehen oder den Wert der Regex aus Variablen mit je einem ":" zusammensetzen.
hmm, könnts vielleicht auch ein "?" als reading sein?
mein foobar2000 sendet selbiges, wenn es keine "echten" daten gibt.
z.b. hab ich bei klassik keine BpM, und somit kommt dort dann auch nur ein "?" in fhem an.
ich glaub, in die richtung gehts wohl ... also muß ich "?" und " " (die kommen beim beenden des fb2k) filtern.
oder besser ... ich schau mal, ob ich das nicht auf der "verursacherseite" raus krieg.
bin aber für ideen weiterhin echt dankbar!
o.k. hat sich erübrigt
das problem war: der foobar sendet beim beenden des foobar noch mal schnell ein "beendet" nach, was ja eigentlich recht nett ist. allerdings bleiben somit alle variablen und dazugehörige werte frei. das scheint fhem weniger zu gefallen ...