Autor Thema: Nach Stromverbrauch schalten / Waittimer zurücksetzen  (Gelesen 421 mal)

Offline docb

  • Sr. Member
  • ****
  • Beiträge: 535
Nach Stromverbrauch schalten / Waittimer zurücksetzen
« am: 12 August 2018, 15:32:53 »
Grüß Euch, ich versuche gerade meinen 3D Drucker im Leerlauf auszuschalten. Dazu habe ich ein kleies Doif gebastelt:
([3D_Strom_Pwr:power] < 8 and [?3D_Strom_Sw] eq "on") (msg mail Schalte drucker ab)Dazu ein do resetwait und ein wait 600, denn Ziel soll es sein, dass er wenn er 10 Minuten im Leerlauf ist (<8 Watt), dass er dann abgeschaltet wird. Aber eben keinesfalls, wenn der Verbrauch wieder hoch geht (weil ich eben einen neuen Druck angestoßen habe). Allerdings funktioniert das so nicht, er triggert zwar brav auf den Stromverbrauch, setzt das Doif aber nicht zurück, wenn der Stromverbrauch wieder höher geht. Soweit ich die Commandref verstanden habe, sollte das doch mit resetwait gehen?
Viele Grüße
doc
I love FHEM!

Offline sash.sc

  • Hero Member
  • *****
  • Beiträge: 1379
Antw:Nach Stromverbrauch schalten / Waittimer zurücksetzen
« Antwort #1 am: 12 August 2018, 15:42:22 »
Dann versuche mal

Attr wait 600:20


Das besagt das dein leistungslevel für 600 Sekunden unter 8 Watt sein muss, dann wird der Drucker abgeschaltet.
Wenn der Drucker über 8 Watt ist, und das für 20 Sekunden in diesen Fall, dann bleibt der Drucker an.

Gruß Sascha

Gesendet von meinem E6653 mit Tapatalk

Raspi 2 ; LaCrosse; HomeMatic; 1x TX 29 als Lichtsensor umgebaut;
ESP8622 ;nanoCUL a-fw (433 & 868 MHz); miniCULwlan;
WLANduino 433&868 ; WlanCul

Offline docb

  • Sr. Member
  • ****
  • Beiträge: 535
Antw:Nach Stromverbrauch schalten / Waittimer zurücksetzen
« Antwort #2 am: 12 August 2018, 18:43:16 »
Hm, das scheint nicht zu  klappen - das gleiche wie vorher, er schickt die Nachricht los, obwohl der Drucker schon wieder druckt - im Ernstfall hätte er einfach den Druck abgebrochen ;-)
Ich glaube ich mache es einfach klassisch wie früher... mit einem notify ein at +00:05:00 anlegen und dann mit if fragen, ob der Verbrauch immer noch so niedrig ist... aber das müsste Doif doch auch können also ohne ein at zu definieren?!
I love FHEM!

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 5821
Antw:Nach Stromverbrauch schalten / Waittimer zurücksetzen
« Antwort #3 am: 12 August 2018, 21:18:05 »
Hm, das scheint nicht zu  klappen - das gleiche wie vorher, er schickt die Nachricht los, obwohl der Drucker schon wieder druckt - im Ernstfall hätte er einfach den Druck abgebrochen ;-)
Ich glaube ich mache es einfach klassisch wie früher... mit einem notify ein at +00:05:00 anlegen und dann mit if fragen, ob der Verbrauch immer noch so niedrig ist... aber das müsste Doif doch auch können also ohne ein at zu definieren?!

Poste mal Ausgabe von list deines DOIFs.
Programmierte FHEM-Module: DOIF mit uiTable, DOIF-Perl, THRESHOLD, FHEM-Befehl: IF

Offline docb

  • Sr. Member
  • ****
  • Beiträge: 535
Antw:Nach Stromverbrauch schalten / Waittimer zurücksetzen
« Antwort #4 am: 13 August 2018, 08:24:59 »
Guten Morgen,
das hier wäre der List - der Drucker läuft gerade ;-)

Internals:
   DEF        ([3D_Strom_Pwr:power] < 8 and [?3D_Strom_Sw] eq "on") (msg mail Schalte drucker ab)
   MODEL      FHEM
   NAME       do3D_Ruhe_aus
   NR         1236
   NTFY_ORDER 50-do3D_Ruhe_aus
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2018-08-13 08:21:59   Device          3D_Strom_Pwr
     2018-08-12 21:12:06   cmd             1
     2018-08-12 21:12:06   cmd_event       3D_Strom_Pwr
     2018-08-12 21:12:06   cmd_nr          1
     2018-08-13 08:21:59   e_3D_Strom_Pwr_power 149.32
     2018-08-12 13:26:12   mode            enabled
     2018-08-12 21:12:06   state           cmd_1
     2018-08-12 21:12:04   wait_timer      no timer
   Regex:
   attr:
     cmdState:
     wait:
       0:
         300
       1:
         20
     waitdel:
   condition:
     0          ReadingValDoIf($hash,'3D_Strom_Pwr','power') < 8 and InternalDoIf($hash,'3D_Strom_Sw','STATE') eq "on"
   devices:
     0           3D_Strom_Pwr
     all         3D_Strom_Pwr
   do:
     0:
       0          msg mail Schalte drucker ab
     1:
   helper:
     event      boot: off,current: 1092,eState: E: 275.2 P: 149.32 I: 1092 U: 228.2 f: 49.99,energy: 275.2,energyCalc: 7892.5,frequency: 49.99,power: 149.32,275.2,voltage: 228.2,zaehler: 7882.10000000034
     globalinit 1
     last_timer 0
     sleepdevice 3D_Strom_Pwr
     sleepsubtimer -1
     sleeptimer -1
     timerdev   3D_Strom_Pwr
     timerevent boot: off,current: 69,eState: E: 270.9 P: 7.26 I: 69 U: 230.3 f: 49.99,energy: 270.9,energyCalc: 7888.2,frequency: 49.99,power: 7.26,270.9,voltage: 230.3,zaehler: 7877.80000000034
     triggerDev 3D_Strom_Pwr
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: 3D_Strom_Pwr
       state: cmd_1
     timerevents:
       boot: off
       current: 69
       eState: E: 270.9 P: 7.26 I: 69 U: 230.3 f: 49.99
       energy: 270.9
       energyCalc: 7888.2
       frequency: 49.99
       power: 7.26
       270.9
       voltage: 230.3
       zaehler: 7877.80000000034
     timereventsState:
       boot: off
       current: 69
       eState: E: 270.9 P: 7.26 I: 69 U: 230.3 f: 49.99
       energy: 270.9
       energyCalc: 7888.2
       frequency: 49.99
       power: 7.26
       state: 270.9
       voltage: 230.3
       zaehler: 7877.80000000034
     triggerEvents:
       boot: off
       current: 1092
       eState: E: 275.2 P: 149.32 I: 1092 U: 228.2 f: 49.99
       energy: 275.2
       energyCalc: 7892.5
       frequency: 49.99
       power: 149.32
       275.2
       voltage: 228.2
       zaehler: 7882.10000000034
     triggerEventsState:
       boot: off
       current: 1092
       eState: E: 275.2 P: 149.32 I: 1092 U: 228.2 f: 49.99
       energy: 275.2
       energyCalc: 7892.5
       frequency: 49.99
       power: 149.32
       state: 275.2
       voltage: 228.2
       zaehler: 7882.10000000034
   internals:
     0           3D_Strom_Sw:STATE
     all         3D_Strom_Sw:STATE
   itimer:
   readings:
     0           3D_Strom_Pwr:power
     all         3D_Strom_Pwr:power
   trigger:
   uiState:
   uiTable:
Attributes:
   do         resetwait
   wait       300:20
I love FHEM!

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10611
    • Otto's Technik Blog
Antw:Nach Stromverbrauch schalten / Waittimer zurücksetzen
« Antwort #5 am: 13 August 2018, 08:58:22 »
Moin,

bist Du sicher das in 3D_Strom_Sw im STATE wirklich "on" steht?

Vielleicht musst Du 3D_Strom_Sw:state nehmen?

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266

Online amenomade

  • Hero Member
  • *****
  • Beiträge: 2717
Antw:Nach Stromverbrauch schalten / Waittimer zurücksetzen
« Antwort #6 am: 13 August 2018, 09:43:18 »
Mit nur "wait 600" und kein "do resetwait" sollte es gehen.
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten

F:"Schatz? Mach aus bitte"
M: "Alexa? Licht aus"-"Ich bin mir leider nicht sicher"  M:"Alexa? aus Licht"-"Das weiss ich leider nicht" M:"Alexa? Schalte...
F: "Drück mal auf den blöden Knopf!

