diff --git a/fhem/CHANGED b/fhem/CHANGED index d51e17d1d..5b3129aee 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - change: 98_feels_like.pm: Improved algorithms, fix reDEFINE - new: 42_AptToDate: Modul to retrieves apt information about Debian update state - bugfix: 74_NUKIDevice: fix Perl Warnings diff --git a/fhem/FHEM/98_feels_like.pm b/fhem/FHEM/98_feels_like.pm index c47dd1103..d9b54e3b3 100644 --- a/fhem/FHEM/98_feels_like.pm +++ b/fhem/FHEM/98_feels_like.pm @@ -41,8 +41,8 @@ feels_like_Define($$) my @a = split(/\s+/, $def); return "wrong syntax: " . - "define feels_like devicename temperature humidity " . - "[wind_speed [solar_radiation [pressure]]]" if (@a < 4 || @a> 8); + "define feels_like devicename temperature humidity " . + "[wind_speed [solar_radiation [pressure]]]" if (@a < 4 || @a> 8); my $name = $a[0]; my $devname = $a[2]; @@ -50,22 +50,26 @@ feels_like_Define($$) my $match = 0; my $i = 3; foreach my $k ('T', 'H', 'W', 'S', 'P') { - my $rk = $k . '_READING'; - my $dk = $k . '_DEV'; + my $rk = $k . '_READING'; + my $dk = $k . '_DEV'; - if($#a >= $i) { - my @x = split(/:/, $a[$i]); - if (@x == 2) { - $hash->{$dk} = $x[0]; - $hash->{$rk} = $x[1]; - } else { - $hash->{$dk} = $devname; - $hash->{$rk} = $x[0]; - $match++; - } - } + # in case it's a redefine + delete($hash->{$dk}); + delete($hash->{$rk}); - $i++; + if($#a >= $i) { + my @x = split(/:/, $a[$i]); + if (@x == 2) { + $hash->{$dk} = $x[0]; + $hash->{$rk} = $x[1]; + } else { + $hash->{$dk} = $devname; + $hash->{$rk} = $x[0]; + $match++; + } + } + + $i++; } return "feels_like: at least one reading device must match $devname" if ($match == 0); @@ -638,39 +642,39 @@ my $alpha_min = 0.28; my $alpha_max = 3.20; my $nx = 7; my $ny = 11; -my @poly = (-100.5272916306846,0.3851772804214305,-0.020922056671224352, - -0.009606197418741177,0.0005849132515498935,-1.7702695912133926e-05, - 2.7723251864128576e-07,-2.2008421407093293e-09,7.98312106634558e-12, - -9.927125805770036e-15,-8.604877467953387e-21,2.265317645670313e-20, - 4.1772609913122905,-0.003382646065288795,0.004002144590164501, - -5.4211809684315803e-05,-5.444706499364457e-10,6.634114173659209e-08, - -1.401016073554696e-09,8.827874472272314e-12,2.0449918292777215e-15, - -9.736015250496609e-17,-1.2628485998738518e-19,-6.528639259121269e-25, - -0.07111355060845763,-0.0004529543069338071,-4.4021806663494164e-05, - 9.059712530819742e-07,-3.995683044901134e-08,4.267728767926248e-10, - -8.99216222938747e-13,8.946809361917819e-16,3.0559393103807377e-18, - -1.2161164440370677e-18,6.327425020223698e-21,-2.1093293979784917e-26, - 0.0006548417964461427,8.616725227583858e-06,1.4214703156380296e-07, - 1.6194971096239993e-09,1.193961278874705e-10,-9.867892387318816e-13, - 7.731533627631885e-18,-2.51758137182563e-17,4.666842950199576e-20, - -8.087375804440922e-23,2.998974830829665e-23,-9.232094285359054e-26, - -3.5328742295575905e-06,-6.514191698173193e-08,-8.815469844312648e-11, - -2.6046214918557725e-11,2.5650664629227075e-18,-7.427126643548995e-15, - 8.6511961126834e-17,3.5992628695651026e-20,-2.1167091228911203e-21, - 3.56544713533269e-23,-2.7851859628863135e-25,2.6191072037006313e-30, - 1.1177254065064902e-08,2.51900546433227e-10,3.3655023796213395e-13, - 5.924476158904615e-16,2.0127621492146657e-15,3.9839039995943257e-19, - -1.1548464713367492e-20,-1.6688968404500252e-21,1.6961916774893855e-27, - 3.3572561967420015e-28,-1.1826537287436407e-29,4.088004745053708e-30, - -1.9204337282521175e-11,-5.084099801020134e-13,-1.5629771424170198e-15, - 1.8775095429271391e-16,-7.621571993423269e-18,2.270611143279266e-20, - 2.0566602640908184e-22,-1.7224083003014677e-24,3.3573830492178875e-26, - -1.1092599050757706e-29,7.847387568022642e-37,-1.0904825142536614e-32, - 1.3817373460788212e-14,4.358054579743455e-16,-3.8996192297342614e-19, - -1.0123638207451001e-19,1.37960356223409e-21,1.3930087304289616e-22, - -2.609911374214054e-24,1.786316983808703e-26,6.149662788070821e-30, - -1.2557848634303272e-30,6.885372725269743e-33,-1.8993544603666883e-36); -# numdp: 3648, mean error: 0.05819 +my @poly = (-106.92078815088152,1.1559639672742617,-0.10641701193735834, + -0.003289004759141109,0.00024341610319517833,-7.393885292177471e-06, + 1.1036469480601365e-07,-8.433653719722458e-10,4.6816105400180725e-12, + -2.2915699724588908e-14,5.1558807208283076e-17,-1.079309274936794e-21, + 4.475568377940087,-0.02979654850540337,0.004700175671662923, + -2.0556721233089508e-05,-6.038914362044792e-08,2.006751148263329e-08, + -3.111327815305771e-10,-1.374995798484272e-12,1.9735294352791308e-14, + 2.1301007272254039e-19,-1.1889565579254942e-22,-6.300423390960505e-22, + -0.07727338274859613,0.00020814642590810098,-6.394225596258378e-05, + 7.868630252758761e-09,-7.464104467557937e-09,1.1747261979615144e-10, + 6.942150907013742e-13,3.4379341050323286e-15,6.450994446627346e-18, + -4.444113964025086e-19,6.797271157288228e-22,-2.4187064817431376e-26, + 0.0007233278231093484,-2.738439691372625e-07,5.245059294961144e-07, + 3.0960830052172135e-09,-8.666235563108327e-12,-8.543981121106956e-13, + -3.0921133374358243e-16,-3.403768199365476e-18,2.0279200191426042e-21, + -4.248840692118507e-21,1.7318873922658786e-23,8.574899408718153e-28, + -3.97231902915211e-06,-5.352290412779365e-10,-3.192650063883535e-09, + -8.74015720283199e-12,2.283911280963708e-13,7.341513792108321e-16, + -1.646709199019733e-19,1.3337349967893863e-19,-1.768592696157379e-24, + 1.8081165441415707e-23,-9.255858370952993e-28,-6.417530710544851e-29, + 1.2816665080935244e-08,-1.1922083845200477e-11,1.3421147775930614e-11, + -8.568582018392473e-14,1.9981576527458447e-16,-3.2157555342893155e-22, + 6.697464022398249e-20,-1.7492784034332204e-21,2.9982339842976173e-26, + 3.1608055013268483e-26,-4.358123093981532e-28,-4.283467678330636e-31, + -2.2523634293967502e-11,7.160123195453301e-14,-3.16054616229181e-14, + 4.4391029509107566e-16,-3.1617351024523765e-18,-1.106231164369411e-20, + 1.3620891422547596e-26,4.542693150881559e-24,-1.1189308112788874e-26, + -2.7544251659486844e-29,1.8059972620664227e-36,6.576920263313157e-33, + 1.6644569253648212e-14,-1.0182652809916555e-16,2.986157294663078e-17, + -5.245136086661749e-19,1.8660756935566013e-21,1.0544047345884695e-22, + -1.6410689680364017e-24,1.0506963847508829e-26,-5.70549250231417e-29, + 3.5859454340809775e-32,2.027506749740463e-33,-1.4181289166467323e-35); +# numdp: 3936, mean error: 0.06565 # azimuth, sday sub sensor_factor($$) {