Notify if Bedingungen Hinzufügen - Frage zu Klammern

Begonnen von Stonemuc, 23 Oktober 2018, 12:15:26

Vorheriges Thema - Nächstes Thema

Stonemuc

Hallo,

ich möchte mit einem notify eine Telegram message schicken - in meinem Fall abhängig von der gemessenen Außentemperatur meiner Heizung. Allerding müsste ich da auf if Bedingungen zurückgreifen, da das notify nur reagieren soll, wenn folgende Paramter erfüllt sind:

Außentemperatur unter 3°C
nur Wochentags
nur zwischen 1 Uhr und 5 Uhr
nur zwischen September und April

Hier mal mein Grundnotify:
define Standheizung notify Mythz:outside_temp:.* set Citylife500FHEM_Bot message Standheizung einschalten - Temperatur unter 3°C
Wie bekomme ich den Rest da nun rein?

my $hm = sprintf("%02d:%02d", $hour, $min)

if ($month >= 9 || $month <= 4 && $we = 0)

if ( $hm gt "01:00" && $hm lt "05:00")

if ($EVTPART1 < 3 )


Und stimmt das $EVTPART1 für die Temperatur?
FHEM aus Raspberry PI 3 B+, Haussteuerung auf EnOcean Basis, Tecalor THZ 404eco Wärmepumpe

CoolTux

Zitat von: Stonemuc am 23 Oktober 2018, 12:15:26
Hallo,

ich möchte mit einem notify eine Telegram message schicken - in meinem Fall abhängig von der gemessenen Außentemperatur meiner Heizung. Allerding müsste ich da auf if Bedingungen zurückgreifen, da das notify nur reagieren soll, wenn folgende Paramter erfüllt sind:

Außentemperatur unter 3°C
nur Wochentags
nur zwischen 1 Uhr und 5 Uhr
nur zwischen September und April

Hier mal mein Grundnotify:
define Standheizung notify Mythz:outside_temp:.* set Citylife500FHEM_Bot message Standheizung einschalten - Temperatur unter 3°C
Wie bekomme ich den Rest da nun rein?

my $hm = sprintf("%02d:%02d", $hour, $min)

if ($month >= 9 || $month <= 4 && $we = 0)

if ( $hm gt "01:00" && $hm lt "05:00")

if ($EVTPART1 < 3 )


Und stimmt das $EVTPART1 für die Temperatur?

Du triggerst auf die Aussentemperatur. So triggert Dein Notify ja ständig.
Ich würde im Temperatursensor ein userReadings setzen was ein Reading mit dem Wert "frost" schreibt wenn die Temp unter 3 Grad landet.
Auf frost triggert dann Dein Notify. Du willst nur zwischen 1 und 5 Uhr eine Nachricht bekommen, dann deaktiviere das Notify in der anderen Zeit disabledForInterval.
Du musst also nur noch den Monat abfragen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Stonemuc

Also kann ich das so nicht lösen mit den if Bedingungen im Notify? Ich hab das so ähnlich im notify Wiki gelesen...
Mir ist nicht klar, wie ich überhaupt die if Bedingung im notify "einklammere" bzw. dann mehrere if Bedingungen...
Das mit dem reading frost ist eine gute Idee...
FHEM aus Raspberry PI 3 B+, Haussteuerung auf EnOcean Basis, Tecalor THZ 404eco Wärmepumpe

CoolTux

Zitat von: Stonemuc am 23 Oktober 2018, 13:02:45
Also kann ich das so nicht lösen mit den if Bedingungen im Notify? Ich hab das so ähnlich im notify Wiki gelesen...
Mir ist nicht klar, wie ich überhaupt die if Bedingung im notify "einklammere" bzw. dann mehrere if Bedingungen...
Das mit dem reading frost ist eine gute Idee...

Doch kannst Du. Äh aber nicht so wie Du es geschrieben hast.


my $hm = sprintf("%02d:%02d", $hour, $min);

if ($month >= 9 || $month <= 4 && $we = 0) {
     if ( $hm gt "01:00" && $hm lt "05:00") {
         if ($EVTPART1 < 3 ) {
             alles past nachricht kann raus
         }
     }
}

So passt das besser. Meine Empfehlung wäre aber wirklich es so oder ähnlich zu machen wie ich oben geschrieben habe.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Beta-User

Hier kannst du auch (fast) alle Bedingungen mit && verketten, nur um or muss eine Klammer.
Vermutlich ist es EVTPART0, was du benötigt, oder sogar ReadingsNum().

Da auch ein userreading eine Art Auswertung erfordert, sehe ich keinen großen Vorteil, wenn man das vor schaltet.
(Hat jemand dazu mal Messergebnisse?)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

JoWiemann

Hm, soweit ich weiß hat das && die höhere Rangstufe gegenüber dem ||. Damit würde erst geprüft, ob der Monat < 4 und we == 0 oder der Monat > 9 ist. Somit würde bei Monat > 9 das Wochenende keine Rolle spielen. Siehe auch http://www.aip.de/groups/soe/local/handbuch/html/tecf.htm#a4 unter Rangfolge.


Gesendet von iPad mit Tapatalk
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Beta-User

Deswegen stend da was von einer Klammer um or (= ||)...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

JoWiemann

Zitat von: Beta-User am 23 Oktober 2018, 14:49:14
Deswegen stend da was von einer Klammer um or (= ||)...

Du warst schneller und ich hatte Deinen Post nicht mitbekommen...


Gesendet von iPad mit Tapatalk
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Stonemuc

Zitat von: CoolTux am 23 Oktober 2018, 12:26:29
Du triggerst auf die Aussentemperatur. So triggert Dein Notify ja ständig.
Ich würde im Temperatursensor ein userReadings setzen was ein Reading mit dem Wert "frost" schreibt wenn die Temp unter 3 Grad landet.
Auf frost triggert dann Dein Notify. Du willst nur zwischen 1 und 5 Uhr eine Nachricht bekommen, dann deaktiviere das Notify in der anderen Zeit disabledForInterval.
Du musst also nur noch den Monat abfragen

würde ich das userReadings dann im Prinzip in die Wetterstation integrieren? also z.B.

attr Weatherman userReadings frost { return "frost" if (ReadingsTimestamp($name,wm_var_temperature) < 3) } - ist das so richtig?
FHEM aus Raspberry PI 3 B+, Haussteuerung auf EnOcean Basis, Tecalor THZ 404eco Wärmepumpe