FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Michel G. am 23 November 2016, 14:34:53

Titel: Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag von: Michel G. am 23 November 2016, 14:34:53
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
Titel: Antw:Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag von: DeeSPe am 23 November 2016, 14:45:51
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
Titel: Antw:Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag von: Michel G. am 23 November 2016, 16:42:05
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 :( 
Titel: Antw:Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag von: DeeSPe am 23 November 2016, 16:48:37
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
Titel: Antw:Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag von: Michel G. am 23 November 2016, 17:04:59
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
Titel: Antw:Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag von: DeeSPe am 23 November 2016, 17:10:18
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
Titel: Antw:Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag von: CoolTux am 23 November 2016, 17:36:58
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.
Titel: Antw:Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag von: Michel G. am 23 November 2016, 17:47:42
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
Titel: Antw:Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag von: CoolTux am 23 November 2016, 17:55:00
Bitte poste in Codetags ein list Deines Notifydevices.


list notifySummVerbrauch


Nachdem es Deiner Meinung nach auslösen sollte.
Titel: Antw:Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag von: CoolTux am 23 November 2016, 17:56:06
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.
Titel: Antw:Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag von: Michel G. am 23 November 2016, 18:19:14
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.
Titel: Antw:Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag 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
Titel: Antw:Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag von: DeeSPe am 29 November 2016, 10:41:39
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
Titel: Antw:Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag von: Michel G. am 15 Dezember 2016, 18:51:05
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

Titel: Antw:Den Gesamtstromverbrauch mehrerer Geräte anzeigen lassen
Beitrag von: CoolTux am 15 Dezember 2016, 19:01:10
Eventuell hilft hier das STATISTIK Modul weiter.