RandomTimer - neues Modul

Begonnen von Dietmar63, 28 Juli 2013, 15:52:40

Vorheriges Thema - Nächstes Thema

Dietmar63

attr ZufallsTimer2 disableCond (isVerreist())
Ohne ! Bekommst du genau das gegenteilige Verhalten.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Bracew

Danke für Deine schnelle Antwort Dietmar63,

habe gerade die Zeile mit disableCond gelöscht und werde heute abend die Lampe beobachten.

Ich hatte auch schon das Modul Twilight mal versucht, habe es aber nicht hinbekommen.
Wie müsste ich Twilight für die selbe Aufgabe programmieren, damit die Lampe abhängig von twilight_weather kleiner 60% zum Beispiel bis 22 Uhr eingeschaltet ist und danach wieder aus, aber nur wenn ich nicht verreist bin?

Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Bracew

#107
Hallo Dietmar63,

ich habe da nochmal drüber nachgedacht und habe Fragen.

Ich vermute nun, dass wenn ich die Zeile mit disableCond lösche, der Zufallstimer4 immer geschaltet wird, also in beiden Fällen, ob ich nun verreist bin oder ob ich zuhause bin.

Ich würde aber gerne nur dann den Zufallstimer4 schalten lassen, wenn ich zuhause bin und den Zufallstimer 2 wenn ich weg bin.

Könnte ich irgendwie definieren, dass Zuhause das Gegenteil von Verreist ist,
und den Zufallstimer4 mit zum Beispiel:
attr ZufallsTimer4 disableCond (!isNOTVerreist())
oder
attr ZufallsTimer4 disableCond (!isZuhause())
irgendwie beeiflussen???

Oder, welche Möglichkeit gäbe es mit einem sinngemäßen
IF verreist THEN Zufallstimer2 ELSE Zufallstimer 4  ?

Mit lieben Grüßen Bracew

P.S. Frohe Pfingsten
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Dietmar63

#108
Es reicht, wenn du das ! Vor dem isVerreist () weglässt. Das ! Ist das NOT in Perl.
Also timer2: !IsVerreist () und timer4: isVerreist ().

Es gibt mehrere Möglichkeiten mit TW eine Lampe anzuschalten.
1) mit zwei at. Das erste at nutzt per Perl Funktion ein Reading von Tw.

2) WeekdayTimer mit zwei Schaltzeiten. Auch mit WeekdayTimer ist es möglich eine Schaltzeit über eine Funktion zu ermitteln. In der Condition fragt man dann noch die Anwesenheit ab.

3) anschalten mit notify. Dann von TW das Reading aktEvent auf ss_weather abfragen und einschalten. Mit einem At dann um 22 Uhr abschalten.

Wenn du noch Beispiele benötigst, morgen Abend habe ich Zugriff auf mein fhem. Heute nur eine Kurze Antwort über das Handy.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Bracew

Hallo Dietmar63,

danke! Hat sehr gut funktioniert mit NOT bzw. nicht NOT, also ohne !

Für Beispiele zu Twilight wäre ich auch sehr dankbar. Je mehr, desto besser.
Lass Dir aber Zeit, Pfingsten bei diesem Wetter zu geniesen ist wichtiger! <- Ausrufezeichen kein NOT

Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Dietmar63

define hc4   WeekdayTimer Lampe  so-sa|{sunrise_abs(500)}|off so-sa|{sunset_abs(500)}|on  (if (PerlFunktionAnwesend()))

define hc4   WeekdayTimer Lampe  so-sa|{ReadingsVal("myTwilight","ss_weather","20:00:00")}|off so-sa|22:00|on

define TwilightMessage1       notify Twilight.*:aktEvent:.*ss_weather.*      set StehlampeTisch on;; define yy at +00:00:05 set StehlampeTV on
define TwilightMessage2      notify Twilight.*:aktEvent:.*                  {Log 3, "Nachricht von @: %"}


Ich hoffe du verstehst die Beispiele auch ohne Erklärung.
Zum Test immer verbose 5 setzten
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Bracew

Ohhh, das würde ich auch gerne hoffen, dass ich die Beispiele auch ohne Erklärung verstehen würde!
Jedenfalls, einfach hast Du es mir nicht gemacht.
Nur, denk immer daran, nicht alle sind solche FHEM-Perl-Meister wie Du, und ich schon gar nicht.

In dieser Woche werde ich versuchen Deine Beispiele in meinem FHEM nachzubauen mit meinen Bezeichnungen.

Kann ich auch anstatt ss_weather auf twilight_weather abfragen, also einfach ersetzen aus deinem Beispiel?

Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Dietmar63

ZitatKann ich auch anstatt ss_weather auf twilight_weather

Kann ich nicht empfehlen. Der Wert twilight_weather  wird alle 5 Minuten neuer ermittelt. Man kann aber nicht vorhersagen welchen Werte er dann hat. Somit ist es schwer ein notify darauf zu bauen. Du müßtest immer auch die Richtung des Wertes  kennen um sagen zu können, ob du es mit einem Sonnenuntergang oder Sonnenaufgang zu tun hast.

Wenn du Fragen hast. Dafür ist das Forum da!
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Bracew

Ich habe da die letzten Tage mal twilight_weather  im Event Monitor beobachtet.
Sobald es am Abend dunkler wird läuft er von 100% gegen 0%
und am Morgen wieder von 0% gegen 100%.
Dies liegt wohl am Sonnenstand korrigiert um die Verschattung durch Wolken aus dem großräumigen Wetterbericht.
So wie ich es verstehe, ist der Wert etwas geringer, wenn mehr Bewölkung vorhergesagt ist und etwas höher, wenn klarer Himmel.

Ich wollte gerne am Abend die Lampe bei Unterschreitung von 65% twilight_weather einschalten und um 22:00 Uhr wieder ausschalten lassen, alles aber nur wenn ich Zuhause bin.

Mit meiner jetzigen Definition:

define ZufallsTimer4 RandomTimer *{sunset_abs('HORIZON=1')} Lampe_TV 22:00:00 300
attr ZufallsTimer4 switchmode 999/000
attr ZufallsTimer4 disableCond (isVerreist())

komme ich dem Ziel schon recht nahe, habe aber leider den Verschattungsfaktor durch Wolken nicht mit drin, da, wenn es wolkig ist, es etwas früher dunkler wird. Mit meiner jetzigen Definition wird aber nur Abhängig vom Sonnenstand von FHEM die Lampe geschaltet.

Krönung wäre dann noch, wenn die Lampe nur schaltet, wenn ich zuhause und der Fernseher (TV) läuft, deshalb heißt es ja Lampe_TV.

Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Dietmar63

mit
define ZufallsTimer4 RandomTimer *{ReadingsVal("myTwilight","ss_weather",sunset_abs('HORIZON=1'))} Lampe_TV 22:00:00 300
hast du die Wetterkomponente drin.

Es gibt noch die Möglichkeit mit set ZufallsTimer4 disable oder set ZufallsTimer4 enable den timer bei Bedarf an- oder abzuschalten. Dies kannst du machen indem du die Ereignisse TV(an/aus) und du (anwesend oder nicht) per notify überwachst und das set Kommando ausführst.

Eine weitere Möglichkeit besteht darin, die disableCond so zu setzten, dass nur dann geschaltet wird, wenn TV an und du anwesend.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Bracew

Hallo Dietmar63,

wiederum vielen Dank für Deine Hinweise.

Ich habe das mit dem Fernseher wie folgt umgesetzt:

define Lampe_TV_An notify SamsungTV7090        \
  IF    (([SamsungTV7090] eq "connected"       \
      or  [SamsungTV7090] eq "opened"))        \
     (set Lampe_TV on)                         \
   ELSE                                        \
     (set Lampe_TV off)

Das hat funktioniert. Mit einer kleinen zeitlich variablen Verzögerung ist die Lampe_TV angegangen, wenn ich den Fernseher mit der Fernbedienung eingeschaltet habe. Und auch wieder aus bei abschalten des Fernsehers. Alles natürlich unabhängig von der Dämmerung und unabhängig von An- oder Abwesendheit.

Nun habe ich die An-/Abwesendheitskomponente analog Deines Vorschlags vom Pfingstmontag abend wie folgt hinzugefügt:

define Lampe_TV_An notify SamsungTV7090        \
  IF    (([SamsungTV7090] eq "connected"       \
      or  [SamsungTV7090] eq "opened"))        \
     (set Lampe_TV on)                         \
   ELSE                                        \
     (set Lampe_TV off)

IF   ([isVerreist()] eq "ja")   \
     (set Lampe_TV_An disable)  \
ELSE                           \
     (set Lampe_TV_An enable)

Dann bekomme ich jedoch beim speichern von fhem.cfg die Fehlermeldung:
ERROR:
No set implemented for Lampe_TV_An

Kannst Du mir noch mal helfen, wie ich zum einen die An-/Abwesendheitskomponente und zum anderen die Wetterkomponente mit ON bei Unterschreitung von 65% twilight_weather hinbekommen?

Übrigens, ist gestern bei unseren starken Gewittern der Himmel sehr schnell dunkel geworden. Das twilight_weather war zu dieser Zeit nach unten gerauscht auf 0% obwohl twilight selbst noch bei ca. 45% war.

Mit lieben Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Dietmar63

kann man eine notify disablen?
set Lampe_TV_An enable

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Bracew

Keine Ahnung, deshalb frage ich ja nach und will was lernen!
Aber wenn Du so fragst, scheinbar nicht! oder?
Also, wie dann?
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Dietmar63

Ich habe die Antwort nicht parat. Kannst du aber in der Oberfläche des Gerätes ausprobieren
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Bracew

Wenn ich:
    set Lampe_TV_An enable
in das Eingabefeld oben eingebe kommt der gleiche Fehler:
    No set implemented for Lampe_TV_An
Ich komme so nicht weiter.
In der Funktionsbeschreibung zu notify steht: "...per Web editieren und den DEF Knopf benutzen....". Meinst du das?
Leider habe ich diesen Satz halt auch nicht verstanden. Welchen DEF Knopf?  Und wie per Web editieren?

Du hast mal geschrieben:
ZitatWenn du Fragen hast. Dafür ist das Forum da!
Meinst Du damit ich müsste hier im Forum an anderer Stelle fragen?

Und was meinst Du mit:
ZitatIch habe die Antwort nicht parat.
Soll es heißen,  z.B. kann gerade nicht, helfe später gerne weiter und melde mich wieder
oder soll es heißen, z.B. ich mag nicht mehr, laß mich bitte zufrieden.
Beides kann ich verstehen und akzeptieren, möchte aber nicht gern interpretieren sondern eine klare Ansage bekommen.

Danke.
Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe