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