Einfacher Wecker mit vielen Möglichkeiten - jetzt auch aufgepimpt

Begonnen von docb, 20 Dezember 2014, 18:13:39

Vorheriges Thema - Nächstes Thema

docb

@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.
I love FHEM!

sasquuatch

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?

docb

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
I love FHEM!

m311331

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

docb

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
I love FHEM!

m311331

Hi docb,

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


Mfg. m311331

blueberry63

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
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

docb

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...
I love FHEM!

blueberry63

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
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

docb

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
I love FHEM!

blueberry63

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
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

sasquuatch

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 :(

docb

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
I love FHEM!

sasquuatch

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 :(

docb

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...

I love FHEM!