Zeitschaltuhr *Update 02.03.*

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

Vorheriges Thema - Nächstes Thema

geri

hab an deinem code nicht wirklich was geändert, ausser leerzeilen rausgelöscht.

# Weckzeit
define Wecker_Status dummy
attr Wecker_Status sortby 04

define Wecklampe dummy
attr Wecklampe alias was soll geschaltet werden
attr Wecklampe group Zeitschaltuhr
attr Wecklampe room Wecker
attr Wecklampe setList state:Leselampe,Pendelleuchte_li,Pendelleuchte_re,Stehlampe
attr Wecklampe sortby 01
attr Wecklampe webCmd state
#hier wird festgelegt was geschaltet werden soll

define Weckzeit_day dummy
attr Weckzeit_day setList state:Mo,Di,Mi,Do,Fr,Mo-Fr,Sa-So,Sa-Fr,
attr Weckzeit_day alias an welchen Tagen soll der Wecker aktiv werden
attr Weckzeit_day group Zeitschaltuhr
attr Weckzeit_day room Wecker
attr Weckzeit_day sortby 02
attr Weckzeit_day webCmd state

define Schaltzustand dummy
attr Schaltzustand alias an,aus,?
attr Schaltzustand group Zeitschaltuhr
attr Schaltzustand room Wecker
attr Schaltzustand setList state:an,aus
attr Schaltzustand sortby 03
attr Schaltzustand webCmd state

define Weckzeit_h dummy
attr Weckzeit_h alias Stelle Weckzeit
attr Weckzeit_h group Zeitschaltuhr
attr Weckzeit_h room Wecker
attr Weckzeit_h setList state:time
attr Weckzeit_h sortby 04
attr Weckzeit_h webCmd state

define Timer notify Weckzeit_h {my $Weckz1 = ReadingsVal("Weckzeit_h", "state", "undef");;\
my $Weckla1 = ReadingsVal("Wecklampe", "state", "undef");;\
my $day1 = ReadingsVal ("Weckzeit_day", "state" , "undef");;\
my $zust = ReadingsVal ("Schaltzustand", "state" , "undef");;\
my $Day = $day1 ;;\
$Day = s/-/_/g ;;\
fhem ("define $Weckla1.$zust.schalten WeekdayTimer $Weckla1 $day1|$Weckz1|$zust");;\
fhem ("attr $Weckla1.$zust.schalten room Wecker");;\
fhem ("attr $Weckla1.$zust.schalten alias $Weckla1 $zust schalten am $day1 um $Weckz1");;\
fhem ("attr $Weckla1.$zust.schalten group geplante_Schaltzeiten_von_$Weckla1");;\
fhem ("attr $Weckla1.$zust.schalten devStateIcon .*:time_timer");;\
fhem ("define Termin_von.$Weckla1.$Day.um.$Weckz1 dummy");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 group geplante_Schaltzeiten_von_$Weckla1");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 alias $Weckla1 wird $day1 um $Weckz1 $zust geschaltet");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 room Wecker");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 devStateIcon .*:message_garbage");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 webCmd loeschen");;\
fhem ("define Termin_$Weckla1.$Day.$Weckz1.loeschen notify Termin_von.$Weckla1.$Day.um.$Weckz1:loeschen delete $Weckla1.$zust.schalten,Termin_$Weckla1.$Day.$Weckz1.loeschen,Termin_von.$Weckla1.$Day.um.$Weckz1");;\
fhem  ("attr WEB longpoll 0");;\
fhem  ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 alias Timer $Weckla1 am $day1 um $Weckz1");;}
Raspberry mit COC für HM
RS485 USB für HMW

BeamterAD

Das heist ,du hast deine lampen genauso genannt wie ich meine?
Eventmap on:an off:aus haste auch gemacht?
Tauchen wenigstens die räume  als menüpunkt links auf?

geri

die lampen habe ich nicht so genannt. habe aber jetzt meine lampen reingemacht.



define Wecklampe dummy
attr Wecklampe alias was soll geschaltet werden
attr Wecklampe group Zeitschaltuhr
attr Wecklampe room Wecker
attr Wecklampe setList state:Schalter01,Aktor01
attr Wecklampe sortby 01
attr Wecklampe webCmd state
#hier wird festgelegt was geschaltet werden soll


eventmap? wo sollte ich das machen?

es kommt ein raum mehr und zwar der raum "Wecker"
Raspberry mit COC für HM
RS485 USB für HMW

Franz Tenbrock

#48
Hallo, der Code macht ja vieles möglich
wenn man denn alles verstehen würde,
die Verschachtelung von ReadingsVal  notify etc ist für Anfänger ja ne echte Hürde :-(

Hätte gerne dieses gelöst, am notivy und Readingsval scheiter ich aber noch, obwohl wahrschienlich gar nciht so schwer, wenn es nicht so verschachtelt wäre
Das dann au die Rolladen etc zu übertrgen wäre dann ja ganz leicht, was mich an dem Beispiel wohl irritiert sind die zusammengesetzten Zeiten
Für den der es schon verstanden hat sicher ganz leicht

Gibts irgendwo Code mit nur 2 Variablen ?? damit wirds wohl deutlich leichter das nachzuvollziehen



# Der Slider bestimmt wie weit die Markise rausfährt

define Slider dummy
attr Slider room Wohnzimmer
attr Slider setList state:slider,0,5,100
attr Slider webCmd state


# bestimmt welche Markise gemeint ist 1 , 2 , oder beide

define Markise12all dummy
attr Markise12all room Wohnzimmer
attr Markise12all setList state:Markise1,Markise2,Markiseall
attr Markise12all webCmd state

# bestimmt rein oder raus

define schalter1 dummy
attr schalter1 room Wohnzimmer
attr schalter1 setList state:rein,raus
attr schalter1 webCmd state

#set Markise_1 on-for-timer 3           damit fährt Markise1 schon mal 3 Sekunden rein :-)
#set Markise_1 off-for-timer 3
#set Markise_2 on-for-timer 3           damit fährt Markise2 schon mal 3 Sekunden rein :-)
#set Markise_2 off-for-timer 3



cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

BeamterAD

Du brauchst am Code nur an einer Stelle was mache und zwar um deine Geräte einzufügen
Attr wecklampe setlist und hinter dem : deine Geräte,mit Komma getrennt auflisten

Franz Tenbrock

und in diesem Code muss dann nichts mehr geändert werden ????
das kann ich kaum glauben.
ich sehe eher in dem Code hier das Problem und nicht den slider etc zu definieren.

define Timer notify Weckzeit_h {my $Weckz1 = ReadingsVal("Weckzeit_h", "state", "undef");;\
my $Weckla1 = ReadingsVal("Wecklampe", "state", "undef");;\
my $day1 = ReadingsVal ("Weckzeit_day", "state" , "undef");;\
my $zust = ReadingsVal ("Schaltzustand", "state" , "undef");;\
my $Day = $day1 ;;\
$Day = s/-/_/g ;;\
fhem ("define $Weckla1.$zust.schalten WeekdayTimer $Weckla1 $day1|$Weckz1|$zust");;\
fhem ("attr $Weckla1.$zust.schalten room Wecker");;\
fhem ("attr $Weckla1.$zust.schalten alias $Weckla1 $zust schalten am $day1 um $Weckz1");;\
fhem ("attr $Weckla1.$zust.schalten group geplante_Schaltzeiten_von_$Weckla1");;\
fhem ("attr $Weckla1.$zust.schalten devStateIcon .*:time_timer");;\
fhem ("define Termin_von.$Weckla1.$Day.um.$Weckz1 dummy");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 group geplante_Schaltzeiten_von_$Weckla1");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 alias $Weckla1 wird $day1 um $Weckz1 $zust geschaltet");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 room Wecker");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 devStateIcon .*:message_garbage");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 webCmd loeschen");;\
fhem ("define Termin_$Weckla1.$Day.$Weckz1.loeschen notify Termin_von.$Weckla1.$Day.um.$Weckz1:loeschen delete $Weckla1.$zust.schalten,Termin_$Weckla1.$Day.$Weckz1.loeschen,Termin_von.$Weckla1.$Day.um.$Weckz1");;\
fhem  ("attr WEB longpoll 0");;\
fhem  ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 alias Timer $Weckla1 am $day1 um $Weckz1");;}




cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

BeamterAD

Also,wenn du nur aktoren an oder ausschalten willst,brauchste nur deine Aktoren eintragen und den aktoren beibringen was an und aus heisst,weil sie  das normal nicht verstehen,die koennen nämlich nur englisch,das erledigst du mit eventmap,dazu bitte in der commandref nachschlagen oder die Sufu nutzen.Alles andere im unteren Teil legt nur die benötigten notifys und dummys an,sortiert sie in die entsprechenden Räume,ich hab den Raum einfach mal Wecker genannt und legt aliase an damit es etwas ansprechender aussieht,für mehr ist der Code unten nicht da.

Celeron1

Hallo zusammen,

ich bekomme es irgenwie nicht hin einen 2. Wecker anzulegen.   :'(
Habe hier mal den Code vom ersten und zweiten Wecker eingefügt.

Es kommt im Logfile folgende Meldung:

Timer2 return value: Global symbol "$zust" requires explicit package name at (eval 18501) line 18.

Wäre Klasse wenn man mir helfen könnte und würde. ;)


# Weckzeit
define Wecker_Status dummy
attr Wecker_Status sortby 04


define Wecklampe dummy
attr Wecklampe alias was soll geschaltet werden
attr Wecklampe fm_type state
attr Wecklampe group Zeitschaltuhr
attr Wecklampe room Wecker
attr Wecklampe setList state:Heizung_Auto,LED_Arbeitsplatz_Kueche,LED_Terasse_Boden,Beet_Licht,Beet_Quellsteine
attr Wecklampe sortby 01
attr Wecklampe webCmd state
#hier wird festgelegt was geschaltet werden soll

define Weckzeit_day dummy
attr Weckzeit_day alias an welchen Tagen soll der Wecker aktiv werden
attr Weckzeit_day fm_type state
attr Weckzeit_day group Zeitschaltuhr
attr Weckzeit_day room Wecker
attr Weckzeit_day setList state:Mo,Di,Mi,Do,Fr,Mo-Fr,Sa-So,Sa-Fr,
attr Weckzeit_day sortby 02
attr Weckzeit_day webCmd state


define Schaltzustand dummy
attr Schaltzustand alias an,aus,?
attr Schaltzustand fm_type state
attr Schaltzustand group Zeitschaltuhr
attr Schaltzustand room Wecker
attr Schaltzustand setList state:on,off
attr Schaltzustand sortby 03
attr Schaltzustand webCmd state

define Weckzeit_h dummy
attr Weckzeit_h alias Stelle Weckzeit
attr Weckzeit_h fm_type state
attr Weckzeit_h group Zeitschaltuhr
attr Weckzeit_h room Wecker
attr Weckzeit_h setList state:time
attr Weckzeit_h sortby 04
attr Weckzeit_h webCmd state

define Timer notify Weckzeit_h {my $Weckz1 = ReadingsVal("Weckzeit_h", "state", "undef");;\
my $Weckla1 = ReadingsVal("Wecklampe", "state", "undef");;\
my $day1 = ReadingsVal ("Weckzeit_day", "state" , "undef");;\
my $zust = ReadingsVal ("Schaltzustand", "state" , "undef");;\
my $Day = $day1 ;;\
$Day = s/-/_/g ;;\
fhem ("define $Weckla1.$zust.schalten WeekdayTimer $Weckla1 $day1|$Weckz1|$zust");;\
fhem ("attr $Weckla1.$zust.schalten room Zeiten");;\
fhem ("attr $Weckla1.$zust.schalten alias $Weckla1 $zust schalten am $day1 um $Weckz1");;\
fhem ("attr $Weckla1.$zust.schalten group geplante_Schaltzeiten_von_$Weckla1");;\
fhem ("attr $Weckla1.$zust.schalten devStateIcon .*:time_timer");;\
fhem ("define Termin_von.$Weckla1.$Day.um.$Weckz1 dummy");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 group geplante_Schaltzeiten_von_$Weckla1");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 alias $Weckla1 wird $day1 um $Weckz1 $zust geschaltet");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 room Zeiten");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 devStateIcon .*:message_garbage");;\
fhem ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 webCmd loeschen");;\
fhem ("define Termin_$Weckla1.$Day.$Weckz1.loeschen notify Termin_von.$Weckla1.$Day.um.$Weckz1:loeschen delete $Weckla1.$zust.schalten,Termin_$Weckla1.$Day.$Weckz1.loeschen,Termin_von.$Weckla1.$Day.um.$Weckz1");;\
fhem  ("attr WEB longpoll 0");;\
fhem  ("attr Termin_von.$Weckla1.$Day.um.$Weckz1 alias Timer $Weckla1 am $day1 um $Weckz1");;}

