Ganzzahl ?

@paresy

Hallo ich glaube ich bin schon wieder einem Fehler auf der Spur.

Hier mal die Momentaufnahme:

Ich hole vier Bytes aus meiner Heizung ab. Diese werden in das Array abgelegt und ausgelesen.
Beim Multiplizieren, Addieren und Teilen erscheint dann anstatt 216 (Ganzzahl) eine riesige Kommazahl !

Gruß
lueralba

Das sieht mir nach reiner PHP Funktionalität aus, da rührt IPS vermutlich nicht dran rum.

Gib die Variablen mal mit var_dump($a) aus und schau dir an, was zum float führt. Vermutlich dividieren oder multiplizieren oder beides. Du kannst auch ein (int)($a365 + $b27) versuchen.

@paresy:

Nun kann ich den Fehler richtig darstellen:
Die Konvertierung funktioniert (noch) nicht.

setvalue (13792  /*[test /3600\SetValue Test]*/, 828965/3600) ;

führt zu :

Parameter type of Value does not match in /usr/share/symcon/scripts/40331.ips.php on line 3

und

setvalueinteger (13792  /*[test /3600\SetValue Test]*/, 828965/3600) ;

zu :

Parameter type of Value does not match in /usr/share/symcon/scripts/40331.ips.php on line 4

Anleitung:

SetValueInteger
Beschreibung

Der Befehl setzt den Inhalt der Externen Variablen mit der ID VariablenID. Die gewählte Variable muss vom Typ Integer sein. Wenn nicht, bricht die Funktion mit einem Fehler ab. Eine Konvertierung von Float (Trunc)/Boolean (0/1) wird vorgenommen. Für ein typunsicheres Setzten der Variable können Sie die SetValue Funktion nutzen.

In der Windowsversion wird die Integer-Variable sauber mit 230 befüllt.

Der Tip von Ralf:

Du kannst auch ein (int)($a365 + $b27) versuchen.

funktioniert als Workaround.

P.S. Hab gerade noch schnell die Booleanzuweisung (True/False, siehe Beschreibung) ausgetestet.
Funktioniert auch nicht ! (Windows ist es ok).

Danke und ein schönes WE
lueralba

Ist definitiv ein Kompatibilitätsbug. Habe ich im Hauptthema notiert. Danke!

paresy