FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: cornelius fillmore am 06 März 2015, 16:22:46

Titel: Zeitschaltuhr
Beitrag von: cornelius fillmore am 06 März 2015, 16:22:46
Hallo zusammen ich habe aus dem fhemwiki den code der Zeitschaltuhr kopiert.
Zitatdefine PumpeMorgensStart at *07:00:00 {
if (!$we) {
   { fhem("define PumpeMorgens at +*{8}00:15:00 set Umwaelzpumpe on-for-timer 300") }
}
else {
   { fhem("define PumpeMorgens at +*{36}00:15:00 set Umwaelzpumpe on-for-timer 300") }
}
}
Bekommen aber nur Fehlermeldungen
ZitatERROR:
IF: no left bracket: { Unknown command }, try help. Unknown command else, try help. PumpeMorgens already defined, delete it first Unknown command }, try help. Unknown command }, try help. Unknown command }, try help. Unknown command }, try help.

Was kann ich denn dagegen tun?
Titel: Antw:Zeitschaltuhr
Beitrag von: marvin78 am 06 März 2015, 16:27:41
Nicht einfach irgendwas kopieren, sondern verstehen.

Aber hast du das wirklich so kopiert? Die Fehlermeldung bezieht sich auf das Modul IF!?

Was genau willst du denn machen? Der Code da oben, hat zum einen zu viele Klammern und würde so eingefügt in die Config nicht funktionieren.

Für den DEF-Bereich im Frontend:

*07:00:00 {
   fhem("define PumpeMorgens at +*{8}00:15:00 set Umwaelzpumpe on-for-timer 300") if (!we);
   fhem("define PumpeMorgens at +*{36}00:15:00 set Umwaelzpumpe on-for-timer 300") if ($we);
}


Edit: Schau dir mal weekdayTimer an.
Titel: Antw:Zeitschaltuhr
Beitrag von: cornelius fillmore am 06 März 2015, 19:03:37
Ich wollte einfach nur eine Umwälzpumpe laufen lassen.

Diese im 20 Minuten Rhythmus, für 5min.

Wochentags anders wie am Wochenende.

Ich habe mir das weekday-timer auch angeschaut, verstehe das aber nicht ganz.

Kannst du mir da einen Tipp geben?
Titel: Antw:Zeitschaltuhr
Beitrag von: Starkstrombastler am 06 März 2015, 19:29:19
Das define eines at setzt voraus, dass es rechtzeitig automatisch beendet/gelöscht wird. Ansonsten muss modify benutzt werden.

Mein Vorschlag ist zweistufig. Erstens einen Taktgeber für die Pumpe, der immer durchläuft:
define PumpeTakt at *00:20:00 set Umwaelzpumpe on-for-timer 300

Mit Weekdaytimer werden dann folgende Befehle abgesetzt:
attr PumpeTakt disable 1
attr PumpeTakt disable 0


Damit lässt sich das ganze auch auf anderen Weg ein- oder ausschalten.
Titel: Antw:Zeitschaltuhr
Beitrag von: Dietmar63 am 06 März 2015, 22:14:56
Gute Idee:

define PumpeTakt at *00:20:00 set Umwaelzpumpe on-for-timer 300


dann WD so:

define wd1 WeekdayTimer  PumpeTakt  sa,so|10:00|1  sa,so|13:00|0 {fhem("attr @ %")}
define wd2 WeekdayTimer  PumpeTakt  mo-fr|09:00|1  mo-fr|15:00|0 {fhem("attr @ %")}


Bei den WD verbose auf 5 setzen, dann  kannst du im Log verfolgen, ob es funktioniert.
Titel: Antw:Zeitschaltuhr
Beitrag von: cornelius fillmore am 07 März 2015, 08:15:32
Vielen Dank
Ich werde es mal testen und berichten
Titel: Antw:Zeitschaltuhr
Beitrag von: Damian am 07 März 2015, 10:01:04
Zitat von: cornelius fillmore am 07 März 2015, 08:15:32
Vielen Dank
Ich werde es mal testen und berichten

oder als Einzeiler:

define di_pumpe DOIF ([+00:20] and ([?10:00-13:00|7] or [?09:00-15:00|8]))  (set Umwaelzpumpe on-for-timer 300)

Damit sind auch Feiertage abgedeckt ;)

Gruß

Damian
Titel: Antw:Zeitschaltuhr
Beitrag von: cornelius fillmore am 07 März 2015, 18:37:17
Zitat von: Damian am 07 März 2015, 10:01:04


define di_pumpe DOIF ([+00:20] and ([?10:00-13:00|7] or [?09:00-15:00|8]))  (set Umwaelzpumpe on-for-timer 300)


Damian: Kannst du mir noch mal erklären was die Zeiten in der Klammer jetzt genau bedeuten?
Titel: Antw:Zeitschaltuhr
Beitrag von: Damian am 07 März 2015, 18:40:21
Zitat von: cornelius fillmore am 07 März 2015, 18:37:17
Damian: Kannst du mir noch mal erklären was die Zeiten in der Klammer jetzt genau bedeuten?

Das sind Zeitintervalle, die in dieser Zeit wahr sind. Genaueres kannst du hier mit vielen Beispielen nachlesen: http://fhem.de/commandref_DE.html#DOIF

Gruß

Damian
Titel: Antw:Zeitschaltuhr
Beitrag von: cornelius fillmore am 07 März 2015, 18:52:34
Na ja.
Nun bekomme ich folge Fehlermeldungdi_pumpe DOIF: unknown expression format: 00|7 Please define di_pumpe first Please define di_pumpe first
Titel: Antw:Zeitschaltuhr
Beitrag von: Damian am 07 März 2015, 19:03:25
Zitat von: cornelius fillmore am 07 März 2015, 18:52:34
Na ja.
Nun bekomme ich folge Fehlermeldungdi_pumpe DOIF: unknown expression format: 00|7 Please define di_pumpe first Please define di_pumpe first

Dann arbeitest du nicht mit der aktuellen Version des Moduls.

Gruß

Damian
Titel: Antw:Zeitschaltuhr
Beitrag von: cornelius fillmore am 07 März 2015, 19:06:24
update durchgeführt
Fehler bleibt
Zitatdi_pumpe DOIF: unknown expression format: 00|7

Eintrag sieht so aus
Zitatdefine di_pumpe DOIF ([+00:20] and ([?07:00-22:00|7] or [?05:30-21:00|8]))(set PZ on-for-timer 300)
attr di_pumpe do always
attr di_pumpe room Heizung
Eine Idee?
Titel: Antw:Zeitschaltuhr
Beitrag von: Damian am 07 März 2015, 19:42:47
Zitat von: cornelius fillmore am 07 März 2015, 19:06:24
update durchgeführt
Fehler bleibt
Eintrag sieht so ausEine Idee?

Bei mir funktioniert diese Definition ohne Probleme.

Gruß

Damian
Titel: Antw:Zeitschaltuhr
Beitrag von: cornelius fillmore am 07 März 2015, 19:50:14
habe noch mal update gemacht.

Jetzt scheint es zu gehen :)

Zu früh gefreut.
Es geht irgendwie nur einmal.
Anbei der Log
Zitat
2015.03.08 07:00:00 3: FS20 set WLAN on
2015.03.08 07:08:36 3: FS20 set PZ on-for-timer 300
2015.03.08 07:08:36 2: PZ: changing timeout to 320 from 300

Kann es sein, das die Zeile mit dem do always fehlt?
Titel: Antw:Zeitschaltuhr
Beitrag von: Damian am 08 März 2015, 17:32:07
Zitat von: cornelius fillmore am 07 März 2015, 19:50:14
habe noch mal update gemacht.

Jetzt scheint es zu gehen :)

Zu früh gefreut.
Es geht irgendwie nur einmal.
Anbei der Log
Kann es sein, das die Zeile mit dem do always fehlt?

do always ist in deinem Fall wichtig. Das hast aber doch bereits mit :

Zitatattr di_pumpe do always

gesetzt, sonst wird dein Ausdruck immer nur einmal ausgeführt.

Gruß

Damian