Hauptmenü

Presence/Absende

Begonnen von abc2006, 18 April 2013, 11:40:01

Vorheriges Thema - Nächstes Thema

Zrrronggg!

Zitatmüsste eigentlich heissen
Code: [alles markieren] [anzeigen/verstecken]
define watchdog_Anwesenheit watchdog Handy_Stephan:absent 00:00:10 Handy_Stephan:present set K5_BAD_LICHT_SPIEGEL toggle; setstate watchdog_Anwesenheit defined
attr watchdog_Anwesenheit regexp1WontReactivate 1

ja ?

Ich denke ja, bin mir aber nicht ganz sicher  ich kenne mich mit der Watchdogformulierung  nicht gut genug aus, das ist einer meiner Blind-Spots :-)

Zitatzu deinem Beitrag: Muss es nicht eigentlich nur ein semikolon zwischen den set-Befehlen sein:? ( und ein plus bei dem at)

Zitat:

Das hier eigentlich
define test at +*04:00:00   set Licht1 on ; set Licht2 on


Gute Frage...

1. ein Plus bei dem at kann muss aber nicht, man muss eben wissen was man will.

*04:00:00  = jeden Morgen um 4 Uhr
+*04:00:00  =  in 4Stunden und dann alle 4 stunden
+04:00:00  = 1x in  4 Stunden
04:00:00 = das nächste mal um 4 Uhr morgens

2. Nur ein Semikolon: hier habe ich auch eine kleine Lücke. An sich hast du recht, ich habe aber bemerkt, dass es FHEM Kommandos zu geben scheint, ein denen aus irgendeinem Grunde doch zwei Semikolon notwendig sind.

Dies hier funktioniert z.B. nur mit 2 Semikolons:

define act_on_ANLAGE_SCHARF_dimup notify ANLAGE_SCHARF:dimup set ANLAGE_SCHARF on ;; set Scharfanzeige1 on

Ich habe noch nicht genau durchdrungen warum, und gehe davon aus, dass "ANLAGE_SCHARF:dimup" eine verdeckte IF-Bedingung ist und die das irgendwie zur Folge hat. Da bin ich aber selber in genau der selben Lage wie du: Ich weiss es nicht und mache was geht: Du siehst, meine Kenntnisse haben auch Grenzen. (und deswegen scheue ich mich auch Wikiartikel dazu zu schreiben. Wenn ich verstanden habe, warum man auch bei FHEM manchmal escapen muss, dann schreibe ich den Wikiartikel, okay?)

Übrigens kann es genau deswegen sein, dass dein watchdog doch

define watchdog_Anwesenheit watchdog Handy_Stephan:absent 00:00:10 Handy_Stephan:present set K5_BAD_LICHT_SPIEGEL toggle;; setstate watchdog_Anwesenheit defined

heissen muss.

Zitatund das ganze kann man dann noch weiter vereinfachen xD:
define test at +*04:00:00   set Licht1,Licht2 on

Ja, aber nur weil ich mein Beispiel unglücklicherweise so wenig verallgemeinernd gewählt habe, das die beiden FHEM Kommandos hier gleich sind nämlich "set irgendwas on".



Wenn also ein Mitleser meine Verständnislücke schliessen kann, wäre ich dankbar, und ich schreibe einen Wikiartikel. Hier müsste Rudolf vielleicht mal einen Satz sagen.

FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

abc2006

Hi, nochmal back to topic:


Zitat von: Zrrronggg! schrieb am Di, 23 April 2013 10:59
ICH würde das so machen:

[code]define watchdog_Anwesenheit_Handy_Stephan at *00:05:00 {if (Value("Handy_Stephan") eq "present"  { fhem("set FHT80B3_BUERO desired-temp 22.5")} else { fhem("set FHT80B3_BUERO desired-temp 16")} }




wenn ich nach Hause komme, schaltet das FHT auf 22,5°. Jetzt möchte ich aber aus irgendwelchen Gründen die Temperatur nur auf 21° haben. Der obige Befehl schaltet aber alle 5 minuten wieder auf 22.5.
Gibt es bereits eine Lösung, wie ich erkenne, ob die Temperatur manuell geändert wurde und die dann so zu lassen? Oder wir habt Ihr dieses Problem gelöst?

danke und lg ( aus der kalten Wohnung ;-)
Stephan

FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Zrrronggg!

Wegen des 5 Minutenintervalls solltest du das obige unbedingt mit dem Attr Lazymode versehen, sonst hast du sowieso Ruckzuck ein Problem mit LOVF... aber das hilft dir nicht.

Dein Problem ist prinzipiell das Kernproblem einer vollautomatischen Heizungsteuerung. So richtig Richtig kann man das nicht umgehen. Entweder FHEM regelt die Heizung nach diversen Parametern oder die Wetware macht's. Meine Frau mosert auch öfters, wegen der selben Effekte.

Man könnte sich aber einiges an Hilfskonstrukten überlegen, um die Sache zu entschärfen.

Grobe Ideen:

Du merkst dir irgendwie, dass die Temperatur schonmal hochgeregelt wurde und änderst sie dann nur, wenn der Status sich von anwesend auf abwesend ändert. (bzw umgekehrt)

Ich hab das jetzt nicht wirklich super durchdacht und skitziere das jetzt so, wie es mir gerade einfällt, die Lösung ist daher sicher weder besonders elegant noch getestet.

Erstmal einen Dummy anlegen
define dummy "Heizungskontrolle"

Den befüllst du dann mit dem Watchdog:

define watchdog_Anwesenheit_Handy_Stephan at *00:05:00 {if (Value("Handy_Stephan") eq "present"  { fhem("set FHT80B3_BUERO desired-temp 22.5 ;; set Heizungskontrolle warm")} else { fhem("set FHT80B3_BUERO desired-temp 16 ;; set Heizungskontrolle kalt")} }

Dann baust du in deinen Code noch eine Abfrage nach dem Zustand dieses Dummys ein. Grob so:

define watchdog_Anwesenheit_Handy_Stephan at *00:05:00 {if (Value("Handy_Stephan") eq "present" && Value("Heizungskontrolle") ne "warm" ...

Dann würde die Temperatur nur geändert, wenn sie vorher auf "kalt" stand.


Problem dabei ist die ELSE Bedingung, die dann auch bei Anwesenheit zuschlagen würde..  Man wird also deinen Watchdog aufspalten müssen:

define watchdog_Anwesenheit_Handy_Stephan at *00:05:00 {if (Value("Handy_Stephan") eq "present" && Value("Heizungskontrolle") ne "warm"  { fhem("set FHT80B3_BUERO desired-temp 22.5 ;; set Heizungskontrolle warm")}}

define watchdog_Abwesenheit_Handy_Stephan at *00:05:00 {if (Value("Handy_Stephan") ne "present"  && Value("Heizungskontrolle") ne "kalt"   { fhem("set FHT80B3_BUERO desired-temp 16 ;; set Heizungskontrolle kalt")} }


Ohne getestet zu haben sollte das jetzt dazu führen, das wenn die Anwesenheit z.b. von abwesend auf anwesenheit wechselt ,die Heizung genau 1x auf  22,5 geregelt wird. Wenn du die dann lokal danach auf andere Werte stellst, wird die nicht mehr auf 22,5 gestellt, weil ja das Dummy Heizungskontrolle immer noch "warm" ist.

Genau so umgekehrt.

Die beiden Watchdogs ließen sich in einen zusammenfassen, dann hätte man aber verschaltelte elsif-Geschichten, die ein bisschen schwieriger zu debuggen sind. Wenn das deinen Ansprächen genügt und auch funktioniert, können wir das im nächsten Schritt machen.

Mit dem Konstrukt lisse sich auch noch mehr machen. Du könntest mit mehreren Watchdogs auch unterschiedliche Heizlevel realisieren. Dazu würdest du dir einen (Web)Schalter bauen, der das dummy Heizungskontrolle mit diversen Werten befüllt. Z.B  "warm" "heiss"  "kalt" "Urlaub"

Und je nach dem welchen Wert das hat stellst du dann auf 22, oder 25 oder 16 oder 8 Grad ein.

Ein andere Idee wäre eventuell, mit "old value" zu arbeiten und zu sehen, ob der 16 Grad war. Da bin ich Zusammenhang mir FHT und desired-temp nicht firm.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL