Hallo
habe meine Poolsteuerung nun von 5.7 auf 5.8 gehoben. (Image mit wheezy und 5.7 gezogen auf neue Karte und RPi3 gespielt und auf 5.8 upgedated
Wheezy ist nach wie vor das OS - )
Nun bekomme ich bei der SolarDiff bei state folgende FehlerMeldung
syntax error at (eval 987) line 1, near "29.3125)"
Das stateFormat lautet: {sprintf("%.1f",ReadingsVal("SolarDiff","state",0))}
State = {([SolarSensor:state:d])-([PoolSensor:state:d])}
hat in der alten Version tadellos funktioniert
Wer kann mir da bitte weiterhelfen - Danke
Helmut
PS
das ist das DOIF
## Pumpensteuerung ##
define SolarDiff DOIF
attr SolarDiff room Poolsteuerung
attr SolarDiff state {([SolarSensor:state:d])-([PoolSensor:state:d])}
attr SolarDiff stateFormat {sprintf("%.1f",ReadingsVal("SolarDiff","state",0))}
und hier ein List vom PoolSensor
Internals:
DEF 28.FF3B80711404 60
IODev myOWServer
LAST_READ_FAILED 0
NAME PoolSensor
NOTIFYDEV global
NR 98
NTFY_ORDER 50b-PoolSensor
STATE 27.1 °C
TYPE OWDevice
Readings:
2017-06-18 12:00:25 alarm 0
2016-10-03 17:35:32 humidity 0
2017-06-18 12:00:25 state temperature: 27.0625 alarm: 0
2017-06-18 12:00:25 temperature 27.0625
Fhem:
address 28.FF3B80711404
alerting 1
bus bus.0
interfaces temperature
interval 60
getters:
address
crc8
family
fasttemp
id
locator
r_address
r_id
r_locator
temperature
temperature10
temperature11
temperature12
temperature9
temphigh
templow
type
polls:
temperature
setters:
temphigh
templow
state:
temperature
Attributes:
IODev myOWServer
event-min-interval temperature:60
group Temperatur
model DS18B20
room Poolsteuerung,Favourites
stateFormat {sprintf("%.1f",ReadingsVal("PoolSensor","temperature",0))." °C"}
So, da jetzt die Sonne rauskommt, bin ich wieder auf die alte Version zurück
Hier funktioniert es ohne Probleme - ich kenn mich nicht aus
Gruß
Helmut
Kann es sein dass das mit der Umstellung von RPi2 auf 3 zu tun hat?
Habe nun nur das Image auf eine andere Karte geschrieben, das OS unverändert gelassen und nur FHEM upgedated.
Selber Fehler - alte Karte rein wieder gut-
So komm ich nie auf 5.8 - ok never change a running system - aber es sollte doch aktuell sein...........
Hi,
ich würde vermuten, dass liegt an der Syntaxprüfung von 5.8
Muss das nicht so heißen? -> {([SolarSensor:temperature]-[PoolSensor:temperature])}
Gruß Otto
Servus Otto,
ja das hatte ich auch vermutet - funktioniert leider auch nicht?
Gruß
Helmut
ich würde einfach die beiden Werte numerisch so subtrahieren, wie es ein normal denkender (und programmierender) Mensch tun würde.
{ReadingsNum('SolarSensor','temperature',0)-ReadingsNum('PoolSensor'.'temperature',0)}
im state von deinem PoolSensor steht "temperature: 27.0625 alarm: 0"
betateilchen hat das schon auf das richtige Reading (temperature) geändert.
Die DOIF version mit [device:reading:d] sollte aber auch funktionieren.
normal oder nicht, es steht immerhin so in der Doku vom DOIF. Und attr state verstehe ich doch als eine "Sonderlocke" vom DOIF - oder?
Und die set magic Ersetzung (https://fhem.de/commandref_DE.html#readingFnAttributes)ist ja nicht mehr alleiniges Feature vom DOIF.
Was ich überhaupt nicht an der Aussage verstehe: Kommt der Fehler jetzt bei dem state oder stateFormat Konstrukt? Ich habe das Gefühl der Titel der Frage sagt etwas anderes als der Inhalt.
Vielleicht ist ja auch nur die Syntaxprüfung von 5.8 unvollkommen?
Ich hoffe, ich bin jetzt nicht in zu viele Fettnäpfchen getreten. ;)
Gruß Otto
Zitat von: Otto123 am 18 Juni 2017, 17:42:12
normal oder nicht, es steht immerhin so in der Doku vom DOIF.
na und... in der BILD steht auch viel (Fußball, Titten, Wetterbericht)
Hallo Otto du gehörst ja schon zu meinen treuesten Rettern :) :) :)
Ja vielleicht habe ich die falsche Überschrift gewählt und auch den Fehler falsch eingegrenzt.
Der syntax error dürfte vom state des Sensors (1wire 18B20) kommen - near Temperatur. Denn da dahinter steht
ja noch alarm:0. !!??
Und ja vielleicht zum Glück habe ich keine BILD
Ich habe jetzt nochmals, so wie von Otto beschrieben, in die alte 5.7 eingebaut und hier funktioniert es
Mal sehen wenn ich es morgen auf die 5.8 kopiere
Nice eve
Helmut
Hallo und Danke an die Helfer
so funktioniert es auch auf der 5.8. Als OS dient nach wie vor Wheezy.
{([SolarSensor:temperature]-[PoolSensor:temperature])}
Gruß Helmut