FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: docb am 20 Dezember 2014, 18:13:39

Titel: Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 20 Dezember 2014, 18:13:39
Hallo zusammen,
ich habe mir einen kleinen aber feinen Wecker gebastelt. Man kann eine Uhrzeit einstellen und dann werden zum eingestellten Zeitpunkt beliebige Aktionen ausgeführt (z.B. Radio an, etc.). Hier der Code - Verbesserungsvorschläge gerne posten.
Zunächst einen dummy anlegen
define Wecker dummy
attr Wecker alias Wecker stellen
attr Wecker devStateIcon AUS:general_aus@red
attr Wecker group Wecker
attr Wecker icon ring
attr Wecker room Wecker
attr Wecker setList state:AUS,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45
attr Wecker webCmd state:AUS


Dann noch ein kleines Notify, das nach belieben erweitert werden kann (z.B. durch ein zweites at eine Stunde früher zum Einschalten der Fußbodenheizung u.v.m)

define noWecker notify Wecker {
if (Value("Wecker") eq "AUS")
  { fhem("delete atWecker");;
} else {
  fhem("delete atWecker");;
  fhem("define atWecker at ".Value("Wecker").":00 {Wecken()}");;
  fhem("attr atWecker room Wecker");;
  fhem("attr atWecker group Wecker");;
  fhem("attr atWecker alias Nächster aktiver Wecker:");;
  fhem("attr atWecker icon ring\@@red");;
  }
}


Und zu guter letzt noch in die 99_myUtils.pm, was denn beim "Wecken()" passieren soll (natürlich ebenfalls erweiterbar):
sub
Wecken()
{
  fhem("set Gong_Mp3 playTone 001");
}


Wer in brauchen kann -viel Spaß damit!
Viele Grüße
doc
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten
Beitrag von: docb am 22 Dezember 2014, 15:55:51
Hallo zusammen,
ich habe den Wecker noch einmal ordentlich aufgepimpt.
Der Wecker kann jetzt folgendes:
- Weckzeit einstellen
- Weckton einstellen (oder mute)
- Fußbodenheizung und Heizung im Bad steuern (als Beispiele, was man so alles machen kann).

Wichtig: damit das addieren und subtrahieren von Zeiten funktioniert (TU_Get_Decrement und TU_Get_Increment), braucht ihr die 99_TimeUtils.pm von hier (http://forum.fhem.de/index.php/topic,14449.msg91796.html#msg91796).

Also erstmal die Dummies:


define Wecker dummy
attr Wecker alias Wecker stellen
attr Wecker devStateIcon Aus:general_aus@red
attr Wecker group Wecker
attr Wecker icon ring
attr Wecker room Wecker
attr Wecker setList state:Aus,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45
attr Wecker sortby 1
attr Wecker webCmd state:Aus
define Weckton dummy
attr Weckton devStateIcon Lautlos-nur_Heizung:audio_volume_mute@red
attr Weckton eventMap Fliang:201 Hearst_as_net:202 Here_I_am:203 Youll_be_in_my_heart:204 Barefoot:205 Hallelujah:206 Ich_mag:207
attr Weckton group Wecker
attr Weckton icon audio_sound
attr Weckton room Wecker
attr Weckton setList state:Lautlos-nur_Heizung,Fliang,Hearst_as_net,Here_I_am,Youll_be_in_my_heart,Barefoot,Hallelujah,Ich_mag
attr Weckton sortby 2
attr Weckton webCmd state:Lautlos-nur_Heizung
define Wecken_FuBoHe dummy
attr Wecken_FuBoHe alias Fußbodenheizung vor Weckzeit aktivieren
attr Wecken_FuBoHe devStateIcon An:sani_floor_heating@green Aus:general_aus@red
attr Wecken_FuBoHe group Wecker
attr Wecken_FuBoHe icon sani_floor_heating
attr Wecken_FuBoHe room Wecker
attr Wecken_FuBoHe setList state:An,Aus
attr Wecken_FuBoHe sortby 3
attr Wecken_FuBoHe webCmd state:Aus
define Wecken_Bad_Heizen dummy
attr Wecken_Bad_Heizen alias Bad Heizung vor Weckzeit hochfahren
attr Wecken_Bad_Heizen devStateIcon Aus:general_aus@red
attr Wecken_Bad_Heizen group Wecker
attr Wecken_Bad_Heizen icon max_heizungsthermostat
attr Wecken_Bad_Heizen room Wecker
attr Wecken_Bad_Heizen setList state:Aus,19.0,19.5,20.0,20.5,21.0,21.5,22.0
attr Wecken_Bad_Heizen sortby 4
attr Wecken_Bad_Heizen webCmd state:Aus
define HZ_BA_val dummy
attr HZ_BA_val group Variablen
attr HZ_BA_val room Z_Virtual


Hier die Notifys:

define noWecker notify Wecker { WeckerStellen();;}
attr noWecker group Wecker
attr noWecker icon ring
attr noWecker room Z_Notify
define noWecken_FuBoHe notify Wecken_FuBoHe { Wecken_FuBoHe_aktivieren();;;; }
attr noWecken_FuBoHe group Wecker
attr noWecken_FuBoHe icon ring
attr noWecken_FuBoHe room Z_Notify
define noWecken_Bad_Heizen notify Wecken_Bad_Heizen { Wecken_BaHe_aktivieren();; }
attr noWecken_Bad_Heizen group Wecker
attr noWecken_Bad_Heizen icon ring
attr noWecken_Bad_Heizen room Z_Notify
define noWeckton notify Weckton {Wecken_Musik_aktivieren();;;;}
attr noWeckton group Wecker
attr noWeckton icon ring
attr noWeckton room Z_Notify


Und letztlich noch der zugehörige Code aus meiner 99_myUtils.pm (das geht vermutlich noch eleganter, aber ich bin absoluter Perl-Anfänger - und es funktioniert!)


sub
WeckerStellen()
{
if (Value("Wecker") eq "Aus")
{
  fhem("delete atWecker");
  fhem("set Wecken_Bad_Heizen Aus");
  fhem("set Wecken_FuBoHe Aus");
  fhem("delete atWeckerBAHEe");
  fhem("delete atWeckerBAHEs");
  fhem("delete atWeckerBAFUe");
  fhem("delete atWeckerBAFUs");
  fhem("delete atWeckerMusik");
}
else #Wecker wurde aktiviert
{
  my $weckzeit = Value("Wecker").":00";
  fhem("delete atWecker");
  fhem("define atWecker at ".$weckzeit." {Wecken()};");
  fhem("attr atWecker room Wecker");
  fhem("attr atWecker group Aktiv");
  fhem("attr atWecker sortby 1");
  fhem("attr atWecker alias Nächster aktiver Wecker");
  fhem("attr atWecker icon ring\@green");
  Wecken_Musik_aktivieren();
}
}

############Fußbodenheizung
sub
Wecken_FuBoHe_aktivieren()
{
if(Value("Wecken_FuBoHe") eq "Aus") # Fußbodenheizung auf Aus
{
  fhem("delete atWeckerBAFUs");
  fhem("delete atWeckerBAFUe");
}
else                                #Fußbodenheizung auf An 
{
  if(Value("Wecker") eq "Aus")
  {
   fhem("set Wecken_FuBoHe Aus");
   fhem("delete atWeckerBAFUs");
   fhem("delete atWeckerBAFUe");
   return ("Zuerst den Wecker aktivieren");
  }
  else #Wecker an
  {
   my $weckzeit = Value("Wecker").":00";
   my $heizzeit_beginn = TU_Get_Decrement($weckzeit,"01:00:00");
   my $heizzeit_ende = TU_Get_Increment($weckzeit,"00:15:00");
   fhem("define atWeckerBAFUs at ".$heizzeit_beginn." set BA_Fussbodenheizung on");
   fhem("attr atWeckerBAFUs room Wecker");
   fhem("attr atWeckerBAFUs group Aktiv");
   fhem("attr atWeckerBAFUs sortby 3");
   fhem("attr atWeckerBAFUs alias Die Fußbodenheizung startet um");
   fhem("attr atWeckerBAFUs icon sani_floor_heating\@green"); 
   fhem("define atWeckerBAFUe at ".$heizzeit_ende." set BA_Fussbodenheizung off");
   fhem("attr atWeckerBAFUe room Wecker");
   fhem("attr atWeckerBAFUe group Aktiv");
   fhem("attr atWeckerBAFUe sortby 5");
   fhem("attr atWeckerBAFUe alias Heizphase der Fußbodenheizung endet um");
   fhem("attr atWeckerBAFUe icon sani_floor_heating\@green");
  # return ("Ich bin sdfda");
  }
}
}

sub
Wecken_BaHe_aktivieren()
{
if(Value("Wecken_Bad_Heizen") eq "Aus") # Heizen auf Aus
{
  fhem("delete atWeckerBAHEs");
  fhem("delete atWeckerBAHEe");
}
else                                #Heizen auf An 
{
  if(Value("Wecker") eq "Aus")
  {
   fhem("set Wecken_Bad_Heizen Aus");
   fhem("delete atWeckerBAHEs");
   fhem("delete atWeckerBAHEe");
   return ("Zuerst den Wecker aktivieren");
  }
  else #Wecker an
  {
   my $weckzeit = Value("Wecker").":00";
   my $heizzeit_beginn = TU_Get_Decrement($weckzeit,"00:10:00");
   my $heizzeit_ende = TU_Get_Increment($weckzeit,"00:15:00");
   fhem("define atWeckerBAHEs at ".$heizzeit_beginn." {fhem(\"set HZ_BA_val \".ReadingsVal(\"BA_Heizung\",\"state\",\"17.0\"));;;; fhem(\"set BA_Heizung desiredTemperature \".Value(\"Wecker_Bad_Heizen\"));;;;}");
   fhem("attr atWeckerBAHEs room Wecker");
   fhem("attr atWeckerBAHEs group Aktiv");
   fhem("attr atWeckerBAHEs sortby 4");
   fhem("attr atWeckerBAHEs alias Vorheizen des Bades auf ".Value("Wecken_Bad_Heizen")." Grad um");
   fhem("attr atWeckerBAHEs icon max_heizungsthermostat\@green"); 
   fhem("define atWeckerBAHEe at ".$heizzeit_ende." {fhem(\"set BA_Heizung desiredTemperature \".ReadingsVal(\"HZ_BA_val\",\"state\",\"17.0\"));;;;}");
   fhem("attr atWeckerBAHEe room Wecker");
   fhem("attr atWeckerBAHEe group Aktiv");
   fhem("attr atWeckerBAHEs sortby 6");
   fhem("attr atWeckerBAHEe alias Heizphase des Bades endet um");
   fhem("attr atWeckerBAHEe icon max_heizungsthermostat\@green"); 
  }
}
}

####Musik aktivieren
sub
Wecken_Musik_aktivieren()
{
if (Value("Weckton") eq "Lautlos-nur_Heizung") # Musik auf Lautlos
{
  fhem("delete atWeckerMusik");
}
else                                #Musik auf An 
{
  if(Value("Wecker") eq "Aus")
  {
   fhem("delete atWeckerMusik");
  }
  else #Wecker an
  {
   my $weckzeit = Value("Wecker").":00";
   fhem("define atWeckerMusik at ".$weckzeit." set Gong_Mp3 playTone ".Value("Weckton"));
   fhem("attr atWeckerMusik room Wecker");
   fhem("attr atWeckerMusik group Aktiv");
   fhem("attr atWeckerMusik sortby 2");
   fhem("attr atWeckerMusik alias Wecken mit: ".ReadingsVal("Weckton","state", "Fehler"));
   fhem("attr atWeckerMusik icon audio_volume_mid\@green"); 
  }
}
}


Anbei noch zwei Screenshots...
Viele Grüße
doc
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: Rince am 23 Dezember 2014, 19:46:53
Cool.
Ein fhem Wecker :)

Danke sehr :)
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: m311331 am 05 Januar 2015, 12:46:59
Hi docb,

wollte deinen Wecker die einfache variante übernehmen
aber bekomme im log

2015.01.05 12:32:46 1: PERL WARNING: Subroutine Wecken redefined at ./FHEM/99_myUtils.pm line 36.
2015.01.05 12:34:46 3: delete atWecker : Please define atWecker first
2015.01.05 12:35:55 3: delete atWecker : Please define atWecker first


meine fhem.cfg

################################################# Wecker #################################################################

define Wecker dummy
attr Wecker alias Wecker stellen
attr Wecker devStateIcon AUS:general_aus@red
attr Wecker group Wecker
attr Wecker room Wecker
attr Wecker setList state:AUS,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45
attr Wecker webCmd state:AUS


define noWecker notify Wecker {\
if (Value("Wecker") eq "AUS")\
  { fhem("delete atWecker");;;;\
} else {\
  fhem("delete atWecker");;;;\
  fhem("define atWecker at ".Value("Wecker").":00 {Wecken()};;");;;;\
  fhem("attr atWecker room Wecker");;;;\
  fhem("attr atWecker group Wecker");;;;\
  fhem("attr atWecker alias Nächster aktiver Wecker:");;;;\
  fhem("attr atWecker icon ring\@@red");;;;\
  }\
}


und in der 99myUtils
sub
Wecken()
{
  fhem("set Sonos_Schlafzimmer PlayURITemp \\\192.168.0.93\\SonosSpeak\\orientwecker.mp3");
}


irgendwas mache ich falsch  :-[
wer kann mir helfen ?


mfg. m311331
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 05 Januar 2015, 12:55:55
Hi,
also die erste Fehlermeldung kommt eigentlich immer, wenn man die 99_myUtils.pm neu lädt (da kommt bei mir eine ganze Latte an subs die ich da definiert habe).
Die anderen Fehlermeldungen kannst du auch getrost ignorieren - die kommen deshalb, weil das notify immer das atWecker löscht ohne zu überprüfen, ob das at wecker überhaupt exisitert.
Fazit: Die Fehlermeldungen sind völlig normal und beeinträchtigen die Funktion in keinster Weise ;-)
Viele Grüße
doc
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: m311331 am 05 Januar 2015, 13:19:05
Hi docb,

erstmal danke für die info
es will noch nicht  :(

bekomme keinen Ton aus meinem Lautsprecher
und im log wird auch nicht mehr angezeigt


mfg. m311331
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 05 Januar 2015, 13:22:50
Ok,
dann tipp doch mal folgendes ins Kommandozeilenfenster ein:
{Wecken();;}

Passiert da etwas?
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: m311331 am 05 Januar 2015, 13:41:34
Hi docb,

es passiert leider nix  ???
im log steht auch nix

mfg. m311331
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 05 Januar 2015, 13:43:25
ok - funktioniert diese Zeile?
set Sonos_Schlafzimmer PlayURITemp \\192.168.0.93\SonosSpeak\orientwecker.mp3
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: Icinger am 05 Januar 2015, 13:45:03
Wenn ihr das Wecker-Notify so umbaut:

define noWecker notify Wecker {\
if (Value("Wecker") eq "AUS")\
  { fhem("delete atWecker") if (defined($defs{'atWecker'}));;;;\
} else {\
  fhem("delete atWecker") if (defined($defs{'atWecker'}));;;;\
  fhem("define atWecker at ".Value("Wecker").":00 {Wecken()};;");;;;\
  fhem("attr atWecker room Wecker");;;;\
  fhem("attr atWecker group Wecker");;;;\
  fhem("attr atWecker alias Nächster aktiver Wecker:");;;;\
  fhem("attr atWecker icon ring\@@red");;;;\
  }\
}


bekommt ihr auch keine Fehlermeldung mehr.

lg, Ici
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: m311331 am 05 Januar 2015, 13:52:12
Hi docb,

ja geht !

-edit-

ein neustart hat geholfen ;D


mfg. m311331
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 05 Januar 2015, 14:19:45
@Icinger, danke für den Tipp, müssten die if-Zeilen nicht so lauten: 
if (defined($defs{'atWecker'})){ fhem("delete atWecker")};;;;

@m311331:
das ist komisch. Wie sieht denn deine 99_myUtils.pm aus - hast du die jetzt neu erstellt für meinen Codeschnipsel? Falls ja, hast du das beachtet: http://www.fhemwiki.de/wiki/99_myUtils_anlegen
Anscheinend funktioniert bei dir der Aufruf der sub "Wecken()" nicht, daher tippe ich mal darauf...
Viele Grüße
doc
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: Icinger am 05 Januar 2015, 14:45:51
Das ist das gute an Perl.....Das kannst du schreiben, wie du willst, funktonieren tut beides
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: Icinger am 05 Januar 2015, 14:47:48
sub
Wecken()
{
  fhem("set Sonos_Schlafzimmer PlayURITemp \\\192.168.0.93\\SonosSpeak\\orientwecker.mp3");
}


set Sonos_Schlafzimmer PlayURITemp \\192.168.0.93\SonosSpeak\orientwecker.mp3

Finde den Unterschied :p
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 05 Januar 2015, 14:48:10
Ja krass, wieder was gelernt, Danke.
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 05 Januar 2015, 14:52:55
@m311331: der Icinger hats - ich stand auf dem Schlauch. Ich habe dir das Set für die Kommandozeile automatisch "richtig" geschrieben, ohne den Fehler zu sehen - du musst einfach deine 99er so abändern:

sub
Wecken()
{
  fhem("set Sonos_Schlafzimmer PlayURITemp \\192.168.0.93\SonosSpeak\orientwecker.mp3");
}


Viele Grüße
doc

PS: Um zu testen, ob fhem mir überhaut in eine Routine in der 99 reinspringt, ergänze ich oftmals:
sub
Wecken()
{
  fhem("set Sonos_Schlafzimmer PlayURITemp \\192.168.0.93\SonosSpeak\orientwecker.mp3");
return "bin drin";
}

Dann siehst du ob fhem da überhaupt reinhüft, weil er es dir auf der fhem-Seite ausgibt.
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 08 Januar 2015, 10:28:26
erst mal vielen dank docb für deine mühe einen solchen wecker zu erstellen und uns zur verfügung zu stellen. ich habe bei mir alles über timer eingestellt und bin da etwas gernervt, weil ich immer alle urlaubstage in meiner rlp.holiday einstellen muss und das sehr unkomfortabel ist. jetzt habe ich genau nach so etwas gesucht. vorab ich muss mich mal genauer damit beschäftigten, ich bin kenne mich weder mit perl aus, noch bin ich sehr gut in fhem und brauche immer sehr lange bis was bei mir was funktioniert :(

ich habe aber schon mal ein paar fragen, kann man auch wochentage einstellen?

ich möchte ungern samstags geweckt werden, weil ich freitags vergessen habe den wecker auszustellen, bzw. montags verschlafen weil ich sonntag nichts eingestellt habe.
oder noch besser, kann man da was mit seinem handywecker verbinden? wobei ich an so was irgendwie nicht wirklich glaube.
könnte das dann so aussehen mit den wochentagen?
attr Wecker setList state:aus,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag,Montag-Freitag

dann hast du die 99_myUtils.pm erwähnt, muss man die datei selbst erstellen?
ich möchte eigentlich nur wenige sachen ansteuern, meine musik (Av receiver am zwischenstecker) geht an. 15min später geht die kaffeemaschine (am zwischenstecker) an, bzw. 75 min später wieder aus und eventuell die heizung im bad fährt 30 min vorher hoch. ok, wie das bei dir ist, muss ich mir in ruhe anschauen, so einfach ist der wecker leider nicht für mich, gerade alles aus dem 2.post :S

du schreibst was von fußbodenheizung, ich gehe mal davon aus, es ist eine wasserbetriebene mit normalen thermostat und nicht elektrische oder gibt es inzwischen was um elektrische fußbodenheizungen anzusteuern?
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 08 Januar 2015, 11:28:08
Servus,
freut mich, dass der Wecker Gefallen findet!
Also zunächst mal - Wochentage kannst du aktuell nicht einstellen, ich habe darauf verzichtet. Denn der Wecker aktiviert alles automatisch nur einmal, dh. er setzt sich automatisch zurück, man muss ihn jeden Tag neu stellen. Das habe ich bei mir so gemacht, weil ich eigentlich jeden Tag zu unterschiedlichen Zeiten aufstehe und bevor mir das Ding zu früh losscheppert, weil ich vergessen habe den Wochentag umzustellen oder weil ich frei genommen habe, aktiviere ich ihn jeden Abend vor dem Schlafen gehen bewusst. Aber auch das mit Wochentagen wäre möglich und zwar ähnlich wie du es in deinem Beispiel geschrieben hast, allerdings brauchst du einen weitern dummy (z.B. wecker_wota und gibst dem die Attribute) und lässt im notify dann entsprechend die at's generieren.

Die 99er musst du selbst anlegen, bitte das hier lesen und genau befolgen: http://www.fhemwiki.de/wiki/99_myUtils_anlegen.

Ich kann Perl auch nur rudimentär, meinen Code kann man sicherlich noch eleganter verfassen. Letztlich wirst du aber nicht drum herum kommen, dich mit der Materie zumindest oberflächlich zu beschäftigen, wenn du ein bisschen mehr aus fhem rausholen willst. Mein Tipp (so ähnlich habe ich es auch "gelernt") wäre: schnapp dir meinen einfachen Wecker und versuche zu verstehen was passiert, lese die Wiki Artikel zu den at und notify commands und bastel mit meinen Perl Codeschnipseln rum. Und so setzt du dir dein eigenes Ding zusammen. Irgendwann verstehst du dann immer mehr.

Zur Fußbodenheizung: ich habe eine elektrische und die schalte ich ziemlich "bauernmäßig" einfach mit einem HM-LC-Sw1PBU-FM. Der gibt dem Teil halt einfach eine Stunde vor Weckzeit Power (der Steinboden braucht ca. 1 Stunde bis er so warm wird) und schaltet 15 Minuten danach ab. Da kann man zwar nicht elegant die Temperatur regeln, aber ich lasse das Ding wegen dem Stromverbrauch eh nur auf Bedarf laufen und das klappt so super.

Viele Grüße
doc
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: m311331 am 08 Januar 2015, 15:37:04
Hi docb,


hab gerade erst gesehen das ihr noch mehr geschrieben habt
die 99 habe ich nicht neu erstellt, nur den teil für den Wecker mit eingefügt
es geht bei mir, nur in der 99 muss man die \ verdoppeln !!! (zumindest für Solos)

bin atm in der Arbeit, sonst würde ich noch den Code posten wie es bei mir geht

eins noch die Zeit muss immer neu eingestellt werden oder ?
möchte es noch ändern das der Wecker jeden Tag klingelt, wenn er einmal eingestellt wurde bis er wieder deaktiviert wird. 


mfg. m311331
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 08 Januar 2015, 15:45:14
Hi,
ja, der Wecker muss immer neu aktiviert werden. Das kannst du aber ändern, indem du die at Funktion(en) entsprechend änderst.
fhem("define atWecker at *".$weckzeit." {Wecken()};");
(Der * muss nach dem at kommen, dann schaltet er jeden Tag und nicht nur einmalig)
Dann bleibt er solange aktiv, bis du auf "Aus" stellst.
Viele Grüße
doc
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: m311331 am 08 Januar 2015, 23:14:21
Hi docb,

Vielen Dank !
Ich werde es probieren , mal sehen was mir besser gefällt


Mfg. m311331
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: blueberry63 am 19 Januar 2015, 11:12:43
Hallo Doc,

super Idee dieser Wecker! Ich habe eigentlich eine "Zeitschaltuhr" gesucht, mit der man beliebige Aktoren (Dropdown-Liste) ein-/ausschalten kann oder event. auch einen bestimmten Befehl ausführen kann. Siehst Du eine Möglichkeit, Deinen Wecker daraufhin zu erweitern?

Gruß
Blueberry63
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 19 Januar 2015, 11:35:55
Hi,
naja das ist eigentlich kein Problem. Du legst dir einen dummy an - wie den wecker und lässt dann auf den dummy ein notify laufen, der dir den entsprechenden at befehl setzt - z.B. (jetzt einfach mal aus dem Kopf geschrieben ohne es getestet zu haben:

Dummy:

define Zeitschaltuhr1 dummy
attr Zeitschaltuhr1 setList state:AUS,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45
attr Zeitschaltuhr1 webCmd state:AUS


Notify:
define noZeitschaltuhr1 notify Zeitschaltuhr1 {
if (Value("Zeitschaltuhr1") eq "AUS")
  { fhem("delete atZeitschaltuhr1");;;;
} else {
  fhem("delete atZeitschaltuhr1");;;;
  fhem("define atZeitschaltuhr1 at ".Value("Zeitschaltuhr1").":00 set GeschaltetesTeil on");;;;
  }


Testen musst du selbst ;-)
Viele Grüße
doc

PS: Alternativ kannst auch zwei Dummys machen, einen mit dropdown Zeiten, den anderen mit Geräten. Dann wird das notify halt ein bisschen komplexer, aber du könntest die Kombinationen einstellen...
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: blueberry63 am 19 Januar 2015, 12:46:08
Hallo Doc,

das ist schonmal ein guter Ansatz. Da ich das zu schaltende Gerät auf jeden Fall auch aus einer Liste auswählen möchte, werde ich wohl mit 2 Dummies arbeiten müssen; oder kann man beim Dummie auch 2 Parameter verwenden? Ich müßte ja beide Werte (Zeit+Gerät) auf einmal setzen, sonst zieht der Notify schon beim Setzen der Zeit, aber das Gerät ist noch nicht definiert.


Gruß
Blueberry63
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 19 Januar 2015, 12:48:44
Also wie du sauber zwei Parameter in ein dummy bekommst und dazu ein schönes dropdown - keine Ahnung, glaube aber nicht, dass das geht. Aber mit zwei dummys geht das sicher!
vg
doc
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: blueberry63 am 19 Januar 2015, 14:31:31
Zeitschaltuhr

Falls es noch jemand gebrauchen kann, poste ich hier eine einfache Lösung zum einmaligen EIN(!)schalten von Geräten. Ich benutze es zum Einschalten einer Kaffeemaschine per Funksteckdose.

Dummy für Zeiten:

define Zschaltuhr_zeit dummy
attr Zschaltuhr_zeit room Zeituhr
attr Zschaltuhr_zeit setList state:AUS,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45
attr Zschaltuhr_zeit webCmd state:AUS


Dummy für Geräte:

define Zschaltuhr_device dummy
attr Zschaltuhr_device room Zeituhr
attr Zschaltuhr_device setList state:AUS,STD_B1,STD_B2_WERKR,STD_D1
attr Zschaltuhr_device webCmd state:AUS


Notify:

define noZschaltuhr notify Zschaltuhr_zeit {\
if (Value("Zschaltuhr_zeit") eq "AUS")\
  { fhem("delete atZschaltuhr");;;;\
  } else {\
  fhem("delete atZschaltuhr");;;;\
  fhem("define atZschaltuhr at ".Value("Zschaltuhr_zeit").":00 set ".Value("Zschaltuhr_device")." on");;;;\
  }\
}
attr noZschaltuhr room Zeituhr


Danke an Doc für den Grundgedanken.

Wenn noch jemand Tips zum Pimpen hat, bitte melden. In der jetzigen Form ist es mir für den Bereich "Codeschnipsel" eigentlich zu einfach  ::)

Gruß
Blueberry63
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 26 Januar 2015, 12:32:27
ich muss leider sagen, ich kämpfe gerade ganz schön um den Wecker zum laufen zu bekommen.
ich dachte mir deswegen, ich versuche erst mal was einfaches wie aus deinem post « Antwort #22 am: 19 Januar 2015, 11:35:55 »
so könnte ich auch die sache mit der 99_myUtils.pm für einen einfachen wecker umgehen. glaube das brauche ich aber wohl doch :S

ich habe dann einige dummys erstellt, wovon ich aber erst mal nur den Wecker_Uhrzeit brauche, deswegen lasse ich alles andere hier weg:
define Wecker_Uhrzeit dummy
attr Wecker_Uhrzeit alias Wecker Uhrzeit stellen
attr Wecker_Uhrzeit devStateIcon Aus:general_aus@red
attr Wecker_Uhrzeit room B_Wecker
attr Wecker_Uhrzeit setList state:AUS,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:35,06:40,06:45,06:50,06:55,07:00,07:05,07:10,07:15,07:20,07:25,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45
attr Wecker_Uhrzeit sortby 1
attr Wecker_Uhrzeit webCmd state:Aus


mein notify sieht so aus:
define noWecker_Uhrzeit notify Wecker_Uhrzeit {
if (Value("Wecker_Uhrzeit") eq "AUS")
{ fhem("delete atWecker_Uhrzeit");;;;
} else {
fhem("delete atWecker_Uhrzeit");;;;
fhem("define atWecker_Uhrzeit at ".Value("Wecker_Uhrzeit").":00 set Kaffeemaschine on");;;;
}


mir wird auch im notify noWecker_Uhrzeit folgendes angezeigt:
Probably associated with
Kaffeemaschine CUL_HM
Wecker_Uhrzeit dummy

passieren tut aber nichts zur eingegebenen zeit.
eventuell müsste ich vielleicht doch den dummy Kaffemaschine einbinden, damit ich sehe ob die gesetzt ist. dann wird es für mich aber verdammt schwer weil ich deinen gepimten wecker fast gar nicht verstehe :(
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 26 Januar 2015, 20:17:41
Moin moin,
also das schaut imho eigentlich alles ganz patent aus, was du da zusammengebastelt hast.
Ein paar Fragen:
1. funktioniert "set Kaffemaschine on" wenn du es in das Eingabefenster in fhem eingibst?
2. Wenn du den Wecker auf eine Uhrzeit stellst - müsstest du im "Raum" "Unsorted" ein at namens "atWecker_Uhrzeit" finden - wird das erstellt?
Viele Grüße
doc
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 26 Januar 2015, 20:50:33
erst mal vielen dank, dass du mir hilfst.
1. funktioniert
2. unter unsorted sehe ich leider nichts. habe auch mal bei everything geschaut, da war auch nichts :(
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 26 Januar 2015, 20:56:39
Na wir kommen der Sache schon näher. So sehr ich Fhem auch schätze - ein Debugger wäre Gold wert. Aber wir finden den Fehler schon! Er muss in deinem Notify in dieser Zeile stecken:

fhem("define atWecker_Uhrzeit at ".Value("Wecker_Uhrzeit").":00 set Kaffeemaschine on");;;;

Äh apropos - warum hast du denn da 4x ";"? Da müssen nur 2 hin. Ach herje - das ist ja aus meinem Post. Sowas, da hat es mir beim reinkopieren offensichtlich die ; verdoppelt. Sorry, werde ich gleich ändern. Versuchs mal...

Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 26 Januar 2015, 21:24:23
ich habe mir mal die notify von blueberry angeschaut und angepasst, damit bekomme ich ein at noZschaltuhr unter unsorted.

define noZschaltuhr notify Wecker_Uhrzeit {\
if (Value("Zschaltuhr_zeit") eq "AUS")\
  { fhem("delete atZschaltuhr");;;;\
  } else {\
  fhem("delete atZschaltuhr");;;;\
  fhem("define atZschaltuhr at ".Value("Wecker_Uhrzeit").":00 set ".Value("Kaffeemaschine")." on");;;;\
  }\
}


mal schauen ob er gleich auch schaltet.

jetzt noch eine frage, wie schaffe ich es noch ein 2. dummy einzubinden?
define Wecker_Wochentag dummy
attr Wecker_Wochentag alias Wecker Wochentag stellen
attr Wecker_Wochentag devStateIcon Aus:general_aus@red
attr Wecker_Wochentag room Wecker
attr Wecker_Wochentag setList state:AUS,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag,Montag-Freitag,Samstag-Sonntag
attr Wecker_Wochentag webCmd state:Aus
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 26 Januar 2015, 21:29:51
Viele Wege führen nach Rom  ;)
Also wenn du zwei Dummys machst, brauchst du zwei Notifys. Da würde ich dann beide auf die 99_myUtils.pm umlenken. Um die wirst du eh nicht drum rum kommen, das ist wirklich die beste Lösung für mehr Code. Also quasi
define noUhrzeit notify Wecker_Uhrzeit { Weckfunktion_aktivieren(); }
define noWochentag notify Wecker_Wochentag { Weckfunktion_aktivieren(); }


und dann in der 99myUtils.pm

sub
Weckfunktion_aktivieren()
{
  Und hier deinen Code also
schauen ob Tag UND Uhrzeit gesetzt sind, wenn ja, dann define at, wenn nein, dann lösch die ats
}


Verständlich?
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 26 Januar 2015, 21:59:30
also die kaffeemaachine ist erst angegangen nachdem ich folgendes umgeschrieben habe
fhem("define atZschaltuhr at *".Value("Wecker_Uhrzeit").":00 set Kaffeemaschine on");;\ 

mit den 99myUtils.pm möchte ich mich auf jedenfall noch auseinandersetzen, weil ich deinen gepimpten Wecker optisch toll finde, dass man sieht welcher Dummy wann aktiv ist und wann aus. was du erklärt hast verstehe ich soweit, muss es nur mal die tage irgendwie umsetzen. ich wollte halt erst klein anfangen. aber muss das nicht enthalten sein?
package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}
1;

zumindest stand es in dem link den mir dazu gepostet hast, wie man die 99myUtils.pm erstellt :S
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 27 Januar 2015, 08:37:55
Moin!
Na super, du näherst dich dem Ziel  ;) Bei der folgenden Zeile kannst ud auch noch den \ am Ende weglassen.

fhem("define atZschaltuhr at *".Value("Wecker_Uhrzeit").":00 set Kaffeemaschine on");;\

Wichtig: bei Perl-Code, den du innerhalb von notifys oder ats machst, müssen die Zeilen immer mit ;; enden, in der 99myUtils.pm enden die gleichen Zeilen mit einem ;

Und ja - der Code muss mit rein, insgesamt schaut das in der 99myUtils so aus:

package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

sub
Weckfunktion_aktivieren()
{
  Und hier deinen Code also
schauen ob Tag UND Uhrzeit gesetzt sind, wenn ja, dann define at, wenn nein, dann lösch die ats
}

sub
ne_andereFunktion()
{
  bra bra;
}
etc.
1;


Noch ein Tipp, schau mal, dass deine Emailfunktion läuft (http://www.fhemwiki.de/wiki/E-Mail_senden).
Dann kannst du dir in deine Funktionen ab und zu mal eine Email einbauen und an dich selbst schicken lassen, um zu testen, ob er in die If-Bedingung reingehüpft ist. Das hilft manchmal, wenn nix passiert. Die löscht du natürlich wieder raus, wenn alles klappt. Ist nur ein kleiner Debugger.
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: kasslerks am 03 Juli 2015, 16:17:00
Hallo docb

Muss das Thema mal wieder herbei holen.

Ich hab vor längerer Zeit dein Wecker hier übernommen klappt auch alles wunder bar.
Nur hab ich mir noch eine Sache eingebaut da ich meist schwer aus dem Bett komme

sub
Wecken_Licht_aktivieren()
{
if (Value("Gemein") eq "Aus") # Licht aus
{
  fhem("delete atWeckerGemein") if (defined($defs{'atWeckerGemein'}));
}
else                                #Licht An 
{
  if(Value("Wecker") eq "Aus")
  {
   fhem("delete atWeckerGemein") if (defined($defs{'atWeckerGemein'}));
  }
  else #Wecker an
  {
   my $weckzeit = Value("Wecker").":00";
   my $Licht_an = TU_Get_Increment($weckzeit,"00:05:00");
   fhem("define atWeckerGemein at ".$Licht_an." set SZ.Licht on;sleep 0.5;set SZ.Licht off;sleep 0.5;set SZ.Licht on;sleep 0.5;set SZ.Licht off;sleep 0.5;set SZ.Licht on");
   fhem("attr atWeckerGemein room Wecker");
   fhem("attr atWeckerGemein group Aktiv");
   fhem("attr atWeckerGemein alias Wecken mit Licht: ".ReadingsVal("Gemein","state", "Fehler")); 
  }
}
}


das ganze klappt auch ohne größere Probleme nur das er das Licht auch beim einstellen des Weckers gleich startet.

Das heißt ich Stelle z.B den Wecker auf 12 Uhr dann schaltet er das Licht gleich ein so wie es im at steht.
Und um 12:05 Uhr geht es dann auch wie gewünscht an.
Aber wie kann ich das jetzt verhindern das er das Licht beim Programmieren des Weckers einschaltet?

LG
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 05 Juli 2015, 18:49:04
Hi,
also ehrlich gesagt kann ich mir nicht erklären, wieso das Licht gleich angeht. Ich finde keine Zeile, die das Licht sofort schalten würde. Auch deine Zeichen scheinen zu passen. Sorry, ich bin ratlos
viele Grüße
doc
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 21 August 2015, 18:26:48
Ich mal wieder. Leider habe ich das Projekt etwas auf Eis gelegt, da sich mein Kater Anfang des Jahres das Bein gebrochen hat. Danach hat es lange gedauert bis ich mich wieder an den Wecker bzw. Dummys mit notifys und der 99 utils versucht habe. Ich habe inzwischen einige einfache Dummys zum laufen bekommen (ohne Weckfunktion), komme momentan aber mit dem Wecker nicht weiter.

Ich möchte, dass das Radio nach 70 min nach beginn der Weckzeit, wieder ausgeht. An geht es, aber ich weis nicht wie der richtige Befehl für ausgehen ist.
Hier ein Auszug aus meiner 99_myUtils.pm

sub
WeckerDummyNotifyUtils()
{
if (Value("WeckerDummy") eq "Aus")
{
fhem("delete atWeckerStellenDummyOn");
fhem("delete atWeckerStellenDummyOff");
}
else
{
fhem("define atWeckerStellenDummyOn at ".Value("WeckerDummy").":00 set Marantz on");
fhem("attr atWeckerStellenDummyOn room Wecker");
###
fhem("define atWeckerStellenDummyOff at ".Value("WeckerDummy")."+01:10:00 set Marantz off");
fhem("attr atWeckerStellenDummyOff room Wecker");
}}


Was ich auch gerne integrieren möchte sind die Tage, sprich den Befehl (!$we) oder ($we) oder ($wday == 3), nur wie und wo????
Ich habe leider auch keinen Ansatz wie ich das mit einem 2. Dummy mit notify regeln könnte.

Komisch ist auch, dass manchmal der definierte at Befehl z.b. atWeckerStellenDummyOn in keinem Raum auftaucht. Dann ist er mal unter Unsorted obwohl der room Wecker festgelegt ist, man bekommt den dann auch in keinen anderen Raum. Und nur ganz selten ist der mal im richtigen Raum :(

Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 21 August 2015, 19:22:01
Servus,
also um das Radio nach 70 Min. auszuschalten musst du mit den Uhrzeiten rechnen.

Ich mache das so:
1. die 99_TimeUtils.pm von hier http://forum.fhem.de/index.php/topic,14449.msg101224.html#msg101224 einbinden
2. die Auszeit berechnen, z.B. so:

my $weckzeit = Value("WeckerDummy").":00";
my $radio_auszeit = TU_Get_Increment($weckzeit,"01:10:00");

3. und dann einfach ähnlich wie du es versucht, nur mit der berechneten Variable:

fhem("define atWeckerStellenDummyOff at ".$radio_auszeit." set Marantz off");
fhem("attr atWeckerStellenDummyOff room Wecker");


Wenn du Tage einbauen willst, baue einfach eine if-abfrage um die entsprechende fhem("tue dies")-Zeile(n),
z.B.
if ($wday == 3)
{
fhem("define atWeckerStellenDummyOff at ".$radio_auszeit." set Marantz off");
fhem("attr atWeckerStellenDummyOff room Wecker");
}

Und warum das manchmal in keinem Raum auftaucht kann ich dir nicht sagen - das klappt bei mir immer.
Viele Grüße
doc
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 22 August 2015, 00:22:05
Erst mal ein riesen Danke schön das du mir nicht nur gezeigt hast wie es geht, sondern auch so schnell geantwortet hast. Jetzt habe ich endlich verstanden, was du in deinem 2. Post geschrieben hast. Manchmal stehe ich ganz schön auf dem Schlauch.

Was nicht zu gehen scheint, ist aber die ($we) Sachen in die 99_myutils.pm zu schreiben, dass hängt irgendwie mit perl zusammen, siehe http://forum.fhem.de/index.php?topic=14982.0 (http://forum.fhem.de/index.php?topic=14982.0)

Ich habe mir jetzt gedacht, dass ich es einfach in die Notify einbaue. Ich muss es mal die Woche testen, ob das wirklich so klappt. Das erste schalten schien zu klappen, aber ob er wirklich rücksicht auf das WE genommen hat oder nicht, kann ich noch nicht 100% beurteilen. Sehe ich dann morgen.

define WeckerWochenendeDummyNotify notify WeckerWochenendeDummy { if ($we) {WeckerWochenendeDummyNotifyUtils();}}
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 22 August 2015, 11:23:01
Denk dir nichts, ich stehe auch oft auf dem Schlauch. Ist bei mir viel Try-and-Error und Sachen kopieren und dann versuchen(!) zu verstehen. Gelingt mir nicht immer ;-)
Wenn das mit dem $we nicht geht, mach doch einfach if ($wday == 1 || $wday== 2 etc.), das müsste gehen. Wenn nicht, weil er $wday nicht erkennt, versuch mal folgendes, ist auch so eine "Generalfunktion", damit man auf alle Zeitvariablen Zugriff hat (geht bestimmt auch eleganter, aber wie gesagt, ich lerne auch an Beispielen):

my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;

Ich weiß nicht wie es funktioniert, aber es funktioniert ;-)
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 22 August 2015, 23:25:53
Mit meiner Änderung der notify lag ich natürlich voll daneben. Das einzige was damit passiert ist, wenn ich den Wecker stelle, dann prüft er welcher Tag ist und je nachdem wird der Wecker definiert oder nicht :(
define WeckerWochenendeDummyNotify notify WeckerWochenendeDummy { if ($we) {WeckerWochenendeDummyNotifyUtils();}}

Das nimmt er leider auch nicht an :(
$wday == 1

Mal abgesehen davon, dass es mega kompliziert aussieht, ist die Frage ob der dann auch meine rlp.holiday.pm versteht und an Feiertagen und Urlaubstagen den Wecker nicht einschaltet. Werde mich damit nochmal beschäftigen, aber das dauert wahrscheinlich richig lange bis ich da was verstehe :(
my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;

Was ich mir inzwischen überlegt habe, wäre ein 2. Notify. Wird der Wecker  erstellt,
define atWeckerStellenDummyOn :00 set Marantz on
fügt er noch ein
if ($we)
an entsprechende Stelle ein. Dann bekomme ich für jeden device, dummy, etc. zwar 2 notifys zusammen, das ist eine unnötige Belastung, würde ich aber in Kauf nehmen. Leider fehlt mir der Einfallsreichtum wie dieser notify aussieht, vielleicht komme ich ja irgendwann noch drauf, wenn ich mich damit länger beschäftige.



Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 23 August 2015, 00:36:38
Tja, die Feiertage RLP kann dir meine Lösung nicht bieten. Da kannst du nur nach Wochentagen sortieren - also Wochenenden ausschließen. Deine Lösung mit ins notfiy einbauen könnte schwierig werden, da fällt mir auf anhieb auch keine Lösung ein. Ich stelle den Wecker manuell wenn ich ihn brauche, da ich jeden Tag anders aufstehen muss (teilweise auch an Wochenenden/Feiertagen). Aber es sollte gehen, ich denke du brauchst nur die richtige Anzahl an geschweiften Klammern und Hochkommas ;-) Frag doch mal im Anfängerthread ob dir jemand erklären kann, wie du aus der Utils.pm heraus einen fhem("xxx"); befehl starten kannst und in den befehl wiederrum eine perl-Anweisung einbauen kannst. Die Jungs sind da echt fit und so ein Perl-Crack sollte das hinbekommen (im Gegensatz zu mir).  Ich würde mich jetzt da stundenlang hinsetzen und alle Varianten ausprobieren, vermutlich scheitern und dann eben auch im Anfängerthread posten ;-)

Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: SamirSpeed am 24 August 2015, 15:27:27
Wie Praktisch :)
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 28 August 2015, 17:23:51
kleiner zwischenbericht, falls es noch jemand anderen interssiert, wie ein $we oder $wday integriert werden kann.
hatte meine frage nochmal hier (http://forum.fhem.de/index.php/topic,14558.msg96520.html#msg96520) gestellt, da bettateilchen auch eine antwort gegeben hat, wie es aussehen könnte mit ($we), leider habe ich keine antwort erhalten.
danach habe ich mich selbst nochmal daran gewagt, mit Teilerfolg, den es kam keine Fehlermeldung mehr in der 99_utils, wenn ich $we integriert habe. leider wurde auch kein define erstellt.

heute habe ich mich mal an einem WeekdayTimer versucht. was insofern klappt, dass ich bestimmte Tage integrieren kann. leider geht (!$we) grunsätzlich nicht, egal ob WeekdayTimer oder at und dann wird natürlich auch meine rlp.holiday nicht erkannt. im weekdaytimer habe ich dann wday integriert, ledier wird wday im define des Weekdaytimer verschluckt.
habe mich dann wieder auf dieser grundlage am at wecker probiert und versucht ($wday == 1) bzw. ($we) zu integrieren. ich habe es endlich hinebkomme, dass ein define des wecker mit ($we) bzw ($wday) erstellt wird, leider wird auch hier im define des at wecker der code ($wday) bzw. ($we) verschluckt. es ist so langsam zum verrückt werden.

jetzt habe ich während des tippen hiers noch etwas interessantes in der FHEM Referenz zum WeekdayTimer (http://fhem.de/commandref.html#WeekdayTimer) gefunden, wenn man den Tag 7 für wochenende nimmt bzw. 8 für das wochentage, scheint er automatisch den ($we) bzw. (!$we) integriert zu haben. ich werde mal dieses wochenende den WeekdayTimer testen und berichten.


#########################################################
###########-----Wecker Notify WeekdayTimer-----############
#########################################################
sub
WeckerWeekdayTimerDummyNotifyUtils()
{
if (Value("WeckerWeekdayTimerDummy") eq "Aus")
{
fhem("delete atMarantzWeekdayTimerAn");
fhem("delete atMarantzWeekdayTimerAus");
}
else
{
my $weckzeit = Value("WeckerWeekdayTimerDummy").":00";
my $MarantzWeekdayTimer_aus = TU_Get_Increment($weckzeit,"01:10:00");
fhem("delete atMarantzWeekdayTimerAn");
fhem("define atMarantzWeekdayTimerAn WeekdayTimer Marantz 7|".Value("WeckerWeekdayTimerDummy").":00|on 7|".$MarantzWeekdayTimer_aus."|off");
fhem("attr atMarantzWeekdayTimerAn room Wecker");
fhem("attr atMarantzWeekdayTimerAn group Aktiv");
}}



##########################################################################################
###########-----Wecker Notify Werktage  -----############
#########################################################
sub
WeckerWerktageDummyNotifyUtils()
{
if (Value("WeckerWerktageDummy") eq "Aus")
{
fhem("delete atMarantzWerktageAn");
fhem("delete atMarantzWerktageAus");
}
else
{
my ($wday) = @_;
fhem("delete atMarantzWerktageAn");
fhem("define atMarantzWerktageAn at *".Value("WeckerWerktageDummy").":00 {if (($wday == 1) || ($wday == 2) || ($wday == 3) || ($wday == 4) || ($wday == 5)) {set Marantz on}}");
fhem("sleep 1");
fhem("attr atMarantzWerktageAn room Wecker");
fhem("attr atMarantzWerktageAn group Aktiv");
#######
#######--hier kommt der Timer, der nach X min. alles ausschaltet--############
#######
my ($wday) = @_;
my $weckzeit = Value("WeckerWerktageDummy").":00";
my $Marantz_aus = TU_Get_Increment($weckzeit,"01:10:00");
fhem("delete atMarantzWerktageAus");
fhem("define atMarantzWerktageAus at *".$Marantz_aus." {if (($wday == 1) || ($wday == 2) || ($wday == 3) || ($wday == 4) || ($wday == 5)) {set Marantz off}}");
fhem("sleep 1");
fhem("attr atMarantzWerktageAus room Wecker");
fhem("attr atMarantzWerktageAus group Aktiv");
}}
#########################################################
###########-----Wecker Notify Wochenende-----############
#########################################################
sub
WeckerWochenendeDummyNotifyUtils()
{
if (Value("WeckerWochenendeDummy") eq "Aus")
{
fhem("delete atMarantzWEAn");
fhem("delete atMarantzWEAus");
}
else
{
my ($we) = @_;
fhem("delete atMarantzWEAn");
fhem("define atMarantzWEAn at *".Value("WeckerWochenendeDummy").":00 {if ($we) {set Marantz on}}");
fhem("sleep 1");
fhem("attr atMarantzWEAn room Wecker");
fhem("attr atMarantzWEAn group Aktiv");
#######
#######--hier kommt der Timer, der nach X min. alles ausschaltet--############
#######
my ($we) = @_;
my $weckzeit = Value("WeckerWochenendeDummy").":00";
my $MarantzWochenende_aus = TU_Get_Increment($weckzeit,"01:10:00");
fhem("delete atMarantzWEAus");
fhem("define atMarantzWEAus at *".$MarantzWochenende_aus." {if ($we) {set Marantz off}}");
fhem("sleep 1");
fhem("attr atMarantzWEAus room Wecker");
fhem("attr atMarantzWEAus group Aktiv");
}}
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: Loredo am 05 September 2015, 10:43:18
Das Wecker Template im ROOMMATE Modul kennt ihr?
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 05 September 2015, 12:37:37
Zitat von: Loredo am 05 September 2015, 10:43:18
Das Wecker Template im ROOMMATE Modul kennt ihr?
jupp, schon mal was in der wiki zu roomates und guest gelesen, aber in wie weit hilft mir das bei meinem problem einen atWecker in verbindung mit ($we) bzw. (!$we) in der utils zu erstellen?
mein problem dabei ist, dass ich diesen Wecker endlich verstanden habe und roomates für mich wieder totales neuland ist und ich dafür wieder ewig brauche um mich rein zu arbeiten.
auch bin ich mir nicht sicher, ob roomates mir die optik gibt wie dieser wecker. durch diesen einfachen wecker sehe ich wunderbar was alles wann geschaltet wird, sprich heizung 1 std. vor weckzeit bzw. endet 5 mind. danach, etc..
ich will nicht bezweifeln, dass dies nicht auch mit roomates machbar ist, aber auf den ersten blick habe ich eben keine verbindung erkennen können, weil es einfach neu für mich ist.
ich habe in FHEM jetzt auch wieder soviele neue Baustellen, dass ich mich nicht schon wieder wo rein arbeiten möchte, insbesondere nicht wenn ich keinen vorteil darin erkennen kann.

Zitat von: sasquuatch am 28 August 2015, 17:23:51
jetzt habe ich während des tippen hiers noch etwas interessantes in der FHEM Referenz zum WeekdayTimer (http://fhem.de/commandref.html#WeekdayTimer) gefunden, wenn man den Tag 7 für wochenende nimmt bzw. 8 für das wochentage, scheint er automatisch den ($we) bzw. (!$we) integriert zu haben. ich werde mal dieses wochenende den WeekdayTimer testen und berichten.
der wecker löst mittels weekdaytimer 8 jetzt an feiertagen und urlaubstagen nicht mehr aus. nehme ich aber weekday 7 löst der wecker trotzdem am feiertag aus :S

ich finde aber einen weekdaytimer nicht so schick wie ein atWEcker, weil dieser mir keine Weckzeiten in der Gruppe aktiv anzeigt. dort wird lediglich "activ" oder "inactive" bzw. glühbirne an oder aus gezeigt. wieso mal eine glühbirne zu sehen ist mal text, verstehe ich nicht, ist mir auch nicht wichtig weil cih die weckzeit sehen möchte. habe aber auch schon gelesen, dass man sich die auslösezeiten einblenden lassen kann. muss mich damit aber noch beschäftigen wie das geht, zur Zeit habe ich ja viele FHEM baustellen.
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 20 September 2015, 00:05:28
so, habe jetzt endlich geholfen bekommen und der at wecker funktioniert jetzt mit ($we), es hat einfach nur ein backslash gefehlt. anbei der code für die 99_myutils.pm

##-----Wecker Wochenende Notify-----###
sub
WeckerWochenendeDummyNotifyUtils($)
{
my ($we) = @_;
if (Value("WeckerWochenendeDummy") eq "Aus")
{
fhem("delete atMarantzWEAn");
fhem("delete atMarantzWEAus");
}
else
{
fhem("delete atMarantzWEAn");
fhem("define atMarantzWEAn at *".Value("WeckerWochenendeDummy").":00 { fhem('set Marantz on') if (\$we)}");
fhem("attr atMarantzWEAn room Wecker,Home");
fhem("attr atMarantzWEAn group Aktiv");
#######--hier kommt der Timer, der nach X min. alles ausschaltet--############
my $weckzeit = Value("WeckerWochenendeDummy").":00";
my $MarantzWochenende_aus = TU_Get_Increment($weckzeit,"01:30:00");
fhem("delete atMarantzWEAus");
fhem("define atMarantzWEAus at *".$MarantzWochenende_aus." { fhem('set Marantz off') if (\$we)}");
fhem("attr atMarantzWEAus room Wecker,Home");
fhem("attr atMarantzWEAus group Aktiv");
}}

da (we) nur für das Wochende gilt und ihr das ganze für die werktage auch wollt, funktioniert leider (!$we) nicht. dann müsst ihr stattdessen ($wday) nehmen bzw. if ((\$wday == 1) || (\$wday == 2) || usw.))  ;)
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: niklasen am 28 Oktober 2015, 22:42:00
Hallo Zusammen,
ich bin fhem-Anfänger, habe aber dank des Forums alles so weit ganz gut hinbekommen.
Jetzt versuche ich mich an diesem Wecker und habe die fhem.cfg und die 99_myUtils so weit übernommen, jedoch scheitert es bei mir an der Zeitenberechnung mittels TU_Get_Decrement und TU_Get_Increment.

Die Fehlermeldung die ich erhalte:

Undefined subroutine &main::TU_Get_Decrement called at ./FHEM/99_myUtils.pm line 77.


Wenn ich den Code entsprechend anpasse und einen Versatz um wenige Sekunden einfüge, funktioniert alles soweit:

   my $weckzeit = Value("Wecker").":00";
   my $heizzeit_beginn = Value("Wecker").":20";
   my $heizzeit_ende = Value("Wecker").":40";

Kann mir jemand helfen diese TU_* Funktionen zum Laufen zu bekommen?
Übersehe ich etwas oder benötige ich ein weiteres Modul?

Ich habe mir bereits diesen Thread angeschaut: http://forum.fhem.de/index.php/topic,14449.msg101224.html#msg101224
werde daraus jedoch auch nicht schlauer. :(

Freue mich,
bekomme morgens nämlich langsam kalte Füße im Bad :)
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 28 Oktober 2015, 22:56:09
Schreib mal die Zeile 77 aus deiner 99_myUtils.pm hier hin. Am besten noch ein wenig mehr von deiner Definition


Gesendet von iPhone mit Tapatalk
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: niklasen am 29 Oktober 2015, 11:23:42
Hi,
ich habe die myUtils komplett übernommen und zum Test eine Steckdose geschaltet.


sub
Wecken_BaHe_aktivieren()
{
if(Value("Wecken_Bad_Heizen") eq "Aus") # Heizen auf Aus
{
  fhem("delete atWeckerBAHEs");
  fhem("delete atWeckerBAHEe");
}
else                                #Heizen auf An 
{
  if(Value("Wecker") eq "Aus")
  {
   fhem("set Wecken_Bad_Heizen Aus");
   fhem("delete atWeckerBAHEs");
   fhem("delete atWeckerBAHEe");
   return ("Zuerst den Wecker aktivieren");
  }
  else #Wecker an
  {
   my $weckzeit = Value("Wecker").":00";
##ab hier treten die Probleme auf:
   my $heizzeit_beginn = TU_Get_Decrement($weckzeit,"00:02:00");
   my $heizzeit_ende = TU_Get_Increment($weckzeit,"00:00:30");[
   fhem("define atWeckerBAHEs at ".$heizzeit_beginn." {fhem(\"set Steckdose_1 on");
   fhem("attr atWeckerBAHEs room Wecker");
   fhem("attr atWeckerBAHEs group Aktiv");
   fhem("attr atWeckerBAHEs sortby 4");
   fhem("attr atWeckerBAHEs alias Vorheizen des Bades auf ".Value("Wecken_Bad_Heizen")." Grad um");
   fhem("attr atWeckerBAHEs icon max_heizungsthermostat\@green"); 
   fhem("define atWeckerBAHEe at ".$heizzeit_ende." {fhem(\"set Steckdose_1 off");
   fhem("attr atWeckerBAHEe room Wecker");
   fhem("attr atWeckerBAHEe group Aktiv");
   fhem("attr atWeckerBAHEs sortby 6");
   fhem("attr atWeckerBAHEe alias Heizphase des Bades endet um");
   fhem("attr atWeckerBAHEe icon max_heizungsthermostat\@green"); 
  }
}
}


Was ich erreichen wollte, dass die Steckdose 2 Minuten vor und 30 Sekunden nach Weckzeit schaltet.
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 29 Oktober 2015, 12:16:27
eins vorweg, ich kenne mich mit perl nicht besonders aus und eventuell schauen hier auch profis rein. ansonsten musst du dein perl code nochmal im entsprechenden bereich hier im forum posten, falls ich oder ein anderer dir nicht weiter helfen konnte.

was ich sehe ist die rechteckige klammer [ am ende der unten stehenden zeile die ich nicht verstehe. für mich als perl noob scheint die falsch zu sein. Ich vermute das ist der fehler aus zeile 77, den sie geht zwar auf, aber schließt nicht mehr und danach ist halt alles falsch.

   my $heizzeit_ende = TU_Get_Increment($weckzeit,"00:00:30");[


bevor du hier weiter machst, mache erst mal die rechteckige klammer weg und teste das mal.
was für mich auch nicht schlüssig ist, warum machst du ein backslash \ ?

   fhem("define atWeckerBAHEs at ".$heizzeit_beginn." {fhem(\"set Steckdose_1 on");


ach ja, hier fehlt auch die } die das ganze wieder schließt, aber auch " und ) . das fehlt bei 2 zeilen.

möglicherwise ist der backslash egal, aber ich würde das mal ändern und schauen ob es auch ohne backslash geht. halt mal rum testen.
kannst es also so versuchen:

   fhem("define atWeckerBAHEs at ".$heizzeit_beginn." {fhem("set Steckdose_1 on")}");


noch was, hast du in deiner 99_myutils.pm nur einen kleinen fehler, wird fhem eventuell gar nichts mehr aus deiner 99_myutils.pm ausführen. sprich alles was korrekt ist, wird auch nicht ausgelöst. also wenn du 9 wecker hast die alle ok sind und dann kommt der 10. der einen fehler hat, lösen auch die 9 nderen wecker nicht mehr aus. vielleicht liege ich da jetzt falsch, aber bei mir war das so in meinen versuchen.

ich ändere auch alles was in der 99_myutils drin ist,  in FHEM selbst ab. da sieht man nach speichern auch immer, ob es einen syntax fehler gibt oder nicht, mit Angabe der entsprechenden zeile.

wenn du also folgendes in dein FHEM einträgst:

attr WEB JavaScripts codemirror/fhem_codemirror.js
attr WEB codemirrorParam { "theme":"eclipse", "lineNumbers":true }
attr WEB editConfig 1

bekommst du einen ganzen schönen editor um in FHEM die 99_myutils.pm zu editeren und findest z.b. die zeilen mit den fehlern viel leichter.
falls du in WEBtablet oder WEBphone arbeitest, entsprechend oben ändern ;)
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: niklasen am 29 Oktober 2015, 14:09:02
Hej,
danke für deine Antwort.
Die eckige Klammer war ursprünglich nicht im Code, das war leider ein Überbleibsel aus dem Post hier, ich hatte versucht die Zeile fett zu markieren.

Meine Subroutine sieht nun so aus:

sub
Wecken_BaHe_aktivieren()
{
if(Value("Wecken_Bad_Heizen") eq "Aus") # Heizen auf Aus
{
  fhem("delete atWeckerBAHEs");
  fhem("delete atWeckerBAHEe");
}
else                                #Heizen auf An 
{
  if(Value("Wecker") eq "Aus")
  {
   fhem("set Wecken_Bad_Heizen Aus");
   fhem("delete atWeckerBAHEs");
   fhem("delete atWeckerBAHEe");
   return ("Zuerst den Wecker aktivieren");
  }
  else #Wecker an
  {
   my $weckzeit = Value("Wecker").":00";
   my $heizzeit_beginn = TU_Get_Decrement($weckzeit,"00:02:00");
   my $heizzeit_ende = TU_Get_Increment($weckzeit,"00:00:30");
   fhem("define atWeckerBAHEs at ".$heizzeit_beginn." {fhem(\"set Steckdose_1 on\")}");
   fhem("attr atWeckerBAHEs room Wecker");
   fhem("attr atWeckerBAHEs group Aktiv");
   fhem("attr atWeckerBAHEs sortby 4");
   fhem("attr atWeckerBAHEs alias Vorheizen des Bades auf ".Value("Wecken_Bad_Heizen")." Grad um");
   fhem("attr atWeckerBAHEs icon max_heizungsthermostat\@green"); 
   fhem("define atWeckerBAHEe at ".$heizzeit_ende." {fhem(\"set Steckdose_1 off\")}");
   fhem("attr atWeckerBAHEe room Wecker");
   fhem("attr atWeckerBAHEe group Aktiv");
   fhem("attr atWeckerBAHEs sortby 6");
   fhem("attr atWeckerBAHEe alias Heizphase des Bades endet um");
   fhem("attr atWeckerBAHEe icon max_heizungsthermostat\@green"); 
  }
}


Die Backslashes in

fhem("define atWeckerBAHEe at ".$heizzeit_ende." {fhem(\"set Steckdose_1 off\")}");
brauche ich als Escape Zeichen, anders zeigt mir mein Editor an, dass der Code nicht korrekt wäre.

Aber ich glaube daran scheitert es auch nicht.
Der Fehler kommt weiter oben:

Undefined subroutine &main::TU_Get_Decrement called at .

Für mich ist es auch so, dass der Code von oben nach unten durchläuft.
Die Routinen weiter oben werden fehlerfrei abgearbeitet.

Den Code Editor installiere ich mir auf jeden Fall, danke für den Tipp.
Damit erspart man sich das hin- und her kopieren.
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 29 Oktober 2015, 14:49:58
hast recht, da habe ich auch gar nicht mehr drauf geachtet, dass der fehler ja in der Zeile drüber bei "Decrement" war.
einzige idee die ich noch habe, du verwendest diese zeile doppelt in deiner 99_myutils.pm:

my $heizzeit_beginn = TU_Get_Decrement($weckzeit,"00:02:00");
-dann einfach aus $heizzeit_beginn2 machen.

-könntest auch zu testzwecken mal aus dem Decrement ein Increment machen oder
-die ganze zeile löschen und schauen was dann passiert.
-oder die incrementzeile hochkopieren und zu decrement umschreiben und einen anderen namen wählen für $heizzeit_ende
-oder oder
so kann man stück für stück die fehler eingrenzen. zumindest mache ich das immer so und wenn es dann gar keine lösung mehr gibt, wie bei meinem problem mit $we, muste ich dann auch im "Codeschnipsel" bereich nachfragen. komisch ist nur, dass es bei docb keine probleme gibt :S

ansonsten muss mal jemand anderes drüber schauen
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: BKSolo am 26 Dezember 2015, 18:16:39
Das zweite Beispiel weiter oben aufgeführt.  Ich habe diese übernommen und dabei noch kleinere Abweichungen / Fehler im Code korrigiert.
Deshalb erlaube ich mir den Code, wie ich ihn (ohne Fehlermeldungen) bei mir habe, hier nochmals aufzuzeigen.


#--------

define Wecker_Uhrzeit dummy
attr Wecker_Uhrzeit alias Wecker Uhrzeit stellen
attr Wecker_Uhrzeit devStateIcon Aus:general_aus@red
attr Wecker_Uhrzeit room B_Wecker
attr Wecker_Uhrzeit setList state:AUS,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:35,06:40,06:45,06:50,06:55,07:00,07:05,07:10,07:15,07:20,07:25,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45
attr Wecker_Uhrzeit sortby 1
attr Wecker_Uhrzeit webCmd state:Aus


define noWecker_Uhrzeit notify Wecker_Uhrzeit {\
if (Value("Wecker_Uhrzeit") eq "Aus")\
  { fhem("delete atWecker_Uhrzeit")   if (defined($defs{'atWecker_Uhrzeit'}));;\
  } else {\
  fhem("delete atWecker_Uhrzeit")  if (defined($defs{'atWecker_Uhrzeit'})) ;;\
#  fhem("define atWecker_Uhrzeit at ".Value("Wecker_Uhrzeit").":00 set ".Value("Kaffeemaschine")." on");;\
  fhem("define atWecker_Uhrzeit at ".Value("Wecker_Uhrzeit").":00 set Kaffeemaschine on");;\
  }\
}
attr noWecker_Uhrzeit room B_Wecker


Gruss, Bruno
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: Loredo am 26 Dezember 2015, 18:43:31
Danke. Sorry hatte mich auch im Thread geirrt ;)
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: BKSolo am 26 Dezember 2015, 22:46:21
Habe das erste Beispiel noch herausgenommen da vermutlich noch Probleme enthalten sind.
Nach der Überarbeitung gebe ich es hier wieder bekannt.
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: Sandmann am 03 April 2016, 11:55:21
Hallo alle,

ich möchte den Wecker auch mal probieren, läuft er denn nu ?
Könnt ihr den dann vlt. nochmal hier rein schreiben ?
Das wäre super.
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: BKSolo am 03 April 2016, 15:28:29
Hallo, habe mich in letzter Zeit vorallem mit One-Wire und Temperatursonden befasst und deshalb nicht mehr ajour mit dem Wecker.

Was bei mir immer noch als Test läuft ist:


define Wecker_Uhrzeit dummy
attr Wecker_Uhrzeit alias Wecker Uhrzeit stellen
attr Wecker_Uhrzeit devStateIcon Aus:general_aus@red
attr Wecker_Uhrzeit group Wecker_B
attr Wecker_Uhrzeit room Wecker_B
attr Wecker_Uhrzeit setList state:Aus,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:35,06:40,06:45,06:50,06:55,07:00,07:05,07:10,07:15,07:20,07:25,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45
attr Wecker_Uhrzeit sortby 1
attr Wecker_Uhrzeit webCmd state:Aus


define noWecker_Uhrzeit notify Wecker_Uhrzeit {\
if (Value("Wecker_Uhrzeit") eq "Aus")\
{  fhem("delete atWecker_Uhrzeit")   if (defined($defs{'atWecker_Uhrzeit'}));;\
    fhem("set arduinorelay3 off");;\
  } else {\
  fhem("delete atWecker_Uhrzeit")  if (defined($defs{'atWecker_Uhrzeit'})) ;;\
  fhem("define atWecker_Uhrzeit at ".Value("Wecker_Uhrzeit").":00 set arduinorelay3 on") ;;\
  fhem("attr atWecker_Uhrzeit room Setup");;\
  fhem("attr atWecker_Uhrzeit group Wecker_Uhrzeit");;\
  fhem("attr atWecker_Uhrzeit alias Nächster aktiver Wecker:");;\
  }\
}
attr noWecker_Uhrzeit group Wecker_Uhrzeit
attr noWecker_Uhrzeit room Setup


Auf die eingestellte Zeit wird bei einem angehängten Arduino eine LED eingeschaltet. Mit klicken auf AUS wird diese wieder ausgeschaltet.

Der von docb aufgezeigte Wecker mit verschiedenen Schaltungen habe ich auch testmässig am Laufen - mache aber nichts damit.

Gruss, Bruno

Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: tik-tak-tok am 29 Januar 2017, 20:12:40
Hallo,

ich möchte den Wecker auch gerne nutzen. Leider gibts ein Problem, es wird offenbar nichts ausgeführt?
Im Log sehe ich folgendes:2017.01.29 19:56:16 1: PERL WARNING: Possible unintended interpolation of @red in string at (eval 2440) line 1.
2017.01.29 19:56:16 3: eval: my $SELF='noWecker';my $EVENT='21:15';my $EVTPART0='21:15';my $NAME='Wecker';my $TYPE='dummy';{  if (Value("Wecker") eq "AUS")   { fhem("delete atWecker");  } else {   fhem("delete atWecker");   fhem("define atWecker at ".Value("Wecker").":00 {Wecken()}");   fhem("attr atWecker room Wecker");   fhem("attr atWecker group Wecker");   fhem("attr atWecker alias Nächster aktiver Wecker:");   fhem("attr atWecker icon ring\@@red");   } }
2017.01.29 19:56:16 1: ERROR evaluating my $SELF='noWecker';my $EVENT='21:15';my $EVTPART0='21:15';my $NAME='Wecker';my $TYPE='dummy';{  if (Value("Wecker") eq "AUS")   { fhem("delete atWecker");  } else {   fhem("delete atWecker");   fhem("define atWecker at ".Value("Wecker").":00 {Wecken()}");   fhem("attr atWecker room Wecker");   fhem("attr atWecker group Wecker");   fhem("attr atWecker alias Nächster aktiver Wecker:");   fhem("attr atWecker icon ring\@@red");   } }: Global symbol "@red" requires explicit package name at (eval 2440) line 1.

2017.01.29 19:56:16 3: noWecker return value: Global symbol "@red" requires explicit package name at (eval 2440) line 1.

2017.01.29 19:56:22 1: PERL WARNING: Possible unintended interpolation of @red in string at (eval 2441) line 1.
2017.01.29 19:56:22 3: eval: my $TYPE='dummy';my $NAME='Wecker';my $EVTPART0='20:00';my $EVENT='20:00';my $SELF='noWecker';{  if (Value("Wecker") eq "AUS")   { fhem("delete atWecker");  } else {   fhem("delete atWecker");   fhem("define atWecker at ".Value("Wecker").":00 {Wecken()}");   fhem("attr atWecker room Wecker");   fhem("attr atWecker group Wecker");   fhem("attr atWecker alias Nächster aktiver Wecker:");   fhem("attr atWecker icon ring\@@red");   } }
2017.01.29 19:56:22 1: ERROR evaluating my $TYPE='dummy';my $NAME='Wecker';my $EVTPART0='20:00';my $EVENT='20:00';my $SELF='noWecker';{  if (Value("Wecker") eq "AUS")   { fhem("delete atWecker");  } else {   fhem("delete atWecker");   fhem("define atWecker at ".Value("Wecker").":00 {Wecken()}");   fhem("attr atWecker room Wecker");   fhem("attr atWecker group Wecker");   fhem("attr atWecker alias Nächster aktiver Wecker:");   fhem("attr atWecker icon ring\@@red");   } }: Global symbol "@red" requires explicit package name at (eval 2441) line 1.

2017.01.29 19:56:22 3: noWecker return value: Global symbol "@red" requires explicit package name at (eval 2441) line 1.


Gebe ich wie auf Seite 1 beschrieben "{Wecken();;}" in die Befehlszeile ein erscheint mein Weckton wie gewünscht.

Kann mir jemand weiterhelfen?

Vielen Dank :-),
Mike
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: BKSolo am 29 Januar 2017, 22:33:01
Hallo, kannst bitte hier dein Code mitgeben, den Du ins Fhem.cfg eingegeben hast, aber auch den, der im 99_myutils.pm steht.

Danke, Bruno
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: tik-tak-tok am 30 Januar 2017, 17:20:47
Hi Bruno,

in fhem.cfg steht:
define Wecker dummy
attr Wecker alias Wecker stellen
attr Wecker devStateIcon AUS:off
attr Wecker group Wecker
attr Wecker icon ring
attr Wecker room Wecker
attr Wecker setList state:AUS,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:$
attr Wecker webCmd state:AUS
define noWecker notify define noWecker notify Wecker {\\
if (Value("Wecker") eq "AUS")\\
  { fhem("delete atWecker") if (defined($defs{'atWecker'}));;;;;;;;\\
} else {\\
  fhem("delete atWecker") if (defined($defs{'atWecker'}));;;;;;;;\\
  fhem("define atWecker at ".Value("Wecker").":00 {Wecken()};;;;");;;;;;;;\\
  fhem("attr atWecker room Wecker");;;;;;;;\\
  fhem("attr atWecker group Wecker");;;;;;;;\\
  fhem("attr atWecker alias Nächster aktiver Wecker:");;;;;;;;\\
  fhem("attr atWecker icon ring\@@red");;;;;;;;\\
  }\\
}
attr noWecker room Wecker


in der 99_myutils.pm steht:sub
Wecken()
{
  fhem("set myMPD volume 100;set myMPD playfile Willkommen.mp3");
}
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: BKSolo am 31 Januar 2017, 16:21:29
Hallo, eine erster Überblick zum Code ergibt keine klaren Fehlerhinweise.

Was ich jedoch im Fhem www image ... Verzeichnis nicht gefunden habe, ist das icon ring. Such mal ob Du das in deiner Fhem Installation findest. Hängt dein Problem damit zusammen?
Die vielen generierten ;; kannst Du auch kürzen wie unten im Code aufgezeigt.


Ich habe dein Code wie folgt angepasst

define WeckerE dummy
attr WeckerE alias WeckerE stellen
attr WeckerE devStateIcon Aus:general_aus@red
attr WeckerE group WeckerE
attr WeckerE icon Wecker.Wochenende
attr WeckerE room WeckerE
attr WeckerE setList state:Aus,18:00,18:15,18:30,18:35,18:40,18:45,18:50,18:55,19:00,19:05,19:10,19:15,19:20,19:25,19:30,19:35,20:00,20:15,20:30,20:45,21:00,00:00
attr WeckerE webCmd state:Aus
define noWeckerE notify define noWeckerE notify WeckerE{\
if (Value("WeckerE") eq "Aus")\
{ fhem("delete atWeckerE")  if (defined($defs{'atWeckerE'})) ;;\
} else {\
  fhem("delete atWeckerE") if (defined($defs{'atWeckerE'}));;\
  fhem("define atWeckerE at ".Value("WeckerE").":00 {Wecken()};;");;\
  fhem("attr atWeckerE room WeckerE");;\
  fhem("attr atWeckerE group WeckerE");;\
  fhem("attr atWeckerE alias Nächster aktiver Wecker:");;\
  fhem("attr atWeckerE icon general_aus\@red");;\
  }\
}
attr noWeckerE room WeckerE

Stör dich nicht am E am Ende, musste das tun da ich bereits ein Wecker definiert hatte.

in der 99_myutils.pm steht bei mir

sub
Wecken()
{
  fhem( "set arduinorelay1 on");
}

Was nur eine Led auf einem Arduino einschaltet.

So läuft es bei mir.  Viel Erfolg
Gruss, Bruno


Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: tik-tak-tok am 31 Januar 2017, 19:19:59
Hallo Bruno,

ändert leider auch nichts. ;-/ Es passiert einfach nichts.
Das möglicherweise fehlende Icon ist doch mit dem von dir zuletzt geposteten Code nicht mehr relevant, da ein anderes verwendet wird?

Verstehe ich das richtig das im Raum Unsorted oder Everything nachdem ich einen Wecker gestellt habe ein Device "Wecker_at" auftauchen sollte?
Wenn ja, hapert es wohl daran. Das taucht nicht auf.

Danke & Gruß,
Mike
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 01 Februar 2017, 10:33:45
Zitat von: tik-tak-tok am 30 Januar 2017, 17:20:47
define noWecker notify define noWecker notify Wecker
sicher dass das so in deiner fhem.cfg drin steht?  :o
https://wiki.fhem.de/wiki/Notify (https://wiki.fhem.de/wiki/Notify)

Zitat von: tik-tak-tok am 30 Januar 2017, 17:20:47
define noWecker notify define noWecker notify Wecker {\\
if (Value("Wecker") eq "AUS")\\
  { fhem("delete atWecker") if (defined($defs{'atWecker'}));;;;;;;;\\
} else {\\
  fhem("delete atWecker") if (defined($defs{'atWecker'}));;;;;;;;\\
  fhem("define atWecker at ".Value("Wecker").":00 {Wecken()};;;;");;;;;;;;\\
  fhem("attr atWecker room Wecker");;;;;;;;\\
  fhem("attr atWecker group Wecker");;;;;;;;\\
  fhem("attr atWecker alias Nächster aktiver Wecker:");;;;;;;;\\
  fhem("attr atWecker icon ring\@@red");;;;;;;;\\
  }\\
}
attr noWecker room Wecker
ich bin jetzt kein crack, aber wo übergiebst du die infos von deinem notify an dein myutils sub?
was ich damit meine, es gibt keine verbindung zwischen notify und der myutils. woher weiß dein notify, die infos die du in deinem sub stehen hast?


wie ein notify aussehen könnte:
define noWeckerE notify WeckerE {Wecken();;}


jetzt musst du aber alles aus deinem notify, ordentlich in deine myutils packen
if (Value("WeckerE") eq "Aus")\
{ fhem("delete atWeckerE")  if (defined($defs{'atWeckerE'})) ;;\
} else {\
  fhem("delete atWeckerE") if (defined($defs{'atWeckerE'}));;\
  fhem("define atWeckerE at ".Value("WeckerE").":00 {Wecken()};;");;\
  fhem("attr atWeckerE room WeckerE");;\
  fhem("attr atWeckerE group WeckerE");;\
  fhem("attr atWeckerE alias Nächster aktiver Wecker:");;\
  fhem("attr atWeckerE icon general_aus\@red");;\
  }\
}

weil dass der sinn der myutils ist, sonst könntest du gleich den kleinen rest aus der myutils in dein notify packen und brauchst kein myutlis mehr. das mit der myutils macht man nur, damit die fhem.cfg nicht überladen wird, was du gerade mit deinem notify aber machst.
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: BKSolo am 02 Februar 2017, 17:23:52
Hallo Mike,  ich habe nochmals auf einem Beispiel aufbauend den folgenden Code erstellt. Dieser ruft keine Subroutine vom Myutils auf (wäre aber weiterhin leicht zu ergänzen).

define Wecker_Uhrzeit dummy
attr Wecker_Uhrzeit alias Wecker Uhrzeit stellen
attr Wecker_Uhrzeit devStateIcon Aus:general_aus@red
attr Wecker_Uhrzeit group Wecker_B
attr Wecker_Uhrzeit room Wecker_B
attr Wecker_Uhrzeit setList state:Aus,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:35,06:40,06:45,06:50,06:55,07:00,07:05,07:10,07:15,07:20,07:25,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45
attr Wecker_Uhrzeit sortby 1
attr Wecker_Uhrzeit webCmd state:Aus


define noWecker_Uhrzeit notify Wecker_Uhrzeit {\
if (Value("Wecker_Uhrzeit") eq "Aus")\
{  fhem("delete atWecker_Uhrzeit")   if (defined($defs{'atWecker_Uhrzeit'}));;\
    fhem("set arduinorelay3 off");;\
    {Log 3, "set arduinorelay3 off"};;\
  } else {\
  fhem("delete atWecker_Uhrzeit")  if (defined($defs{'atWecker_Uhrzeit'})) ;;\
  fhem("define atWecker_Uhrzeit at ".Value("Wecker_Uhrzeit").":00 set arduinorelay3 on") ;;\
  {Log 3, "define atWecker_Uhrzeit gesetzt"};;\
  fhem("attr atWecker_Uhrzeit room Wecker_B");;\
  fhem("attr atWecker_Uhrzeit group Wecker_Uhrzeit");;\
  fhem("attr atWecker_Uhrzeit alias Nächster aktiver Wecker:");;\
  }\
}
attr noWecker_Uhrzeit group Wecker_Uhrzeit
attr noWecker_Uhrzeit room Wecker_B


Das läuft bei mir.
Wenn eine Zeit über die Auswahl gesetzt wird, wird auch im Logfile ein Eintrag geschrieben (Kontrolle)
Wenn die Zeit erreicht wird, wird die entsprechende Led eingeschaltet.
Jetzt kann über die Auswahl entweder Aus gewählt werden, was keine neuen Zeit setzt.
Und bei mir die entsprechende Led wieder ausgeschalten wird.
Oder direkt eine neue Zeit gesetzt werden kann und im Logfile erneut ein Eintrag geschrieben wird (Kontrolle)

Nun hoffe ich es geht bei dir auch.

Noch ein Hinweis zu
Zitatich bin jetzt kein crack, aber wo übergiebst du die infos von deinem notify an dein myutils sub?

der Aufruf erfolgt mit Wecken() im Code
fhem("define atWecker at ".Value("Wecker").":00 {Wecken()};;");;\\
mit dem ganzen wird wieder ein atWecker definiert mit der erneuten Zeit hinterlegt die im Wecker steht und dem Aufruf Wecken() der nach der erreichten Zeit aufgerufen wird.
Da es sich um ein Beispiel handelt, wird in myutils nur wenig aufgeführt, was jederzeit auch erweitert werden kann.

Gruss, Bruno
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 03 Februar 2017, 09:21:38
Zitat von: BKSolo am 02 Februar 2017, 17:23:52
fhem("define atWecker at ".Value("Wecker").":00 {Wecken()};;");;\\
das habe ich überlesen, ist aber auch das Problem, wenn es Zehn mal Wecker heisst, ist ein Wecken schwerer heraus zu lesen, dass macht einem die fehlersuche schwerer  :-\

ich versuche bei mir klarere defintionen zu wählen wie, atWecker, WeckerNotify, WeckerDummy und WeckerUtils, dann kann man fehler leichter raus lesen, gelingt mir aber auch nicht immer  :-[
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: tik-tak-tok am 03 Februar 2017, 22:04:12
Hi Bruno,

danke für die Antwort. Jetzt haut es hin :-)

Mein Code im "Anschalten_Notify" zum zugehörigen Dummy "WeckerMike" sieht nun wie folgt aus:
WeckerMike:on {fhem ("set Wecker_Uhrzeit 21:57;set myMPD volume 100") }

Ich würde nun gerne nur noch eins (vorerst) einbauen wollen, und zwar das nach 30 Minuten der Dummy "Wecker_Mike" auf off gesetzt wird.
Alternativ ginge auch ein at Befehl zu Uhrzeit xx:xx:xx.

Leider bekomme ich das nicht umgesetzt. ;-)

Kannst du mir diesbezüglich nochmal helfen?
Mit "on-for-timer" habe ich es versucht und mit at Befehl auch. Leider beides ohne Erfolg, vermutlich an der falschen Stelle gesetzt.

Im Anhang noch ein paar Screenshots. :-)

