Eigentlich eine leichte Aufgabenstellung, meinte ich auch, aber dies Thema treibt mich seit ein paar Tagen um und ich brauche jemanden, der mich "vom Schlauch" hebt.
Problem (Die Beispielzeiten sollten nicht beachtet werden, die werden im "Wirkbetrieb" anders definiert):
Gegeben sind 2 Dummies und ein Funkschalter ST-2, der ja "on-for-timer" kann.
Die beiden Dummies sind wie folgt definiert:
define DUMMY1 dummy
attr DUMMY1 webCmd on:off
define DUMMY2 dummy
attr DUMMY2 webCmd on:off
Nun mein aktionsauslösender Befehl:
define Pumpe1ON at +*00:02:00 {if (Value("DUMMY1") eq "on" && Value("DUMMY2") eq "off") {fhem ("set EG_Funkschalter_Pumpe on-for-timer 60")}}
Das sollte eigentlich klappen, tut es aber nicht, deshalb ein 2. Versuch mit
define Pumpe1ON at +*00:02:00 IF ([DUMMY1] eq "on" and [DUMMY2] eq "off") (set EG_Funkschalter_Pumpe on-for-timer 60)
Klappt auch nicht, die Pumpe will einfach nicht anspringen.
Geprüft habe ich selbstverständlich, ob die Stati der Dummies so sind, dass die Aktion ausgelöst werden kann.
Selbstverständlich habe ich im Forum recherchiert, ob bereits eine ähnlich Frage gestellt wurde: ich konnte mit den Fundstellen mein Thema jedoch nicht lösen.
Bevor ich aufgebe, meine Frage nun hier im Forum, auch auf die Gefahr hin, eine Antwort wie "muss du hier oder da suchen", "lies erst einmal die "Ersten Schritte" o.ä. - ich komme einfach nicht auf meinen Fehler.
Kann jemand helfen?
ReadingsVal("Dummy1", "state", "")
Die Funktion Value kenne ich nicht
Hi,
hast du versucht die Befehle einzeln abzusetzen? Also
{Value("DUMMY1")}
und
{Value("DUMMY2")}
in die Befehlszeile eingegeben? Wie lauten die Ergebnisse?
Funktioniert der Befehl set EG_Funkschalter_Pumpe on-for-timer 60
ohne at?
Und zu guter Letzt, was steht im Log /Event-Monitor?
Gruß Mundus
@Mundus
DUMMY1 ergibt on
DUMMY2 ergibt off
set EG_Funkschalter_Pumpe on-for-timer 60
Pumpe läuft für eine Minute
Ich bin untröstlich: Nachdem ich nochmals den Befehl
define Pumpe1ON at +*00:02:00 {if (Value("DUMMY1") eq "on" && Value("DUMMY2") eq "off") {fhem ("set EG_Funkschalter_Pumpe on-for-timer 60")}}
getestet habe, um den Eintrag im Logfile herauszuschreiben, läuft die Pumpe wie gewünscht.
Zu meiner Unzufriedenheit, weil ich gerne gewusst hätte, wo der Fehler liegt, nach dem ich nun seit Stunden (Tagen) suche.
Nun bleiben bei mir nur noch Fragezeichen (???) ...
und mein Dank, an die Hilfsbereiten hier im Forum.
wenn du dein logfile nicht gelöscht hast, sollte da ja immer noch was drin stehen....
andere frage:
wo genau hast du denn den code eingegeben?
Ich glaube, ich habe mich zu früh gefreut: Mal läuft die Pumpe, mal nicht. Es hat den Anschein, als würden einige Zyklen durchlaufen, dann ist Ruhe!
@nils_
Merkwürdigerweise finde ich im Logfile immer nur dann die Aktion, wenn die Pumpe auch gelaufen ist (die ist im Keller und wird von mir per AVM-Schaltaktor und dessen Leistungsmessung überwacht).
Den Code selbst habe ich in der fhem.cfg eingegeben (auch wenn das hier nicht so gerne gesehen wird) - hat aber bislang immmer geklappt (und da stehen immerhin so um die 1.200 Zeilen).
Zunächst würde ich aufgrund der o.g. Aussagen im Logfile nicht von einem Reichweitenproblem ausgehen.
Hat jemand eine Idee, wo ich weiter recherchieren kann. Die Syntax ist es m.E. definitiv nicht.
Hier nun der vollständige, originale Programmcode, den ich zuvor aus Vereinfachungsgründen verallgemeinert hatte:
define KG_Funkschalter_ZirkuPumpe FS20 d827 35
setuuid KG_Funkschalter_ZirkuPumpe 5c6aa99b-f33f-aab4-0f87-a36aefcdd7976721
attr KG_Funkschalter_ZirkuPumpe IODev CUL_0
attr KG_Funkschalter_ZirkuPumpe icon black_Steckdose.off
attr KG_Funkschalter_ZirkuPumpe model fs20st
attr KG_Funkschalter_ZirkuPumpe room Heizung,Favourites
define ZirkuPumpenZeit dummy
attr ZirkuPumpenZeit room Heizung
attr ZirkuPumpenZeit webCmd on:off
setuuid ZirkuPumpenZeit 5c6aa99b-f33f-aab4-d4b7-e8599117c6745aa7
define isUrlaub dummy
setuuid isUrlaub 5c6aa999-f33f-aab4-ac75-8ed45f6f3c085264
attr isUrlaub room Szenarien
attr isUrlaub webCmd on:off
define ZirkuPumpeON at +*00:08:00 {if (Value("ZirkuPumpenZeit") eq "on" && Value("isUrlaub") eq "off") {fhem ("set KG_Funkschalter_ZirkuPumpe on-for-timer 120")}}
setuuid ZirkuPumpeON 5c6aa99b-f33f-aab4-f18c-1a7563c06c00b91d
Zitat von: uron am 21 Februar 2019, 18:16:06
Ich glaube, ich habe mich zu früh gefreut: Mal läuft die Pumpe, mal nicht. Es hat den Anschein, als würden einige Zyklen durchlaufen, dann ist Ruhe!
ohne logfile wird das schwer zu finden sein.
erweiter doch mal dein at mit der ausgabe in die Logdatei, wie zB die Zustände der Dummys gerade ist, usw.
Zitat von: uron am 21 Februar 2019, 18:16:06
Den Code selbst habe ich in der fhem.cfg eingegeben (auch wenn das hier nicht so gerne gesehen wird) - hat aber bislang immmer geklappt (und da stehen immerhin so um die 1.200 Zeilen).
nunja, ich bin da vorsichtiger, denn es wird keinerlei check (klammersetzung, semikolonverdoppelung, ....) durchgeführt. den vorteil hättest du schonmal bei der eingabe über def/raw.
Selbsterkenntnis ist der erste Schritt zur Besserung!
Ich glaube, der Fehler liegt in den verwendeten "set extensions" "on-till", die ich bei der Codierung des Dummy "ZirkuPumpenZeit" verwendet hatte (ist im Code oben nicht zu sehen, dort hatt ich die Zeiten definiert, in deren Grenzen die Zirkulationspumpe laufen soll). Die "set extensions" gehen bei meinem einfachen Dummy nicht - kann man das eigentlich ändern?
Das wäre definitiv nicht passiert, wenn ich nicht den Editor genutzt hätte - mea culpa - ich gelobe Besserung.
Mein jetziger Code sieht nun so aus und läuft im Moment:define KG_Funkschalter_ZirkuPumpe FS20 d827 35
setuuid KG_Funkschalter_ZirkuPumpe 5c6aa99b-f33f-aab4-0f87-a36aefcdd7976721
attr KG_Funkschalter_ZirkuPumpe IODev CUL_0
attr KG_Funkschalter_ZirkuPumpe icon black_Steckdose.off
attr KG_Funkschalter_ZirkuPumpe model fs20st
attr KG_Funkschalter_ZirkuPumpe room Heizung,Favourites
define ZirkuPumpeONNormal at +*00:20 {if (Value("isUrlaub") eq "off") {fhem ("set KG_Funkschalter_ZirkuPumpe on-for-timer 120")}}
attr ZirkuPumpeONNormal disabledForIntervals 00:00-06:00 09:00-11:30 13:30-17:00 19:00-23:59
attr ZirkuPumpeONNormal room Heizung
#
#wenn Urlaub, dann Pumpe nur 1x am Tag für 4 Minuten anschalten
define ZirkuPumpeONUrlaub at *16:00 {if (Value("isUrlaub") eq "on") {fhem ("set KG_Funkschalter_ZirkuPumpe on-for-timer 240")}}
attr ZirkuPumpeONUrlaub room Heizung
Bin mal gespannt, ob "disabledForIntervals" so funktioniert, wie ich das verstanden habe. Diese Funktion hatte ich bislang noch nicht genutzt.
Ich werde sehen und hoffe, wieder mal einen Schritt weiter gekommen zu sein!
Zunächst lasse ich mal meine Codierung mal laufen um zu sehen, ob mein Gedankengang auch funtioniert.
Zitat von: uron am 22 Februar 2019, 08:55:47
Die "set extensions" gehen bei meinem einfachen Dummy nicht - kann man das eigentlich ändern?
https://commandref.fhem.de/#dummy -> useSetExtensions
Zitat von: uron am 22 Februar 2019, 09:12:29
Danke nils_ für die detailtiefe Hilfestellung. Klingt kompliziert, werde ich aber testen.
was meinst du? ???
@nils_
ich verstehe deine Nachfrage zu meiner Feststellung "klingt kompliziert".
Ich war unterwegs und hatte auf meinem Handy eine Antwort von "Beta-User" auf meinem Handy gesehen und dachte, sie wäre von dir.
Zu Hause angekommen, suche ich diese Antwort hier unter diesem Thema, finde sie aber trotz Aktualisierung nicht !!!!! ??????
mmmmh das ist komisch....
aber die wege des forums sind manchmal unergründlich :D
also falls du noch fragen hast, immer raus damit
Die Frage ist einfach zu beantworten: der Beitrag ist fast gleichzeitig mit dem von uron entstanden, und aus dem hat sich dann ergeben, wieso die at-Konstruktion eigentlich so ist wie sie ist. Damit hatte sich meine Anmerkung erledigt und wurde direkt wieder gelöscht, und das mit den setExtensions hattet ihr zwischenzeitlich auch gefunden ;) .