Online amenomade

  • Hero Member
  • *****
  • Beiträge: 2717
Antw:Nach Stromverbrauch schalten / Waittimer zurücksetzen
« Antwort #7 am: 13 August 2018, 10:06:37 »
Zitat
Allerdings funktioniert das so nicht, er triggert zwar brav auf den Stromverbrauch, setzt das Doif aber nicht zurück, wenn der Stromverbrauch wieder höher geht. Soweit ich die Commandref verstanden habe, sollte das doch mit resetwait gehen?

Da hast Du die Commandref falsch verstanden. Wenn der Stromverbrauch wieder höher geht, ändert sich der Zustand deines DOIFs auf cmd_2. Dein resetwait führt nur dazu, dass bei jedem neuen Event pwr, wo pwr < 8, er wiederum von 0 zählt.
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten

F:"Schatz? Mach aus bitte"
M: "Alexa? Licht aus"-"Ich bin mir leider nicht sicher"  M:"Alexa? aus Licht"-"Das weiss ich leider nicht" M:"Alexa? Schalte...
F: "Drück mal auf den blöden Knopf!

Online gloob

  • Hero Member
  • *****
  • Beiträge: 2248
Antw:Nach Stromverbrauch schalten / Waittimer zurücksetzen
« Antwort #8 am: 13 August 2018, 11:53:37 »
So überwache ich meine Waschmaschine und meinen Drucker.

defmod Waschmaschine_Fertig DOIF ([HM_325D5B_Pwr:power] > 5 and [?Waschmaschine_Fertig] =~ "cmd_4|initialized")(set teleBot message "Waschmaschine ist an.")\
DOELSEIF ([HM_325D5B_Pwr:power] > 20 and [?Waschmaschine_Fertig] eq "cmd_1")(set teleBot message "Waschmaschine läuft.")\
DOELSEIF ([HM_325D5B_Pwr:power] > 20 and [?Waschmaschine_Fertig] eq "cmd_2")(set teleBot message "Waschmaschine ist fertig.")\
DOELSEIF ([HM_325D5B_Pwr:power] < 5 and [?Waschmaschine_Fertig] =~ "cmd_3|cmd_1")(set teleBot message "Waschmaschine ist aus.",set HM_325D5B_Sw off)
attr Waschmaschine_Fertig do resetwait
attr Waschmaschine_Fertig room Bad
attr Waschmaschine_Fertig wait 0:0:300:0

Über den Wait befehl kannst du die Wartezeiten einstellen, wann in einen neuen Status gewechselt wird. Bei mir muss der Verbrauchswert für 6 Minuten unter 20 Watt liegen, damit abgeschaltet wird bzw ich eine Message bekomme.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Offline Per

  • Hero Member
  • *****
  • Beiträge: 1367
Antw:Nach Stromverbrauch schalten / Waittimer zurücksetzen
« Antwort #9 am: 13 August 2018, 12:28:09 »
Zäum das Pferd andersrum auf:

([3D_Strom_Pwr:power] < 8) (msg mail Schalte drucker ab)DOELSE
+ wait 600:0
Mit Resetwait startet du den Timer ja jedesmal neu, das willst du doch gar nicht.

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 5821
Antw:Nach Stromverbrauch schalten / Waittimer zurücksetzen
« Antwort #10 am: 13 August 2018, 14:28:34 »
So überwache ich meine Waschmaschine und meinen Drucker.

defmod Waschmaschine_Fertig DOIF ([HM_325D5B_Pwr:power] > 5 and [?Waschmaschine_Fertig] =~ "cmd_4|initialized")(set teleBot message "Waschmaschine ist an.")\
DOELSEIF ([HM_325D5B_Pwr:power] > 20 and [?Waschmaschine_Fertig] eq "cmd_1")(set teleBot message "Waschmaschine läuft.")\
DOELSEIF ([HM_325D5B_Pwr:power] > 20 and [?Waschmaschine_Fertig] eq "cmd_2")(set teleBot message "Waschmaschine ist fertig.")\
DOELSEIF ([HM_325D5B_Pwr:power] < 5 and [?Waschmaschine_Fertig] =~ "cmd_3|cmd_1")(set teleBot message "Waschmaschine ist aus.",set HM_325D5B_Sw off)
attr Waschmaschine_Fertig do resetwait
attr Waschmaschine_Fertig room Bad
attr Waschmaschine_Fertig wait 0:0:300:0

Über den Wait befehl kannst du die Wartezeiten einstellen, wann in einen neuen Status gewechselt wird. Bei mir muss der Verbrauchswert für 6 Minuten unter 20 Watt liegen, damit abgeschaltet wird bzw ich eine Message bekomme.
Was soll resetwait hier bewirken? Es funktioniert mit resetwait hier nur deswegen, weil das Sendeintervall von HM_325D5B_Pwr über 6 Minuten liegt, ansonsten würde der Timer nie zum tragen kommen.
Programmierte FHEM-Module: DOIF mit uiTable, DOIF-Perl, THRESHOLD, FHEM-Befehl: IF

Online gloob

  • Hero Member
  • *****
  • Beiträge: 2248
Antw:Nach Stromverbrauch schalten / Waittimer zurücksetzen
« Antwort #11 am: 13 August 2018, 14:48:07 »
Keine Ahnung. hatte das ganze mal so hier im Forum gefunden und es funktioniert.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 5821
Antw:Nach Stromverbrauch schalten / Waittimer zurücksetzen
« Antwort #12 am: 13 August 2018, 14:54:30 »
Keine Ahnung. hatte das ganze mal so hier im Forum gefunden und es funktioniert.
ja, es wäre allerdings logischer do always zu verwenden (Wiederholungen werden durch Zustandsabfragen in der Definition mit cmd... unterbunden) damit es auch dann funktioniert, wenn die Wartezeit länger ist als das Sendeintervall vom Device.
Programmierte FHEM-Module: DOIF mit uiTable, DOIF-Perl, THRESHOLD, FHEM-Befehl: IF

Offline docb

  • Sr. Member
  • ****
  • Beiträge: 535
Antw:Nach Stromverbrauch schalten / Waittimer zurücksetzen
« Antwort #13 am: 13 August 2018, 20:25:00 »
 :D Vielen Dank für die ganzen Antworten.
@Otto: Danke, sowohl state als auch STATE sind on, das habe ich geprüft
@per und amenomade: ich versuche jetzt Eure Variante. Rein logisch (ich versuche immer gerne zu verstehen, was ich so treibe) läuft dann folgendes ab: Wert unter 8 Watter -> triggert (und prüft noch ob der Drucker an ist) dann geht der Waittimer los. Wenn die Werte unter 8 Watt bleiben -> Drucker aus. Wenn nicht, springt Doif ins cmd2 (was es ja nicht gibt -> also passiert nix). Wenn wieder unter 8 Watt beginnt der Kreislauf von Neuem. Habe ich das richtig gecheckt?
Viele Grüße
doc
I love FHEM!

Online amenomade

  • Hero Member
  • *****
  • Beiträge: 2717
Antw:Nach Stromverbrauch schalten / Waittimer zurücksetzen
« Antwort #14 am: 13 August 2018, 20:40:59 »
:D Vielen Dank für die ganzen Antworten.
@Otto: Danke, sowohl state als auch STATE sind on, das habe ich geprüft
@per und amenomade: ich versuche jetzt Eure Variante. Rein logisch (ich versuche immer gerne zu verstehen, was ich so treibe) läuft dann folgendes ab: Wert unter 8 Watter -> triggert (und prüft noch ob der Drucker an ist) dann geht der Waittimer los. Wenn die Werte unter 8 Watt bleiben -> Drucker aus. Wenn nicht, springt Doif ins cmd2 (was es ja nicht gibt -> also passiert nix). Wenn wieder unter 8 Watt beginnt der Kreislauf von Neuem. Habe ich das richtig gecheckt?
Viele Grüße
doc
Richtig. cmd2 gibt es aber implizit. Das ist der Zustand wenn pwr über 8 ist. Das DOELSE ist implizit (Per hat es geschrieben, ist aber nicht nötig) und das Kommando ist leer => macht nichts.

DOIF (Bedingung1) (Kommando1) ist gleich wie
DOIF (Bedingung1) (Kommando1) DOELSE (mach nix)so lange "do always" o.ä. nicht benutzt wird.
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten

F:"Schatz? Mach aus bitte"
M: "Alexa? Licht aus"-"Ich bin mir leider nicht sicher"  M:"Alexa? aus Licht"-"Das weiss ich leider nicht" M:"Alexa? Schalte...
F: "Drück mal auf den blöden Knopf!