Zeitschaltuhr *Update 02.03.*

Begonnen von BeamterAD, 04 Januar 2014, 02:01:53

Vorheriges Thema - Nächstes Thema

satprofi

hallo.
habe deinen code um folgendes erweitert:


define Wecklampe dummy
attr Wecklampe alias was soll geschaltet werden
attr Wecklampe group Timerconfig
attr Wecklampe room Timer
attr Wecklampe setList state:AquaLamp1_4000K,AquaLamp2_4000K,AquaLamp3000K,AquaLamp9000K
attr Wecklampe sortby 01
attr Wecklampe webCmd state

define Weckleuchten notify Weckzeit.min {my $Weckz1 = ReadingsVal("Weckzeit_h","state","undef") . ":" . ReadingsVal("Weckzeit_min","state","undef");;\
my $day1 = ReadingsVal("Weckzeit_day", "state", "undef");;\
my $Weckla1 = ReadingsVal("Wecklampe", "state", "undef");;\
fhem ("define $Weckla1.anschalten WeekdayTimer $Weckla1 $Weckz1|$day1|on;;attr $Weckla1.anschalten room Timer;;attr $Weckla1.anschalten group geplante_Schaltzeiten;;attr $Weckla1.anschalten icon on-till;;define Termin_von.$Weckla1.am.$day1.um.$Weckz1 dummy;;attr Termin_von.$Weckla1.am.$day1.um.$Weckz1 group geplante_Schaltzeiten;;attr Termin_von.$Weckla1.am.$day1.um.$Weckz1 room Timer");; Log 3 , "$Weckla1 wird am $day1 um $Weckz1 eingeschaltet!";;}



jetzt bekomme ich aber folgende ausgabe:


Termin_von.AquaLamp2_4000K.am.undef.um.03:03


warum ist der wochentage "undef" ?

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

BeamterAD

Weil der Status nicht bekannt ist,dann nimmt Fhem undef als default

satprofi

wo liegt denn der fehler? status sollte ja funktionieren mit Mo, etc als Wochentag.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

BeamterAD

"Weckzeit_day" hast du doch nirgends definiert oder fehlt da ein stückchen vom Code ?
auch die Dropdownliste dazu kann ich nicht sehen,oder soll Day nur den aktuellen Tag ausgeben für eine schönere Anzeige?


mfg
Christian

satprofi

sorry, hab nicht denganzen code eingestellt. wckzeit_day ist sehr wohl definiert.


# Timer
# Weckzeit_h ,Weckzeit_min und Weckzeit_day sind ein Dummy`s und dienen nur dazu,
# die Zeit die eingestellt wurde und dann als state gespeichert wurde wieder auszulesen!
# Außerdem warten andere notify darauf das sich  state ändert um dann eine Aktion auszuführen
# Ende
define Weckzeit_h dummy
attr Weckzeit_h alias Stelle Startzeit Stunden
attr Weckzeit_h group Timerconfig
attr Weckzeit_h room Timer
attr Weckzeit_h setList state:00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23
attr Weckzeit_h sortby 02
attr Weckzeit_h webCmd state
# schreibt einfach nur den Text " Stelle Weckzeit Stunden "vor das Dropdownfeld Weckzeit_h

define Weckzeit_min dummy
attr Weckzeit_min alias Stelle Startzeit Minuten
attr Weckzeit_min group Timerconfig
attr Weckzeit_min room Timer
attr Weckzeit_min setList state:00,01,02,03,04,05,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59
attr Weckzeit_min sortby 03
attr Weckzeit_min webCmd state

define Weckzeit_day dummy
attr Weckzeit_day alias Stelle Tag
attr Weckzeit_day group Timerconfig
attr Weckzeit_day room Timer
attr Weckzeit_day setList state:Mo,Di,Mi,Do,Fr,Sa,So,Sa-So,Mo-So
attr Weckzeit_day sortby 04
attr Weckzeit_day webCmd state

define Wecklampe dummy
attr Wecklampe alias was soll geschaltet werden
attr Wecklampe group Timerconfig
attr Wecklampe room Timer
attr Wecklampe setList state:AquaLamp1_4000K,AquaLamp2_4000K,AquaLamp3000K,AquaLamp9000K
attr Wecklampe sortby 01
attr Wecklampe webCmd state

define Weckleuchten notify Weckzeit.min {my $Weckz1 = ReadingsVal("Weckzeit_h","state","undef") . ":" . ReadingsVal("Weckzeit_min","state","undef");;\
my $day1 = ReadingsVal("Weckzeit_day", "state", "undef");;\
my $Weckla1 = ReadingsVal("Wecklampe", "state", "undef");;\
fhem ("define $Weckla1.anschalten WeekdayTimer $Weckla1 $Weckz1|$day1|on;;attr $Weckla1.anschalten room Timer;;attr $Weckla1.anschalten group geplante_Schaltzeiten;;attr $Weckla1.anschalten icon on-till;;define Termin_von.$Weckla1.am.$day1.um.$Weckz1 dummy;;attr Termin_von.$Weckla1.am.$day1.um.$Weckz1 group geplante_Schaltzeiten;;attr Termin_von.$Weckla1.am.$day1.um.$Weckz1 room Timer");; Log 3 , "$Weckla1 wird am $day1 um $Weckz1 eingeschaltet!";;}



Gesendet von meinem Transformer TF101G mit Tapatalk

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

BeamterAD

Zitatfhem ("define $Weckla1.anschalten WeekdayTimer $Weckla1 $day1|$Weckz1|on");
funktioniert bei mir,allerdings krieg ich bei der Anzeige bzw mit dem definieren von den Anzeigen und dem Löschbefehl das Problem mit dem Namen,weil er Mo-Fr nicht wegen dem Sonderzeichen akzeptiert.
eventmap geht nicht,weil er ja immer in den originalnamen übersetzt und nicht umgekehrt,oder geht das ?

BeamterAD

Ich habe ein Problem mit einer Zeitschaltuhr und WeekdayTimer,wie folgt

define Weckzeit_day dummy
attr Weckzeit_day setList state:Mo,Di,Mi,Do,Fr,Sa,So,Mo-Fr,Sa-So,Sa-Fr,
attr Weckzeit_day webCmd state

Das Dropdown um die Tage auszuwählen


Hier steht normalerweise mehr,wir aber nicht benötigt,es geht aber ab hier mit Perl weiter
my $day1 = ReadingsVal("Weckzeit_day", "state" , "undef");;\
Hier werden die Schalttage ausgelesen

fhem ("define Wecker.anschalten WeekdayTimer Wecker $day1|07:00|on");;\
Hier beginnen die Probleme,wenn $day1 ,, Mo-Fr" als Wert hat bekomme ich eine Fehlermeldung wegen dem ,,-,, (invalid Daylist)

fhem ("attr Wecker.anschalten alias Wecker.anschalten am $day1 um 07:00");;\
fhem ("define Termin_vonWecker.anschalten.$day1.um.07:00  dummy");;\

das brauche ich um später ein Löschkommando abzusetzen


Wie könnte man das lösen?

  • im Dropdown statt Mo-Fr könnte man ja   1-5 schreiben ----nee geht zwar ,aber mal ehrlich absolut kein WAF
  • oder  If Weckzeit_day Mo-Fr set 1-5 oder so,hat aber dann das Problem wieder mit der Anzeige,
    die ja auch aus diesen Werten zusammengebaut wird um zu zeigen wann welches Gerät um welche Uhrzeit angeschaltet wird
    und da steht jetzt "Gerät wird am 1-5 um 07:00 eingeschaltet"

Dietmar63

Ich sehe mir dein Problem morgen abend genauer an. Komme vorher nicht dazu.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

Zitatmy $day1 = ReadingsVal("Weckzeit_day", "state" , "undef");
fhem ("define Wecker.anschalten WeekdayTimer Wecker $day1|07:00|on");

Schreib bitte mal den Text ins Log, der in der Funktion fhem("...") tatsächlich an fhem übergeben wird.
Ich glaube nicht, das es sich um folgenden Text handelt, der bei mir problemlos funktioniert:
define Wecker.anschalten WeekdayTimer Wecker Mo-Fr|07:00|on
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

BeamterAD

Das Problem liegt woanders, ich definiere noch einen Dummy dessen Namen setzt sich aus den ganzen Variablen zusammen

define $Gerät_wird_am_$day1_um_$Zeit_$zustand.geschaltet dummy
und wenn Mo-Fr an dieser Stelle steht hagelts Fehler ohne Ende.
Ich brauche diesen Dummy für die Anzeige der gesetzten Termine außerdem kann ich einen genau definierten Löschbefehl absetzen.

Ich habe ganz oben den aktuellen Code nocheinmal eingefügt!

Dietmar63

wahrscheinlich kann keine Variable Mo-Fr enthalten. Vielleicht in Underscore verwandeln:_
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

BeamterAD

Nö,dann funktioniert setlist nicht mehr,ich hatte gedacht,ich könnte irgendetwas bauen,was Weckzeit_day ausließt und im Falle Mo-Fr  dann Mo,Di,Mi,Do,Fr, ausgibt,habe aber keine Ahnung wie sowas aussehen muß und wie ich es so gestalte das es ausgelesen werden kann  also ungefähr so if Weckzeit_day state eq Mo-Fr setstate Mo,Di,Mi,Do,Fr, elsif Sa-So ....
ABER,ich kann immerhin gut kopieren und einfügen:-)

Dietmar63

ich meine folgendes:

my $nameGerat = "$Gerät_wird_am_$day1_um_$Zeit_$zustand.geschaltet";
$nameGerat =~ s/-/_/g;
fhem("define $nameGeraet dummy");


dann werden - in _ verwandelt.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

BeamterAD

mmmmmhhhhhhh,irgendwie versteh ich das noch nicht richtig, was passiert hier ?
ich geh mal lesen !

Dietmar63

ich kann leider deine Lösungen nicht überblicken, weil ich nur Bruckstücke deines codes hier siehe.
Poste mal alles was du codiert hast, auch wenn Fehler beim Speichern kommen.

Vielleicht kann ich dir leicht auf die Sprünge helfen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm