Wecker weckt nicht....

Begonnen von h-man-kl, 14 September 2016, 09:24:09

Vorheriges Thema - Nächstes Thema

h-man-kl

Hallo zusammen,
ich versuche mich gerade an einem Wecker und komme (mal wieder) nicht weiter. Es gibt zwar Weckermodule und im Residents ist ja auch ein Wecker drin, aber irgenwie sind die alle so aufgeblasen, oder ich habe nicht das richtige gefunden.
Folgendes soll umgesetzt werden: Ausführen von 5 bi 6 Befehlen zu einer gewissen Uhrzeit und das nacheinander.
Ich hab mir aus dem Wakeuptimer beim Residents Modul etwas rauskopiert. Leider passiert einfach nur nichts. :-( (kann ich eigentlich gezielt dafür ein Log erstellen, das ich mir später ansehen kann?)


*05:00:00 {
if(!$we && Value "Wecker" eq "on"){;
{fhem ("set Sonnentest on")};
{fhem ("set Sonos_BadFlurKueche StartFavourite SWR3")};
for (my $i=1; $i <= 10; $i++) {
if (defined($defs{"atTmp_".$i."_".$NAME})) {
    fhem "delete atTmp_".$i."_".$NAME;
};
fhem ("define atTmp_1_$NAME at +00:10:00 {set FS20.BadLautsprecher.E on-for-timer 1800}");
fhem ("define atTmp_2_$NAME at +00:11:00 {attr n_TreppenhauslichtEG disable 1; set FS20.DimmerTreppenhaus.E dim25% 3}");
fhem ("define atTmp_3_$NAME at +00:15:00 {set FS20.Kaffeemaschine.Kueche.E on-for-timer 3600}");
fhem ("define atTmp_6_$NAME at +02:00:00 {attr n_TreppenhauslichtEG disable 0}");
}
}
}


Danke für eure Hilfe!

Gruß
H-Man
RasPi 3 mit MaxCube für FS20 , HM-Urart, HM-LAN, MiLight, HUE, Lightify, SONOS, Harmony, Unifi, FritzBox 7490... :-)
Ganz nach dem Motto: Normal? Normal is langweilig....

DeeSPe

Wofür ist das Semikolon in Zeile 2?
Wofür sind die {} in Zeile 3 und 4?
Bitte mal entfernen und schauen ob es dann wie gewünscht funktioniert!

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Brice

An den geschweiften Klammern kann es nicht liegen. Wenn ich mir meinen über die Jahre gewachsenen Code betrachte, habe ich beide Möglichkeiten verwendet.

Zitat von: h-man-kl am 14 September 2016, 09:24:09
... oder ich habe nicht das richtige gefunden.

Bei mir läuft dies hier mit für meine Bedürfnisse angepasstem "setList": https://forum.fhem.de/index.php?topic=30733.0
Hat den Vorteil eines "DropDownListenfeld" für die Auswahl der Weckzeit.
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080

Hans Franz

Die defines sind, wohl unabsichtlich, in der for-Schleife.
Mit defmod statt define sollte die for-Schleife überflüssig sein.

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

DeeSPe

Zitat von: Hans Franz am 14 September 2016, 18:24:08
Die defines sind, wohl unabsichtlich, in der for-Schleife.
Mit defmod statt define sollte die for-Schleife überflüssig sein.

Gruß
Hans

Beim erneuten Besichtigen sieht das ganze Konstrukt sehr merkwürdig aus.
Du hast Recht, mit defmod wäre die for Schleife obsolet.
Die define(s)/defmod(s) sind meines Erachtens aber auch total falsch angelegt.
Das damit erzeugte at soll laut der geschweiften Klammern Perl Code ausführen, innerhalb der geschweiften Klammern kommt aber kein Perl Code sondern FHEM Code.

