Autor Thema: "Holz nachlegen" Logik klappt nicht  (Gelesen 225 mal)

Online Gunther

  • Hero Member
  • *****
  • Beiträge: 1114
"Holz nachlegen" Logik klappt nicht
« am: 14 November 2017, 21:46:14 »
Ich möchte anhand einer Pumpe eine Benachrichtigung erstellen, dass Holz nachgelegt werden muss.

Ich möchte, wenn die Pumpe länger als 10 Minuten unter 80% Leistung war den Status "Holz nachlegen" im Dummy setzen.

Da meine Coding-Möglichkeiten arg eingeschränkt sind habe ich es wie folgt probiert:
Im ersten DOIF setze ich einen Dummy (Pumpe_Kamin), wenn die Pumpe kleiner als 80% ist. Diesen will ich später mit dem Zeitstempel des states nutzen um zu erkennen, wie lange  die Pumpe schon unter 70% ist.

define doif_Pumpe_Kamin DOIF ([VBUSDEV_7321:speed_R03:d] <= 80 ) (set Pumpe_Kamin wenig_hitze)Das DOIF löst natürlich nicht aus, da ich bewußt kein DO always drin habe, da sonst der Zeitstempel nicht geht

Nun will ich im 2. DOIF den Status des Dummys verwerten, nämlich, wenn der Dummy auf "wenig_hitze" steht (tut er immer) und die letzte Statusänderung 30 Sekunden (hier zum Test) her ist.
define doif_KaminStatus DOIF ([Pumpe_Kamin:state] eq "wenig_hitze" and [Pumpe_Kamin:state:sec] > 30)\
(set StatusKamin Holz nachlegen)
attr doif_KaminStatus do always

Ich hätte schon gerne die Lösung für mein Problem.
Daneben gibt es doch bestimmt eine deutlich einfachere Lösung um mein Problem zu lösen. Könnt Ihr mir da auch auf die Sprünge helfen?

Das List von meiner Pumpe sieht so aus:
017-11-14 21:45:59   speed_R03       60 %
FHEM auf Rasperri PI: TabletUI als User-Interface (4 Wandtablets)
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

Offline Damian

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4458
Antw:"Holz nachlegen" Logik klappt nicht
« Antwort #1 am: 14 November 2017, 22:08:08 »
Das sollte schon reichen:

define doif_Pumpe_Kamin DOIF ([VBUSDEV_7321:speed_R03:d] <= 80 ) (set StatusKamin Holz nachlegen)
attr doif_Pumpe_Kamin wait 600
Programmierte FHEM-Module: DOIF mit UI, THRESHOLD; FHEM-Befehl: IF

Online Gunther

  • Hero Member
  • *****
  • Beiträge: 1114
Antw:"Holz nachlegen" Logik klappt nicht
« Antwort #2 am: 14 November 2017, 22:36:28 »
danke.

Laut Wiki wird doch nur die Ausführung des Befehls verzögert.
Wenn ich nun aber den Befehl gar nicht ausführen möchte, wenn die Leistung der Pumpe weniger als 600 Sekunden unter 80% ist?
FHEM auf Rasperri PI: TabletUI als User-Interface (4 Wandtablets)
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

Offline Damian

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4458
Antw:"Holz nachlegen" Logik klappt nicht
« Antwort #3 am: 14 November 2017, 22:41:53 »
danke.

Laut Wiki wird doch nur die Ausführung des Befehls verzögert.
Wenn ich nun aber den Befehl gar nicht ausführen möchte, wenn die Leistung der Pumpe weniger als 600 Sekunden unter 80% ist?

Dann schlägt cmd_2 zu ;)
Programmierte FHEM-Module: DOIF mit UI, THRESHOLD; FHEM-Befehl: IF

Online Gunther

  • Hero Member
  • *****
  • Beiträge: 1114
Antw:"Holz nachlegen" Logik klappt nicht
« Antwort #4 am: 14 November 2017, 23:13:30 »
Teste gerade. Habe nochmal 2 Scheite nachgelegt :-)
Danke Dir!
FHEM auf Rasperri PI: TabletUI als User-Interface (4 Wandtablets)
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

Online Gunther

  • Hero Member
  • *****
  • Beiträge: 1114
Antw:"Holz nachlegen" Logik klappt nicht
« Antwort #5 am: 15 November 2017, 13:28:56 »
Also, so habe ich es nun aufgebaut:

DOIF Dev:
([VBUSDEV_7321:speed_R03:d] < 80 and [StatusKamin:state eq "brennt"])
(set Holz_nachlegen ja)
(set Pushover msg title="Kamin" Holz nachlegen)
DOELSEIF
([VBUSDEV_7321:speed_R03:d] >= 80 )
(set Holz_nachlegen nein)

attr doif_Kamin_Holz_nachlegen wait 720,720:0
habe gerade die Situation, dass seit 15 Min. speed_R03 bei 70% steht (wird immer mal wieder geupdatet).
Leider springt Holz_nachlegen nicht auf ja.

Wie finde ich den Fehler
FHEM auf Rasperri PI: TabletUI als User-Interface (4 Wandtablets)
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

Online Gunther

  • Hero Member
  • *****
  • Beiträge: 1114
Antw:"Holz nachlegen" Logik klappt nicht
« Antwort #6 am: 15 November 2017, 14:10:53 »
Antwort selbst gefunden:

Hatte eine eckige Klammer falsch gesetzt...

([VBUSDEV_7321:speed_R03:d] < 80 and [StatusKamin:state] eq "brennt")
(set Holz_nachlegen ja)
(set Pushover msg title="Kamin" Holz nachlegen)
DOELSEIF
([VBUSDEV_7321:speed_R03:d] >= 80 )
(set Holz_nachlegen nein)

so sollte es gehen.

Außerdem sollen die beiden set-Befehle im ersten Teil zusammen ausgelöst werden:
attr doif_Kamin_Holz_nachlegen wait 720,0:0
FHEM auf Rasperri PI: TabletUI als User-Interface (4 Wandtablets)
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

 

decade-submarginal