Telegram & mehrere Bedingungen

Begonnen von rhoffm34, 12 Oktober 2018, 23:11:04

Vorheriges Thema - Nächstes Thema

rhoffm34

Hallo zusammen,

ich möchte gerne verschiedene Warnungen über Telegram versenden. Ich habe schon versucht es mit DOIF oder ein Notify zu realisieren aber es will nicht so recht funktionieren.

Was habe ich vor:

Zum Bsp die Kesseltemperatur und Vorlauftemperatur der Heizung überwachen

Kesseltemperatur < 60°C  ==> Telegram Message 
Vorlauftemperatur > 70°C  ==> Telegram Message

So klappt es jedenfalls nur bedingt:
Ist eine Bedingung erfüllt, kommen alle drei Nachrichten.

Kann mit jemand weiter helfen mit einer sauberen Lösung?

Viele Grüße

Vaddi

Kannst du mal ein List vom Device schicken?
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

rhoffm34

Kleinigkeit vergessen...

so habe ich es versucht zu übersetzten...

([Brauchwasser:temperature] < [P_Warning_Brauchwasser])
(set teleBot message @R_H BrauchwasserTemp zu niedrig: [Brauchwasser:temperature] )
([Hzg_Vorlauf:temperature] < [P_Warning_VorlaufTemp])
(set teleBot message @R_H Hzg_Vorlauf zu niedrig: [Hzg_Vorlauf:temperature] )
([Hzg_Vorlauf:temperature] > [P_Warning_VorlaufTemp])
(set teleBot message @R_H **Warnung**Hzg_Vorlauf zu hoch: [Hzg_Vorlauf:temperature] )

Vaddi

Woher kommt [P_Warning_Brauchwasser] und [P_Warning_VorlaufTemp]?
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

rhoffm34


Vaddi

Also steht im state vom [P_Warning_Brauchwasser] die Variable?
Nen List von den Geräten wäre bei so einer Fragestellung immer sehr hilfreich.
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

rhoffm34

Sorry... Ja im state steht die Variable.

Was meinst Du mit List vom Device? Guck mal das Bild im Anhang... ist es das?

Vaddi

Ein List vom jeweiligen Device bekommst du, wenn du in die FHEM Kommandozeile
list DEVICENAME
eingibst.
Also mach mal bitte
list P_Warning_Brauchwasser
und poste das Ergebnis mal hier in einem Code-Tag
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

rhoffm34

Internals:
   CFGFN     
   NAME       P_Warning_Brauchwasser
   NR         33023
   STATE      60
   TYPE       dummy
   READINGS:
     2018-10-13 00:05:23   state           60
Attributes:
   DbLogExclude .*
   room       Parameter

Vaddi

#9
Hier mal ein Notify
Brauchwasser:temperature:.*|Hzg_Vorlauf:temperature:.* {

if (ReadingsNum("Brauchwasser", "temperature", 45) < ReadingsNum("P_Warning_Brauchwasser","state",60)) {
          fhem("set teleBot message \@R_H BrauchwasserTemp zu niedrig: [Brauchwasser:temperature]");
}

if (ReadingsNum("Hzg_Vorlauf", "temperature", 45) < ReadingsNum("P_Warning_VorlaufTemp","state",60)) {
          fhem("set teleBot message \@R_H Hzg_Vorlauf zu niedrig: [Hzg_Vorlauf:temperature]");
}

if (ReadingsNum("Hzg_Vorlauf", "temperature", 45) > ReadingsNum("P_Warning_VorlaufTemp","state",60)) {
          fhem("set teleBot message \@R_H **Warnung**Hzg_Vorlauf zu hoch: [Hzg_Vorlauf:temperature]");
}

}


Der sendet jetzt allerdings jedes mal, sobald sich das temperature reading aktualisiert.
Dies kann man umgehen, indem man z.B. eine Hilfsvariable nimmt.
Alternativ könnte man auch mit einem Notify ein AT aktivieren, welches dir alle 30 Minuten eine
Meldung schickt, solange die Bedingungen erfüllt sind.

