Tür auf --> Licht an (bei Dunkelheit) / Rollo hoch

Begonnen von mfeske, 14 Februar 2015, 13:36:33

Vorheriges Thema - Nächstes Thema

mfeske

Hallo zusammen,

da ich der Meinung bin, das die Fenster offen Funktion der Heizungsstellantriebe eigentlich ganz gut funktioniert habe ich also einen Fensterkontakt übrig. Diesem würde ich jetzt gerne eine neue Aufgabe zu kommen lassen, weiss aber noch nicht richtig wie ich es anfange und würde mich über Eure Hilfe freuen. Packe ich alles in die 99_myUtils.pm ? Folgendes Szenario schwebt mir vor.
Es ist dunkel (so eine Funktion habe ich schon bei der Weihnachtsbeleuchtung) sunset_abs('HORIZON=-2',0,"15:30", der Rolladen02 (schon eingerichtet in FHEM) ist unten und LED01_aussen, LED02_aussen sind (LED_aussen schaltet beide) off.
Wenn jetzt Kontakt_Flur open ist soll Rolladen02 hoch gehen und wenn es dunkel ist soll LED_aussen auf on gehen.
Wenn jetzt Kontakt_Flur closed ist soll Rolladen02 runter fahren, wenn es zum Beispiel nach 20:00 Uhr ist und LED_aussen auf off gehen.

Über Eure Hilfe und gute Tipps würde ich mich freuen, vielleicht sagt Ihr ja auch, das diese Idee totaler Quatsch ist und so nicht umsetzbar ist.

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

Bennemannc

Hallo,

ich würde das mit einem "notify" machen. Der registriert ob die Türe auf oder zu geht. Die Bedingungen was wnn passieren soll, kann man in ein DOIF IF oder if abfragen und entsprechend am Ende ein oder mehrere Set Befehle ausführen lassen.
Ob das Sinn macht oder Quatsch ist, musst Du entscheiden - gehen tut das auf jeden Fall.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

mfeske

#2
Ich bin doch newbi :-(
Mein Kontakt sieht so aus:
# Kontakte Anfang
define Kontakt_Garten MAX ShutterContact 0e45e3
attr Kontakt_Garten IODev cm
attr Kontakt_Garten devStateIcon opened:fts_door_open closed:fts_door:FS20.off
attr Kontakt_Garten room Wohnzimmer
define FileLog_Kontakt_Garten FileLog ./log/Kontakt_Garten-%Y.log Kontakt_Garten
attr FileLog_Kontakt_Garten logtype text
attr FileLog_Kontakt_Garten room MAX
# Kontakte Ende

und mein notify so:
define Kontakt_Garten_offen notify Kontakt_Garten { if (Value("Kontakt_Garten") eq "opened")}
attr Kontakt_Garten_offen room Wohnzimmer


Wenn ich den Kontakt öffne und schliesse wird mir das bei Kontakt_Garten über das Symbol angezeigt. Beim notify tut sich aber nichts :-(

Wie würde es den danach weiter gehen? Packt man die ganzen Bedingungen etc in eine 99_myUtils.pm ?
Die Logs sagen:
2015.02.14 15:41:08 3: Kontakt_Garten_offen return value: syntax error at (eval 5586) line 1, at EOF



Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

marvin78

Was soll das notify denn bewirken? Hast du dir das mal angeschaut? Da fehlt eigentlich alles.

Zrrronggg!

Genau.

müsste so aussehen:
define Kontakt_Garten_offen notify Kontakt_Garten { if (Value("Kontakt_Garten") eq "opened") { fhem("set blubber on")}}

Der ganze Teil "set blubber ob" (also was gemacht werden soll, wenn das if zutrifft) fehlt bei dir

Übrigends wenn Kontakt_Garten "opened" tatsächlich abliefert, brauchst du kein if.

Dann ginge auch
define Kontakt_Garten_offen notify Kontakt_Garten:opened  set blubber on
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

mfeske

Hatte auch gesehen, das der erste Versuch völliger Mist war und hatte dann folgendes probiert:
define Gartentuer dummy
attr Gartentuer room Wohnzimmer
define Kontakt_Garten_notify notify Kontakt_Garten { if (Value("Kontakt_Garten") eq "Closed")  { fhem("set Gartentuer zu") } else { fhem("set Gartentuer offen") }}
attr Kontakt_Garten_notify room Wohnzimmer


Leider auch hier keine Änderung an Gartentuer zu beobachten :-(

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

marvin78

Hier riecht es nach zu Faul zum selber machen. Hast du mal geschaut, wie das Event wirklich aussieht (Eventmonitor)? Ich tippe mal, dass es closed und nicht Closed heißt. Du brauchst aber, wie oben schon von Zrrronggg! erwähnt, auch gar kein if.

mfeske

#7
okay die Groß- Kleinschreibung :-( Hatte ich auch gefunden und es hatte zwei drei mal funktioniert das Gartentuer auf / zu anzeigt. Jetzt passiert gerade gar nichts, vermute die Credits. Nein zu faul nicht, ich will das ja fast alleine hin bekommen, aber als newbi nicht ganz einfach.

Ohne if ? Ich hatte überlegt das ganze irgendwie in die 99_myUtils.pm auszulagern.

Aber es ist doch richtig das ich mein Dummy und mein notify benötige ?

Auch mit verbose 5 sehe ich in den Logs nichts vom Kontakt_Garten

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

Bennemannc

Hallo,

normalerweise würde ich da nichts auslagern. BTW Du solltest den Eventmonitor öffnen und dann den Kontakt betätigen. Im Eventmonitor sieht man dann genau, was der Kontakt für Events (Daten) sendet. Ich gehe auch davon aus, dass open und closed gesendet wird - ist zumindest bei HM so.
ZitatWenn jetzt Kontakt_Flur open ist soll Rolladen02 hoch gehen und wenn es dunkel ist soll LED_aussen auf on gehen.
Wenn jetzt Kontakt_Flur closed ist soll Rolladen02 runter fahren, wenn es zum Beispiel nach 20:00 Uhr ist und LED_aussen auf off gehen.
Das mit dem if brauchst Du - deine Frage war ja "Tür geht auf" wenn Dunkel und Rollo zu und Led aus -> dann Rollo hoch, Led an.
Das zweite macht in meinen Augen wenig Sinn für ein Notify - das ist eher etwas für ein at mit if.
At *22:00:00 wenn Türe zu -> dann Rollo runter, Licht aus.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

Zrrronggg!

#9
define Kontakt_Garten_notify notify Kontakt_Garten { if (Value("Kontakt_Garten") eq "Closed")  { fhem("set Gartentuer zu") } else { fhem("set Gartentuer offen") }}

Das ist syntaktisch korrekt. Wenn das nichts macht ist am wahrscheinlichsten das Kontakt_Garten nicht "Closed" liefert, wie hier schon verschiedentlich angedeutet.

ZitatAuch mit verbose 5 sehe ich in den Logs nichts vom Kontakt_Garten

Dann macht Kontakt_garten auch nichts.
Weiteres Vorgehen siehe Post von Bennemannc.

ZitatAber es ist doch richtig das ich mein Dummy und mein notify benötige ?

Wenn das Dummy nur für eine Anzeige ist, könnte man das ggf auch weglassen und sich den Status des Kontaktes direkt ansehen. Ich mache das aber ab und an auch so wie du. KANN man also so machen.

ZitatOhne if ?
Es geht ohne if und da if-kontrukte immer komplexer sind und mehr Fehlerpotential bergen wäre ohne if vielleicht die bessere Wahl. Auch wenn du "else" benutzt brauchst du keine if:

define Kontakt_Garten_offen notify Kontakt_Garten:opened  set Gartentuer offen
define Kontakt_Garten_zu notify Kontakt_Garten:closed  set Gartentuer zu


Fertig. Kein if, 2 Zeilen.

ZitatIch hatte überlegt das ganze irgendwie in die 99_myUtils.pm auszulagern.
Diese simpelsten 2-Zeiler?
das würde ich nicht machen.
Meiner Auffassung nach gehört in die 99_myUtils.pm Subroutinen und komplexere Sachen, nicht so Butter und Brot Kram wie einfachste notifys. Dannn kannst du ja auch gleich alles auslagern.*

Und ein einfaches notify künstlich mit in ein Perl if-konstrukt umzubauen, um es in die 99_myUtils.pm auszulagern... also äh...   ;)


*Es gibt Leute die arbeiten so, dass sie in die fhem.cfg nur das allernötigste reinschreiben und den Rest in include Dateien auslagern. DAS kann man machen, auch weil es übersichlticher ist. Ist Empfehlenswert, wenn man geschlossene Funktionsbereiche hat wie
- eine Datei für die Alarmanlage
- eine für die Heizungsstuerung
- eine für Anwesenheitserkennung
etc.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

mfeske

#10
Na gut ich werde mal weiter rumprobieren, den Dummy werde ich mal als Kontrolldummy behalten :-) Och bescheuert kann man ruhig zu mir sagen, ich bin in einem Alter wo ich das verkrafte.
Ich stelle mir das halt alles viel komplexer vor als es von Euch beschrieben ist. Vielleicht hatte ich ja nicht richtig erläuter was ich will ;-) Wenn ich die Tür abends mal auf mache, dann soll der Rolladen hoch fahren und das Licht angehen. Bisher muss ich halt auf einer Fernbedienung zwei Tasten drücken (ist ja eigentlich nicht das Problem, wenn das Suchen der Ferbedienung nicht wäre). Wenn ich dann vom Holz holen zurück bin und es dunkel ist und nach 21:00 Uhr soll der Rolladen runterfahren und das Licht wieder aus gehen. Wenn ich tagsüber die Tür wieder zu mache soll der Rolladen aber nicht runterfahren.

Tür auf
Das Licht soll ja nur angehen, wenn die Tür auf geht und es dunkel ist und der Rolladen soll ja auch nur angesteuert werden wenn er wirklich unten ist.

Tür zu
Das Licht soll nur ausgehen, wenn es eingeschaltet ist und die Tür zu gemacht wurde. Der Rolladen soll auch nur runtergehen, wenn es Zeit dafür ist zum Beispiel 21:00 Uhr.

Ich dachte das wäre in der 99_myUtils.pm besser aufgehoben und das notify schickt nur den Befehl zum auslösen.

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

Zrrronggg!

Zitat von: mfeske am 14 Februar 2015, 18:51:10
Och bescheuert kann man ruhig zu mir sagen, ich bin in einem Alter wo ich das verkrafte.
ich habs trotzdem mal wieder rausgenommen, war natürlich liebevoll gemeint. :D

ZitatTür auf
Das Licht soll ja nur angehen, wenn die Tür auf geht und es dunkel ist und der Rolladen soll ja auch nur angesteuert werden wenn er wirklich unten ist.

dafür wird man am ende ein if brauchen, ja.
Das ist alles trotzdem nicht schwer. nur musst du erstmal sicherstellen, das die einfachen dinge auch gehen, also als erstes ermitteln was der Türkontakt tatsächlich sendet.


ZitatIch dachte das wäre in der 99_myUtils.pm besser aufgehoben und das notify schickt nur den Befehl zum auslösen.

Aus meiner Sicht nicht. Alles was ich in 4-5 Zeilen erledigen kann kommt bei mit nicht in die 99_myUtils.pm. Andere mögen das anders sehen.

FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Bennemannc

Hallo,

da stimme ich Zrrronggg zu. Aber so kommen wir leider nicht weiter. Also links im Menue ganz unten sollte der Eventmonitor sein. Den öffnen, und anschließend die Türe mal auf - kurz warten - und wieder zu machen. Einen Screenshot von der Eventmonitor Seite und wir wissen erst einmal, ob und was der Kontakt sendet.
Danach sehen wir weiter.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

mfeske

geht :
2015-02-16 14:34:24 dummy Gartentuer offen
2015-02-16 14:34:24 dummy Gartentuer offen
2015-02-16 14:34:24 dummy Gartentuer offen
2015-02-16 14:34:24 MAX Kontakt_Garten battery: ok
2015-02-16 14:34:24 MAX Kontakt_Garten onoff: 1
2015-02-16 14:34:24 MAX Kontakt_Garten opened
2015-02-16 14:35:04 dummy Gartentuer zu
2015-02-16 14:35:04 dummy Gartentuer zu
2015-02-16 14:35:04 dummy Gartentuer zu
2015-02-16 14:35:04 MAX Kontakt_Garten battery: ok
2015-02-16 14:35:04 MAX Kontakt_Garten onoff: 0
2015-02-16 14:35:04 MAX Kontakt_Garten closed
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

Damian

Zitat von: mfeske am 14 Februar 2015, 18:51:10
Na gut ich werde mal weiter rumprobieren, den Dummy werde ich mal als Kontrolldummy behalten :-) Och bescheuert kann man ruhig zu mir sagen, ich bin in einem Alter wo ich das verkrafte.
Ich stelle mir das halt alles viel komplexer vor als es von Euch beschrieben ist. Vielleicht hatte ich ja nicht richtig erläuter was ich will ;-) Wenn ich die Tür abends mal auf mache, dann soll der Rolladen hoch fahren und das Licht angehen. Bisher muss ich halt auf einer Fernbedienung zwei Tasten drücken (ist ja eigentlich nicht das Problem, wenn das Suchen der Ferbedienung nicht wäre). Wenn ich dann vom Holz holen zurück bin und es dunkel ist und nach 21:00 Uhr soll der Rolladen runterfahren und das Licht wieder aus gehen. Wenn ich tagsüber die Tür wieder zu mache soll der Rolladen aber nicht runterfahren.

Tür auf
Das Licht soll ja nur angehen, wenn die Tür auf geht und es dunkel ist und der Rolladen soll ja auch nur angesteuert werden wenn er wirklich unten ist.

Tür zu
Das Licht soll nur ausgehen, wenn es eingeschaltet ist und die Tür zu gemacht wurde. Der Rolladen soll auch nur runtergehen, wenn es Zeit dafür ist zum Beispiel 21:00 Uhr.

Ich dachte das wäre in der 99_myUtils.pm besser aufgehoben und das notify schickt nur den Befehl zum auslösen.

Gruß
Micha

hier mal was Konkretes als Anregung ohne myUtils:

define di_Licht DOIF ([Kontakt_Garten] eq "opened" and [?dunkel] eq "on" and [?licht] eq "off")
  (set licht on)
DOELSE
  (set licht off)

attr di_Licht do always

define di_Rollo DOIF ([Kontakt_Garten] eq "opened" and [?dunkel] eq "on" and [?rollo] eq "unten")
(set rollo hoch)
DOELSEIF ([?21:00-00:00] and [Kontakt_Garten] eq "closed" and [?rollo] eq "oben")
  (set rollo runter)

attr di_Rollo do always


Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF