"Holz nachlegen" Logik klappt nicht

Begonnen von Gunther, 14 November 2017, 21:46:14

Vorheriges Thema - Nächstes Thema

Gunther

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@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

Damian

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-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Gunther

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@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

Damian

Zitat von: Gunther 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?

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

Gunther

Teste gerade. Habe nochmal 2 Scheite nachgelegt :-)
Danke Dir!
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

Gunther

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@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

Gunther

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@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden