FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Invers am 04 Dezember 2013, 17:07:37

Titel: Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: Invers am 04 Dezember 2013, 17:07:37
Hi, ich habe ein kleines Problem:

1.   Ich schalte mehrere Steckdosen in Abhängigkeit vom Sonnenuntergang, aber mit verschiedener Zeitverzögerung.
2.   Ich habe einen Anwesenheitstest über Presence .

Nun will  ich aber nicht,  dass das Licht eingeschaltet wird, wenn ich nicht da bin.

Frage:
Wie kann ich erreichen, dass die Lampen nur geschaltet werden, wenn ich zu Hause bin?

Meine Codeschnipsel:

define TVLICHT_sunset_an at *{sunset("civil","-1200")} set TVLICHT.* on
attr TVLICHT_sunset_an room WZ
define Stehlampe_sunset_an at *{sunset("REAL","900")} set Stehlampe on
attr Stehlampe_sunset_an room WZ      

define BinIchDa PRESENCE fritzbox S3 30
attr BinIchDa room WZ

Bitte:
Wäre es sehr ausverschämt, darum zu bitten, mir den Code zusammen zu basteln?

Danke im Voraus.
Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: koldomon am 04 Dezember 2013, 17:43:59
Hallo Invers
ZitatWäre es sehr ausverschämt, darum zu bitten, mir den Code zusammen zu basteln?
nöö, aber du lernst dabei halt nix.

Prinzipielles vorgehen in FHEM
1. AT für regelmäßige Ausführung
2. Notify für die Ausführung
optional Drittens - Notify für das zu schaltende Device selbst.

also Code - mal zusammenbasteln - ich schreib das jetzt mal aus dem kopf ohne Garantie, das es 1:1 funktioniert.

#AT zum Anschalten - die Perl-Syntax ist nicht notwendig, nur mein Stil ;-)
define TVLicht_Trigger_AT_On at *{sunset("civil","-1200")} {fhem "trigger TVLicht_Notify on";}
#AT zum Ausschalten
define TVLicht_Trigger_AT_Off at *{sunset("REAL","900")} {fhem "trigger TVLicht_Notify off";}
#Notify für die Verarbeitung
define TVLicht_Notify notify TVLicht_Notify {
   if((Value("BinIchDa") eq "present") $$ ($EVENT eq "on"))
      {
      fhem "set TVLICHT.* $EVENT";
      }
   elsif($EVENT eq "off")
      {
      fhem "set TVLICHT.* $EVENT";
      }
}
#END

Mal noch kurz erklärt. Es wird erst ein Textvergleich (wichtig, datentyp) gemacht, ob du da bist "UND" ("&&") ob das Signal ein "on" (wieder textvergleich mit "eq") ist, dann wird dein Aktor eingeschaltet. Alternativ, wenn dein Signal "off" ist, wird ausgeschaltet (da könnte man noch extra prüfen, ob das gerät überhaupt an ist - macht aber nix, wenn man das ausschalten sendet).

Den Code mal weitergesponnen (mit dem 3ten Schritt von oben im Text) würde sich anbieten, den Schaltzustand deiner Lampe in einem extra Notify für das Device abzufragen und entsprechend zu reagieren.

Hoffe es hilft dir
Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: rudolfkoenig am 04 Dezember 2013, 18:17:29
Tippfehler: $$ => &&

Statt
{fhem "trigger TVLicht_Notify on";}
wuerde ich
trigger TVLicht_Notify on
nehmen.

Sonst aber vorbildliche Loesung :)
Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: koldomon am 05 Dezember 2013, 12:05:19
UPS   ??? ??? ???

ja, den Fehler schaff ich nicht nur online  ;D
Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: Invers am 06 Dezember 2013, 13:45:13
Zuerst einmal bitte ich um Entschuldigung für die versüätete Reaktion von mir. Früher bekam ich immer eine Mail mit der Mitteilung über eine Antwort, die nun aber leider ausblieb. Deshalb dachte ich, es hat noch niemand geantwortet.

Danke für die Hilfe, ich werde das heute Abend probieren.
Ich hatte mir das zwar einfacher vorgestellt. So wie z.B. eine If Then Schleife.

Falls es nicht klappt, melde ich mich noch eimal.

Schönes Wochenende.
Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: Invers am 06 Dezember 2013, 17:31:42
Schade, klappt nicht.
Ich bin nun doch noch dazu gekommen, das heute zu testen. Leider musste ich etwas umbasteln, sodass nun der Code nicht oder nicht mehr funktioniert.
Die Lampen werden einfach nicht eingeschaltet.

Kann sich mal bitte jemand meine "Bemühungen" ansehenn :-) Wäre echt nett.

Fehlermeldung für beide Lampen:
TVLicht_Notify return value: syntax error at (eval 12001) line 1, at EOF
Stehlampe_Notify return value: syntax error at (eval 12003) line 1, at EOF

Code:

#AT zum Anschalten

define TVLicht_Trigger_AT_On at *{sunset("civil","500")} trigger TVLicht_Notify on
define Stehlampe_Trigger_AT_On at *{sunset("civil","500")} trigger Stehlampe_Notify on