Ich denke so könnte es klappen:
*05:00:00 {
  if(!$we && Value "Wecker" eq "on")
  {
    fhem "set Sonnentest on";
    fhem "set Sonos_BadFlurKueche StartFavourite SWR3";
    fhem "defmod atTmp_1_$NAME at +00:10:00 set FS20.BadLautsprecher.E on-for-timer 1800";
    fhem "defmod atTmp_2_$NAME at +00:11:00 attr n_TreppenhauslichtEG disable 1; set FS20.DimmerTreppenhaus.E dim25% 3";
    fhem "defmod atTmp_3_$NAME at +00:15:00 set FS20.Kaffeemaschine.Kueche.E on-for-timer 3600";
    fhem "defmod atTmp_6_$NAME at +02:00:00 attr n_TreppenhauslichtEG disable 0";
  }
}


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

Mir fällt gerade noch $NAME auf!
Gibt es die Variable beim at überhaupt? Die kenne ich sonst von notify(s).

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

h-man-kl

Hallo und vielen Dank für die vielen antworten!
Ich werde mal die Variante von DeeSPe testen.
Die sieht in der Tat wesentlich übersichtlicher aus als meine. Wie gesgat, ich ab das kopiert und etwas abgewandelt.
Ich gebe Bescheid ob der Wecker morgen weckt.

PS: gibts auch eine Möglichkeit den Wecker auf x Uhr zu setzen und dann z.B. 20min VOR dieser Zeit etwas ausführen zu lassen?

Nochmals Danke
H-Man
RasPi 3 mit MaxCube für FS20 , HM-Urart, HM-LAN, MiLight, HUE, Lightify, SONOS, Harmony, Unifi, FritzBox 7490... :-)
Ganz nach dem Motto: Normal? Normal is langweilig....

h-man-kl

und er weckte wieder nicht :-(
Ich habe genau den Vorgeschlagenen Codeschnipsel genommen und in mein at gepackt.
heute morgen um 5 hätte eigentlich folgendes passieren sollen:


*05:00:00 {
  if(!$we && Value "Wecker" eq "on")
  {
    fhem "set Sonnentest on";
    fhem "set Sonos_BadFlurKueche StartFavourite SWR3";
    fhem "defmod atTmp_1_$NAME at +00:10:00 set FS20.BadLautsprecher.E on-for-timer 1800";
    fhem "defmod atTmp_2_$NAME at +00:11:00 attr n_TreppenhauslichtEG disable 1; set FS20.DimmerTreppenhaus.E dim25% 3";
    fhem "defmod atTmp_3_$NAME at +00:15:00 set FS20.Kaffeemaschine.Kueche.E on-for-timer 3600";
    fhem "defmod atTmp_4_$NAME at +01:30:00 attr n_TreppenhauslichtEG disable 0";
fhem "defmod atTmp_5_$NAME at +01:30:30 set FS20.DimmerTreppenhaus.E dim0% 10";
  }
}

und genau NICHTS ist passiert. noch nichtmal ein Eintrag im Log.
Also habe ich die Zeit geändert und mich vor den Eventmonitor gesetzt => Wieder nix :-(  Um 07:05 hätte der Wecker wecken sollen........


2016-09-16 07:04:59 ROOMMATE rr_Viano durTimerAbsence_cr: 63
2016-09-16 07:04:59 ROOMMATE rr_Viano durTimerAbsence: 01:02:32
2016-09-16 07:05:04 SONOSPLAYER Sonos_Keller__Garten currentSenderInfo: SWR3 Verkehrszentrum - Alle Stau-Infos auch auf swr3.de
2016-09-16 07:05:04 SONOSPLAYER Sonos_Keller__Garten infoSummarize1: SWR3 Elchradio: 'Die Morningshow' - SWR3 Verkehrszentrum - Alle Stau-Infos auch auf swr3.de
2016-09-16 07:05:04 SONOSPLAYER Sonos_Keller__Garten infoSummarize2: PLAYING => SWR3 Elchradio: 'Die Morningshow' - SWR3 Verkehrszentrum - Alle Stau-Infos auch auf swr3.de


das kann doch nicht so schwer sein, oder?

Danke danke danke.....
Gruß
H-Man
RasPi 3 mit MaxCube für FS20 , HM-Urart, HM-LAN, MiLight, HUE, Lightify, SONOS, Harmony, Unifi, FritzBox 7490... :-)
Ganz nach dem Motto: Normal? Normal is langweilig....

Kuzl

#8
ich hab mir mal ein relativ komplexes weckerkonstruckt gebaut, was mit sicherheit inzwischen durch irgend ein Modul einfacher geht.

Die Weckzeit wird von Tasker aus dem Handy ausgelesen und an FHEM übertragen.

Dann wird von FHEM die Zeit - 10 Minuten ausgerechnet und einige "at" angelegt, die wakeuplight, licht ect. ansteuern.

Bei interesse kann ich den Code mal posten.

Viele grüße,
Kuzl

EDIT: Gerade was anderes gefunden: http://fhem.de/commandref_DE.html#DOIF_Relative_Zeitangaben

Auszug:
define Fixtime dummy
set Fixtime 20:00

define di_light DOIF ([([Fixtime]-[01:00]) - ([Fixtime]+[01:00])])
(set lampe on)
DOELSE
(set lampe off)


define time dummy
set time 08:00
define di_time DOIF ([[time]])(set lamp on)


das denke ich hat alles drin was du brauchst :)

CoolTux

Ich verwende Residents und von da den Wecker. Besser geht es nicht. Jeder Bewohner hat sein eigenes Skript, es gibt Skripte für die ganze Wohnung wenn aufgewacht ist. Aufgeblasen finde ich da nichts. Roommate und Residents habe ich ja eh wegen Bewohnerstatus und Aktionen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

h-man-kl

hm. Ich wollte ursprünglich auch den Wecker von Residents nehmen aber das angelegte Beispiel erschien mir immer recht verwirrend.
Vielleicht sollte ich mir das nochmal ansehen.
Unabhängig davon wüsste ich gerne wo der "Fehler" von meinem Wecker ist - will ja was lernen :-)

Gruß
H-Man
RasPi 3 mit MaxCube für FS20 , HM-Urart, HM-LAN, MiLight, HUE, Lightify, SONOS, Harmony, Unifi, FritzBox 7490... :-)
Ganz nach dem Motto: Normal? Normal is langweilig....

DeeSPe

Zitat von: CoolTux am 16 September 2016, 10:19:23
Ich verwende Residents und von da den Wecker. Besser geht es nicht. Jeder Bewohner hat sein eigenes Skript, es gibt Skripte für die ganze Wohnung wenn aufgewacht ist. Aufgeblasen finde ich da nichts. Roommate und Residents habe ich ja eh wegen Bewohnerstatus und Aktionen.

Sign!!!

Auch ich nutze diese Module, aber den Wecker nicht. Da vertraue ich ganz "old school" auf eine Wecker-Hardware... ;)

Ich habe mir einen dummy Schalter für Schlafengehen gebaut und schalte den bequem per Siri-Szene. Bei "Hey Siri, Gute Nacht" wird der dummy Schalter aktiviert und mein Bewohner- und Wohnungsstatus wechselt auf "gotosleep" mit verbunden Aktionen. 10 min später wechselt mein Bewohner- und Wohnungsstatus auf asleep (mit verbunden Aktionen). Beim Aufwachen sage ich nur "Hey Siri, Guten Morgen", der dummy Schalter wird ausgeschaltet und Bewohner- und Wohnungsstatus auf "home" gesetzt, mit entsprechend verknüpften Aktionen beim Aufstehen (awoken)...

Das Ganze kann man natürlich auch in unterschiedlichen Formen ohne Siri benutzen, z.B. ein physischer Szenenschalter...

Gruß
Dan

P.S. Ich kann ehrlich gesagt keinen Fehler mehr im Code feststellen!
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

h-man-kl

@DeeSPe,
das mit Siri und Schlafengehen ist natürlich auch eine sehr feine Sache :-)

Ich werde wohl das at Zeile für Zeile zerlegen müssen - irgendwas muss ja falsch sein, da ja genau 0 passiert. selbst wenn ich es von hand starte kommt nur im LOG dass das at aufgerufen wrd :-(
mal eine doofe Frage:
muss ich überhaupt die temporären at's löschen?
oder kann ich an Stelle von
fhem "defmod atTmp_1_$NAME at +00:10:00 set FS20.BadLautsprecher.E on-for-timer 1800";
auch einfach

fhem "at +00:10:00 set FS20.BadLautsprecher.E on-for-timer 1800";

schreiben? Auf das löschen bin ich ja nur gekommen, weil das in dem Residents Wecker auch gemacht wird - ich weiß ber ehrlich gesagt nicht warum....

Gruß
H-Man
RasPi 3 mit MaxCube für FS20 , HM-Urart, HM-LAN, MiLight, HUE, Lightify, SONOS, Harmony, Unifi, FritzBox 7490... :-)
Ganz nach dem Motto: Normal? Normal is langweilig....

DeeSPe

Zitat von: h-man-kl am 16 September 2016, 11:22:30
@DeeSPe,
das mit Siri und Schlafengehen ist natürlich auch eine sehr feine Sache :-)

Ich werde wohl das at Zeile für Zeile zerlegen müssen - irgendwas muss ja falsch sein, da ja genau 0 passiert. selbst wenn ich es von hand starte kommt nur im LOG dass das at aufgerufen wrd :-(
mal eine doofe Frage:
muss ich überhaupt die temporären at's löschen?
oder kann ich an Stelle von
fhem "defmod atTmp_1_$NAME at +00:10:00 set FS20.BadLautsprecher.E on-for-timer 1800";
auch einfach

fhem "at +00:10:00 set FS20.BadLautsprecher.E on-for-timer 1800";

schreiben? Auf das löschen bin ich ja nur gekommen, weil das in dem Residents Wecker auch gemacht wird - ich weiß ber ehrlich gesagt nicht warum....

Gruß
H-Man

Einfach mal alle Zeilen mit:
fhem "....."
einzeln in {} verpackt in die FHEM Eingabezeile eingeben und schauen ob das passiert was soll, also ob geschaltet wird und die at(s) angelegt werden. Das sollte aus meiner Sicht alles funktionieren.
Wenn das alles funktioniert, dann kann es ja nur noch am 'if(!$we && Value "Wecker" eq "on")' liegen...

Mit defmod löschst Du ja überhaupt keine at(s). Schau mal in die commandref was defmod macht (Mischung aus define und modify)! Und nein, das kannst Du nicht einfach so machen....

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

h-man-kl

ich glaube ich komme der Sache näher:
wenn ich
{fhem "defmod atTmp_5_$NAME at +01:30:30 set FS20.DimmerTreppenhaus.E dim0% 10";}
eingebe erhalte ich:
Global symbol "$NAME" requires explicit package name at (eval 23011) line 1.

ohne jetzt erstmal zu wissen was das genau beneutet.... Ein at wird niicht angelegt.
Lasse ich $NAME weg wird ein at angelegt was genau das mach twas es soll.

also baue ich das at jetzt um und lasse die ganzen $NAME weg. Wofür das genau in dem Residents/Wecker Makro war weiß ich ja eh nicht... :-(
RasPi 3 mit MaxCube für FS20 , HM-Urart, HM-LAN, MiLight, HUE, Lightify, SONOS, Harmony, Unifi, FritzBox 7490... :-)
Ganz nach dem Motto: Normal? Normal is langweilig....