#====================================================================================================

# Weckzeit2
define Wecker_Status2 dummy
attr Wecker_Status2 sortby 04


define Wecklampe2 dummy
attr Wecklampe2 alias was soll geschaltet werden2
attr Wecklampe2 fm_type state
attr Wecklampe2 group Zeitschaltuhr2
attr Wecklampe2 room Wecker
attr Wecklampe2 setList state:Heizung_Auto,LED_Arbeitsplatz_Kueche,LED_Terasse_Boden,Beet_Licht,Beet_Quellsteine
attr Wecklampe2 sortby 01
attr Wecklampe2 webCmd state
#hier wird festgelegt was geschaltet werden soll

define Weckzeit_day2 dummy
attr Weckzeit_day2 alias an welchen Tagen soll der Wecker aktiv werden2
attr Weckzeit_day2 fm_type state
attr Weckzeit_day2 group Zeitschaltuhr2
attr Weckzeit_day2 room Wecker
attr Weckzeit_day2 setList state:Mo,Di,Mi,Do,Fr,Mo-Fr,Sa-So,Sa-Fr,
attr Weckzeit_day2 sortby 02
attr Weckzeit_day2 webCmd state


define Schaltzustand2 dummy
attr Schaltzustand2 alias an,aus,?2
attr Schaltzustand2 fm_type state
attr Schaltzustand2 group Zeitschaltuhr2
attr Schaltzustand2 room Wecker
attr Schaltzustand2 setList state:on,off
attr Schaltzustand2 sortby 03
attr Schaltzustand2 webCmd state

define Weckzeit_h2 dummy
attr Weckzeit_h2 alias Stelle Weckzeit2
attr Weckzeit_h2 fm_type state
attr Weckzeit_h2 group Zeitschaltuhr2
attr Weckzeit_h2 room Wecker
attr Weckzeit_h2 setList state:time
attr Weckzeit_h2 sortby 04
attr Weckzeit_h2 webCmd state

define Timer2 notify Weckzeit_h2 {my $Weckz2 = ReadingsVal("Weckzeit_h2", "state", "undef");;\
my $Weckla2 = ReadingsVal("Wecklampe2", "state", "undef");;\
my $day2 = ReadingsVal ("Weckzeit_day2", "state" , "undef");;\
#my $zust2 = ReadingsVal ("Schaltzustand2", "state" , "undef");;\
my $Day2 = $day2 ;;\
$Day2 = s/-/_/g ;;\
fhem ("define $Weckla2.$zust2.schalten WeekdayTimer2 $Weckla2 $day2|$Weckz2|$zust2");;\
fhem ("attr $Weckla2.$zust2.schalten room Zeiten");;\
fhem ("attr $Weckla2.$zust2.schalten alias $Weckla2 $zust2 schalten am $day2 um $Weckz2");;\
fhem ("attr $Weckla2.$zust2.schalten group geplante_Schaltzeiten_von_$Weckla2");;\
fhem ("attr $Weckla2.$zust2.schalten devStateIcon .*:time_timer");;\
fhem ("define Termin_von.$Weckla2.$Day2.um.$Weckz2 dummy");;\
fhem ("attr Termin_von.$Weckla2.$Day2.um.$Weckz2 group geplante_Schaltzeiten_von_$Weckla2");;\
fhem ("attr Termin_von.$Weckla2.$Day2.um.$Weckz2 alias $Weckla2 wird $day2 um $Weckz2 $zust2 geschaltet");;\
fhem ("attr Termin_von.$Weckla2.$Day2.um.$Weckz2 room Zeiten");;\
fhem ("attr Termin_von.$Weckla2.$Day2.um.$Weckz2 devStateIcon .*:message_garbage");;\
fhem ("attr Termin_von.$Weckla2.$Day2.um.$Weckz2 webCmd loeschen");;\
fhem ("define Termin_$Weckla2.$Day2.$Weckz2.loeschen notify Termin_von.$Weckla2.$Day2.um.$Weckz2:loeschen delete $Weckla2.$zust.schalten,Termin_$Weckla2.$Day2.$Weckz2.loeschen,Termin_von.$Weckla2.$Day2.um.$Weckz2");;\
fhem  ("attr WEB longpoll 0");;\
fhem  ("attr Termin_von.$Weckla2.$Day2.um.$Weckz2 alias Timer2 $Weckla2 am $day2 um $Weckz2");;}

