watchdog mit IF verknüpfen

Begonnen von dieoma, 14 September 2016, 19:57:35

Vorheriges Thema - Nächstes Thema

dieoma

Hallo,

ich teste  mir gerade den Wolf, komme aber irgendwie nicht aus dem Gehirnknoten und hoffe auf Eure Hilfe. Ich habe einen watchdog der den Status eines Fensters überwacht und wenn der von closed zu open springt bekomme ich im 20min eine pushmessage. Konkret sieht die Definition so aus:
define watchdog_HB_Fenster1 watchdog HB_Fenster:open 00:20 HB_Fenster:closed set pushmsg msg "FHEM" "Fenster im Bad oben länger als 20min auf!";; setstate watchdog_HB_Fenster1 defined
Nun möchte die Hausdame aber das dies nur geschickt wird wenn es draußen >20 Grad ist. Kein Thema denke ich denn ich habe ein weather Modul das mir als reading "temp_c" zur Verfügung stellt. Nun habe ich mir im Wiki die IF/THEN Verknüpfung angeschaut http://fhem.de/commandref.html#IF bringe das aber trotzdem nicht zusammen. Wer kann mir hier mal unter die schwitzigen Arme greifen?

Gruß und vielen Dank
Markus
FHEM5.8 auf Raspi 2, HomeMatic über HMLan mit einigen Aktoren, IT433 Steckosen über CUL, Squeezebox und Tablet-UI

Benni

Keine Ahnung, ob IF an der stelle überhaupt geht.

Aber du kannst den Ausführungsteil deines watchdog (dort wo bisher dein set .... steht) ja in die Perl-Ebene verlegen.

{
  if(ReadingsNum('NameDesWeatherDevice','temp_c',0) <20) {
    fhem("set ....")
  }
}

dieoma

Danke für den Input. Wenn ich dich richtig verstehe müsste das dann in die 99_myUtils.pm rein. Das sollte dann wohl so aussehen da ich die IF Anweisung verschachteln muss da der Fensterstatus zusätzlich "open" sein muss:

{
  if(ReadingsNum('HMLAN1','HB_Fenster',0) open) {
           if(ReadingsNum('Meinwetter','temp_c',0) <20) {
                   fhem("set pushmsg msg "FHEM" "Fenster im Bad oben länger als 20min auf!"")
            }
  }
}


Liege ich falsch oder sollte das so klappen?
FHEM5.8 auf Raspi 2, HomeMatic über HMLan mit einigen Aktoren, IT433 Steckosen über CUL, Squeezebox und Tablet-UI

Benni

Zitat von: dieoma am 14 September 2016, 21:10:14
Wenn ich dich richtig verstehe müsste das dann in die 99_myUtils.pm rein

Nein!

Zitat von: Benni am 14 September 2016, 20:41:10
... den Ausführungsteil deines watchdog (dort wo bisher dein set .... steht)

Und wieso hat dein HMLAN1 ein Reading HB_Fenster, dessen numerischen Wert du abfragen willst?

Zitat von: dieoma am 14 September 2016, 21:10:14
{
  if(ReadingsNum('HMLAN1','HB_Fenster',0) open) {


Die Abfrage ist Blödsinn (und falsch!), die brauchst du nicht! Du triggerst doch schon im regex deines watchdog auf den Fensterkontakt

dieoma

ok, nächster Versuch:
define watchdog_HB_Fenster1 watchdog HB_Fenster:open 00:20 HB_Fenster:closed if(ReadingsNum('MeinWetter','temp_c',0) <20) {fhem("set pushmsg msg "FHEM" "Fenster im Bad oben länger als 20min auf!";; setstate watchdog_HB_Fenster1 defined")}

wenn ich jetzt noch immer falsch liege bitte etwas genauer was wo hin gehört. Ich bin mir sicher das ist für Profis wie euch total klar :-)
FHEM5.8 auf Raspi 2, HomeMatic über HMLan mit einigen Aktoren, IT433 Steckosen über CUL, Squeezebox und Tablet-UI

Benni

Du sollst den kompletten Ausführungsteil des Watchdog in die Perl-Ebene legen, deshalb muss auch der komplette Ausführungsteil in geschweiften klammern stehen (deshalb habe ich die oben auch extra hingeschrieben)

Den setstate-Quatsch beim Watchdog habe ich vorhin leider übersehen, sonst hätte ich dir gleich noch geschrieben, dass man das so nicht macht. Um den Watchdog nach dem Ausführen wieder scharf zu schalten, gibt es inzwischen ein Attribut autoRestart (s. Commandref) das man genau für den Zweck auf 1 setzen sollte.


define watchdog_HB_Fenster1 watchdog HB_Fenster:open 00:20 HB_Fenster:closed {if(ReadingsNum('MeinWetter','temp_c',0) <20) {fhem("set pushmsg msg "FHEM" "Fenster im Bad oben länger als 20min auf!");}}


sollte wahrscheinlich funktionieren. Getestet habe ich es auch nicht!

Editierst du eigentlich in der fhem.cfg direkt?


dieoma

das mit dem autoRestart find ich super und war mir bislang unbekannt. Spiele nicht so häufig an meinem FHEM herum - damals gab´s das wahrscheinlich noch nicht.
Zitat von: Benni am 14 September 2016, 22:34:12
Editierst du eigentlich in der fhem.cfg direkt?
Nein, mache ich nicht - nur über Edit files. Ich werde das morgen mal testen - danke erstmal für deine Hilfe!
FHEM5.8 auf Raspi 2, HomeMatic über HMLan mit einigen Aktoren, IT433 Steckosen über CUL, Squeezebox und Tablet-UI

Benni

Zitat von: dieoma am 14 September 2016, 23:01:53
Nein, mache ich nicht - nur über Edit files.

Das ist übrigens auch direktes Editieren der fhem.cfg.

Ich würde dir unbedingt empfehlen, die komplette Konfiguration über die Kommandozeile im FHEMWEB zu machen, bzw. über die Bearbeitung der DEF in den jeweiligen Devices. Da bekommt man direkt Rückmeldung, wenn man ein Kommando (define o.ä.) nicht richtig eingibt, bzw. für DEF kann sogar eine Syntaxüberprüfung eingeschaltet werden.


Muschelpuster

Mal quer gedacht vom Dummy: Wie wäre es mit einem DOIF? Mit dem Wait-Attribut geht das und die Bedingungen sind auch kein Ding. Oder übersehe ich da was?

alternative Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Benni

Hat jetzt doch relativ lange gedauert, bis wieder jemand ein DOIF in den Ring wirft.  ::)

Muschelpuster

Ja sorry, aber warum will ich viel biegen, wenn es so geht? Ich weiß - es ist teilweise unbeliebt, aber ich stecke nicht tief genug in der Materie, um an diesem Gefecht teilzunehmen.

oberflächliche Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF