Hauptmenü

Job definieren - Fehler ??

Begonnen von sun1907, 02 Januar 2013, 16:48:35

Vorheriges Thema - Nächstes Thema

sun1907

Ich wollte einen Job definieren. Vielleicht sehe ich den Wald vor lauter Bäumen nicht (Fehler), aber wenn ich diesen Code ausführen lassen möchte:


define job_UrlaubKueche at +00:15:00 notify Urlaubsschaltung {\
   if ("%" eq "on") {\
   fhem ("set Kueche mode manual desired-temp 14.0");;\
  }\
  else {\
    fhem ("set Kueche mode auto");;\
  }\
}



bekomme ich im Log:
2013.01.02 16:27:12 3: Unknown command notify, try help
Unknown command }\
, try help
Unknown command }\
}, try help


Kann mir jemand helfen ?. Dank im Voraus.

borsti67

was verstehst Du denn unter einem "Job"?
Und was soll es denn hier nun sein? Ein AT oder ein NOTIFY - eines geht nur. ;-)

Ein AT-define führt die nach der Uhrzeit definierten Zeilen zu eben dieser Zeit aus. Da gibt es keinen Parameter, was sollte also in diesem Fall im "%" drin stehen, woher sollte wohl das "on" kommen?
Ein NOTIFY-define wertet eine RegEx aus und führt den folgenden Code aus, wenn die Bedingung erfüllt ist.
Sollte "Urlaubsschaltung" ein device von Dir sein (und den Status "on" und andere kennen), dann könnte das funktionieren, wenn Du das "at +00:15:00" weg lässt.

Hinweis am Rande: Wenn "Kueche" ein FHT80b sein sollte (meine Glaskugel ist leider noch von Silvester eingenebelt), bedenke dass "mode auto" NICHT die Normaltemperatur wieder einstellt, das Ding bleibt auf 14°! Siehe auch WIKI.
cu/2
Borsti
---
FHEM 5.8 auf Synology DS211j (bis 11/17) | FHEM 6.0 auf Raspi Zero W (bis 11/20) | FHEM 6.2 als VM in Synology DS1815+ (ab 11/20)

sun1907

Danke borsti67

Wegen "auto", das ist klar. Jedoch schaltet die FHT80 ja dann (ab Auto-Wert) irgendwann (spätestens am nächsten Morgen) wieder zu der in der FHT80 definierten Zeit, richtig ?.

Mein Wunsch ist es mit dem Code, dass ein "Job" alle XX Minuten überprüft, ob z.B. die "Urlaubsschaltung" ON ist. Und wenn JA, dann soll er z.B. in der Küche den FHT auf manuell setzen, zudem die Temp auf 14C. Ist die "Urlaubsschaltung" OFF, soll er demnach die FHT auf AUTO setzen.

Natürlich kann es auch sein, dass dort ein Fehler in dem Code ist.
define Job_UrlaubKueche at +00:15:00 = (überprüfe alle 15 Minuten, ob ON oder OFF)
if (wenn) ON = (setze Küche auf mode manual desired-temp 14.0)
if (wenn) OFF = (setze Küche auf AUTO)

Das wäre mein Wunsch

Puschel74

Hallo,

mach es doch umgekehrt.

Lass deinen Urlaubsschalter (Taster) doch das notify ausführen.
Sobald du den Urlaubsschalter auf on stellst (Du/Ihr also in Urlaub seid) soll fhem
die Temp. runter nehmen und wenn ihr zurück kommt machst du den Schalter auf off
(oder anwesend) und fhem stellt wieder auf mode auto.
Dann brauchst du ja nicht alle 15 Minuten prüfen ob du in Urlaub (Abwesend) bist.
Nur so als Tipp von mir.

Der FHT80b stellt zum nächsten intern programmierten Zeitpunkt die Temp. wieder auf
Tages- oder Absenkbetrieb wenn er im mode auto ist - das ist korrekt.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

borsti67

Zitat von: sun1907 schrieb am Mi, 02 Januar 2013 19:45Wegen "auto", das ist klar. Jedoch schaltet die FHT80 ja dann (ab Auto-Wert) irgendwann (spätestens am nächsten Morgen) wieder zu der in der FHT80 definierten Zeit, richtig ?.
Das ist richtig. Wenn Dir das genügt...?
Ich habe aber auch im WIKI ein Codeschnipsel, mit dem man diese Hürde "umschiffen" kann.

ZitatMein Wunsch ist es mit dem Code, dass ein "Job" alle XX Minuten überprüft, ob z.B. die "Urlaubsschaltung" ON ist.

Dann hast Du also tatsächlich beide Methoden vermischt...

Entweder Du prüfst alle 15 Minuten mit AT und fragst den Wert ab:

