Hallo,
ich nutze FHEM auch als Terrarium Steuerung. Da die Terrarien im Gästezimmer sind, möchte ich nun Fhem über einen Button mitteilen dass Gäste da sind und die Zeiten für die Beleuchtung ändern...
D.h. in der Regel gehen die Lampen zum Sonnenaufgang an und zum Untergang aus. Wenn jetzt besuch da ist, soll das Licht aber erst um 10Uhr angehen. Wie mach ich das?
Im Fhem Wiki habe ich "Enable/Disable Button am Beispiel eines WeekdayTimer" gefunden ist das das richtige dafür?
Wenn du den WeekdayTimer dafür verwendest, ist das eventuell richtig. Um die aber einen qualifizierten Rat geben zu können, fehlen einfach die Infos darüber, wie du die Steuerung bisher umgesetzt hast.
Zitat von: marvin78 am 27 November 2015, 18:06:07
Wenn du den WeekdayTimer dafür verwendest, ist das eventuell richtig. Um die aber einen qualifizierten Rat geben zu können, fehlen einfach die Infos darüber, wie du die Steuerung bisher umgesetzt hast.
Momentan wird das ganze so gesteuert
define Heizung.Ameisen IT 0F000F000F FF F0
attr Heizung.Ameisen IODev CUL_1
attr Heizung.Ameisen group Heizung Ameisen
attr Heizung.Ameisen icon temp_temperature
attr Heizung.Ameisen room Gästezimmer
define Heizung.Ameisen.an at *08:00:00 set Heizung.Ameisen on
attr Heizung.Ameisen.an group Heizung Ameisen
attr Heizung.Ameisen.an room Gästezimmer
define Heizung.Ameisen.aus at *20:00:00 set Heizung.Ameisen off
attr Heizung.Ameisen.aus group Heizung Ameisen
attr Heizung.Ameisen.aus room Gästezimmer
#Code C - 03
define LED.Ameisen IT 0F00FF000F FF F0
attr LED.Ameisen IODev CUL_1
attr LED.Ameisen group Steckdosen Ameisen
attr LED.Ameisen icon light_ceiling
attr LED.Ameisen room Gästezimmer
define LED.Ameisen.an at *08:00:00 set LED.Ameisen on
attr LED.Ameisen.an group Steckdosen Ameisen
attr LED.Ameisen.an room Gästezimmer
define LED.Ameisen.aus at *22:00:00 set LED.Ameisen off
attr LED.Ameisen.aus group Steckdosen Ameisen
attr LED.Ameisen.aus room Gästezimmer
#Code C - 04
Da wohl nicht immer Gäste anwesend sind würde ich ein zweites at erstellen und zwischen den beiden at umschalten.
Ob das per echtem Taster erfolgt oder per Dummy (wenn kein realer Taster existiert) ist ja egal.
Einfach in einem notify switchen lassen.
Frei Schnauze und ohne getestet:
define Gaeste dummy
attr Gaeste webCmd Ja:Nein
define n_Ameisen_Gast notify Gaeste {
if ($EVENT eq "Ja") {
fhem("attr LED.Ameisen.an disable 1");
fhem("attr <Name_des_anderen_at> disable 0");
}
else {
fhem("attr LED.Ameisen.an disable 0");
fhem("attr <Name_des_anderen_at> disable 1");
}
}
Edith: Achtung! Mein Beispiel direkt in die fhem.cfg "geprügelt" wird nicht klappen und Fehlermeldungen produzieren.
Edith1: Man kann auch bei einem at bleiben und mit modify arbeiten um den Schaltzeitpunkt zu ändern.
Edith2: Sollte dann so klappen:
define n_Ameisen_Gast notify Gaeste {
if ($EVENT eq "Ja") {
fhem("modify Heizung.Ameisen.an at *10:00:00");
}
else {
fhem("modify Heizung.Ameisen.an at *08:00:00");
}
}
OT: Kleine Anmerkung meinerseits - da . in Perl ein Wildcard ist benutze ich in Namen nur _
Das Thema habe ich auch, wobei wir im Terrarium da keine Rücksicht nehmen, sondern ein Handtuch rüber hängen, damit das Tier nicht zu sehr aus dem Rhythmus kommt.
Aber im Aquarium mache ich das: http://forum.fhem.de/index.php/topic,37457.msg297346.html#msg297346
In Deinem Fall würde ich jetzt wieder zu dem Schweizer Taschenmesser von FHEM greifen - auch bekannt als DOIF.
Zuerst einen Dummy definieren:define Terra_Automatiklicht dummy
attr Terra_Automatiklicht alias Zeitschaltuhr Verzoegerung
attr Terra_Automatiklicht devStateIcon an:general_an:aus aus:general_aus:an
attr Terra_Automatiklicht group Aquarium GZ
attr Terra_Automatiklicht icon hourglass
Und jetzt zum DOIF:
define terra_Licht DOIF
([*07:00] and [Terra_Automatiklicht] eq "an") (set terra_Licht value on)
doelseif
([*10:00] and [Terra_Automatiklicht] eq "aus") (set terra_Licht value on)
doelseif
([*19:00] and [Terra_Automatiklicht] eq "aus") (set terra_Licht value off)
doelseif
([*20:00] and [Terra_Automatiklicht] eq "an") (set terra_Licht value off)
Das ist nur mal so ungeprüft aus der Hüfte geschossen und mit festen Zeiten versehen. Aber das kannst Du Dir hinbiegen und mit den Werten SUNSET und SUNSRISE verfeinern.
bedingte Grüße
Niels
ZitatDas ist nur mal so ungeprüft aus der Hüfte geschossen und mit festen Zeiten versehen.
([*07:00] and [Terra_GZ_Automatiklicht] eq "an") (set terra_Licht value on)
+ und ? ist mir klar aber * vermisse ich in der commandref zu DOIF - oder ich hab Tomaten auf den Augen.
geschossene Grüsse aus der commandref ;D
Wohl wahr, also lassen wir den * einfach weg 8)
großzügige Grüße
Niels
Zitat von: Muschelpuster am 27 November 2015, 19:47:12
Wohl wahr, also lassen wir den * einfach weg 8)
und aus doelseif machen wir mal DOELSEIF
FHEM ist nun mal leider case-sensitiv ;)
[ot]
Zitat von: Puschel74 am 27 November 2015, 19:56:41FHEM ist nun mal leider case-sensitiv ;)
Warum leider - irgendwie müssen solche Penner wie ich doch in den Wahn getrieben werden 8)
nachlässige Grüße
Niels
[/ot]
Streich das Penner und mach User draus - Penner hat so einen schalen Beigeschmack :P
unterstützende Grüße
Zitat von: Muschelpuster am 27 November 2015, 19:07:13
Das Thema habe ich auch, wobei wir im Terrarium da keine Rücksicht nehmen, sondern ein Handtuch rüber hängen, damit das Tier nicht zu sehr aus dem Rhythmus kommt.
Aber im Aquarium mache ich das: http://forum.fhem.de/index.php/topic,37457.msg297346.html#msg297346
In Deinem Fall würde ich jetzt wieder zu dem Schweizer Taschenmesser von FHEM greifen - auch bekannt als DOIF.
Zuerst einen Dummy definieren:define Terra_Automatiklicht dummy
attr Terra_Automatiklicht alias Zeitschaltuhr Verzoegerung
attr Terra_Automatiklicht devStateIcon an:general_an:aus aus:general_aus:an
attr Terra_Automatiklicht group Aquarium GZ
attr Terra_Automatiklicht icon hourglass
Und jetzt zum DOIF:
define terra_Licht DOIF
([*07:00] and [Terra_Automatiklicht] eq "an") (set terra_Licht value on)
doelseif
([*10:00] and [Terra_Automatiklicht] eq "aus") (set terra_Licht value on)
doelseif
([*19:00] and [Terra_Automatiklicht] eq "aus") (set terra_Licht value off)
doelseif
([*20:00] and [Terra_Automatiklicht] eq "an") (set terra_Licht value off)
Das ist nur mal so ungeprüft aus der Hüfte geschossen und mit festen Zeiten versehen. Aber das kannst Du Dir hinbiegen und mit den Werten SUNSET und SUNSRISE verfeinern.
bedingte Grüße
Niels
Ich habe jetzt einfach mal deinen Code übernommen mit den Zusatzinfos des nachfolgenden Komentaren dabei kam raus
define Anwesenheit_Gaeste dummy
attr Anwesenheit_Gaeste alias Gaeste da?
attr Anwesenheit_Gaeste room Test
attr Anwesenheit_Gaeste webCmd Ja:Nein
define terra_Licht DOIF ([07:00] and [Anwesenheit_Gaeste] eq "Ja") (set LED.Ameisen value on)
DOELSEIF ([10:00] and [Anwesenheit_Gaeste] eq "Nein") (set LED.Ameisen value on)
DOELSEIF ([19:00] and [Anwesenheit_Gaeste] eq "Nein") (set LED.Ameisen value off)
DOELSEIF ([20:00] and [Anwesenheit_Gaeste] eq "Ja") (set LED.Ameisen value off)
Sobald ich diesen Code einspiele und die fhem.cfg neu laden bekomme ich diese Fehlermeldung...
ZitatUnknown command DOELSEIF, try help.
Unknown command DOELSEIF, try help.
Unknown command DOELSEIF, try help.
Wenn ich jetzt mal nach "DOELSEIF" google finde ich auch nichts :( google schlägt mir dann vor nach "ELSEIF" zu suchen...
Was mache ich nun falsch?
Ja, so geht das nicht in die CFG! Dann müssen die Returns raus! Auch ich musste lernen, dass das Editieren der Konfig der falsche Weg ist. Dazu gibt es oben auf der GUI die unscheinbar anmutende Kommandozeile.
Da schreibst Du rein:define Terra_Licht DOIF ([07:00]) (set Terra_Licht value on)
und drückst Return. Den Rest der Definition änderst Du anschließend, indem Du in dem Element auf 'Def' klickst und die Definition Schritt für Schritt erweiterst.
graphische Grüße
Niels
Zitat von: Muschelpuster am 28 November 2015, 10:41:43
Ja, so geht das nicht in die CFG! Dann müssen die Returns raus! Auch ich musste lernen, dass das Editieren der Konfig der falsche Weg ist. Dazu gibt es oben auf der GUI die unscheinbar anmutende Kommandozeile.
Da schreibst Du rein:define Terra_Licht DOIF ([07:00]) (set Terra_Licht value on)
und drückst Return. Den Rest der Definition änderst Du anschließend, indem Du in dem Element auf 'Def' klickst und die Definition Schritt für Schritt erweiterst.
graphische Grüße
Niels
Danke für den Tipp ich merke FHEM ist da sehr sensibel was das angeht...
So hier mal mein Code...
###########################################
#---------- Terrarium Steuerung ----------#
###########################################
define anwesenheit_gaeste dummy
attr anwesenheit_gaeste alias Gäste da?
attr anwesenheit_gaeste room Test
attr anwesenheit_gaeste webCmd Ja:Nein
define winter_zeit dummy
attr winter_zeit alias Winterzeit?
attr winter_zeit room Test
attr winter_zeit webCmd Ja:Nein
define licht_autom DOIF ([07:00] and [anwesenheit_gaeste] eq "Nein") (set LED.Ameisen on)\
DOELSEIF ([10:00] and [anwesenheit_gaeste] eq "Ja") (set LED.Ameisen on)\
DOELSEIF ([20:00] and [anwesenheit_gaeste] eq "Ja") (set LED.Ameisen off)\
DOELSEIF ([21:00] and [anwesenheit_gaeste] eq "Nein") (set LED.Ameisen off)
attr licht_autom alias Ameisen Licht Automatik
attr licht_autom room Test
define heizung_autom DOIF ([07:00] and [anwesenheit_gaeste] eq "Nein" and [winter_zeit] eq "Ja") (set Heizung.Ameisen on)\
DOELSEIF ([10:00] and [anwesenheit_gaeste] eq "Ja" and [winter_zeit] eq "Ja") (set Heizung.Ameisen on)\
DOELSEIF ([20:00] and [anwesenheit_gaeste] eq "Ja" and [winter_zeit] eq "Ja") (set Heizung.Ameisen off)\
DOELSEIF ([21:00] and [anwesenheit_gaeste]eq "Nein" and [winter_zeit] eq "Ja") (set Heizung.Ameisenn off)
DOELSEIF ([winter_zeit] eq "Nein") (set Heizung.Ameisenn off)
attr heizung_autom alias Ameisen Heizung Automatik
attr heizung_autom room Test
ist das so richtig mit der Winterzeit?
Mhh, was willst Du mit der Winterzeit erreichen? Im Sommer soll nicht geheizt werden? Und stört die Heizung die Gäste?
Ich habe da Temperaturabhängig gearbeitet. Im Terrarium unserer Bartagame ist LED-Licht, ein UV-Hotspot und eine 50W Zusatzheizung in Form eines Wärmestrahlers drin. Die Temperatur und die Luftfeuchte wird über 1-Wire ermittelt und auch das Schalten von Hotspot und Heizung geht über 1-Wire mit elektronischem Relais. So schaltet die Heizung absolut geräuschfrei, beim Hotspot macht das Vorschaltgerät leider ganz leise Geräusche, was meinen Junior der direkt daneben schläft aber nicht stört.
Hotspot und LED geht zeitgesteuert an, die Zusatzheizung über Zeit und Temperatur:define ET_Hotspot DOIF
([1Wire_TerraTemp_MO:temperature] > 21 and [?19:01-06:29]) (set Terra_Switch_1 0)
DOELSEIF
([1Wire_TerraTemp_MO:temperature] < 19 and [?19:01-06:29]) (set Terra_Switch_1 1)
DOELSEIF
([1Wire_TerraTemp_MO:temperature] > 33 and [?06:30-19:00]) (set Terra_Switch_1 0)
DOELSEIF
([1Wire_TerraTemp_MO:temperature] < 27 and [?06:30-19:00]) (set Terra_Switch_1 1)
Aber da sind die Anforderungen an die verschiedenen Terrarien ja auch unterschiedlich - wir brauchen z.B. eine große Tag-/Nacht-Differenz.
terraristische Grüße
Niels
Zitat von: Muschelpuster am 28 November 2015, 13:15:31
Mhh, was willst Du mit der Winterzeit erreichen? Im Sommer soll nicht geheizt werden? Und stört die Heizung die Gäste?
Ich habe da Temperaturabhängig gearbeitet. Im Terrarium unserer Bartagame ist LED-Licht, ein UV-Hotspot und eine 50W Zusatzheizung in Form eines Wärmestrahlers drin. Die Temperatur und die Luftfeuchte wird über 1-Wire ermittelt und auch das Schalten von Hotspot und Heizung geht über 1-Wire mit elektronischem Relais. So schaltet die Heizung absolut geräuschfrei, beim Hotspot macht das Vorschaltgerät leider ganz leise Geräusche, was meinen Junior der direkt daneben schläft aber nicht stört.
Hotspot und LED geht zeitgesteuert an, die Zusatzheizung über Zeit und Temperatur:define ET_Hotspot DOIF
([1Wire_TerraTemp_MO:temperature] > 21 and [?19:01-06:29]) (set Terra_Switch_1 0)
DOELSEIF
([1Wire_TerraTemp_MO:temperature] < 19 and [?19:01-06:29]) (set Terra_Switch_1 1)
DOELSEIF
([1Wire_TerraTemp_MO:temperature] > 33 and [?06:30-19:00]) (set Terra_Switch_1 0)
DOELSEIF
([1Wire_TerraTemp_MO:temperature] < 27 and [?06:30-19:00]) (set Terra_Switch_1 1)
Aber da sind die Anforderungen an die verschiedenen Terrarien ja auch unterschiedlich - wir brauchen z.B. eine große Tag-/Nacht-Differenz.
terraristische Grüße
Niels
Nein nein da gehts nicht um die Gäste sondern um die Terrariumheizung :D wie vielleicht schon gesehen sind im Terrarium Ameisen;D und diese Art hat auch so was wie Winterschlaf da brauchen sie keine wäre somit kann ich da die Heizung ausschalten...
Ok, dann brauchst Du doch in der Heizung nicht den Gäste-Dummy. Sollte zwar funktionieren, wie Du das gebaut hast (wenn die Heizung im Winter angehen soll), aber ich würde da kürzen und die Heizung soll ja im Sommer an:
define heizung_autom DOIF ([07:00] and [winter_zeit] eq "Nein") (set Heizung.Ameisen on)\
DOELSEIF ([21:00] and [winter_zeit] eq "Nein") (set Heizung.Ameisenn off)
DOELSEIF ([winter_zeit] eq "Nein") (set Heizung.Ameisenn off)
attr heizung_autom alias Ameisen Heizung Automatik
attr heizung_autom room Test
Das müsste doch reichen, oder?
gekürzte Grüße
Niels