#Notify für die Verarbeitung
define TVLicht_Notify notify TVLicht_Notify {if((Value("BinIchDa") eq "present") && ($EVENT eq "on"))} {fhem "set TVLICHT.* $EVENT"}
define Stehlampe_Notify notify Stehlampe_Notify {if((Value("BinIchDa") eq "present") && ($EVENT eq "on"))} {fhem "set Stehlampe.* $EVENT"}

#END


Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: hckoe am 06 Dezember 2013, 17:44:13
Ich glaube, da sind Klammern falsch gesetzt.
Versuche es einmal mit:

#Notify für die Verarbeitung
define TVLicht_Notify notify TVLicht_Notify {if((Value("BinIchDa") eq "present") && ($EVENT eq "on")) {fhem "set TVLICHT.* $EVENT"}}
define Stehlampe_Notify notify Stehlampe_Notify {if((Value("BinIchDa") eq "present") && ($EVENT eq "on")) {fhem "set Stehlampe.* $EVENT"}}


Gruß
Helmut
Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: Invers am 06 Dezember 2013, 20:08:16
Vielen Dank, daran hat es gelegen. Geht jetzt.
Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: ritschi am 15 Dezember 2013, 14:28:43
Hallo Zusammen,

ich stelle mir gerade die Frage, wie es aussieht, wenn man zwei Handy prüft...

#Notify für die Verarbeitung
define TVLicht_Notify notify TVLicht_Notify {if((Value("BinIchDa_1") eq "present") || (Value("BinIchDa_2") eq "present") && ($EVENT eq "on")) {fhem "set TVLICHT.* $EVENT"}}


Kann man das so machen? Für ein kurzes Feedback, würde ich mich freuen.

VG,
ritschi
Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: koldomon am 04 Januar 2014, 08:00:47
Hi,

ja, sollte klappen. Nur mit den Klammern aufpassen, da komm ich auch immer durcheinander

((Present1 || Present2) && Event)
Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: Puschel74 am 04 Januar 2014, 08:51:06
Hallo,

mit dem Klammern ist es gleich wie in Mathe:

((1+2)*3) != ((1)+2*3)
Wobei man sich diese Schreibweise (1+(2*3)) sparen kann (aber nicht muss - ist ja nicht falsch nochmal extra zu klammern).

Grüße
Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: Lling am 03 Februar 2014, 20:37:48
Ich schalte mich mal hier in das Thema ein weil es eigentlich fast dazu passt, was ich möchte aber nicht hinbekomme.
Also ich hab auf meinem RPI meinen FHEM Dienst laufen. Ich bin heute schon soweit gekommen, dass ich meine Steckdosen über die Weboberfläche schalten kann. Desweiteren hab ich über define iPhone PRESENCE lan-ping 192.168.***.** die Erkennung ob ich zu hause bin oder nicht. Soweit so gut also.

Was ich jetzt noch gerne hätte ist, dass er ab 17:00Uhr alle 15sec guckt, ob der Status present oder absent ist. Sobald der Status dann present ist, soll er die Lampen "Bildlampe" und "Schrankwand" an schalten. Wenn er das gemacht hat, braucht er nicht weiter gucken ob ich anwesend bin.
Um 24 Uhr sollen die Lampen dann wieder aus gehen.

Ich komm leider komplett aus einer anderen Ecke und hab daher absolut keine Ahnung von Programmieren. Die Tutorials im Wiki oder so helfen mir da leider auch nicht weiter.

Edit: ok ich hab es jetzt schon soweit, das die Lampen immer zum Sonnenuntergang an gehen und dass sie um 23:59 aus gehen. Jetzt soll das noch in Abhängigkeit zum Handy gehen.
Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: koldomon am 05 Februar 2014, 09:20:49
Hi,

da hast dir ja was vorgenommen :-)

Das Presence kannst du über einen Watchdog überwachen lassen. Das ab 17:00 Uhr geschaut werden soll, würde ich über einen AT machen, der ab 17:00 Uhr das attribut "disable" des Watchdog auf "0" setzt. Der Watchdog triggert ein Notify, das Notify setzt den Watchdoch auf "disable = 1".

Ich mach sowas ähnliches mit meinem Wohnzimmer-PC. Wenn der in Standby geht, lass ich über einen Watchdog und Notify's die Steckdose ausschalten. Ist ziemlich tricky mit dem Watchdog, but it works :-)
Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: Lling am 05 Februar 2014, 14:44:06
Habs alles hinbekommen. Ist auch eigentlich ganz einfach. Alles in einem Befehl ohne Watchdog etc. ;)
Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: Wernieman am 05 Februar 2014, 14:45:32
... und wie?
Titel: Antw:Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang
Beitrag von: Lling am 05 Februar 2014, 14:51:05
Ganz Simple eigentlich
Zitat
define Lichter_an at *{sunset(0,"17:00","22:00")}  {if (Value("iPhone") eq "present") { fhem ("set Bildlampe,Schrankwand on") }}
define Lichter_zwei at +*00:00:30 { fhem ("set Bildlampe,Schrankwand on") if($hour>=19 && $hour<22) && (Value("iPhone") eq "present")  }