EDIT:
War nen Fehler drin!
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

rhoffm34

#10
Habe ich verstanden. Die Temperaturen ändern sich leider ständig wenn die Bedingung

(ReadingsNum("Brauchwasser", "temperature", 45) < ReadingsNum("P_Warning_Brauchwasser","state",60)

erfüllt ist.

Somit erhalte ich sehr viele Nachrichten. Ich möchte die Nachricht nur einmal senden. Die nächste Nachricht möchte ich erst wider senden wenn der Schwellwert unterschritten wird.


An ein at hatte ich auch schon gedacht. Nur bekomme ich die Warnung dann nicht Zeitnah sonder erst wenn das at auslöst...

Ist also noch nicht das was ich suche...

Vaddi

Eine Sache müsste ich noch wissen.

([Hzg_Vorlauf:temperature] < [P_Warning_VorlaufTemp])
(set teleBot message @R_H Hzg_Vorlauf zu niedrig: [Hzg_Vorlauf:temperature] )
([Hzg_Vorlauf:temperature] > [P_Warning_VorlaufTemp])
(set teleBot message @R_H **Warnung**Hzg_Vorlauf zu hoch: [Hzg_Vorlauf:temperature] )

Dieser Fall tritt ja immer auf, es sei denn, die Temperaturen sind exakt gleich.
Wie wird das gelöst? Sonst bekommst du ja für diese Nachrichten auch dauerhaft.
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

Vaddi

Ah, sorry, hab deinen editierten Text nicht gelesen.
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

Vaddi

Damit sollte es funktionieren.
Das message Reading ist eine Hilfsvariable.
Somit bekommst du die Nachricht nur ein mal, wenn die Temperatur überschritten wurde.
Sobald die Temperatur unterschritten wurde, wird das message reading zurückgesetzt und bei erneuter
Überschreitung bekommst du wieder eine Nachricht.


Brauchwasser:temperature:.*|Hzg_Vorlauf:temperature:.* {
if (ReadingsNum("Brauchwasser", "temperature", 45) < ReadingsNum("P_Warning_Brauchwasser","state",60) && ReadingsNum("P_Warning_Brauchwasser","message",0) == 0) {
          fhem("set teleBot message \@R_H BrauchwasserTemp zu niedrig: [Brauchwasser:temperature]");
  fhem("setreading P_Warning_Brauchwasser message 1");
}

if (ReadingsNum("Brauchwasser", "temperature", 45) > ReadingsNum("P_Warning_Brauchwasser","state",60) && ReadingsNum("P_Warning_Brauchwasser","message",0) == 1) {
  fhem("setreading P_Warning_Brauchwasser message 0");
}

if (ReadingsNum("Hzg_Vorlauf", "temperature", 45) < ReadingsNum("P_Warning_VorlaufTemp","state",60) && ReadingsNum("P_Warning_VorlaufTemp","message",0) == 0 ) {
          fhem("set teleBot message \@R_H Hzg_Vorlauf zu niedrig: [Hzg_Vorlauf:temperature]");
  fhem("setreading P_Warning_VorlaufTemp message 1");
}

if (ReadingsNum("Hzg_Vorlauf", "temperature", 45) > ReadingsNum("P_Warning_VorlaufTemp","state",60) && ReadingsNum("P_Warning_VorlaufTemp","message",0) == 1 ) {
          fhem("set teleBot message \@R_H **Warnung**Hzg_Vorlauf zu hoch: [Hzg_Vorlauf:temperature]");
  fhem("setreading P_Warning_VorlaufTemp message 0");
}
}
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

CoolTux

Brauchwasser
Hzg_Vorlauf
Hzg_Vorlauf

Alle drei bekommen ein userattr warnLevel. Dieses zusätzliche Attribut  wird dann in allen drei Devices gesetzt.
Danach wird in allen drei Devices ein userReading angelegt. Z.b. vorlaufTemp wo du dann high oder low rein schreiben lässt je nach deine Schwelle.
Und DAS triggerst Du dann mit einem Notify.
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