Systemvariablen ändern ihren Typ je nach Inhalt (float <-> int))

Die Systemvariablen ändern ihren Typ je nach Inhalt. Die folgende Systemvariable ist als float definiert, sobald aber ein ganzahliger Wert drin steckt, wird sie zu int.

Hallo,

das habe ich auch schon beobachtet. Anscheinend haben Homegear-Variablen keinen direkt festgelegten Typ, sondern sind eine Art “Variant”.

Um dieses Issue zu vermeiden, setze ich im PHP Code mit “settype” immer explizit den Typ von Variablen z.B. auf float, bevor ich diese dann mit setSystemVariable in eine Homegear Variable schreibe.

Das funktioniert bis jetzt bei mir zuverlässig und ist besonders wichtig, wenn man dann den Inhalt der Homegear Variablen in einer influxdb-Datenbank historisieren möchte.

Ich hoffe, das hilft Dir schon weiter.

Viele Grüße

FiveEights

1 Like

Leider nein, da ich beim Testen von node-blue darauf gestossen bin.

Mir ist das halt aufgefallen, dass die switch-node manchmal zickig ist. Ein Wert ==(boolean)true funktionierte nicht, erst als ich “is true” als Operation angegeben habe ging es.

Da ich einen weiteren switch habe, der nicht zuverlässig funktioniert ist mir das aufgefallen. Der vergleicht halt mal int mit float und mal float mit float.

Hallo @job,

Korrekt.

@job:

War der eingehende Wert beim == true ein Boolean? Beim == true funktioniert es tatsächlich nur, wenn die eingehende Variable ebenfalls ein Boolean ist. Is true ist der eingehene Typ egal.

Habt ihr Verbesserungsvorschläge?

Viele Grüße

Sathya

Ich bin eigentlich für strenge Typisierung, allerdings bin ich das auch gewöhnt. Ich sehe aber auch durchaus den Charme der aktuellen Implementation.

Wichtig wäre eine Übersicht, welche Vergleiche nicht funktionieren.