Danke & LG,
Mike

PS: Angeschaltet wird weiterhin, aber meinen Wunsch zum Abschaltbefehl erhört FHEM nicht. Ich vermute ich habs an den falschen Stellen gesetzt. Obwohl ich es an mehreren Stellen versucht habe.
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: BKSolo am 04 Februar 2017, 17:25:05
Hallo Mike, eine Erweiterung zu meinem Code Wecker_Uhrzeit. Dabei nehme ich Codefragmente wie sie in diesem Forum mit Antwort #1 von docb aufgezeigt wurde.

im fhem.cfg

define Wecker_Uhrzeit dummy
attr Wecker_Uhrzeit alias Wecker Uhrzeit stellen
attr Wecker_Uhrzeit devStateIcon Aus:general_aus@red
attr Wecker_Uhrzeit group Wecker_B
attr Wecker_Uhrzeit room Wecker_B
attr Wecker_Uhrzeit setList state:Aus,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:35,06:40,06:45,06:50,06:55,07:00,07:05,07:10,07:15,07:20,07:25,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45
attr Wecker_Uhrzeit sortby 1
attr Wecker_Uhrzeit webCmd state:Aus


define noWecker_Uhrzeit notify Wecker_Uhrzeit {\
if (Value("Wecker_Uhrzeit") eq "Aus")\
{  fhem("delete atWecker_Uhrzeit")   if (defined($defs{'atWecker_Uhrzeit'}));;\
    fhem("delete atWeckere")   if (defined($defs{'atWeckere'}));;\
    fhem("set arduinorelay3 off");;\
    {Log 3, "set arduinorelay3 off"};;\
  } else {\
  fhem("delete atWecker_Uhrzeit")  if (defined($defs{'atWecker_Uhrzeit'})) ;;\
  fhem("define atWecker_Uhrzeit at ".Value("Wecker_Uhrzeit").":00 set arduinorelay3 on") ;;\
  {Log 3, "define atWecker_Uhrzeit gesetzt"};;\
  {Weckerzeit_Ende_aktivieren()};;\
  fhem("attr atWecker_Uhrzeit room Wecker_B");;\
  fhem("attr atWecker_Uhrzeit group Wecker_Uhrzeit");;\
  fhem("attr atWecker_Uhrzeit alias Nächster aktiver Wecker:");;\
  fhem("attr atWecker_Uhrzeit icon audio_volume_mid\@red");;\
  }\
}
attr noWecker_Uhrzeit group Wecker_Uhrzeit
attr noWecker_Uhrzeit room Wecker_B


in diesem erfolgt ein Aufruf {Weckerzeit_Ende_aktivieren()};;\  ins myutils wo folgendes definiert ist


sub
Weckerzeit_Ende_aktivieren()
{
  if(Value("Wecker_Uhrzeit") eq "Aus")
  {
   return ("Zuerst den Wecker aktivieren");
  }
  else #Wecker an
  {
   my $weckzeit = Value("Wecker_Uhrzeit").":00";
   my $weckzeit_ende = TU_Get_Increment($weckzeit,"00:30:00");
   fhem("define atWeckere at ".$weckzeit_ende." set arduinorelay3 off");
   fhem("attr atWeckere room Wecker_B");
   fhem("attr atWeckere group Wecker_Uhrzeit");
   fhem("attr atWeckere alias Weckzeit endet um");
   fhem("attr atWeckere icon audio_volume_mid\@green");
   return ("Weckzeit_Ende erreicht");
  }
}


Wo set arduinorelay3 off steht, kannst Du deinen Wecker_Mike:off einsetzen.

Die Ausschaltzeit ist in diesem Beispiel mit 30 Minuten fix, aber es kann mit einem weiteren Wert in fhem.cfg variabel gestaltet werden.

Beachte auch, dass Du weitere Funktionen ins myutils kopieren musst, wie es docb beschreibt:
ZitatWichtig: damit das addieren und subtrahieren von Zeiten funktioniert (TU_Get_Decrement und TU_Get_Increment), braucht ihr die 99_TimeUtils.pm von hier (http://forum.fhem.de/index.php/topic,14449.msg91796.html#msg91796).



Viel Erfolg - Gruss, Bruno

Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: tik-tak-tok am 04 Februar 2017, 17:58:00
Bei den MyUtils Sachen stelle ich mich zu doof an. Hättest du Zeit und Lust mir kurz per TeamViewer mal auszuhelfen? :-)
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: BKSolo am 04 Februar 2017, 18:34:40
Mike, können wir - schreib über private Mitteilungen deine Koordinaten.  Gr. Bruno
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten
Beitrag von: sasquuatch am 29 November 2017, 12:59:59
Zitat von: docb am 22 Dezember 2014, 15:55:51

fhem(\"set BA_Heizung desiredTemperature \".Value(\"Wecker_Bad_Heizen\"));;;;}");


Ich hatte damals nicht alles aus deinem Wecker übernommen, aber wollte das mit der Heizung vor dem aufstehen auf eine bestimmte temperatur hochfahren lassen. indem ich mittels dummy als variable die ich sehr simpel täglich ändern kann, ohne den AT jedes mal neu stellen zu müssen. Es will aber bei mir nicht klappen.

mein Dummy:
define WeckerBadVorheizen dummy
attr WeckerBadVorheizen setList state:Aus,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5
attr WeckerBadVorheizen webCmd state:Aus


mein at:
define atBadHeizungFaehrtHoch at *06:00:00 { fhem('set Bad_Wandthermostat desired-temp '.Value'WeckerBadVorheizen')') if (($wday == 1) || ($wday == 2) || ($wday == 3) || ($wday == 4) || ($wday == 5) && ($month == 10) || ($month == 11) || ($month == 12) || ($month == 1) || ($month == 2) || ($month == 3) )}


letztendlich kann ich auch ganz einfach folgenden befehl aus dem at in die Befehlszeile eingeben und schauen was passiert:
set Bad_Wandthermostat desired-temp '.Value('WeckerBadVorheizen')

dann gibt es diesen Fehler:
Invalid temperature '.Value('WeckerBadVorheizen'), choose one of on off 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0 10.5 11.0 11.5 12.0 12.5 13.0 13.5 14.0 14.5 15.0 15.5 16.0 16.5 17.0 17.5 18.0 18.5 19.0 19.5 20.0 20.5 21.0 21.5 22.0 22.5 23.0 23.5 24.0 24.5 25.0 25.5 26.0 26.5 27.0 27.5 28.0 28.5 29.0 29.5

also muss irgendwas am code der variablen falsch sein, aber ich weiß nicht was:
'.Value('WeckerBadVorheizen')
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 02 Dezember 2017, 00:07:23
Hi,
ich der Abruf des Value ist meiner Ansicht nach Fehlerhaft. Versuche es mal so:

fhem("set Bad_Wandthermostat desired-temp".ReadingsVal("WeckerBadVorheizen", "state", "0"));
Zudem sollte dein setList state nur Werte drin haben, die dein desired-temp versteht - ich weiß nicht, ob der "Aus" kann, oder das nicht eher "off" sein sollte (so wäre das zumindest bei meinen Homematic Wandthermostaten HM-TC-IT-WM-W-EU).
Viele Grüße
doc
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: Fixel2012 am 02 Dezember 2017, 01:42:05
Ohne jemanden komisch zu kommen, oder so.

Es gibt inzwischen einen neues "richtiges" Wecker Modul. Es nennt sich Alarmclock: http://commandref.fhem.de/#alarmclock
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: docb am 02 Dezember 2017, 11:58:47
He, das ist ja cool, danke für den Hinweis. Bei der Entwicklungsgeschwindigkeit von Fhem verpasse ich sicher einen ganzen Haufen Module. Das habe ich jetzt gleich mal installiert - sehr cool, DANKE!
Titel: Antw:Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt
Beitrag von: sasquuatch am 02 Dezember 2017, 13:41:58
Zitat von: docb am 02 Dezember 2017, 00:07:23
Hi,
ich der Abruf des Value ist meiner Ansicht nach Fehlerhaft. Versuche es mal so:

fhem("set Bad_Wandthermostat desired-temp ".ReadingsVal("WeckerBadVorheizen", "state", "0"));
Zudem sollte dein setList state nur Werte drin haben, die dein desired-temp versteht - ich weiß nicht, ob der "Aus" kann, oder das nicht eher "off" sein sollte (so wäre das zumindest bei meinen Homematic Wandthermostaten HM-TC-IT-WM-W-EU).
Viele Grüße
doc
danke, aber es geht trotzdem nicht,. das hatte ich anfangs auch mal, aber da hies es eben nur, wie jetzt auch:
desired-temp requires parameter: [on|off|6.0..30.0]
das Aus soll eigentlich nur zeigen, es ist nicht gewünscht das eine Temperaturänderung erfolgen soll, bei einem falschen Wert passiert dann ja nichts. mache ich ein off, schaltet er ja aus. mache ich ein on, lässt er zwar an, aber dann sieht es im dummy aus, als wäre er noch an.
ich habe auch alle werte des dummy mal geändert, das geht nicht weg.

@fixel2012: danke für den hinweis. hat mich endlich mal bewegt auf fhem 5.8 upzudaten  ;D
muss ich mal testen

NACHTRAG: Im moment weiß ich nicht, ob ich den wecker gut oder schlecht finden soll. für meinen Wecker habe ich einen Dummy, mit einem Drop Down Menü und dort suche ich mir die Zeit raus die ich gerade brauche und muss nicht nervend in den Wecker gehen, mir die Tage raus suchen an denen er wecken soll und dann noch die Zeit eingeben. Da hilft es auch wenig Profile speichern zu können, weil ich nicht immer zur selben zeit aufstehe, da bräuchte ich dann ungefähr zwanzig profile. ok, könnte dann natürlich 20 wecker anlegen. und wenn ich jetzt anfange ein dummy zu bauen, mit einem notify oder DOIF, bin ich genau da, wo ich jetzt schon bin.
ich sehe momentan keine erleichterung.
bei den befehlen bin ich unsicher, weil ich befehle ausführe die zu unterschiedlichen zeiten anfangen und aufhören. z.b. soll die heizung im bad 40 min vor der weckzeit hoch fahren. zur weckzeit das radio im schlafzimmer, 20 min nach der weckzeit die kaffeemaschine angehen, dann irgendwann radio im wohnzimmer etc., keine ahnung wie das hier geht. könnte mir vorstellen das dies vielleicht auch mit at´s gelöst wird, so wie ich es ja schon mache.
bohr und was ich ganz besonders liebe, eine commandref nur auf englisch. da brauche ich erst gar nicht anfangen zu lesen mit meinen grundkenntnissen im englischen und wenn ich dann den thread raus suchen muss, damit ich es auf deutsch habe, dann braucht es auch keine commandref.