Syntaxproblem: Readingwert in set Kommando übernehmen.

Begonnen von lenn1, 07 Mai 2017, 08:47:58

Vorheriges Thema - Nächstes Thema

lenn1

Dieser String hier steht in einem notify.
fhem("define at_terassentuerzutimer at +00:05:00 set WohnzimmerThermostat thermostatSetpointSet sprintf('%.2f',ReadingsVal('WohnzimmerHeizplan', 'state', '0'))");

Wenn ich nur {sprintf('%.1f',ReadingsVal('WohnzimmerHeizplan', 'state', '0'))}
ausführe, wird beispielsweise 19.0 zurückgeliefert.

Ich kriege es auch nicht hin ohne notify einfach per set ... und dann am Ende eben das ReadingsVal.
Die Temperatur bleibt einfach so.




Icinger

Logisch.....Dein Beispiel
{sprintf('%.1f',ReadingsVal('WohnzimmerHeizplan', 'state', '0'))}
führt das sprintf direkt auf Perl-Ebene aus.

Ein
set WohnzimmerThermostat thermostatSetpointSet sprintf('%.2f',ReadingsVal('WohnzimmerHeizplan', 'state', '0'))");
würde das sprintf als FHEM-Befehl interpretieren.

Was zB funktionieren würde ist ein
fhem("define at_terassentuerzutimer at +00:05:00 set WohnzimmerThermostat thermostatSetpointSet ".sprintf('%.2f',ReadingsVal('WohnzimmerHeizplan', 'state', '0')));
oder ien
define at_terassentuerzutimer at +00:05:00 {fhem("set WohnzimmerThermostat thermostatSetpointSet ".sprintf('%.2f',ReadingsVal('WohnzimmerHeizplan', 'state', '0')))}
oder einfacher:
define at_terassentuerzutimer at +00:05:00 set WohnzimmerThermostat thermostatSetpointSet [WohnzimmerHeizplan:state]

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

lenn1

Vielen Dank für die ausführliche Erklärung.
Ja das FHEM da manchmal zwischen liegt vergisst man gerne.
Bin beruflich Java Entwickler und bin da etwas mehr Komfort gewöhnt :P.

Schönen Sonntag noch.
Kann gern geschlossen werden.


Grüße
Lennart


Thorsten Pferdekaemper

Zitat von: lenn1 am 07 Mai 2017, 09:10:23Bin beruflich Java Entwickler und bin da etwas mehr Komfort gewöhnt :P.
Der war gut!  :D
FUIP