Hauptmenü

Variable nach at

Begonnen von Guest, 28 Oktober 2012, 18:35:22

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hallo FHEM-Freunde,

nachdem ich mich einige Zeit nicht mit FHEM beschäftigen konnte, habe ich
nun wieder angefangen und bin gleich auf ein Problem gestoßen, was ich
nicht zu lösen vermag.

Hier der Auszug aus meiner Konfigurationsdatei:


define uptime dummy

define Handsender_oben FS20 0eb8 00

define uptime_init notify Handsender_oben \
{if ($we){fhem "set uptime 12:00"} \
else \
{fhem "set uptime 08:00"} \
{Log 1,'Der Wert für uptime beträgt: '.Value('uptime')}}

define Aktion at *{Value('uptime')} \
{Log 1,'Der Wert für uptime beträgt: '.Value('uptime')}


Das Problem besteht nun darin, dass zwar der Status von *uptime *in
Abhängigkeit von der Bedingung durch notify geändert wird, das steht auch
so im Log, jedoch schaffe ich es mit keiner Variante, dass die Aktion dann
auch zu der in *uptime *gespeicherten Zeit ausgefürt wird.
Je nach dem, was für eine Variante ich nach *at ** wähle, immer kommt
entweder

*the at function "Value('uptime')" must return a timespec and not ???*
oder
*Wrong timespec Value('uptime'): either HH:MM:SS or {perlcode}*
oder vergleichbares.

Ersetze ich die Variable mit einer Zeit wie in folgendem Beispiel

define Aktion at *18:15 {Log 1,'Der Wert für uptime beträgt: '.Value('uptime')}

findet sich im Log auch der entsprechende Eintrag zum Inhalt von *uptime*.

Das gleiche Problem tritt übrigen auch auf, wenn ich auf, wenn ich auf die Definition des Dummy-Devices verzichte und die Variable als Perl-Variable nach folgendem Muster anlege:

define uptime_init notify Handsender_oben \
{my $uptime;; if ($we){$uptime = '12:00'} \
else \
{$uptime = '08:00'} \
{Log 1,'Der Wert für uptime beträgt: '.($uptime)}}

Hier kommt erschwerend noch hinzu, dass $uptime außerhalb des notify nicht mehr gültig ist.
Meine Frage hierzu ist nun:

Ist es überhaupt möglich, nach *at *mit einer Variablen zu arbeiten oder
sehe ich nur nicht, wie die Konstruktion aussehen muss?
Wenn ja, wie muss im ersten Fall die Konstruktion dann aussehen?
Wie mache ich im zweiten Fall $uptime auch außerhalb des Notify gültig?

Viele Grüße Hubert

Fritz!Box 7390, Firmware-Version: 84.05.22
Fhem 5.2 (DEVELOPMENT), $Id: fhem.pl 1946 2012-10-11 18:11:14Z borisneubert
$

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Wie wärs mit dem "modify"-Befehl, um die Zeit der at-Aktion zu ändern (und
ohne dummy).

Also z.B. so, weiß nicht, obs 100%ig stimmt!


define Handsender_oben FS20 0eb8 00
define Aktion at *08:00 mach_irgendwas

define uptime_init notify Handsender_oben \
{if ($we){fhem ("modify Aktion *12:00")} \
else {fhem ("modify Aktion *08:00")}

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

On Sunday, October 28, 2012 10:32:29 PM UTC+1, rallle74 wrote:
>
> Wie wärs mit dem "modify"-Befehl, um die Zeit der at-Aktion zu ändern (und
> ohne dummy).
>
> Danke für den Tipp aber modify hat mir nicht so gefallen.
Jetzt weiß ich auch warum:
Wenn ich das so wie unten angegeben umsetze folgt, wer weiß warum:

* Aktion already defined, delete it first *
 

> Also z.B. so, weiß nicht, obs 100%ig stimmt!
>
>
> define Handsender_oben FS20 0eb8 00
> define Aktion at *08:00 mach_irgendwas
>
> define uptime_init notify Handsender_oben \
> {if ($we){fhem ("modify Aktion *12:00")} \
> else {fhem ("modify Aktion *08:00")}
>
>
Es würde mich interessieren, ob das nur bei mir so ist oder ob andere die
gleichen Probleme haben.
Tatsächlich geht es darum, dass in den Termen der if-Bedingung Variable
bzw. perl-Funktionen zum Einsatz kommen sollen.
Die müssten dann auch nach modify so stehen. Da ich bereits bei dem
einfachen Befehl scheitere, kann ich gar nicht ausprobieren, was folgt,
wenn dann so etwas steht.

Gruß Hubert

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

UliM

                                                 

Am Montag, 29. Oktober 2012 20:39:16 UTC+1 schrieb Hubert Melzer:
>
>
> * Aktion already defined, delete it first *
>  
> wer weiß warum:
>
> Ich :)
Ein Objekt namens Aktion existiert bereits. Wenn Du es erneut anlegen
willst, kommt sinnvollerweise diese Meldung.

uptime bezeichnet normalerweise die Laufzeit eines Systems seit seinem
Einschaltzeitpunkt, wenn ich richtig interpretiere willst Du damit Deine
Aufstehzeit darstellen, richtig?

Schau Dir mal den folgenden Wiki-Eintrag an, der wohl recht genau das
macht, was Du erreichen möchtest:
http://www.fhemwiki.de/wiki/Wakeuplight

Den Teil mit dem dimmen kannst Du ja durch das ersetzen, was Du mit
"Aktion" meinst.

Und Dein notify muss wirklich modify verwenden, da sonst der ganze
Aktionsteil flöten geht:

define uptime_init notify Handsender_oben {if ($we){fhem "modify uptime 12:00"} else {fhem "modify uptime 08:00"} }


Geht aber flexibler mit nem slider wie im wiki beschrieben,

Gruß, Uli
 

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Guest

Originally posted by: <email address deleted>

Hallo Uli,

natürlich gibt es das Objekt Aktion bereits, siehe auch mein Skript.
Jedoch wird das Objekt Aktion in meinem Skript auch kein zweites Mal
angelegt. Lediglich das Einfügen von

define uptime_init notify Handsender_oben {if ($we){fhem "modify uptime 12:00"} else {fhem "modify uptime 08:00"} }

in des Skript führt zu dem angegebenen Fehler. Und in dieser Zeile wird das Objekt Aktion wohl nicht ein zweites Mal angelegt, sondern nur der Teil nach at modifiziert.
Es geht mir im Augenblick auch nicht in erster Linie darum, was ich wie anders machen kann, sondern um das eingangs geschilderte Problem und die damit gestellten Fragen:

Ist es überhaupt möglich, nach *at *mit einer Variablen zu arbeiten oder sehe ich nur nicht, wie die Konstruktion aussehen muss?
Wenn ja, wie muss im ersten Fall die Konstruktion dann aussehen?
Wie mache ich im zweiten Fall $uptime auch außerhalb des Notify gültig?
Tritt der Fehler bei anderen genau so auf, auch der welcher bei modify auftritt?

Jedoch werde ich den Gedanken noch einmal aufgreifen und uptime anders benennen. Ich fürchte jedoch, dass das Problem bleibt.

Gruß Hubert



Am Montag, 29. Oktober 2012 20:59:41 UTC+1 schrieb UliM:
>
>
>
> Am Montag, 29. Oktober 2012 20:39:16 UTC+1 schrieb Hubert Melzer:
>>
>>
>> * Aktion already defined, delete it first *
>>  
>> wer weiß warum:
>>
>> Ich :)
> Ein Objekt namens Aktion existiert bereits. Wenn Du es erneut anlegen
> willst, kommt sinnvollerweise diese Meldung.
>
> uptime bezeichnet normalerweise die Laufzeit eines Systems seit seinem
> Einschaltzeitpunkt, wenn ich richtig interpretiere willst Du damit Deine
> Aufstehzeit darstellen, richtig?
>
> Schau Dir mal den folgenden Wiki-Eintrag an, der wohl recht genau das
> macht, was Du erreichen möchtest:
> http://www.fhemwiki.de/wiki/Wakeuplight
>
> Den Teil mit dem dimmen kannst Du ja durch das ersetzen, was Du mit
> "Aktion" meinst.
>
> Und Dein notify muss wirklich modify verwenden, da sonst der ganze
> Aktionsteil flöten geht:
>
> define uptime_init notify Handsender_oben {if ($we){fhem "modify uptime 12:00"} else {fhem "modify uptime 08:00"} }
>
>
> Geht aber flexibler mit nem slider wie im wiki beschrieben,
>
> Gruß, Uli
>  
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

