diff --git a/fhem/FHEM/10_FRM.pm b/fhem/FHEM/10_FRM.pm index a44d124a8..e73b3a11b 100755 --- a/fhem/FHEM/10_FRM.pm +++ b/fhem/FHEM/10_FRM.pm @@ -1,6 +1,7 @@ ############################################## package main; +use vars qw{%attr %defs}; use strict; use warnings; @@ -469,8 +470,12 @@ sub FRM_Client_AssignIOPort($) { my $hash = shift; - AssignIoPort($main::defs{$hash->{NAME}}); - die "unable to assign IODev to '$hash->{NAME}'" unless defined ($hash->{IODev}); + my $name = $hash->{NAME}; + if (my $iodev = AttrVal($name,"IODev",undef)) { + $hash->{IODev} = $defs{$iodev}; + } + AssignIoPort($hash) unless defined($hash->{IODev}); + die "unable to assign IODev to '$name'" unless defined ($hash->{IODev}); $hash->{IODev} = $main::defs{$hash->{IODev}->{SNAME}} if (defined($hash->{IODev}->{SNAME})); @@ -673,7 +678,7 @@ sub FRM_OWX_firmata_to_device sub FRM_OWX_Verify { my ($hash,$dev) = @_; - foreach my $found ($hash->{DEVS}) { + foreach my $found (@{$hash->{DEVS}}) { if ($dev eq $found) { return 1; } diff --git a/fhem/FHEM/21_OWAD.pm b/fhem/FHEM/21_OWAD.pm index 35145d2de..b8529f5f9 100644 --- a/fhem/FHEM/21_OWAD.pm +++ b/fhem/FHEM/21_OWAD.pm @@ -168,6 +168,9 @@ sub OWAD_Initialize ($) { $attlist .= " ".$owg_fixed[$i]."High"; } $hash->{AttrList} = $attlist; + + #make sure OWX is loaded so OWX_CRC is available if running with OWServer + main::LoadModule("OWX"); } ######################################################################################### diff --git a/fhem/FHEM/21_OWCOUNT.pm b/fhem/FHEM/21_OWCOUNT.pm index 117766a5c..953dd5d54 100644 --- a/fhem/FHEM/21_OWCOUNT.pm +++ b/fhem/FHEM/21_OWCOUNT.pm @@ -149,6 +149,9 @@ sub OWCOUNT_Initialize ($) { $attlist .= " ".$owg_fixed[$i]."Period:hour,minute,second"; } $hash->{AttrList} = $attlist; + + #make sure OWX is loaded so OWX_CRC is available if running with OWServer + main::LoadModule("OWX"); } ######################################################################################### @@ -1074,7 +1077,7 @@ sub OWFSCOUNT_GetPage($$) { # $owg_str =~ /([\d\.]+)/; # a la truchsess $owg_str =~ s/[^\d\.]+//g; - $owg_str = 0.0 if(!(defined($owg_str))); + $owg_str = 0.0 if(!defined($owg_str) or $owg_str !~ /^\d+\.?\d*$/); $owg_str = int($owg_str*100)/100; $owg_midnight[0] = $owg_str; @@ -1093,7 +1096,7 @@ sub OWFSCOUNT_GetPage($$) { # $owg_str =~ /([\d\.]+)/; # a la truchsess $owg_str =~ s/[^\d\.]+//g; - $owg_str = 0.0 if(!(defined($owg_str))); + $owg_str = 0.0 if(!defined($owg_str) or $owg_str !~ /^\d+\.\d*$/); $owg_str = int($owg_str*100)/100; $owg_midnight[1] = $owg_str; }else { @@ -1222,7 +1225,7 @@ sub OWXCOUNT_GetPage($$) { # $owg_str =~ /([\d\.]+)/; # a la truchsess $owg_str =~ s/[^\d\.]+//g; - $owg_str = 0.0 if(!(defined($owg_str))); + $owg_str = 0.0 if(!defined($owg_str) or $owg_str !~ /^\d+\.\d*$/); $owg_str = int($owg_str*100)/100; $owg_midnight[0] = $owg_str; }elsif( $page == 15) { @@ -1231,7 +1234,7 @@ sub OWXCOUNT_GetPage($$) { # $owg_str =~ /([\d\.]+)/; # a la truchsess $owg_str =~ s/[^\d\.]+//g; - $owg_str = 0.0 if(!(defined($owg_str))); + $owg_str = 0.0 if(!defined($owg_str) or $owg_str !~ /^\d+\.\d*$/); $owg_str = int($owg_str*100)/100; $owg_midnight[1] = $owg_str; } @@ -1439,4 +1442,4 @@ sub OWXCOUNT_SetPage($$$) { =end html -=cut \ No newline at end of file +=cut diff --git a/fhem/FHEM/21_OWID.pm b/fhem/FHEM/21_OWID.pm index 12bc95823..3b9311cdb 100644 --- a/fhem/FHEM/21_OWID.pm +++ b/fhem/FHEM/21_OWID.pm @@ -91,6 +91,9 @@ sub OWID_Initialize ($) { my $attlist = "IODev do_not_notify:0,1 showtime:0,1 model loglevel:0,1,2,3,4,5 ". $readingFnAttributes; $hash->{AttrList} = $attlist; + + #make sure OWX is loaded so OWX_CRC is available if running with OWServer + main::LoadModule("OWX"); } ######################################################################################### diff --git a/fhem/FHEM/21_OWLCD.pm b/fhem/FHEM/21_OWLCD.pm index c363017a4..d833fe96b 100644 --- a/fhem/FHEM/21_OWLCD.pm +++ b/fhem/FHEM/21_OWLCD.pm @@ -121,6 +121,9 @@ sub OWLCD_Initialize ($) { my $attlist = "IODev do_not_notify:0,1 showtime:0,1 loglevel:0,1,2,3,4,5 ". ""; $hash->{AttrList} = $attlist; + + #make sure OWX is loaded so OWX_CRC is available if running with OWServer + main::LoadModule("OWX"); } ######################################################################################### diff --git a/fhem/FHEM/21_OWMULTI.pm b/fhem/FHEM/21_OWMULTI.pm index 963071b95..42f130608 100644 --- a/fhem/FHEM/21_OWMULTI.pm +++ b/fhem/FHEM/21_OWMULTI.pm @@ -124,7 +124,10 @@ sub OWMULTI_Initialize ($) { "tempOffset tempUnit:C,Celsius,F,Fahrenheit,K,Kelvin ". "VName VUnit VFunction ". $readingFnAttributes; - } + + #make sure OWX is loaded so OWX_CRC is available if running with OWServer + main::LoadModule("OWX"); +} ######################################################################################## # diff --git a/fhem/FHEM/21_OWSWITCH.pm b/fhem/FHEM/21_OWSWITCH.pm index c87eb062e..e5a175c54 100644 --- a/fhem/FHEM/21_OWSWITCH.pm +++ b/fhem/FHEM/21_OWSWITCH.pm @@ -144,6 +144,9 @@ sub OWSWITCH_Initialize ($) { } $hash->{AttrList} = $attlist; + + #make sure OWX is loaded so OWX_CRC is available if running with OWServer + main::LoadModule("OWX"); } ######################################################################################### diff --git a/fhem/FHEM/21_OWTHERM.pm b/fhem/FHEM/21_OWTHERM.pm index ef520a9f3..616c01ce2 100755 --- a/fhem/FHEM/21_OWTHERM.pm +++ b/fhem/FHEM/21_OWTHERM.pm @@ -129,8 +129,11 @@ sub OWTHERM_Initialize ($) { "stateAL stateAH ". "tempOffset tempUnit:C,Celsius,F,Fahrenheit,K,Kelvin ". "tempConv:onkick,onread tempLow tempHigh ". - $readingFnAttributes; - } + $readingFnAttributes; + + #make sure OWX is loaded so OWX_CRC is available if running with OWServer + main::LoadModule("OWX"); +} ######################################################################################## #