Since the more rigorous checking in fhem.pl I have been seeing the following appear in logs at every save Config
2014.11.06 06:31:20 1: PERL WARNING: Use of uninitialized value $val in concatenation (.) or string at fhem.pl line 1384.
2014.11.06 06:31:20 1: PERL WARNING: Use of uninitialized value $val in substitution (s///) at fhem.pl line 1383.
2014.11.06 06:31:20 1: PERL WARNING: Use of uninitialized value $val in substitution (s///) at fhem.pl line 1382.
as well as the expected
2014.11.06 06:31:15 3: ds2408_LED: reading type did not return a value
verbose 5 and stacktrace
2014.11.06 06:33:49 1: PERL WARNING: Use of uninitialized value $val in substitution (s///) at fhem.pl line 1382.
2014.11.06 06:33:49 3: stacktrace:
2014.11.06 06:33:49 3: main::__ANON__ called by fhem.pl (1382)
2014.11.06 06:33:49 3: main::CommandSave called by fhem.pl (972)
2014.11.06 06:33:49 3: main::AnalyzeCommand called by fhem.pl (851)
2014.11.06 06:33:49 3: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (1919)
2014.11.06 06:33:49 3: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (567)
2014.11.06 06:33:49 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (393)
2014.11.06 06:33:49 3: main::FW_Read called by fhem.pl (2923)
2014.11.06 06:33:49 3: main::CallFn called by fhem.pl (598)
2014.11.06 06:33:49 1: PERL WARNING: Use of uninitialized value $val in substitution (s///) at fhem.pl line 1383.
2014.11.06 06:33:49 3: stacktrace:
2014.11.06 06:33:49 3: main::__ANON__ called by fhem.pl (1383)
2014.11.06 06:33:49 3: main::CommandSave called by fhem.pl (972)
2014.11.06 06:33:49 3: main::AnalyzeCommand called by fhem.pl (851)
2014.11.06 06:33:49 3: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (1919)
2014.11.06 06:33:49 3: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (567)
2014.11.06 06:33:49 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (393)
2014.11.06 06:33:49 3: main::FW_Read called by fhem.pl (2923)
2014.11.06 06:33:49 3: main::CallFn called by fhem.pl (598)
2014.11.06 06:33:49 1: PERL WARNING: Use of uninitialized value $val in concatenation (.) or string at fhem.pl line 1384.
2014.11.06 06:33:49 3: stacktrace:
2014.11.06 06:33:49 3: main::__ANON__ called by fhem.pl (1384)
2014.11.06 06:33:49 3: main::CommandSave called by fhem.pl (972)
2014.11.06 06:33:49 3: main::AnalyzeCommand called by fhem.pl (851)
2014.11.06 06:33:49 3: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (1919)
2014.11.06 06:33:49 3: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (567)
2014.11.06 06:33:49 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (393)
2014.11.06 06:33:49 3: main::FW_Read called by fhem.pl (2923)
2014.11.06 06:33:49 3: main::CallFn called by fhem.pl (598)
2014.11.06 06:33:49 4: /fhem?XHR=1&cmd=save / RL:52 / text/plain; charset=UTF-8 / Content-Encoding: gzip
I have managed to track this down to an empty attribute value.
An LED-statusmonitor had been configured previously but is physically disconnected at the moment, however the definition remains in my fhem.cfg as
define ds2408_LED OWDevice 29.AC5413000000
attr ds2408_LED IODev myLocalOWServer
attr ds2408_LED model
Deleting the ds2408_LED obviously resolves the save issue, however defining again with no physical device also recreates the empty attribute value and the error on save Config. That may be expected behaviour - I have no idea, all too complex for me!
Discussion in http://forum.fhem.de/index.php/topic,28673.0.html (http://forum.fhem.de/index.php/topic,28673.0.html) would suggest this should not happen
Perhaps it doesn't make sense to include the definition for a physically removed device but I wonder if the error may also occur on network errors too.
May be you should define it with a polling interval (this is an option, but give it a try!) and do not leave the attr. "model" empty like this: define ds2408_LED OWDevice 29.AC5413000000 60
attr ds2408_LED IODev myLocalOWServer
attr ds2408_LED model ds2408
That certainly gets rid of the error on save Config, now I have a log full of
2014.11.06 12:26:18 3: ds2408_LED: reading sensed.7 did not return a value
I think I'll remove it until the device is reinstalled :-\
I was assuming the module saved the attribute if the device is physically present but that may not be the case. I don't have saved cfg from that time so can't check
Thanks for the reply.
Fine! Now you can check two things: Try just not to set the polling value or set it to 0 (zero). May be the first problem you had, was just because of the empty "model". If this works, you can leave the device defined while it is not present.
They both remove the attribute value!
I am quite happy removing the definition until I need it again (now I know what is casuing the save error) but my understanding of Rudolf's post in the linked thread is that the module should either delete the empty attribute or deal with it internally.
Took me some time to follow-up on this issue.
Today added a change to 11_OWDevice.pm: model attribute is only set or overwritten if model can be read from the bus.
Cheers,
Boris