Ich habe einen zweiten Raspberry auf welchem Venus OS läuft.
Über diesen habe ich einen RuuviTag angeschlossen.
Die Temperatur hole ich mir über MQTT.
Jetzt möchte ich diese Temperatur als Temp1 im Van Pi System haben.
Also dass sie mir auf dem Pekaway Display und auch für die Heizungssteuerung anzeigt.
Ich habe versucht den Temp1 Sensor im TempFlow zu deaktivieren und habe einen seperaten Flow mit MQTT in und einer Funktion Node für global.set temp1.
Mir zeigt es bei der Temperatur nichts an. Was mache ich falsch?
Bei dem debug kommt die Temperatur raus, jedoch mit sehr vielen Nachkommastellen. Wie kann ich diese kürzen?
Ich habe die Node mal ergänzt.
Jetzt kommt im Debug nichtmehr so viele Nachkommastellen, dafür nur noch zwei. Aber vorher war die Schrift blau mit value und jetzt ist sie rot?
Die ist jetzt rot, weil es jetzt ein String ist und vorher war es eine Zahl. Um das Ganze wieder in eine Zahl zu konvertieren, schreibst du jetzt noch
msg.payload = parseFloat(msg.payload)
Man kann das alles auch kombinieren und in eine Zeile schreiben.
Um eine globale Variable zu setzen schreibst du zuerst die Variable, die du setzen willst und hinter das Komma dann den Wert, den die Variable bekommen sollen, also
global.set(“xyz”, “123”)
In dem Fall hätten wir jetzt 123 in der variable xyz drin stehen. Bei dir brauchen wir jetzt
global.set(“temp1”, msg.payload)
Und zwar nachdem wir in msg.payload den Wert drin stehen haben, den wir haben wollen, also so ziemlich ans Ende. Du hättest dann in deiner Function Node stehen:
Auf dem Pekaway Display und auf der Heizungsseite wird die korrekte Temperatur von aktuell 20.1 Grad angezeigt.
Im Dashboard steht seit gestern Abend 21 Grad (soviel war es als ich den Flow gespeichert hatte).
An was könnte dies liegen?
Weiter ist mir aufgefallen, dass der Temperaturwert auf der Heizungsseite alle ca 15 Sekunden verschwindet und NoTempSensor steht und danach wieder kommt.
Im Flow “Sensor Dashboard” werden alle 30s die globalen Variablen für die Temperaturen ausgelesen und im Dashboard dargestellt.
In DS18B20 Flow gibt es noch eine Function, in der alle globalen Temperatur variablen auf “” (leer) gesetzt, bevor sie neu geschrieben werden. Das ist so, damit man sehen kann, dass keine neuen Werte mehr gekommen sind und irgendein Problem vorliegt.