Hi,
kann mich mal jmd schuppsen... folgender code ging die ganze Zeit, von heute auf morgen aber nicht mehr. Ich finde auch nix im Log. Entweder geht das notify nicht, oder in der Rechnung ist ein Fehler. Da Beides bislang ging finde ich gerade keinen Ansatz.
Im Log steht hin und wieder mal was wie 544 mA isnt numeric, aber wie gesagt, lief ein gutes halbes Jahr ohne Probleme. Seit Anfang Juni gehts nimma :-(
Im Readingsval steht zB 544 mA.
define N_D_hof_zisterne_sensor_us_liter notify hof_zisterne_sensor_us { \
my $r1 = 124.7 - int((ReadingsVal("hof_zisterne_sensor_us","state","Fehler")) / 100 - 4) / 0.03137;; \
my $liter = 3.14159 * 40 * 40 * $r1 / 1000;; \
if ($r1 > 55.2) { $liter = $liter + 800 * 110 * ($r1-55.2) / 1000 };; \
fhem("set D_hof_zisterne_sensor_us_liter $liter");; \
}
Ins Blaue, auf die Schnelle, mach aus dem ReadingsVal mal ReadingsNum.
... leider nicht.
Die letzte aktualisierung war am 4.6., obwohl das notify min. alle H auslöst, respektive der Sensor min. 1x pro Stunde abgefragt wird.
Auch wenn ich "händisch" den Wert des Sensors setzte (set hof_zisterne_sensor_us value 540) ändert sich nix. Notify reagiert quasi nicht auf die änderung.
na super...
scheinbar hab ich irgendow die klammern nicht geschlossen. Zumindest beschwert sich das log entsprechend. Jmd einen Tip wie ich die position des fehlers am besten finde, suche mich seit na stunde zu tode...
2016.06.11 11:03:14 1: PERL WARNING: Argument "540 mA" isn't numeric in int at (eval 3395) line 1.
2016.06.11 11:03:14 3: eval: my $EVTPART0='540';my $TYPE='EIB';my $SELF='N0_hof_zisterne_sensor_us';my $EVTPART1='mA';my $EVENT='540 mA';my $NAME='hof_zisterne_sensor_us';{ if ( int(ReadingsVal("hof_zisterne_sensor_us","state","Fehler")) < 450 ) { fhem("set hof_zisterne_pumpe_anaus on-for-timer 600"); } }
2016.06.11 11:03:14 3: N_D_hof_zisterne_sensor_us_liter return value: Unknown command {, try help.
Unknown command my, try help.
Unknown command \, try help.
Ich baue solche notify, die mehr als zwei Zeilen haben in eine sub, ist übersichtlicher und nicht so fehleranfällig ;)
define N_D_hof_zisterne_sensor_us_liter notify hof_zisterne_sensor_us {N_D_hof}
sub
N_D_hof
{
my $zival = int((ReadingsVal("hof_zisterne_sensor_us","state","undef") /100) -4) / 0.03137;
my $r1 = 124.7 - $zival;
my $liter = 3.14159 * 40 * 40 * $r1 / 1000;
if ($r1 > 55.2) {
$liter = $liter + 800 * 110 * ($r1-55.2) / 1000
}
fhem "set D_hof_zisterne_sensor_us_liter $liter";
}
NICHT getestet !!
coole Idee! Die kannte ich noch gar nicht. Einfach in die normalen cfg dateien, also zusammen mit den defines einbauen?
Danke Dir, werde ich umsetzen!
define N_D_hof_zisterne_sensor_us_liter notify hof_zisterne_sensor_us {N_D_hof}
Das gehört, in der Webansicht, von FHEM oben in die Kommandozeile, nicht die fhem.cfg editieren!
sub
N_D_hof
{
my $zival = int((ReadingsVal("hof_zisterne_sensor_us","state","undef") /100) -4) / 0.03137;
my $r1 = 124.7 - $zival;
my $liter = 3.14159 * 40 * 40 * $r1 / 1000;
if ($r1 > 55.2) {
$liter = $liter + 800 * 110 * ($r1-55.2) / 1000
}
fhem "set D_hof_zisterne_sensor_us_liter $liter";
}
Das gehört in die 99_myUtils
;-)
habs gerade gemerkt.
Also:
Fehler war wohl in der Zeile
my $liter = (3.14159 * 40 * 40 * $r1 / 1000);; \
Dort war hinter dem \ noch ein (unsichtbarer) [TAB]. Wie immer blöder Fehler.
Danke für die Tipps, Problem gelöst.