Dietmar63

#53
#my $zust2 = ReadingsVal ("Schaltzustand2", "state" , "undef");;\

das # verhindert die Definition von $zust2. Zwei Zeilen später greifst du darauf zu. Das meckert der Perlinterpreter an.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Puschel74

Hallo,

und hier
fhem ("define Termin_$Weckla2.$Day2.$Weckz2.loeschen notify Termin_von.$Weckla2.$Day2.um.$Weckz2:loeschen delete $Weckla2.[b]$zust[/b].schalten,Termin_$Weckla2.$Day2.$Weckz2.loeschen,Termin_von.$Weckla2.$Day2.um.$Weckz2");;\
greifst du auch auf $zust zu.
Die Fehlermeldung war entweder falsch kopiert oder es hat noch eine im Logfile mit $zust2.
ZitatTimer2 return value: Global symbol "$zust" requires explicit package name at (eval 18501) line 18.

Das wäre dann die Lösung von Diemtar63.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Celeron1

Vielen Dank. Manchmal sieht mans echt nicht mehr wenn der Code ein falsches Zeichen hat.

Gruß
Celeron1

inesa394

Hallo
Würde mich gern von deinen Wecker und meinen Tuer Gong von Homatic wecken lassen.
Habe dazu in der setlist tuer.Gong.mp3 und tuer.gong.led eingebunden.
Funktioniert soweit wenn das Liedl an erster Stelle in der  Playslist
auf der SD-Karte steht.
Was ich gerne möchte wäre das ich aus der Playlist auf der Sd-Karte vom tuergong
selber auswählen könnte welches Lied mich weckt.
Sowas in der Art "set Tuer.GongMp3 playTone 010 " oder halt playTone 011
Is das möglich ich denke ja wenn man denn Kreativ genug ist und über Wissen
in Perl verfügt. Leider habe ich von Perl überhaupt kein Ahnung
wie ich das verwirklichen könnte.
Inesa


Gunther

habe alles von Dir in meiner fhem.cfg

Leider speichert der nichts. Alle Werte habe ich nun mind. 1x hin und her geändert. Auch nach Stellen der Minuten speichert nix. Muss ich noch etwas tun?
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

geri

Zitat von: Gunther am 13 Juni 2014, 00:59:39
habe alles von Dir in meiner fhem.cfg

Leider speichert der nichts. Alle Werte habe ich nun mind. 1x hin und her geändert. Auch nach Stellen der Minuten speichert nix. Muss ich noch etwas tun?
hallo!

ich hatte das selbe problem. ich setzte die version mit slider ein. ich hatte den fehler gemacht das ich nach dem einstellen mit den slidern, die slider nicht minimiert habe. erst wenn ich das mache schreibt er bei mir den eintrag. die andere versin habe ich nicht getestet.

ich hoffe ich konnte helfen.

gruss
Gerald
Raspberry mit COC für HM
RS485 USB für HMW

Gunther

Danke für Deine Antwort. Ich nutze die andere Version. Was meinst Du mit ?minimieren"?

Ein "Speichern"-Button wäre hier toll.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden