Ein herzerfrischendes "Moin" vom "hintern Deich" vorweg
Ich habe eine Frage zu der Wiki-Beschreibung betreffend X_Notify (http://www.fhemwiki.de/wiki/DevelopmentModuleIntro#X_Notify)
Ich habe mir gemäß der dortigen Empfehlung, die 98_average.pm anzuschauen, auf dieser Basis ein vereinfachtes Beispiel selbst gebastelt:
# $Id: 73_GasCalculator.pm 0001 2016-01-08 00:00:00Z Matthias_Deeke $
########################################################################################################################
package main;
use strict;
use warnings;
##########################
sub
GasCalculator_Initialize($)
{
my ($hash) = @_;
$hash->{DefFn} = "GasCalculator_Define";
$hash->{NotifyFn} = "GasCalculator_Notify";
$hash->{NotifyOrderPrefix} = "10-"; # Want to be called before the rest
$hash->{AttrList} = "disable:0,1 " .
"disabledForIntervals " .
"computeMethod:integral,counter " .
"noaverage:0,1 " .
"nominmax:0,1 " .
"floatformat:%0.1f,%0.2f";
}
##########################
sub
GasCalculator_Define($$)
{
my ($hash, $def) = @_;
my ($name, $type, $re, $rest) = split("[ \t]+", $def, 4);
if(!$re || $rest) {
my $msg = "wrong syntax: define <name> average device[:event]";
return $msg;
}
# Checking for misleading regexps
eval { "Hallo" =~ m/^$re$/ };
return "Bad regexp: $@" if($@);
$hash->{REGEXP} = $re;
$hash->{STATE} = "active";
### Writing log entry
Log3 $name, 3, $name. " : GasCalculator - Starting to define module with version: X1";
return undef;
}
##########################
sub
GasCalculator_Notify($$)
{
my ($avg, $dev) = @_;
my $myName = $avg->{NAME};
return "" if(IsDisabled($myName));
my $devName = $dev->{NAME};
my $re = $avg->{REGEXP};
my $max = int(@{$dev->{CHANGED}});
my $tn;
my $myIdx = $max;
### Writing log entry
Log3 $myName, 3, $myName. " : GasCalculator - X_Notify has been triggered!";
return undef;
}
1;
Das ganze implementiert mit
define myGasCalculator GasCalculator myKm200:.*
Normalerweise hätte (nach reload und neuer re-definition) zunächst die Logmeldung aus der Define-Sub und dann für jedes Event eine Logmeldung aus der notify-Sub im Log erscheinen müssen.
Aber es erscheint nur die Log-Meldung aus der define-Sub:
2016.01.11 13:49:06 3: myGasCalculator : GasCalculator - Starting to define module with version: X1
Das device myKm200 liefert brav immer neue, sich verändernde Werte.
Ich zerbrech ir langsam die Rübe hinsichtlich der X_notify Funktion... Was schaft Rudi mit seiner average-Funktion, was ich nicht hinbekomme? ???
Danke für Eure Hilfe!
Gruss
Sailor
Auf dem ersten Blick sehe ich auch kein Problem, deine Datei scheint eine kopierte / umbenannte / abgespeckte average.pm sein. Ich wuerde an deine Stelle average.pm kopieren/umbenennen aber nicht aendern, mit Log versehen, und testen ob es noch tut. Danach schritt fuer Schritt anpassen, und dazwischen testen.
Ich habe das oben gelistete Modul per copy&paste in mein Testsystem übernommen.
Einzige Änderung in meinem define war der Name des auszwertenden devices.
Das Triggern erfolgt völlig problemlos:
2016.01.11 19:37:40 3: myGasCalculator : GasCalculator - Starting to define module with version: X1
2016.01.11 19:37:40 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
wie sehen denn die events tatsächlich aus, die von Deinem myKm200 erzeugt werden? Eigentlich kann Dein Problem doch nur von einer nicht passenden regexp kommen. Hast Du mal versucht, manuell einen zu Deiner regexp passenden event auszulösen?
Zitat von: betateilchen am 11 Januar 2016, 19:40:21
Ich habe das oben gelistete Modul per copy&paste in mein Testsystem übernommen.
Einzige Änderung in meinem define war der Name des auszwertenden devices.
Das Triggern erfolgt völlig problemlos:
Hallo betateilchen, rudi
ich weiß auch nicht warum, wieso und weshalb, aber nachdem ich gestern aufgegeben habe und heute mal wieder kurz reingeschaut habe, hatte ich das im Logfile
2016.01.12 07:58:13 3: CUL_HM set CW_SmokeDetector statusRequest
2016.01.12 07:58:13 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:13 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:13 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:13 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:13 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:13 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:14 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:14 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:14 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:14 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:14 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:15 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:15 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:15 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:15 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:18 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:19 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:19 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:20 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:20 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:20 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:21 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:21 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:21 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:21 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:21 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:21 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:21 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:21 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:22 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:22 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:22 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:22 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:22 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:23 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:23 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:24 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:24 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:24 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:24 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:24 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:24 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:25 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:25 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:25 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:25 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:25 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:26 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:26 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:26 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:26 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:26 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:26 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:27 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:27 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:27 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:27 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:27 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:28 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:28 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:28 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:28 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:28 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:29 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:29 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:29 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:29 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:29 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:29 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:30 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:30 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:30 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:30 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:30 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:31 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:31 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:31 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:31 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:31 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:32 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:32 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:32 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:33 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:33 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:33 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:34 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:34 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:34 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:35 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:35 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:35 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:36 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:36 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:36 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:36 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:36 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:36 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:36 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:36 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:36 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:36 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:36 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:36 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:36 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:36 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:37 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:37 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:39 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:39 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:39 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:39 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:40 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:40 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:41 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:41 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:41 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:43 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:43 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:43 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:43 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:43 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:44 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:44 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:44 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:44 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:44 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:44 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:45 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:45 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:45 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:45 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:45 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:46 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:46 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:46 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:46 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:46 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:47 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:47 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:47 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:48 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:48 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:49 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:49 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:49 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:50 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:50 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:51 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:51 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:52 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:52 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:53 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:53 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:53 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:54 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:54 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:54 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:55 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:55 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:55 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:55 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:55 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:56 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:56 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:56 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:56 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:58 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:58:59 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:04 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:04 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:04 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:04 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:04 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:07 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:07 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:07 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:08 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:08 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:14 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:15 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:15 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:15 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:20 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:21 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:23 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:23 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:23 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:23 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:24 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:43 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:43 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:48 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 07:59:55 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:03 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:03 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:03 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:08 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:08 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:08 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:08 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:08 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:13 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:15 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:16 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:16 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:20 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:21 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:23 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:23 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:27 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:27 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:27 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:28 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:38 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:42 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:42 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:00:42 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:03 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:08 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:08 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:08 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:08 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:08 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:15 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:15 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:15 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:20 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:21 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:24 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:24 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:24 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:28 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:34 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:39 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:39 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:39 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:52 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:52 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:53 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:56 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:56 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:57 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:57 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:57 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:57 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:57 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:58 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:58 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:58 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:58 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:58 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:58 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:58 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:58 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:59 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:59 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:59 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:59 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:59 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:59 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:01:59 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:02:00 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:02:00 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:02:00 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:02:00 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:02:00 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
2016.01.12 08:02:00 3: myGasCalculator : GasCalculator - X_Notify has been triggered!
Nun gut, es scheint dann ja zu funktionieren! ;D
Weiter gehts und Danke!
Gruß
Sailor
spontane Wunderheilung... oh kniet mit mir, dies seltne Glück zu preisen!
Zitat von: betateilchen am 12 Januar 2016, 09:38:02
spontane Wunderheilung... oh kniet mit mir, dies seltne Glück zu preisen!
Tja, das Problem war meine eigene Dummheit bzw. Geiz: "event_on_change_reading 1" ... >:(
Der Filter gegen die mitgelieferte RegEx klappt inzwischen auch gut!
Neue Frage: Sobald ich im X_notify arbeite, zeigt er mir inzwischen auch ganz brav die Werte an.
Wie komme ich aber an den vorherigen Wert und den vorherigen Zeitstempel genau dieses Readings?
OldValue() und OldTimestamp() liefern mir nur den Wert/Zeitstempel des "state" readings.
Wie kann ich das gleiche mit nur einem bestimmten Reading machen?
Hintergrund: Ich möchte herausfinden, ob zwischenzeitlich ein Tages, Monats oder Jahreswechsel stattgefunden hat:
If hour(0) < hour (-1) #Tageswechsel hat stattgefunden
{
If day(0) < day(-1) #Monatswechsel hat stattgefunden
{
If month(0) < month(-1) #Jahreswechsel hat stattgefunden
}
}
Das geht aber nur wenn ich den aktuellen und den letzten Zeitstempel für genau dieses Reading (nicht state) auslese.
Oder geht das vielleicht sogar viel einfacher?
Danke - wie immer
Gruß
Sailor
das geht nicht.
aber du musst doch nicht zwei zeitstempel des gleichen readings vergleichen sondern kannst z.b. mit dem zeitstempel des tages wertes vergleichen oder merkst dir den letzten aufruf in einem extra .timestamp reading.
oder schau dir doch mal an wie das im average modul gemacht wird.
gruss
andre
und noch ein hinweis:
genau so wie beim erzeugen der events sollte auch beim auswerten nicht mehr direkt auf CHANGED zugegriffen werden.
unter anderem weil man beim direkten zugriff auf CHANGED das problem hat das man eventuell nicht eindeutig feststellen kann ob ein event für ein 'normales' reading oder für state ist. bei state gibt es keinen : zwischen reading namen und reading wert und das ist problematisch wenn im reading wert selber ein : vorkommt.
ein anderer grund ist das der direkte zugriff eine enge kopplung bedeutet die in zukunft problematisch wird wenn einzelne module z.b. in einer sandbox mehr gegeneinander abgesichert werden sollen.
deshalb gibt es inzwischen die deviceEvents routine:my $events = deviceEvents($dev, 1);
my $max = int(@{$events});
for (my $i = 0; $i < $max; $i++) {
my $s = $events->[$i];
...
}
die 1 beim aufruf von deviceEvents legt fest das man events für state als 'echtes' reading mit : zwischen name und wert haben möchte.
module die dem endanwender überlassen müssen ob das state handling nach dem neuen oder alten verfahren erfolgen soll (z.b. wegen rückwärtskompatibilittät zu einer bestehenen regex) sollen hierzu das addStateEvent attribut verwenden:my $events = deviceEvents($dev, AttrVal($dev->{NAME}, "addStateEvent", 0));
gruss
andre
Hallo Andre
du erweist Dich immer und immer wieder als wertvolle Quelle des Wissens!n
Zitat von: justme1968 am 12 Januar 2016, 19:27:19
deshalb gibt es inzwischen die deviceEvents routine:my $events = deviceEvents($dev, 1);
my $max = int(@{$events});
for (my $i = 0; $i < $max; $i++) {
my $s = $events->[$i];
...
}
Verstehe ich das richtig...
Aus
### Define variables
my $GasCountName = $GasCountDev->{NAME};
my $NumberOfChangedEvents = int(@{$GasCountDev->{CHANGED}});
my $re = $GasCalcDev->{REGEXP};
### For each feedback on in the array of defined regexpression which has been changed
for (my $i = 0; $i < $NumberOfChangedEvents; $i++)
{
### Extract regexpression
my $s = $GasCountDev->{CHANGED}[$i];
wird
### Define variables
my $GasCountName = $GasCountDev->{NAME};
my $GasCountNameEvents = deviceEvents($GasCountDev, 1);
my $NumberOfChangedEvents = int(@{$GasCountNameEvents});
my $re = $GasCalcDev->{REGEXP};
### For each feedback on in the array of defined regexpression which has been changed
for (my $i = 0; $i < $NumberOfChangedEvents; $i++)
{
### Extract regexpression
my $s = $GasCountNameEvents->[$i];
?
Nun es scheint zu funktionieren:
2016.01.12 21:41:58 5: myGasCalculator : GasCalculator - Reading Name: counters.A - Event Current Value : 2240.98 - Event Current Time : 2016-01-12 21:41:58
2016.01.12 21:41:58 5: myGasCalculator : GasCalculator - Reading Name: counters.A - Event Previous Value : 2240.97 - Event Previous Time : 2016-01-12 21:38:58
2016.01.12 21:41:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampPreviousYear :2016
2016.01.12 21:41:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampPreviousMon :1
2016.01.12 21:41:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampPreviousMday :12
2016.01.12 21:41:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampPreviousHour :21
2016.01.12 21:41:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampPreviousMin :38
2016.01.12 21:41:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampCurrentYear :2016
2016.01.12 21:41:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampCurrentMon :1
2016.01.12 21:41:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampCurrentMday :12
2016.01.12 21:41:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampCurrentHour :21
2016.01.12 21:41:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampCurrentMin :41
2016.01.12 21:44:58 5: myGasCalculator : GasCalculator - Reading Name: counters.A - Event Current Value : 2241.02 - Event Current Time : 2016-01-12 21:44:58
2016.01.12 21:44:58 5: myGasCalculator : GasCalculator - Reading Name: counters.A - Event Previous Value : 2240.98 - Event Previous Time : 2016-01-12 21:41:58
2016.01.12 21:44:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampPreviousYear :2016
2016.01.12 21:44:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampPreviousMon :1
2016.01.12 21:44:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampPreviousMday :12
2016.01.12 21:44:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampPreviousHour :21
2016.01.12 21:44:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampPreviousMin :41
2016.01.12 21:44:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampCurrentYear :2016
2016.01.12 21:44:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampCurrentMon :1
2016.01.12 21:44:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampCurrentMday :12
2016.01.12 21:44:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampCurrentHour :21
2016.01.12 21:44:58 5: myGasCalculator : GasCalculator - GasCountReadingTimestampCurrentMin :44
Das mit dem Doppelpunkt hatte ich allerdings schon als Problem gesehen.
Das mit dem Attribut muss ich mir noch mal durch den Kopf gehen lassen.
Zur Zeit kaempfe ich mit dem Problem, dass die Attribute bei jedem Start von fhem und neuer Definition aus den Internals geloescht werden und auf Standard - Werte zurueck gehen.
Wenn ich sie dann erneut manuell eingebe, sind sie wieder in den Internals - bis zum naechsten Start.
Scheinbar wird X_Attr nicht beim Start ausgefuehrt.
Bei meinem 73_km200.pm habe ich das ganz genauso gemacht und dort habe ich keine Probleme. :o
Wenn Du Lust hast einen Blick drauf zu werfen - Der Code ist im Anhang. Noch ist es nicht zuviel und ich gebe mir Muehe uebersichtlich und systematisch zu kommentieren.
Gruss
Sailor
auf den ersten blick genau so. das mit dem attribut ist eigentlich nur für alte module wichtig damit z.b. bei einem notify eine regex auf state weiter funktioniert. wenn du ein neues modul baust ist es besser die state variante ohne : garnicht erst zu unterstützen.
wenn du deine ganzen timestamp readings mit einem . am anfang versiehst sind sie im normalen frontend versteckt.
die attribute stehen nicht in den internals sondern in $attr{$name}. direkt beim starten während des define sind sie noch nicht gesetzt. erst nach dem define werden sie eins nach dem anderen per attr gesetzt.
ich schau es mir morgen mal an.
gruss
andre
Hallo Andre
Zitat von: justme1968 am 12 Januar 2016, 22:05:50
wenn du ein neues modul baust ist es besser die state variante ohne : garnicht erst zu unterstützen.
OK, dann lege ich das Teil ad acta.
Zitat von: justme1968 am 12 Januar 2016, 22:05:50
wenn du deine ganzen timestamp readings mit einem . am anfang versiehst sind sie im normalen frontend versteckt.
Na das werde ich doch gleich ausprobieren!
Ich habe die ohnehin nur als Reading implementiert um sicherzustellen, dass es im state-file gesichert wird.
Zitat von: justme1968 am 12 Januar 2016, 22:05:50
die attribute stehen nicht in den internals sondern in $attr{$name}. direkt beim starten während des define sind sie noch nicht gesetzt. erst nach dem define werden sie eins nach dem anderen per attr gesetzt.
Aha, das bedeutet also, dass ich mir das sichern der Attribute als Internals sparen kann.
Um sicherzustellen, dass korrekte Default-Werte verwendet werden, selbst wenn die Attribute nicht gesetzt sind, kann ich also in der X_Define diese schon mit "$attr{$name}" setzen?
Zitat von: justme1968 am 12 Januar 2016, 22:05:50
ich schau es mir morgen mal an.
OK, dann lass es mich heute Abend erst einmal so ausprobieren. Das erspart dir das doppelte Lesen.
Meine Idee aus dem Bauch heraus (ungetestet) ware dann nämlich anstatt
###START###### Activate module after module has been used via fhem command "define" ##########################START####
sub GasCalculator_Define($$$)
{
my ($hash, $def) = @_;
my ($name, $type, $re, $rest) = split("[ \t]+", $def, 4);
my $ModuleVersion = "0001";
### Check whether regular expression has correct syntax
if(!$re || $rest)
{
my $msg = "wrong syntax: define <name> GasCalculator device[:event]";
return $msg;
}
### Check whether regular expression is misleading
eval { "Hallo" =~ m/^$re$/ };
return "Bad regexp: $@" if($@);
$hash->{REGEXP} = $re;
### Writing values to global hash
$hash->{NAME} = $name;
$hash->{STATE} = "active";
$hash->{REGEXP} = $re;
$hash->{VERSION} = $ModuleVersion;
$hash->{BASICPRICEPERANNUM} = 0;
$hash->{GASCOUNTEROFFSET} = 0;
$hash->{GASCOUNTSPERCUBIC} = 0.01;
$hash->{GASZVALUE} = 1;
$hash->{GASNOMINALHEATINGVALUE} = 10;
$hash->{MONTHLYPAYMENT} = 0;
$hash->{DAYOFMONTHLYPAYMENT} = 1;
$hash->{MONTHOFANNUALREADING} = 5;
### Writing log entry
Log3 $name, 5, $name. " : GasCalculator - Starting to define module with version: " . $ModuleVersion;
return undef;
}
####END####### Activate module after module has been used via fhem command "define" ############################END#####
würde es dann so heißen
###START###### Activate module after module has been used via fhem command "define" ##########################START####
sub GasCalculator_Define($$$)
{
my ($hash, $def) = @_;
my ($name, $type, $re, $rest) = split("[ \t]+", $def, 4);
my $ModuleVersion = "0001";
### Check whether regular expression has correct syntax
if(!$re || $rest)
{
my $msg = "wrong syntax: define <name> GasCalculator device[:event]";
return $msg;
}
### Check whether regular expression is misleading
eval { "Hallo" =~ m/^$re$/ };
return "Bad regexp: $@" if($@);
$hash->{REGEXP} = $re;
### Writing values to global hash
$hash->{NAME} = $name;
$hash->{STATE} = "active";
$hash->{REGEXP} = $re;
$hash->{VERSION} = $ModuleVersion;
### Writing values to attribute hash
$attr{$name}{BasicPricePerAnnum} = 0;
$attr{$name}{DayOfMonthlyPayment} = 1;
$attr{$name}{GasCounterOffset} = 0;
$attr{$name}{GasCountsPerCubic} = 0,01;
$attr{$name}{GasNominalHeatingValue} = 10;
$attr{$name}{GasPricePerCubic} = 0,0654;
$attr{$name}{GaszValue} = 1;
$attr{$name}{MonthlyPayment} = 0;
$attr{$name}{MonthOfAnnualReading} = 5;
### Writing log entry
Log3 $name, 5, $name. " : GasCalculator - Starting to define module with version: " . $ModuleVersion;
return undef;
}
####END####### Activate module after module has been used via fhem command "define" ############################END#####
Gruss
Sailor
Hat nicht so geklappt wie ich mir das gedacht habe.
Ich mache jetzt in der X_notifz eine Fallabrage ob das attribut schin existiert und wenn nicht lege ich es an...
###START###### Calculate gas meter values on changed events ###################################################START####
sub GasCalculator_Notify($$)
{
my ($GasCalcDev, $GasCountDev) = @_;
my $GasCalcName = $GasCalcDev->{NAME};
### Check whether the gas calculator has been disabled
if(IsDisabled($GasCalcName))
{
return "";
}
### Check whether all required attributes has been provided and if not create them with standard values
if(!defined($attr{$GasCalcName}{BasicPricePerAnnum}))
{
$attr{$GasCalcName}{BasicPricePerAnnum} = 0;
}
if(!defined($attr{$GasCalcName}{DayOfMonthlyPayment}))
{
$attr{$GasCalcName}{DayOfMonthlyPayment} = 1;
}
if(!defined($attr{$GasCalcName}{GasCounterOffset}))
{
$attr{$GasCalcName}{GasCounterOffset} = 0;
}
if(!defined($attr{$GasCalcName}{GasCountsPerCubic}))
{
$attr{$GasCalcName}{GasCountsPerCubic} = 0.01;
}
if(!defined($attr{$GasCalcName}{GasNominalHeatingValue}))
{
$attr{$GasCalcName}{GasNominalHeatingValue} = 10;
}
if(!defined($attr{$GasCalcName}{GasPricePerCubic}))
{
$attr{$GasCalcName}{GasPricePerCubic} = 0.0654;
}
if(!defined($attr{$GasCalcName}{GaszValue}))
{
$attr{$GasCalcName}{GaszValue} = 1;
}
if(!defined($attr{$GasCalcName}{MonthlyPayment}))
{
$attr{$GasCalcName}{MonthlyPayment} = 0;
}
if(!defined($attr{$GasCalcName}{MonthOfAnnualReading}))
{
$attr{$GasCalcName}{MonthOfAnnualReading} = 5;
}
Jetzt kannst mal drueberschauen wenn du magst, bevor ich mit den eigentlichen Berechnungen weitermache.
Gruss
Sailor