Hallo zusammen,
ich habe folgendes Versucht aber leider klappt es nicht.
Ich habe ein Problem mit meiner Stehlampen-Schaltung :-)
Werktags 20:08:00 angehen das funktioniert mit
define Stehlampe_an at *20:08:00 set Stehlampe on
Dann dachte ich die Stehlampe soll Werktags (Mo-Fr) um 21:59 und am Wochenende (Sa+So) um 22:30 ausgehen.
leider geht die Lampe weder um 21:59 noch um 22:30 aus
Mein Code ist
define Stehlampe_ausWE at *22:30:00 { if (!($we)) { fhem("set Stehlampe off");; } }
define Stehlampe_ausWT at *21:59:00 { if ($we) { fhem("set Stehlampe off");; } }
Wo liegt der Hund begraben :-)
Syntax ist prinzipiell korrekt, was Vergleichbares laeuft bei mir seit 10 Jahren.
Im Log muesste drin stehen, ob die Schaltbefehle gesendet wurden.
Man kann die Befehle (das {...} hinter der Uhrzeit) auch direkt eingeben, um zu testen, ob es klappt.
bei { if (!($we)) { fhem("set Stehlampe off");; } }
steht im log
2015.11.10 20:00:28 3: off_Stehlampe return value: -1
sending systemCode[11101] unitCode[3] command[0]
bei
{ if ($we) { fhem("set Stehlampe off");; } }
passiert nix im log
return value -1 deutet darauf hin, dass ein Befehl auf Betriebssystemebene ausgeführt wurde statt in fhem.
Return Value -1 kommt auch wenn ich per Button on/off schalte und da geht es.
Warten wir mal 21.59 ab ob es ausgeht :-)
Gesendet von meinem GT-I9295 mit Tapatalk
Also der Befehl
define Stehlampe_ausWE at *22:30:00 { if (!($we)) { fhem("set Stehlampe off");; } }
funktioniert,
!we sagt doch aus "nur Wochenende" oder?
!$we ist wahr, wenn kein Wochende oder Ferien ist.
$we ist unter http://fhem.de/commandref.html#perl dokumentiert, testen kann man es mit { $we }
Sorry für die späte Antwort.
Nun geht es. Hatte irgendwie etwas verdreht :-)
define LED_an at *20:14:00 set LED on
define LED_ausWT at *21:50:00 { if (!($we)) { fhem("set LED off");; } }
define LED_ausWE at *22:50:00 { if ($we) { fhem("set LED off");; } }
Steffen
Gesendet von meinem GT-I9295 mit Tapatalk
würde statt 3 at's alles in ein DOIF packen...
define DI_LED DOIF ([20:14-21:50|8])(set LED on)
DOELSEIF (20:14-22:50|7)(set LED on)
DOELSE
attr DI_LED do always
Zitat von: kumue am 16 November 2015, 20:51:26
würde statt 3 at's alles in ein DOIF packen...
define DI_LED DOIF ([20:14-21:50|8])(set LED on)
DOELSEIF (20:14-22:50|7)(set LED on)
DOELSE
attr DI_LED do always
nicht ganz, denn hier wird nichts ausgeschaltet, dann besser so:
define di_led DOIF ([20:14]) (set LED on) DOELSEIF ([21:50|8] or [22:50|7]) (set LED off)
Gruß
Damian
genau :( , wollte ich grad korrigieren..
Damit das Feld nicht kampflos der DOIF Fraktion ueberlassen wird:
define LED_an at *20:14 set LED on-till {$we?"22:50":"21:50"}
Zitat von: rudolfkoenig am 17 November 2015, 10:38:27
Damit das Feld nicht kampflos der DOIF Fraktion ueberlassen wird:
define LED_an at *20:14 set LED on-till {$we?"22:50":"21:50"}
Auch nicht schlecht :)
Hast du nicht wegen Kompatibilitätsprobleme Perlcode innerhalb eines FHEM-Befehls auf {(...)} geändert?
Gruß
Damian
Zitat von: rudolfkoenig am 17 November 2015, 10:38:27
Damit das Feld nicht kampflos der DOIF Fraktion ueberlassen wird:
Du bist mein Held 8)
Zitat von: Damian am 17 November 2015, 10:44:23
Hast du nicht wegen Kompatibilitätsprobleme Perlcode innerhalb eines FHEM-Befehls auf {(...)} geändert?
das wäre ja gruslig...
Und: Kompatibel zu was?
ZitatHast du nicht wegen Kompatibilitätsprobleme Perlcode innerhalb eines FHEM-Befehls auf {(...)} geändert?
Jein. In einem beliebigen set kann man mit featurelevel >= 5.7 das {(xxx)} verwenden.
on-till verwendet weiterhin {}, da hat sich nichts geaendert.
D.h. in diesem Fall funktioniert sowohl {($we?"22:50":"21:50")} wie auch {$we?"22:50":"21:50"}, es wird nur an unterschiedlichen Stellen ersetzt.
@marvin78: {()} soll kompatibel zu DOIF sein. Jedenfalls hat man mir das so gesagt.
Zitat von: marvin78 am 17 November 2015, 10:47:12
Und: Kompatibel zu was?
zu allen FHEM-Befehlen, z. B zum at-Befehl, der seinerseits geschweifte Klammern verwendet. ;)
Zitat von: rudolfkoenig am 17 November 2015, 10:51:18
Jein. In einem beliebigen set kann man mit featurelevel >= 5.7 das {(xxx)} verwenden.
kann oder muss?
@Damian: Meine Frage bezog sich nicht auf die geschweiften Klammern.
Ach DOIF. Naja solange für sowas solche Konstrukte nicht Pflicht werden...
Zitat von: marvin78 am 17 November 2015, 10:53:00
@Damian: Meine Frage bezog sich nicht auf die geschweiften Klammern.
Ach DOIF. Naja solange für sowas solche Konstrukte nicht Pflicht werden...
Das hat nichts mit DOIF zu tun.
Rudi hat zunächst {} (nicht auf meinen Wunsch) für beliebige FHEM-Befehle eingebaut, damit würde aber z. B.
define n notify bla.* define a7 at +*{3}00:00:02 set lamp on-for-timer 1
nicht funktionieren.
Gruß
Damian
Zitat von: rudolfkoenig am 17 November 2015, 10:51:18
@marvin78: {()} soll kompatibel zu DOIF sein. Jedenfalls hat man mir das so gesagt.
Das andere ist mir sehr wohl bekannt. Werfe bitte nicht alles durcheinander.
Hab es nun mal mit
define LED_an at *20:14 set LED on-till {$we?"22:50":"21:50"}
define Stehlampe_an at *20:08 set Stehlampe on-till {$we?"22:55":"21:59"}
[Code]
Versucht, Licht bleibt aber aus :-( die 3at's gehen einwandfrei
Gesendet von meinem GT-I9295 mit Tapatalk
Was ist der TYPE von Stehlampe bzw. LED?
Ist ne 433mhz Funksteckdose
Und das steht so woertlich im TYPE drin?
Manche Module unterstuetzen on-till nicht, aber etwa 50 Module (unter anderem IT, HomeMatic, FS20, ZWave, EnOcean, FBDECT) tun das. Wenn on-till nicht unterstuetzt wird, dann muss man bei 3 einzelnen at Befehlen oder DOIF bleiben.
sorry für die späte Rückmeldung, aber nun geht es
hab dies nun so gelöst
define Stehlampe_an at *19:00:00 set Stehlampe on
define Stehlampe_ausWT at *21:59:00 { if (!($we)) { fhem("set Stehlampe off");; } }
define Stehlampe_ausWE at *22:55:00 { if ($we) { fhem("set Stehlampe off");; } }
definiert habe ich es so
define Stehlampe dummy
attr Stehlampe userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
attr Stehlampe room 3.00_Lichtsteuerung
attr Stehlampe setList on off
define off_Stehlampe notify Stehlampe:off {system("/usr/bin/send 11101 3 0 &")}
define on_Stehlampe notify Stehlampe:on {system("/usr/bin/send 11101 3 1 &")}