EM 1000-EM soll FS20 schalten

338 views
Skip to first unread message

kleene1503

unread,
Mar 19, 2012, 10:27:21 AM3/19/12
to FHEM users
Hallo zusammen,
bisher bin ich, dank dieser tollen Gruppe, bestens mit FHEM zurech
gekommen. Nun jedoch stehe ich vor einem Problem, für welches ich
keine Lösung finde.

Ich habe mir ein Energiemessmodul von ELV (EM 1000-EM) bestellt. In
die Steckdose gesteckt, autocreate hat es gefunden, noch ein wenig die
Config angepasst und es klappt wunderbar.

Die Config dafür sieht folgendermaßen aus:


define K_WM_Verbrauch CUL_EM 7 0.01 0.001 0.22 8.99
attr K_WM_Verbrauch room Keller
define FileLog_K_WM_Verbrauch FileLog C:/fhem/tmp/Waschmaschine-%Y-
%m.log K_WM_Verbrauch:CNT.*
attr FileLog_K_WM_Verbrauch logtype power8:Power,text
attr FileLog_K_WM_Verbrauch icon icoLog.png
attr FileLog_K_WM_Verbrauch room Keller
define W_K_WM_Verbrauch weblink fileplot
FileLog_K_WM_Verbrauch:power8:CURRENT
attr W_K_WM_Verbrauch label "Verbrauch Waschmaschine Min $data{min1},
Max $data{max1}, Last $data{currval1}"
attr W_K_WM_Verbrauch room Keller


Das Logfile sieht dann so aus:


.
.
2012-03-19_14:37:18 K_WM_Verbrauch CNT: 25 CUM: 0.195 5MIN: 0.080
TOP: 0.310
2012-03-19_14:42:18 K_WM_Verbrauch CNT: 26 CUM: 0.202 5MIN: 0.080
TOP: 0.340
2012-03-19_14:47:18 K_WM_Verbrauch CNT: 27 CUM: 0.209 5MIN: 0.080
TOP: 0.350
2012-03-19_14:52:18 K_WM_Verbrauch CNT: 28 CUM: 0.216 5MIN: 0.080
TOP: 0.320
2012-03-19_14:57:18 K_WM_Verbrauch CNT: 29 CUM: 0.223 5MIN: 0.090
TOP: 0.300
2012-03-19_15:02:18 K_WM_Verbrauch CNT: 30 CUM: 0.231 5MIN: 0.090
TOP: 0.300
.
.


So weit, so gut. Ich bin erstmal zufrieden.

Nun habe ich mir einen Dummy erstellt:


define Waschmaschine FS20 1212 50
attr Waschmaschine dummy
attr Waschmaschine eventMap on:Laeuft off:Fertig
attr Waschmaschine room Keller


Der Dummy soll später mal durch eine richtige Funksteckdose ersetzt
werden.

Wie kann ich es nun anstellen, dass wenn im Logfile des EM 1000-EM bei
5MIN: der Wert 0.000 (also ....5MIN: 0.000......) steht, der Dummy
ausgeschaltet wird?

Mein Lösungsansatz war bis jetzt:

