Hallo zusammen.
Entschuldigt bin noch Relativ neu bei FHEM.
Jetzt probiere ich leider schon längeres den Gesamtverbrauch auf ein Dummy oder so anzuzeigen.
Ich habe mich durch die Forum gelesen und wurde leider nicht ganz schlau daraus.
Mein nicht funktionierender Code :
define ALL_STROM_MELDER dummy
define STROM_ALL_SZENARIO notify { \\
my $BU = ReadingsVAL("BU_ZW_STROM:power.*);;\
my $KU = ReadingsVAL("KU_ZW_STROM:power.*);;\
my $SZ = ReadingsVAL("SZ_ZW_STROM:power.*);;\
my $KZ = ReadingsVAL("KZ_ZW_STROM:power.*);;\
my $WZ = ReadingsVAL("WZ_ZW_STROM:power.*);;\
my $GA = ReadingsVAL("GA_ZW_STROM:power.*);;\
my $ALL = $GA + $WZ + $KZ +$SZ + $KU + $BU ;;\
fhem("set ALL_STROM_MELDER $ALL");;\
}
Jedoch bekommt der dummy kein Wert ?!?
Währe euch sehr Dankbar für eine Unterstützung.
GRuss Michel
Mach mal statt:
fhem("set ALL_STROM_MELDER $ALL");;\
lieber:
fhem("setreading ALL_STROM_MELDER $ALL");;\
Leider ist dieses notify nicht sonderlich flexibel.
Ich habe bspw. nur zwei verschiedene Messsteckdosen im Einsatz die ich über die modelId finden kann (devspec).
Meine Steckdosen heißen alle SD mit vorangestelltem Raumkürzel und einer Zahl hinten dran. z.B. wz_SD3 oder fl_SD1.
Mein notify dafür sieht dann so aus:
define n_Stromverbrauch notify (bz|fl|ku|sz|wz)_SD[1-9]:power|energy:.* {
my $evt = $EVTPART0;
my $read = (split(":",$evt))[0];
return undef if ($read !~ /^(energy|power)$/);
my $val = 0;
foreach my $dev (devspec2array("modelId=010f-0600-1000|0258-0003-1087"))
{
$val = $val + (split(" ",ReadingsVal($dev,$read,0)))[0];
}
fhem "setreading Stromverbrauch $read $val";
}
Gruß
Dan
hallo Dan
Vielen Dank für deine schnelle Hilfe,
leider hat es mit deinem Vorschlag nicht funktioniert, der dummy steht immer noch auf ???
Zu deinem Beispiel, leider bin ich noch ein Anfänger und kann keine Schlussfolgerungen auf mein "Szenario" machen :(
ReadingsVAL ist leider völlig falsch in Deinem notify!!!
Es wird ReadingsVal geschrieben und benötigt 3 Parameter:
ReadingsVal("<DeviceName>","<Reading>","<defaultWert>")
Bitte einfach mal das Einsteiger-PDF (http://fhem.de/Heimautomatisierung-mit-fhem.pdf) lesen und verstehen.
Gruß
Dan
Nochmals danke für deine schnelle Antwort.
Dies habe ich zwar schon paar mal , jedoch wahrscheinlich zuwenig oder so..
Ich dachte frage mal im Forum. da dies so nirgends direkt beschrieben ist.
Velen Dank , falls ich es lösen kann, werde ich natürlich mein code hier bereit stellen für andere.
Gruss Michel
Hier mal ein Beispiel, vielleicht hilft Dir das:
my $BU = ReadingsVal("BU_ZW_STROM","power","0");;\
Bei erwarteten Zahlen im Reading kann statt ReadingsVal auch ReadingsNum verwendet werden. Der letzte Parameter (Defaultwert) muss dann aber auch eine Zahl ohne Anführungsstriche sein.
Gruß
Dan
Die erste Frage die sich mir stellt ist, wird Dein Notify überhaupt getriggert?
Das erwähnst Du das Du noch Anfänger bist, hast aber bereits Perlcode in ein Notify was für Anfänger sicherlich so nicht gedacht ist. Was ich erkenne ist das Du rätst weil Du blind bist.
Baue Dir Sehhilfen ein. Lass Dir jede Zeile den Wert Deiner Variablen ausgeben um zu sehen ob das auslesen geklappt hat.
Stichwort Print oder printf. Du kannst auch Log1 verwenden. Mit diesen Stichwörtern findest Du hier im Forum Recht schnell Lösungen für Logausgaben.
Hallo cooltux.
Vielen Dank für dein Tipp , dies werde ich heute Abend gleich "googeln"/probieren. Danke für deine Hilfe.
Und selbst verständlich werde ich danach mein Resultat hier posten.
Anfänger bin ich gegen euch :) Aber gebe mir die größte Mühe ;)
LG Michel
Nachtrag : das notify wird meiner Meinung g nach nicht getriggert :(
Gesendet von meinem HTC One A9 mit Tapatalk
Bitte poste in Codetags ein list Deines Notifydevices.
list notifySummVerbrauch
Nachdem es Deiner Meinung nach auslösen sollte.
Ok ich sehe gerade das Teil kann nicht auslösen. Du hast keinerlei RegEx für ein Event angegeben. Bitte noch mal ins Thema Notify einlesen.
Wird gemacht :) Vielen Dank für deine super Unterstützung. Habe noch einiges zu Lesen , lernen.
Aus diesem Grund Anfänger ;)
Gesendet von meinem HTC One A9 mit Tapatalk
Nachtrag: hier meine list STROM_ALL
Internals:
CFGFN
DEF { \\
my $BU = ReadingsVAL("BU_ZW_STROM","power","0");\
my $KU = ReadingsVAL("KU_ZW_STROM","power","0");\
my $SZ = ReadingsVAL("SZ_ZW_STROM","power","0");\
my $KZ = ReadingsVAL("KZ_ZW_STROM","power","0");\
my $WZ = ReadingsVAL("WZ_ZW_STROM","power","0");\
my $GA = ReadingsVAL("GA_ZW_STROM","power","0");\
my $ALL = $GA + $WZ + $KZ +$SZ + $KU + $BU ;\
fhem("setreading Stromverbrauch $ALL");\
}
NAME STROM_ALL_SZENARIO
NR 12146
NTFY_ORDER 50-STROM_ALL_SZENARIO
REGEXP {
STATE active
TYPE notify
Readings:
2016-11-23 22:31:14 state active
Attributes:
Muss mich jedoch echt in das Thema Regex einarbeiten.
So ich habe die Lösung, dank einem Kollegen :D
Hier für die es Interessiert:
Internals:
CFGFN
DEF (BU|WZ|KU|SZ|KZ)_SD[1-9]:power|energy:.* {
# BU
my $BU = ReadingsVal("BU_SD1","power","0");; # xx.yyy W
my $BUZahl = (split(" ",$BU))[0];; # xx.yyy
# WZ
my $WZ = ReadingsVal("WZ_SD1","power","0");; # xx.yyy W
my $WZZahl = (split(" ",$WZ))[0];; # xx.yyy
# KU
my $KU = ReadingsVal("KU_SD1","power","0");; # xx.yyy W
my $KUZahl = (split(" ",$KU))[0];; # xx.yyy
# SZ
my $SZ = ReadingsVal("SZ_SD1","power","0");; # xx.yyy W
my $SZZahl = (split(" ",$SZ))[0];; # xx.yyy
# KZ
my $KZ = ReadingsVal("KZ_SD1","power","0");; # xx.yyy W
my $KZZahl = (split(" ",$KZ))[0];; # xx.yyy
# summe aller werte
my $total = $BUZahl + $WZZahl + $KUZahl + $SZZahl + $KZZahl;;
fhem ("set Stromverbrauch $total W");;
}
NAME Strom_Messer
NR 2915
NTFY_ORDER 50-Strom_Messer
REGEXP (BU|WZ|KU|SZ|KZ)_SD[1-9]:power|energy:.*
STATE 2016-11-28 23:35:34
TYPE notify
Readings:
2016-11-28 22:49:32 state active
Attributes:
room Szenario
Es Funktioniert :)
Gruss Michel
Zitat von: Michel G. am 28 November 2016, 23:37:56
So ich habe die Lösung, dank einem Kollegen :D
Hier für die es Interessiert:
Internals:
CFGFN
DEF (BU|WZ|KU|SZ|KZ)_SD[1-9]:power|energy:.* {
# BU
my $BU = ReadingsVal("BU_SD1","power","0");; # xx.yyy W
my $BUZahl = (split(" ",$BU))[0];; # xx.yyy
# WZ
my $WZ = ReadingsVal("WZ_SD1","power","0");; # xx.yyy W
my $WZZahl = (split(" ",$WZ))[0];; # xx.yyy
# KU
my $KU = ReadingsVal("KU_SD1","power","0");; # xx.yyy W
my $KUZahl = (split(" ",$KU))[0];; # xx.yyy
# SZ
my $SZ = ReadingsVal("SZ_SD1","power","0");; # xx.yyy W
my $SZZahl = (split(" ",$SZ))[0];; # xx.yyy
# KZ
my $KZ = ReadingsVal("KZ_SD1","power","0");; # xx.yyy W
my $KZZahl = (split(" ",$KZ))[0];; # xx.yyy
# summe aller werte
my $total = $BUZahl + $WZZahl + $KUZahl + $SZZahl + $KZZahl;;
fhem ("set Stromverbrauch $total W");;
}
NAME Strom_Messer
NR 2915
NTFY_ORDER 50-Strom_Messer
REGEXP (BU|WZ|KU|SZ|KZ)_SD[1-9]:power|energy:.*
STATE 2016-11-28 23:35:34
TYPE notify
Readings:
2016-11-28 22:49:32 state active
Attributes:
room Szenario
Es Funktioniert :)
Gruss Michel
Schön dass Du es hinbekommen hast!
Ich baue gerade an einem HouseMode Modul (https://forum.fhem.de/index.php/topic,61462.0.html).
In dieses werde ich auch noch eine Funktion zur automatischen Gesamtstromverbrauchsberechnung einbauen.
Gruß
Dan
Hallo zusammen
Leider habe ich ein weiteres Problem und hoffe jemand kann mir helfen oder ein Tipp geben .
Das summieren alles power reading zum gesamtverbrauch funktioniert. Jedoch wie kann isch das Tageswert errechnen?
Meine Stecker liefern leider kein total readung
LG Michel
Gesendet von meinem HTC One A9 mit Tapatalk
Eventuell hilft hier das STATISTIK Modul weiter.