Steckdosen schalten in Kombination mit Anwesenheit und Sonnenuntergang

Begonnen von Invers, 04 Dezember 2013, 17:07:37

Vorheriges Thema - Nächstes Thema

Invers

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.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

koldomon

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
OdroidC1 -> fhem
CUNO -> FS20
CUL -> HomeMatic
TCM310 -> enOcean
DUOFERN -> rademacher

rudolfkoenig

Tippfehler: $$ => &&

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

Sonst aber vorbildliche Loesung :)

koldomon

OdroidC1 -> fhem
CUNO -> FS20
CUL -> HomeMatic
TCM310 -> enOcean
DUOFERN -> rademacher

Invers

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.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Invers

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


Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

hckoe

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
# CT mit Debian Buster / FHEM aktuell / EnOcean TCM310 / Eltako FSA12, FUD12NPN, FSB12, FRW, FSRP-230V
# Permundo PCS234, Nodon NO-SIN-2-2-00, GTAGS

Invers

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

ritschi

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

koldomon

Hi,

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

((Present1 || Present2) && Event)
OdroidC1 -> fhem
CUNO -> FS20
CUL -> HomeMatic
TCM310 -> enOcean
DUOFERN -> rademacher

Puschel74

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
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.

Lling

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.

koldomon

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 :-)
OdroidC1 -> fhem
CUNO -> FS20
CUL -> HomeMatic
TCM310 -> enOcean
DUOFERN -> rademacher

Lling

Habs alles hinbekommen. Ist auch eigentlich ganz einfach. Alles in einem Befehl ohne Watchdog etc. ;)

Wernieman

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html