define WM_Aus notify K_WM_Verbrauch (if (?) fhem ("set Waschmaschine
off"))


Ist das soweit richtig?
Wenn ja, was muss ich bei dem Fragezeichen noch eintragen?
Wenn nein, wie sollte es dann aussehen?

Ich hoffe ihr könnt mir weiter helfen.

Rudolf Koenig

unread,
Mar 19, 2012, 11:25:58 AM3/19/12
to fhem-...@googlegroups.com
> Mein L�sungsansatz war bis jetzt:

> define WM_Aus notify K_WM_Verbrauch (if (?) fhem ("set Waschmaschine
> off"))


Mein Vorschlag:

define WM_State dummy
attr WM_State comment Status, abgeleitet aus dem Stromverbrauch

define WM_Aus notify K_WM_Verbrauch:5MIN {\
if(%EVTPART6 == 0) {\
fhem "set Waschmaschine,WM_State off" if(Value("WM_State") eq "on")\
} else {\
fhem "setstate WM_State on"\
}\
}

Habs nicht getestet...

kleene1503

unread,
Mar 19, 2012, 2:17:00 PM3/19/12
to FHEM users
Hab es so ausprobiert aber es tut sich nichts. Der Status des Dummys
Waschmaschine und auch der des WM_State bleiben unverändert wenn der
Wert von 5MIN: auf 0.000 ist.

kleene1503

unread,
Mar 20, 2012, 12:04:59 AM3/20/12
to FHEM users
Was mir beim schlafen noch eingefallen ist, ich lasse alle Logfiles
auch in eine MySQL Datenbank schreiben. Vielleicht kann man damit ja
was anfangen oder es ist leichter oder so.

Ich hoffe, dass mir noch jemand eine erfolgreiche Lösung bringen kann.
Bin dann mal wieder im Bett.

kleene1503

unread,
Mar 20, 2012, 11:31:00 PM3/20/12
to FHEM users
Habe noch immer keine Lösung gefunden. Leider habe ich auch momentan
nichtmal den Hauch einer Idee. Keiner da der helfen kann?

Rudolf Koenig

unread,
Mar 21, 2012, 9:00:36 AM3/21/12
to fhem-...@googlegroups.com
On Tue, Mar 20, 2012 at 08:31:00PM -0700, kleene1503 wrote:
> Habe noch immer keine L�sung gefunden. Leider habe ich auch momentan

> nichtmal den Hauch einer Idee. Keiner da der helfen kann?

Ich habe Fehler in meinem notify gehabt, der Hinweis: "habs nicht getestet" war
so zu verstehen, dass ich die generelle Idee gegeben habe, aber diese Idee wie
auf http://fhem.de/commandref.html#perl beschrieben, Schritt fuer Schritt
getestet / gedebugged werden sollte -> ich erwarte ein bisschen Mitwirkung.

Naechster Versuch:

define WM_State dummy
define WM_Aus notify K_WM_Verbrauch:CNT.*5MIN.* {\
if(%EVTPART5 == 0) {\

kleene1503

unread,
Mar 21, 2012, 12:17:08 PM3/21/12
to FHEM users
Wenn ich das so nehme wie es ist und in FHEM in das Textfeld einfüge,
bekomme ich keinen Fehler angezeigt. Auch wenn ich es über das WEB-
Interface in die Config eintrage, bekomme ich keinen Fehler angezeigt.

Funktionieren tut es aber nicht.

Ich werde mich später mal bei dem link einlesen den du mir gegeben
hast. Vielleicht bin ich ja dann etwas hilfreicher.

Zwei Frage noch für mich zum Verständnis.

Für was steht das: (%EVTPART5 == 0) bei if(%EVTPART5 == 0)?

Für was steht das: CNT.*5MIN.* bei K_WM_Verbrauch:CNT.*5MIN.*? Also
ich weis das das in meinem Logfile steht aber was bewirkt die Angabe
in diesem Fall?




kleene1503

unread,
Mar 21, 2012, 8:43:58 PM3/21/12
to FHEM users
Ich bin mir nicht sicher, ob ich das mit dem Debugen richtig
verstanden habe. Ich setze den Befehl im FHEM Web zwischen { } und
versuche dann die Fehler zu beseitigen?

Ich habe die Zeilen von dir jetzt mal auf eine Zeile gebracht und dann
im FHEM WEB ausgeführt:

{define WM_Aus notify K_WM_Verbrauch:CNT.*5MIN.* { if(%EVTPART5 == 0)
{fhem "set Waschmaschine,WM_State off" if(Value("WM_State") eq "on")}
else {fhem "setstate WM_State on"}} }

Nach ein paar Syntaxfehlern die ich behoben habe, bekomme ich jetzt
noch folgendes angezeigt:

syntax error at (eval 282) line 1, near "notify K_WM_Verbrauch:"
Global symbol "%EVTPART5" requires explicit package name at (eval 282)
line 1.

Bin ich den so auf dem richtigen Weg?

UliM

unread,
Mar 22, 2012, 4:08:33 AM3/22/12
to fhem-...@googlegroups.com
Hi,


Am Donnerstag, 22. März 2012 01:43:58 UTC+1 schrieb kleene1503:

{define WM_Aus notify K_WM_Verbrauch:CNT.*5MIN.* { if(%EVTPART5 == 0)
{fhem "set Waschmaschine,WM_State off" if(Value("WM_State") eq "on")}
else {fhem "setstate WM_State on"}} }

Bin ich den so auf dem richtigen Weg?
Nein :)
define...notify ist ein fhem-Befehl. Durch die geschweiften Klammern deklarierst Du Deine Eingabe aber als fperl-Kommando.

Drei Möglichkeiten:

define WM_Aus notify K_WM_Verbrauch:CNT.*5MIN.* { if(%EVTPART5 == 0)
{fhem "set Waschmaschine,WM_State off" if(Value("WM_State") eq "on")}
else {fhem "setstate WM_State on"}}

Oder
{fhem "define WM_Aus notify K_WM_Verbrauch:CNT.*5MIN.* { if(%EVTPART5 == 0)
{fhem "set Waschmaschine,WM_State off" if(Value("WM_State") eq "on")}
else {fhem "setstate WM_State on"}} "}

Zum Testen könntest Du dann das Eintreffen eines entsprechenden Funktelegramms mit trigger vortäaschen:
trigger K_WM_Verbrauch CNT... (aus dem Log kopiert)
Das sollte aber nicht nötig sein, da der Sensor ja lle Nase lang Funktelegramme sendet.

Ich hab mal den Teil
{if(%EVTPART5 == 0)

{fhem "set Waschmaschine,WM_State off" if(Value("WM_State") eq "on")}
else {fhem "setstate WM_State on"}}
in Notepad geprüft - Klammern sind scheinbar alle richtig gesetzt.
Ab und an hatte ich auch Probleme mit notifies, die immer wieder Syntax-Fehler produzierten, selbst wenn ich sie reduziert habe zu

define WM_Aus notify K_WM_Verbrauch:CNT.*5MIN.* { }
(in so nem Fall müsste man eigentlich mal ein verbose5-log produzieren...)
Zwei Wege zur Lösung:
1. das derzeitige define einmal löschen, shutdown restart, define wieder anlegen
2. Falls fhem auch dann noch widerspenstig bleibt, den code nach zB 99_myUtils auslagern und das notify reduzieren auf sowas wie
define WM_Aus notify K_WM_Verbrauch:CNT.*5MIN.* { doK_WM_Verbrauch("%EVTPART5") }

Vll hilft's ja.

Gruß, Uli

kleene1503

unread,
Mar 22, 2012, 1:25:39 PM3/22/12
to FHEM users
Irgendwie bin ich zu blöd dafür. Ich krieg das nicht auf die Reihe.

Eine andere Möglichkeit die mir eingefallen ist:

Gibt es eine Möglichkeit, FHEM zu sagen

überprüfe die letzte Zeile des EM 1000-EM Logfiles (siehe 1. Post) und
wenn die 8. Stelle den wert o.ooo hat, schalte den Dummy
"Waschmaschine" aus.

Vielleicht komme ich so ja weiter.

kleene1503

unread,
Mar 23, 2012, 5:37:56 PM3/23/12
to FHEM users
Yes, yes, yes...

Es funktioniert!!! Folgendes hat geklappt:


define WM_Aus notify K_WM_Verbrauch:CNT.*5MIN.* { if (%EVTPART5 == 0)
{ fhem "set Waschmaschine off" } else { fhem "set Waschmaschine
on" } }


Wenn jetzt der aktuelle Stromverbrauch (5MIN:) gleich null ist, wird
mein Dummy ausgeschaltet. Wenn Strom verbraucht wird, wird der Dummy
eingeschaltet.

Vorbei ist die Zeit in der ich immer in den Keller gehen musste, um zu
sehen, ob die Waschmaschine fertig ist :-)

Danke an Rudolf Koenig und UliM für eure Unterstützung.

B50one

unread,
Mar 26, 2012, 3:08:06 PM3/26/12
to FHEM users

Ich habe versucht dieses Beispiel zu übernehmen. Bei mit funzt das
leider nicht.

Was ist falsch an meinem Beispiel?

define Kaffeemaschine notify Strommessung:CNT.*5MIN.* { if (%EVTPART5
== 0) { fhem "set Lampe1 off" } else { fhem "set Lampe1 on}}

Hier die Einträge aus dem Notify:

DEF Strommessung:CNT.*5MIN.* { if (%EVTPART5 == 0) { fhem "set Lampe1
off" } else { fhem "set Lampe1 on}}
NAME Kaffeemaschine
NR 243
NTFY_ORDER 50-Kaffeemaschine
REGEXP Strommessung:CNT.*5MIN.*
STATE active
TYPE notify

Hier die letzten Einträge der LOG Datei:

012-03-26 21:03:36 CUL_EM Strommessung CNT: 195 CUM: 9.967 5MIN: 0.190
TOP: 1.290
2012-03-26 21:03:36 CUL_EM Strommessung tsecs: 1332788616
2012-03-26 21:03:36 CUL_EM Strommessung seqno: 195
2012-03-26 21:03:36 CUL_EM Strommessung peak: 1.29
2012-03-26 21:03:36 CUL_EM Strommessung total: 9.967
2012-03-26 21:03:36 CUL_EM Strommessung current_cnt: 19
2012-03-26 21:03:36 CUL_EM Strommessung current: 0.19
2012-03-26 21:03:36 CUL_EM Strommessung total_cnt: 9967
2012-03-26 21:03:36 CUL_EM Strommessung peak_cnt: 129
2012-03-26 21:03:36 CUL_EM Strommessung RAW: CNT: 195 CUM: 9967 5MIN:
19 TOP: 129


Gruß Klaus

kleene1503

unread,
Mar 26, 2012, 5:23:59 PM3/26/12
to FHEM users
> 012-03-26 21:03:36 CUL_EM Strommessung CNT: 195 CUM: 9.967 5MIN: 0.190
> TOP: 1.290
> 2012-03-26 21:03:36 CUL_EM Strommessung tsecs: 1332788616
> 2012-03-26 21:03:36 CUL_EM Strommessung seqno: 195
> 2012-03-26 21:03:36 CUL_EM Strommessung peak: 1.29
> 2012-03-26 21:03:36 CUL_EM Strommessung total: 9.967
> 2012-03-26 21:03:36 CUL_EM Strommessung current_cnt: 19
> 2012-03-26 21:03:36 CUL_EM Strommessung current: 0.19
> 2012-03-26 21:03:36 CUL_EM Strommessung total_cnt: 9967
> 2012-03-26 21:03:36 CUL_EM Strommessung peak_cnt: 129
> 2012-03-26 21:03:36 CUL_EM Strommessung RAW: CNT: 195 CUM: 9967 5MIN:
> 19 TOP: 129

Ist das das Logfile von deinem EM 1000-EM? Wenn ja, würde ich sagen,
dass damit was nicht stimmt. Meine sehen anderst aus (siehe 1. Post).
Weis aber nicht ob es damit was zu tun haben kann.

B50one

unread,
Mar 26, 2012, 11:33:36 PM3/26/12
to FHEM users

>
> Ist das das Logfile von deinem EM 1000-EM? Wenn ja, würde ich sagen,
> dass damit was nicht stimmt. Meine sehen anderst aus (siehe 1. Post).
> Weis aber nicht ob es damit was zu tun haben kann.

Nur die Position 1 ist der originale Auszug aus dem Logfile meines EM
1000-EM.

Der Rest wurde mit dem Event Monitor aufgenommen. Sorry ;-)



Gruß Klaus

kleene1503

unread,
Mar 27, 2012, 3:12:22 PM3/27/12
to FHEM users
Auch der sieht anders aus.

- Der Unterstrich zwischen Datum und Uhrzeit

- Bei mir steht nicht dabei, dass es CUL_EM ist sondern nur der
zugewiesene Name

Wie gesagt, ist nur eine Vermutung. Ich weis nicht ob es damit was zu
tun hat. Vielleicht meldet sich ja jemand der sich besser auskennt als
ich.

B50one

unread,
Mar 28, 2012, 2:11:27 PM3/28/12
to FHEM users

Habe meinen Notify aus der FHEM.cfg gelöscht und den veröffentlichten
nochmals kopiert und angepasst.

Jetzt funktioniert er. Wo warum jetzt, keine Ahnung.

Hatte beide Zeilen Punkt für Punkt, Komma für Komma verglichen. Einen
Unterschied konnte ich nicht feststellen.


Gruß Klaus

kleene1503

unread,
Mar 28, 2012, 2:49:19 PM3/28/12
to FHEM users
Einen Unterschied habe ich auf Abhieb gesehen. Zwischen den letzten
beiden geschweiften Klammern habe ich noch ein Leerzeichen was bei dir
nicht der Fall war.

Ich kann mir aber beim besten Willen nicht vorstellen, das es daran
gelegen haben soll.

kermi

unread,
Mar 31, 2012, 12:49:19 PM3/31/12
to fhem-...@googlegroups.com
Script funktioniert super, ich nutze es für die PV und sehe, wann eingespeist wird bzw. kann damit Verbraucher ein- bzw. ausschalten.

Meine eigentliche Frage: kann man den Abfrageintervall von 5min auf 30min oder so hochsetzen?
Hintergrund : ich will den Funkverkehr einfach niedrig halten. Momentan wird jetzt auch in der Nacht alle 5min ein "off-befehl" gesendet.

Gruss
Stephan
Reply all
Reply to author
Forward
0 new messages