Frage zu EvalSpecials() mit FeatureLevel 5.7

Begonnen von Markus Bloch, 21 November 2015, 14:48:34

Vorheriges Thema - Nächstes Thema

Markus Bloch

Hallo zusammen,

da ich in PRESENCE EvalSpecials() verwende um bestimmte Platzhalter im powerCmd zu ersetzen frage ich mich gerade im Zusammenhang mit 5.7 wie ich es nun richtig verwenden muss.

Momentan lautet mein %specials:

        my %specials= (
        "%NAME" => $name,
        "%ADDRESS" => $hash->{ADDRESS},
        "%ARGUMENT" => $a[2]
        );
       
        $powerCmd= EvalSpecials($powerCmd, %specials);


Damit wird momentan mit featureLevel 5.7 $NAME, $ADDRESS und $ARGUMENT in $powerCmd ersetzt.  Vorher war es %NAME, %ADDRESS, ...

Sollte man das % nicht auch aus den Platzhaltern im Hash nehmen? Finde das dann etwas verwirrend, dass man %NAME im Hash angeben muss damit $NAME durch was anderes ersetzt wird. Ich hätte jetzt erwartet, dass man nur noch sagt NAME => $name usw.

Ich hab mir den Code durchgeschaut, konnte mir aber keinen Reim darauf machen wie es richtig zu verwenden ist.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

Praezisierung:
Fuer die Anwender: $EVENT usw. funktioniert mit featurelevel <=5.6 auch. Wenn im eval $EVENT,usw. gefunden wrd, dann wird %,%EVENT usw. _nicht_ ersetzt.  Mit featurelevel >= 5.7 funktioniert nur noch $EVENT, und es wird viel weniger geprueft bzw. ersetzt.
Fuer die Entwickler: es aendert sich nichts.

Dass die Entwickler fuer $EVENT als Schluessel %EVENT definieren muessen, ist in der Tat etwas verwirrend, bin aber nicht sicher, ob eine Umstellung sich lohnt. Falls du die anderen beiden Anwender von EvalSpecials (dietmar63:WeekdayTimer und klaus-schauer:EnOcean) ueberzeugst, dass wir diese Aenderung an einem Tag durchfuehren, habe ich nichts dagegen.
Wenn wir aendern sollten: aus %EVENT wird EVENT, usw. also ohne Praefix.

Markus Bloch

Vielen Dank. Das reicht mir. Geht mir nur darum zu wissen, wie man es weiterhin richtig nutzen sollte.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)