Sunrise/Sunset Definitionen

Begonnen von stobor, 02 November 2013, 20:15:47

Vorheriges Thema - Nächstes Thema

Zrrronggg!

define FlurlichtAn at *{sunset("HORIZON=-0.833",0,"16:00","22:00")} set lamp1 on ;; define Lampe_später_aus at +03:00:00 set lamp1 off

Die Lampe wird angemacht wann immer es lauf Sunset und deinen Sunset-Parametern Zeit ist, 3 Stunden später geht sie aus.

Für "WE länger" gibt's mehrere Möglichkeiten ich denke noch bisschen nach, welche ich die beste finde.

Wenn ich ein bisschen Kritik über darf: Ich hab's ja jetzt , aber du bist schwer zu verstehen.
Du formulierts irgendwie ungenau und unvollständig, sodass zumindest ich nicht direkt kapiere, was du genau willst.

Ich habs zwar jetzt verstanden aber in deinem letzten Post steht z.b.

Zitatich möchte keine feste Zeit haben die sollte sich ändern

DU weisst was du damit meinst (und ich jetzt auch) aber jeder andere kann mit so einem Satz weniger anfangen.
Was soll denn "Zeit soll sich verändern" heissen? Ich könnte dir ja z.b. einen Code basteln wo die Lampe jeden Tag zu einer anderen Uhrzeit ausgeht, mal 2 Minuten nach dem sie angemacht wurde, mal 11 Stunden und am nächsten Tag nach 4 Stunden und 12 Minuten. Da würde die Zeit sich ja auch verändern, aber das ist ja trotzdem nicht was du willst.

Schreib doch anstelle dessen:
"Die Lampe soll nicht um einen bestimmte Uhrzeit ausgehen, sondern xy Stunden nach dem sie angegangen ist."

Ganz generell kommt man mit FHEM weiter, wenn man eindeutig beschreiben kann, was man will. D.H. Fhem kann nur so Kram wie
"immer wenn x, soll y passieren"
Und das muss man vorher auch in normaler Sprache formulieren können, sonst hat man's schwer.



[/size]
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

moonsorrox

#31
OK ich danke dir und erst Recht für das Verständnis mir zu zuhören :D :D..

Klar Kritik ist immer gut... kein Problem, man stellt sich manchmal doof an etwas richtig zu beschreiben...!

Also auf den Einfall zu kommen und das so zu machen wie du es mir hier anbietest dauert eben, bin doch noch ganz am Anfang ;)
{sunset("HORIZON=-0.833",0,"16:00","23:20")}
Damit ist es mir auch klar, die Zeit verschiebt sich automatisch mit dem sunset Wert.

Ich wollte damit erreichen das die Beleuchtung Außen jeden Tag zu einer anderen Zeit ausgeht(was ja jetzt mit den 3Std getan ist)
OK Danke nochmals
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Zrrronggg!

#32
Wenn du ausserdem noch willst, dass die Lampe spätestens um 23:50 ausgeht, dann kannst du einfach noch eine weitere Zeile hinzufügen:

define Lamp_23_aus at *23:50:00 set lamp1 off

dann geht sie 3 Stunden nach einschalten aus, jedoch spätestens um 23:50 Uhr


Der Name des defines (hier "Lamp_23_aus") ist egal und dient nur der bessern Lesbarkeit.

define FlunzDdOOsen66 at *23:50:00 set lamp1 off

würde genauso funktionieren.
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

stobor

Ich habe jetzt ja die ursprüngliche 99_SUNRISE_EL.pm im Einsatz uns schalte per

define LichtAn at *{sunset("HORIZON=-0.833",0,"16:00","22:00")} {

Allerdings scheint jetzt die isday() Funktion auch später zu greifen. Kann das sein? Ich nutze isday() wie folgt:

define PIR_West_aus notify Bewegungsmelder_West:on {\
if (Value("PIR_Automatik") eq "on" && !isday()) {\
  fhem "set Licht on-for-timer 192";;
...\


Als ich noch die 99_SUNRISE_EL.pm auf meine sunset-Parameter angepasst hatte, schien isday() eher zu schalten.
Kann ich das auch beeinflussen?

Danke
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-73-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 27642
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

Puschel74

Hallo,

Zitatschien isday() eher zu schalten

Dafür lass ich solche Daten (Uhrzeiten) in die Datenbank loggen und bastel mir dann einen Plot dazu.
Nach ein paar Tagen Laufzeit kann man schön sehen wann die Funktionen auslösen.

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.

stobor

Schön wäre ja aber zu wissen, wie man das beeinflussen kann.
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-73-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 27642
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

Zrrronggg!

ZitatAls ich noch die 99_SUNRISE_EL.pm auf meine sunset-Parameter angepasst hatte, schien isday() eher zu schalten.
Kann ich das auch beeinflussen?

Isday unterscheided Tag und Nacht so wie sunset und sunrise OHNE jeden Parameter schalten würde. Ich vermute, dass du durch deine Veränderungen im 99_SUNRISE_EL.pm isday beeinflusst hast.
Welche Paramter auch bei isday anwendbar sind weiss ich nicht, geht auch aus der Commandref nicht hervor. Ich nehme mal an das CIVIL, REAL etc auch gehen.

Wenn nicht:
entweder
- doch in 99_SUNRISE_EL.pm rumfummeln oder
- eigene Iday basteln:

Dazu einen Dummy erzeugen, der z.d. TAG heisst.

Zitatdefine dummy TAG

diesen dann mit sunrise und sunset befüllen wie du willst

Zitatdefine IST_NACHT at *{sunset("HORIZON=-0.833",0,"16:00","22:00")} set TAG Nacht 
define IST_TAG at *{sunrise()} set TAG Tag

Und dann später auf den Wert von TAG testen:


Zitatdefine PIR_West_aus notify Bewegungsmelder_West:on {\
if (Value("PIR_Automatik") eq "on" && (Value("TAG") eq "Nacht" {\
  fhem "set Licht on-for-timer 192";;
...\






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

moonsorrox

#37
ich muss hier jetzt nochmal fragen da die Zeit bei mir nicht greift
ich habe die Einschaltzeit jetzt so
define AussenLampeEin at *{sunset("HORIZON=-12",0,"17:30","22:30")} set AussenLampe on
das ergibt für morgen 17:59 Uhr

Auschaltzeit habe ich so:
define AussenLampeAus at *{sunset("HORIZON=-0.833",0,"22:45","23:45")} set AussenLampe off ;; define AussenLampeAus at +05:00:00 set AussenLampe off
es bleibt also immer 22:45 Uhr, wann greift dann die 5 Std. sollte doch eigentlich 5 Std. später also 23 Uhr werden
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Zrrronggg!

Zitates bleibt also immer 22:45 Uhr, wann greift dann die 5 Std. sollte doch eigentlich 5 Std. später also 23 Uhr werden

In dem Konstrukt GAR NICHT.

1.
Zitatdefine AussenLampeAus at *{sunset("HORIZON=-0.833",0,"22:45","23:45")} set AussenLampe off
macht die Lampe um 22:45 aus. IMMER. Und zwar weil
Zitatsunset("HORIZON=-0.833"
immer oder je nach Breitengrad fast immer vor 22:45 ist.  Dass dann der Nachsatz
Zitatdefine AussenLampeAus at +05:00:00 set AussenLampe off
die Lampe 5 Stunden später NOCH MAL aus macht... sieht man nicht, die Lampe ist ja schon aus.

Mit anderen Worten: Du machst mit deinem Konstrukt die Lampe 5 Stunden aus nachdem sie ausgeschaltet wurde... klingt nicht wie das was man will? Eben.
Und ausserdem formulierst du dein sunset so, dass es identisch ist mit "at 22:45:00".

2. Ferner wird 
Zitatdefine AussenLampeAus at +05:00:00 set AussenLampe off
gar nicht erzeugt, denn der Name diesen Defines ist ja der SELBE wie
Zitatdefine AussenLampeAus at *{sunset("HORIZO..
. Das geht aber nicht, eine define kann es nur einmal geben. Daher wird FHEM das zweite nicht anlegen und im Log die Fehlermeldung rausgeben: "Please delete AussenLampeAus first"

Beachte, dass mein ursprünglicher Vorschlag

define FlurlichtAn at *{sunset("HORIZON=-0.833",0,"16:00","22:00")} set lamp1 on ;; define Lampe_spaeter_aus at +03:00:00 set lamp1 off

folgende Unterschiede aufweist:

1. Die Lampe geht 5 Stunden aus nachdem sie EINGESCHALTET wurde.
2. die beiden defines haben unterschiedliche Namen.
3. das zweite define heisst nicht "Lampe_aus" sondern "Lampe_spaeter_aus". Obgleich der Name des Defines an sich für die Funktion egal ist und auch "uezelgoe4354_tt" heissen könnte, so sind kleine Tricks wie das einfuegen von "_spaeter_" in den Namen eine zusätzliche Sicherheit, dass man nicht aus Versehen 2 Sachen gleich nennt.
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

ph1959de

@Zrrronggg! - super erklärt. Danke dafür.

Aber:
Zitat von: Zrrronggg! am 08 November 2013, 00:44:27
define FlurlichtAn at *{sunset("HORIZON=-0.833",0,"16:00","22:00")} set lamp1 on ;; define Lampe_spaeter_aus at +03:00:00 set lamp1 off

folgende Unterschiede aufweist:

1. Die Lampe geht 5 Stunden aus nachdem sie EINGESCHALTET wurde.
das müssten 3 Stunden sein (sonst hab ich das Beispiel doch noch nicht verstanden), richtig?

Gruß, Peter
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

Zrrronggg!

Zitatdas müssten 3 Stunden sein
Korrekt, men Fehler, sorry.
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

moonsorrox

#41
also ich dachte auch das ich es verstanden habe, aber dem ist wohl nicht so... :'(

ich habe das jetzt im Einsatz:
define AussenLampeEin at *{sunset("HORIZON=-0.833",0,"16:00","22:00")} set AussenLampe on ;; define Lampe_spaeter_aus at +05:00:00 set AussenLampe off

attr AussenLampeAus alias Beleuchtung 3x LED Aus
attr Lampe_spaeter_aus alias Beleuchtung 3x LED Aus
attr AussenLampeAus group Zeiten
attr Lampe_spaeter_aus group Zeiten
attr AussenLampeAus room 2_Licht Eingang
attr Lampe_spaeter_aus 2_Licht Eingang


das einschalten sehe ich in der fhem Weboberfläche aber ich bekomme den Ausschaltzeitpunkt nicht zu sehen, der ja entweder 3, 4 oder auch 5 Std. später sein sollte.
Und ich bekomme folgende Meldungen:

Please define AussenLampeAus first
Please define Lampe_spaeter_aus first
Please define AussenLampeAus first
Please define Lampe_spaeter_aus first
Please define AussenLampeAus first
Please define Lampe_spaeter_aus first



Ich habe das jetzt erst einmal so gelöst:

So für das Einschalten: ergibt für heute eine Zeit von 17:58:12 Uhr
define AussenLampeEin at *{sunset("HORIZON=-12",0,"17:30","22:30")} set AussenLampe on
attr AussenLampeEin alias Beleuchtung 3x LED An
attr AussenLampeEin group Zeiten
attr AussenLampeEin room 2_Licht Eingang


und so für das Ausschalten: ergibt heute eine Zeit von 23:17:13 Uhr
define AussenLampeAus at *{sunset(21600,"22:55","23:45")} set AussenLampe off
attr AussenLampeAus alias Beleuchtung 3x LED Aus
attr AussenLampeAus group Zeiten
attr AussenLampeAus room 2_Licht Eingang


Das gehörte noch zu einer anderen Frage aber weil ich editiert habe, paßt da nicht mehr:
Zitatwenn das gehen würde, wäre es schön wenn ich dann auch ein nicht vor 22:30Uhr und nicht nach 23:55Uhr mit rein bringen kann, dann wäre die Zeit variabel und würde sich zwischen 22:30 und 23:55 Uhr ändern
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Zrrronggg!

#42
Zitatattr AussenLampeAus alias Beleuchtung 3x LED Aus
attr Lampe_spaeter_aus alias Beleuchtung 3x LED Aus
attr AussenLampeAus group Zeiten
attr Lampe_spaeter_aus group Zeiten
attr AussenLampeAus room 2_Licht Eingang
attr Lampe_spaeter_aus 2_Licht Eingang

das geht nicht. Du kannst Geräten Attribute geben aber nicht "defines" die Aktionen sind.

Lampe_spaeter_aus

ist ja kein Geräte, sondern vielmehr eine definiert Aktion, die unter bestimmten Bedingungen das Gerät AussenLampe ausschaltet.

also: Wenn du das definierte "anfassen" kannst, dann kannst du ihm attribute geben.

Ausserdem gibst du noch mit

Zitatattr AussenLampeAus group Zeiten
etwas ein Attribut, was es nicht mal gibt, weder als Gerät noch als Aktion....
Nirgendwoe definiert, oder?

define AussenLampeAus at *{sunset(21600,"22:55","23:45")} set AussenLampe off


Okay langsam hab ich dich verloren. Ich hab dir einen Code vorgeschlagen, der geht. Ich verstehe langsam nicht mehr, was dein Problem ist. Die Lampe geht auch dann aus, wenn du an der Weboberfläche die Stelle wo man sehen könnte wann die ausgeht nicht gleich findest  ;-)

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

Puschel74

Hallo,

ZitatDu kannst Geräten Attribute geben aber nicht "defines" die Aktionen sind.
ZitatWenn du das definierte "anfassen" kannst, dann kannst du ihm attribute geben.

Fast.
Ich kann einem notify oder einem at als Attribut durchaus einen Raum zuordnen in dem dieses notify/at dann auch dargestellt wird.

Bedingt aber das dieses notify/at zum Zeitpunkt der Attribut-Zuweisung natürlich bereits existieren muss.
Notfalls muss ich diese Zurodnung dann eben auch in den Code mit einbauen sonst hagelt es die geposteten Fehlermeldungen.

Ich kann jetzt allerdings nur für das Attribut room sprechen da ich dieses so auch verwende und meine notifys/at in die jeweiligen Räume verteile.
Ob und welche anderen Attribute noch gehen kann ich (noch) nicht sagen.

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.

Zrrronggg!

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