define job_UrlaubKueche at +00:15:00 {\
   if (Value("Urlaubsschaltung") eq "on") {\


...oder (was eigentlich eleganter ist) Du triggerst Deinen Code sobald der Wert sich ändert:

define job_UrlaubKueche notify Urlaubsschaltung {\
   if ("%" eq "on") {\


[alle Codezeilen ungetestet aus der Erinnerung hingeklatscht, daher keine Gewähr!]
cu/2
Borsti
---
FHEM 5.8 auf Synology DS211j (bis 11/17) | FHEM 6.0 auf Raspi Zero W (bis 11/20) | FHEM 6.2 als VM in Synology DS1815+ (ab 11/20)

sun1907

Bisher habe ich es so eingestellt, was auch klappt:


define UrlaubsschaltungChecker notify Urlaubsschaltung {\
  if ("%" eq "on") {\
   fhem ("set Badezimmer mode manual desired-temp 14.0");;\
   fhem ("set Kueche mode manual desired-temp 14.0");;\
   fhem ("set Wohnzimmer mode manual desired-temp 14.0");;\
   fhem ("set Arbeitszimmer mode manual desired-temp 14.0");;\
   fhem ("set Schlafzimmer mode manual desired-temp 14.0");;\
  }\
  else {\
    fhem ("set Badezimmer mode auto");;\
    fhem ("set Kueche mode auto");;\
    fhem ("set Wohnzimmer mode auto");;\
    fhem ("set Arbeitszimmer mode auto");;\
    fhem ("set Schlafzimmer mode auto");;\
  }\
}


Jedoch wird dann an ALLE gleichzeitig der Befehl gesendet, was aber anscheinend (habe ich nun schon 2mal beobachtet), zu einem Fehler führt, dass durch das Senden an ALLE 1-2 FHTs wegen (anscheinend Overflow) den "Befehl" nicht mitbekommen.

Ich würde aber LIEBEND gerne zwischen den Befehlen einen Zeitversatz haben, also immer mit 3 Minuten Verzögerung, bin aber leider zu dumm der FHEM per Code klarzumachen :-(

Puschel74

Hallo,

oh. Das funktioniert?
Du kannst tatsächlich an einen FHT80b desired-temp und mode manu zugleich übertragen?
Das wusste ich auch noch nicht aber ok.
Wie du schon richtig gemerkt hast bekommst du im Logfile jede Menge LOVF-Meldungen.
Tja, FHT`s können aber auch richtig viel Sendezeit beanspruchen wenn denen Langweilig wird ;-)
Du betriebst alle 5 mit einem CUL oder CUNO oder womit?
Sorry OT.
BTT.


define UrlaubsschaltungChecker notify Urlaubsschaltung {\
  if ("%" eq "on") {\
   fhem ("set Badezimmer mode manual desired-temp 14.0");;\
   fhem ("define Kueche_runter at +00:10:00 set Kueche mode manual desired-temp 14.0");;\
   fhem ("define Wohnzimmer_runter at +00:20:00 set Wohnzimmer mode manual desired-temp 14.0");;\
   fhem ("define Arbeitszimmer_runter at +00:30:00 set Arbeitszimmer mode manual desired-temp 14.0");;\
   fhem ("define Schlafzimmer_runter at +00:40:00 set Schlafzimmer mode manual desired-temp 14.0");;\
  }\
  else {\
    fhem ("set Badezimmer mode auto");;\
    fhem ("set Kueche mode auto");;\
    fhem ("set Wohnzimmer mode auto");;\
    fhem ("set Arbeitszimmer mode auto");;\
    fhem ("set Schlafzimmer mode auto");;\
  }\
}

Sollte ab Tastendruck auf on alle 10 Minuten einen Fht80b runterregeln beginnend mit Badezimmer.
Ungetestet aber sollte klappen.
Das selbe noch unten eingefügt oder das off wird auch so behandelt.
Ok. Ist auch nicht schön - geht sicher schöner.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

borsti67

Zitat von: sun1907 schrieb am Mi, 02 Januar 2013 20:04Bisher habe ich es so eingestellt, was auch klappt:

Jedoch wird dann an ALLE gleichzeitig der Befehl gesendet, was aber anscheinend (habe ich nun schon 2mal beobachtet), zu einem Fehler führt, dass durch das Senden an ALLE 1-2 FHTs wegen (anscheinend Overflow) den "Befehl" nicht mitbekommen.

Dann hast Du offenbar Empfangsprobleme zu mindestens einem der FHTs. Das, was Du da beschreibst, passiert wenn der Sendepuffer überläuft, da die FHTs nicht (rechtzeitig) antworten. Da wird Dir auch der Zeitversatz nicht unbedingt helfen.
Was u.U. fatal sein kann, ist wenn man den Urlaubsbutton mehrfach drückt (was ja gerade beim Ausprobieren schnell mal passieren kann). FHEM erkennt nicht, ob ein Befehl doppelt oder überflüssig ist und reiht das alles brav in die Warteschlange ein. Da kann gerade bei FHT die 1%-Regel verdammt schnell zuschlagen; habe ich mit meiner Anwesenheitsfunktion auch schon durch...

Ich weiß nicht, ob die Funklast reduziert wird, wenn Du die Befehle zusammenfasst?


fhem ("set Badezimmer,Kueche,Wohnzimmer,Arbeitszimmer,Schlafzimmer mode auto");;\

Wenn es übrigens ausnahmslos ALLE Deine FHTs sind, könnte sogar
fhem ("set TYPE=FHT mode auto");;\
funktionieren. =8)
cu/2
Borsti
---
FHEM 5.8 auf Synology DS211j (bis 11/17) | FHEM 6.0 auf Raspi Zero W (bis 11/20) | FHEM 6.2 als VM in Synology DS1815+ (ab 11/20)

sun1907

Danke für die Hilfe!. Damit hast du mir schon sehr geholfen, werde ich bei nächster Gelegenheit mal testen.

Ich habe kein CUL, habe einen FHZ1300. Ich weiß, ist zu heutiger Hausautomation noch "altbacken", aber solange es ja noch funktioniert... "never change a running system".


sun1907

DANKE euch beiden: @puschel74 und @borsti67