UliM

                                                 

Gerade ausporbiert, bei mir funzt alles:

fhem> define uptime dummy
fhem> set uptime 09:00
fhem> define testtimer at {Value("uptime")} set ez_Schreibtisch on
fhem> list testtimer
Internals:
   NAME       testtimer
   NTM        09:00:00
   STATE      Next: 09:00:00

fhem> set uptime 08:00
fhem> modify testtimer {Value("uptime")}
fhem> list testtimer
Internals:
   CFGFN
   DEF        {Value("uptime")} set ez_Schreibtisch on
   NAME       testtimer
   NTM        08:00:00
   STATE      Next: 08:00:00

fhem> delete uptime
fhem> delete testtimer

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Guest

Originally posted by: <email address deleted>

Hallo Uli,


On Tuesday, October 30, 2012 10:53:39 PM UTC+1, UliM wrote:
>
>
> Gerade ausporbiert, bei mir funzt alles:
>
> Du hast recht, aber nur bis zu einem gewissen Grade!
 

> fhem> define uptime dummy
> fhem> set uptime 09:00
> fhem> define testtimer at {Value("uptime")} set ez_Schreibtisch on
> fhem> list testtimer
> Internals:
>    NAME       testtimer
>    NTM        09:00:00
>    STATE      Next: 09:00:00
>

Wenn du hiernach ein *save *machst, um die Änderungen in die fhem.cfg zu
schreiben, wirst du zwar den definierten Dummy finden, nicht aber den
Testtimer, da der schon ein Problem mit der Variable hat.
Machst du nun anschließend ein rereadcfg gibt es ersten die Fehlermeldung:

define: the at function "Value("uptime")" must return a timespec and not ???

und zweites verschwindet der Testtimer bei den aufgelisteten Geräten.
Der Rest ist dann natürlich geschenkt und ich komme wieder zu meinen eingangs gestellten Fragen.

Gruß Hubert


--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

UliM

                                                 

Hi,
ah - oh!  Immerhin hab ich jetzt das Problem verstanden.

Da muss Rudi ran :)

=8-)

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

UliM

                                                 

Hi,
ah - oh!  Immerhin hab ich jetzt das Problem verstanden.

Da muss Rudi ran :)

=8-)

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

UliM

                                                 

... bzw: hast Du sichergestellt, dass in Deiner fhem.cfg die Definition von uptime VOR der Definition des timers erfolgt?
die Meldung mit dem ??? heisst ja nur, dass uptime zum Zeitpunkt des Einlesens des timers keinen Wert zurückliefert...
=8-)

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Guest

Originally posted by: <email address deleted>

Hallo Uli,

natürlich, ich habe die Definition genau so vorgenommen, wie du es auch
gemacht, bzw. vorgeschlagen hast. Auch mit den

fhem> set uptime 09:00

nach der Definitin des Dummy. Dann sollte der WErt doch gesetzt sein.

Gruß Hubert

On Friday, November 2, 2012 9:47:52 AM UTC+1, UliM wrote:
>
> ... bzw: hast Du sichergestellt, dass in Deiner fhem.cfg die Definition
> von uptime VOR der Definition des timers erfolgt?
> die Meldung mit dem ??? heisst ja nur, dass uptime zum Zeitpunkt des
> Einlesens des timers keinen Wert zurückliefert...
> =8-)

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com