FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: toupman am 10 Juli 2014, 21:38:42

Titel: Button um eine Perl Funktion aufzurufen funktioniert nicht
Beitrag von: toupman am 10 Juli 2014, 21:38:42
Hallo,

nachdem meine drei Thermostate jetzt einwandfrei funktionieren, wollte ich mir einen Button machen um alle auf Sommer/Urlaub umzustellen und einen um wieder auf Winter zustellen.

Dazu habe ich zwei Perl Funktionen geschrieben, die die Umstellung machen

sub
SetTempList_Sommer_Urlaub()
{

{ fhem ("set Bad.Thermostat_Clima tempListMon prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Bad.Thermostat_Clima tempListTue prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Bad.Thermostat_Clima tempListWed prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Bad.Thermostat_Clima tempListThu prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Bad.Thermostat_Clima tempListFri prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Bad.Thermostat_Clima tempListSat prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Bad.Thermostat_Clima tempListSun exec 00:05 11.5 23:55 12.0 24:00 11.5")};

{ fhem ("set Wohnzimmer.Thermostat_Clima tempListMon prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Wohnzimmer.Thermostat_Clima tempListTue prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Wohnzimmer.Thermostat_Clima tempListWed prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Wohnzimmer.Thermostat_Clima tempListThu prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Wohnzimmer.Thermostat_Clima tempListFri prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Wohnzimmer.Thermostat_Clima tempListSat prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Wohnzimmer.Thermostat_Clima tempListSun exec 00:05 11.5 23:55 12.0 24:00 11.5")};

{ fhem ("set Kueche.Thermostat_Clima tempListMon prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Kueche.Thermostat_Clima tempListTue prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Kueche.Thermostat_Clima tempListWed prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Kueche.Thermostat_Clima tempListThu prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Kueche.Thermostat_Clima tempListFri prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Kueche.Thermostat_Clima tempListSat prep 00:05 11.5 23:55 12.0 24:00 11.5")};
{ fhem ("set Kueche.Thermostat_Clima tempListSun exec 00:05 11.5 23:55 12.0 24:00 11.5")};

}

sub
SetTempList_Winter()
{

{ fhem ("set Bad.Thermostat_Clima tempListMon prep 00:05 11.5 05:30 12.0 08:30 22.0 17:30 12.0 22:30 22.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Bad.Thermostat_Clima tempListTue prep 00:05 11.5 05:30 12.0 08:30 22.0 17:30 12.0 22:30 22.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Bad.Thermostat_Clima tempListWed prep 00:05 11.5 05:30 12.0 08:30 22.0 17:30 12.0 22:30 22.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Bad.Thermostat_Clima tempListThu prep 00:05 11.5 05:30 12.0 08:30 22.0 17:30 12.0 22:30 22.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Bad.Thermostat_Clima tempListFri prep 00:05 11.5 05:30 12.0 08:30 22.0 17:30 12.0 22:30 22.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Bad.Thermostat_Clima tempListSat prep 00:05 11.5 07:00 12.0 10:00 22.0 17:30 18.5 23:00 22.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Bad.Thermostat_Clima tempListSun exec 00:05 11.5 07:00 12.0 10:00 22.0 17:30 18.5 23:00 22.0 23:55 12.0 24:00 11.5")};

{ fhem ("set Wohnzimmer.Thermostat_Clima tempListMon prep 00:05 11.5 05:30 12.0 08:30 16.0 17:30 12.0 22:30 20.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Wohnzimmer.Thermostat_Clima tempListTue prep 00:05 11.5 05:30 12.0 08:30 16.0 17:30 12.0 22:30 20.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Wohnzimmer.Thermostat_Clima tempListWed prep 00:05 11.5 05:30 12.0 08:30 16.0 17:30 12.0 22:30 20.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Wohnzimmer.Thermostat_Clima tempListThu prep 00:05 11.5 05:30 12.0 08:30 16.0 17:30 12.0 22:30 20.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Wohnzimmer.Thermostat_Clima tempListFri prep 00:05 11.5 05:30 12.0 08:30 16.0 17:30 12.0 22:30 20.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Wohnzimmer.Thermostat_Clima tempListSat prep 00:05 11.5 07:00 12.0 10:00 20.0 17:00 18.5 23:55 20.0 24:00 11.5")};
{ fhem ("set Wohnzimmer.Thermostat_Clima tempListSun exec 00:05 11.5 07:00 12.0 10:00 20.0 17:00 18.5 23:55 20.0 24:00 11.5")};

{ fhem ("set Kueche.Thermostat_Clima tempListMon prep 00:05 11.5 05:30 12.0 08:30 16.0 17:30 12.0 22:30 20.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Kueche.Thermostat_Clima tempListTue prep 00:05 11.5 05:30 12.0 08:30 16.0 17:30 12.0 22:30 20.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Kueche.Thermostat_Clima tempListWed prep 00:05 11.5 05:30 12.0 08:30 16.0 17:30 12.0 22:30 20.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Kueche.Thermostat_Clima tempListThu prep 00:05 11.5 05:30 12.0 08:30 16.0 17:30 12.0 22:30 20.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Kueche.Thermostat_Clima tempListFri prep 00:05 11.5 05:30 12.0 08:30 16.0 17:30 12.0 22:30 20.0 23:55 12.0 24:00 11.5")};
{ fhem ("set Kueche.Thermostat_Clima tempListSat prep 00:05 11.5 07:00 12.0 10:00 20.0 17:00 18.5 23:55 20.0 24:00 11.5")};
{ fhem ("set Kueche.Thermostat_Clima tempListSun exec 00:05 11.5 07:00 12.0 10:00 20.0 17:00 18.5 23:55 20.0 24:00 11.5")};

}


