NEWS
Sensor übermittelt falsche Kommastellen
-
Ich habe ein Problem mit dem Luftdatenadapter. An meinem Sensor ist ein BME280 verbaut. Nun zeigt er mir auf der Oberfläche den Wert für den Luftruck richtig an:
BME280 Luftdruck 983.94 hPa
Übernehme ich die Daten jetzt in den Luftdatenadapter verschiebt sich das Komma, da kommt dann als Wert:
BME280 BME280_pressure 98402.39
Wie bekomme ich jetzt den richtigen Wert in IOB?
-
Das ist der richtige Wert, nur in Pa(scal) statt h(ekto)Pa(scal). `
Da hast du natürlich vollkommen recht, aber wie bekomme ich das in IOB als hPa angezeigt? Kann man das irgendwie mit einem Script umrechnen?
-
Ich nehme an mit Blockly wird das nicht so ohne weiteres gehen?
-
So schwierig ist es in Javascript nicht. Vorschlag für den Wert in hPa mit einer Nachkommastelle:
const idPa = '...'; // ID des Messwertes in Pa const idhPa = 'Wetter.Luftdruck'; // ID des Wertes in hPa // Datenpunkt erstellen createState(idhPa, 1000, { type: 'number', unit: 'hPa', role: 'value' }); on(idPa, function(dp) { setState(idhPa, Math.round(dp.state.val / 10) / 10, true); });Es muss nur noch die Datenpunkt-ID des BME280 in die erste Zeile eingetragen werden.
-
const idPa = '...'; // ID des Messwertes in Pa const idhPa = 'Wetter.Luftdruck'; // ID des Wertes in hPa // Datenpunkt erstellen createState(idhPa, 1000, { type: 'number', unit: 'hPa', role: 'value' }); on(idPa, function(dp) { setState(idhPa, Math.round(dp.state.val / 10) / 10, true); }); ```` `Ergibt den Wert 1000hPa, und das kann ja nicht so ganz stimmen, wenn es nur 980 hPa gemessen sind.
Klar, neuen Datenpunkt erstellen. Und einen Skript schreiben. Wenn BME280 Luftdruck verändert neuer Datenpunkt=BME280 Luftdruck /1000. `
Ich habe jetzt als Datenpunkt Luftdruck, aber was muss ich für die Berechnung in Blockly eintragen? Bei den mathematischen Blöcken kann ich ja nur Zahlen eintragen. Und so wie es in meinem Screenshot ist, übernimmt er schon mal den Inhalt des Textblockes. Also ist der Weg im Groben schon mal richtig.
(Nicht durch das set animation mode irritieren lassen, da kommt dann der BME rein.)

-
Ergibt den Wert 1000hPa, und das kann ja nicht so ganz stimmen, wenn es nur 980 hPa gemessen sind. `
1000 hPa ist der Initialwert. Der Messwert des BME280 muss sich erst ändern, damit getriggert wird und die Berechnung erfolgen kann. -
1000 hPa ist der Initialwert. Der Messwert des BME280 muss sich erst ändern, damit getriggert wird und die Berechnung erfolgen kann. `
Ah, Danke. Hab grad nochmal geschaut, passt. Ich muss mich mal wieder mehr mit Java befassen….
Nun wäre ich aber trotzdem noch für die Lösung der Blockly Frage dankbar ;-)
-
die Lösung der Blockly Frage `

Wert ist eine Eigenschaft des Trigger-Datenpunktes (unter Trigger).
-
Blockly_Pa_hPa.JPG
Wert ist eine Eigenschaft des Trigger-Datenpunktes (unter Trigger). `
so kompliziert ist das mit den Matheblöcken? Ich kapier den Aufbau grad nicht so ganz, aber es funktioniert.
Ich danke Euch für die tolle Hilfe!
-
in diesem Falle muss wohl keiner der 10er ein 100er sein, denn er zeigt so den richtigen Wert an, mit /10 und /10.
-
Also im Klartext macht der mathematische Teil: Runden von Pa/10 auf 1 Kommastelle? Durch was müsste ich denn für 2 Stellen nach dem Komma teilen?
-
Durch was müsste ich denn für 2 Stellen nach dem Komma teilen? `