Diese Funktionen werden auch ausgeführt wenn ich sie mit den geschweiften Klammern in die Kommandozeile so z.B. {SetTempList_Sommer_Urlaub()}

Danach habe ich mir je einen Button mit Dummy definiert und diese sollten dann je eine Funktion aufrufen, das sieht dann so aus

#Button Dummy
define urlaubsButton dummy
attr urlaubsButton room 99_System
attr urlaubsButton webCmd setUrlaub
define myNotifyUrlaub notify urlaubsButton:setUrlaub {SetTempList_Sommer_Urlaub()}

#Button Dummy
define winterButton dummy
attr winterButton room 99_System
attr winterButton webCmd setWinter
define myNotifyWinter notify winterButton:setWinter {SetTempList_Winter()}


Allerdings werden die Funktionen nicht ausgeführt.

Habe ich irgendwo einen Denkfehler, oder ist sonst irgendwas falsch?

Vielen Dank

Tobias
Titel: Antw:Button um eine Perl Funktion aufzurufen funktioniert nicht
Beitrag von: P.A.Trick am 10 Juli 2014, 21:40:36
Versuche das mal mit einem Semikolon!

{SetTempList_Winter();}
Titel: Antw:Button um eine Perl Funktion aufzurufen funktioniert nicht
Beitrag von: toupman am 10 Juli 2014, 21:53:07
Das funktioniert leider nicht.

Beim speichern der cfg erhalte ich:

ERROR:

Unknown command }, try help. Unknown command }, try help.
Titel: Antw:Button um eine Perl Funktion aufzurufen funktioniert nicht
Beitrag von: P.A.Trick am 10 Juli 2014, 21:53:57
Nimm die GUI nicht in der fhem.cfg arbeiten! Wenn doch, dann musst du zwei Semikolons nehmen!
Titel: Antw:Button um eine Perl Funktion aufzurufen funktioniert nicht
Beitrag von: toupman am 10 Juli 2014, 21:55:03
Welche GUI meinst du denn genau?
Titel: Antw:Button um eine Perl Funktion aufzurufen funktioniert nicht
Beitrag von: P.A.Trick am 10 Juli 2014, 21:56:26
Einfach im Notify auf DEF klicken, also die FHEM Gui!
Titel: Antw:Button um eine Perl Funktion aufzurufen funktioniert nicht
Beitrag von: toupman am 10 Juli 2014, 22:04:37
Das sowas geht habe ich noch gar nicht gewußt  ;D

Vielleicht ist man da als Informatiker eher etwas Betriebsblind  ;D

Man pfuscht halt von Haus aus gerne in Config Files rum  ;)

Das doppelte Semikolon funktioniert übrigens 1A,

Vielen Dank
Titel: Antw:Button um eine Perl Funktion aufzurufen funktioniert nicht
Beitrag von: P.A.Trick am 10 Juli 2014, 22:14:06
Tröste dich ging mir genauso..habe auch zwei Monate gebraucht um das zu kapieren :D