NEWS
ESP8266 ESPEASY Heizungsdruck per MQTT an ioBroker
-
@bahnuhr Aber es kann doch nicht sein wenn das Teil (Sensor) auf dem Tisch liegt das dort 6 Bar anliegen. Auf der Druckseite ist ja noch nichts angeschlossen. Oder habe ich da einen Denkfehler....
-
@mymeyer sagte in ESP8266 ESPEASY Heizungsdruck per MQTT an ioBroker:
@bahnuhr Aber es kann doch nicht sein wenn das Teil (Sensor) auf dem Tisch liegt das dort 6 Bar anliegen. Auf der Druckseite ist ja noch nichts angeschlossen. Oder habe ich da einen Denkfehler....
Dann stimmen deine Werte nicht.
Schließe bitte an einen ADS Port den Ausgang des Sensors.
Und an einen anderen Port 5V anschließen und diesen Wert ablesen.und diesen trägst du als Referenz bei 5V ein und rechnest die Tabelle neu durch.
Fazit.
Viel falsch anschließen kannst du da eigentlich nicht.
Du musste halt mit dem Sensor das neu druchrechnen.Bei mir sind 3 Sensoren angeschlossen:
A0 5V A1 0,5mpa Drucksensor - Heizung A2 0,5mpa Drucksensor - FB-Heizung A3 1,2mpa Drucksensor - Wasser
Und jeder liefert einen anderen analogen Wert:
Und diese rechne ich dann anders um; eben je nach Gerät.
Und in VIS kommt dann folgendes raus:
-
@bahnuhr Hi , habe jetzt Tasmota drauf. Geht ja schnell . Aktueller Wert ist 18611. Kannst Du mir das Excel File schicken zum berechnen der Werte ?
-
@mymeyer sagte in ESP8266 ESPEASY Heizungsdruck per MQTT an ioBroker:
@bahnuhr Hi , habe jetzt Tasmota drauf. Geht ja schnell . Aktueller Wert ist 18611. Kannst Du mir das Excel File schicken zum berechnen der Werte ?
Da dort noch mehr drin ist, schicke ich Excel Tabellen grundsätzlich nicht rum.
Sind doch aber nur 5 Spalten. Bekommst du schon hin.
-
@bahnuhr Tabelle fertig Das berechnen mit deiner Formel findet da aber im Iobroker JS statt richtig ?
-
@mymeyer sagte in ESP8266 ESPEASY Heizungsdruck per MQTT an ioBroker:
@bahnuhr Tabelle fertig Das berechnen mit deiner Formel findet da aber im Iobroker JS statt richtig ?
Ja
-
@mymeyer sagte in ESP8266 ESPEASY Heizungsdruck per MQTT an ioBroker:
Iobroker JS
sieht bei mir so aus:
// Wemos-Drucksensor hat sich geändert on({id: "mqtt.2.Wemos_Drucksensor.SENSOR"}, function(obj) { obj = JSON.parse(obj.state.val); var wert_Heizung = parseFloat(((obj.ADS1115.A1-2650)/1000*23.58/100).toFixed(2)); log ("Heizung: " + obj.ADS1115.A1 + " , " + wert_Heizung); var wert_FB_Heizung = parseFloat(((obj.ADS1115.A2-2650)/1000*23.58/100).toFixed(2)); log ("FB-Heizung: " + obj.ADS1115.A2 + " , " + wert_FB_Heizung); var wert_Wasser = parseFloat(((obj.ADS1115.A3-2650)/1000*56.6/100).toFixed(2)); log ("Wasser: " + obj.ADS1115.A3 + " , " + wert_Wasser); setState("javascript.0.Geräte.Wemos.Wemos-Drucksensor.Sensor_05_Heizung", wert_Heizung); setState("javascript.0.Geräte.Wemos.Wemos-Drucksensor.Sensor_05_FB-Heizung", wert_FB_Heizung); setState("javascript.0.Geräte.Wemos.Wemos-Drucksensor.Sensor_12_Wasser", wert_Wasser); });
Musst du halt anpassen.
-
@bahnuhr sagte: sieht bei mir so aus:
Die Datenpunkte unter "javascript.0.Geräte.Wemos.Wemos-Drucksensor" sind vom Typ "string"?
-
@paul53 sagte in ESP8266 ESPEASY Heizungsdruck per MQTT an ioBroker:
@bahnuhr sagte: sieht bei mir so aus:
Die Datenpunkte unter "javascript.0.Geräte.Wemos.Wemos-Drucksensor" sind vom Typ "string"?
Wie kommst du da drauf ?
... parsefloat !!!
-
@bahnuhr sagte: Wie kommst du da drauf ?
.toFixed(2) macht aus einer Zahl einen String.
-
@paul53 sagte in ESP8266 ESPEASY Heizungsdruck per MQTT an ioBroker:
@bahnuhr sagte: Wie kommst du da drauf ?
.toFixed(2) macht aus einer Zahl einen String.
Ja, und parsefloat macht wieder eine number draus.
Oder, hab ich da was falsch verstanden !!!
-
@paul53
Bitte genau die Klammern beachten. -
@bahnuhr sagte: Bitte genau die Klammern beachten.
Ja, sehe gerade dass die parseFloat-Klammer das .toFixed(2) mit umschließt. Ist so etwas umständlich. Besser:
var wert_Heizung = Math.round((obj.ADS1115.A1-2650)/1000*23.58) / 100;
-
@paul53 sagte in ESP8266 ESPEASY Heizungsdruck per MQTT an ioBroker:
@bahnuhr sagte: Bitte genau die Klammern beachten.
Ja, sehe gerade dass die parseFloat-Klammer das .toFixed(2) mit umschließt. Ist so etwas umständlich. Besser:
var wert_Heizung = Math.round((obj.ADS1115.A1-2650)/1000*23.58) / 100;
bekommt man es damit auch hin, dass genau 2 Nachkommastellen erzeugt werden ?
-
@bahnuhr sagt: bekommt man es damit auch hin, dass genau 2 Nachkommastellen erzeugt werden ?
Durch das Wandeln in eine Zahl sind es in jedem Fall maximal 2 Nachkommastellen.
-
@paul53 sagte in ESP8266 ESPEASY Heizungsdruck per MQTT an ioBroker:
@bahnuhr sagt: bekommt man es damit auch hin, dass genau 2 Nachkommastellen erzeugt werden ?
Durch das Wandeln in eine Zahl sind es in jedem Fall maximal 2 Nachkommastellen.
Lt. google wird eine Ganzzahl zurück gegeben.
..... Die Math.round() Funktion gibt die nächstgelegenen Ganzzahl einer Zahl zurück.....
Und dies will ich ja nicht.
Ich möchte 2 Nachkommastellen. -
@bahnuhr sagte: Ich möchte 2 Nachkommastellen.
Wenn eine Ganzzahl durch 100 geteilt wird, erhält man (max.) 2 Nachkommastellen.
-
@paul53 sagte in ESP8266 ESPEASY Heizungsdruck per MQTT an ioBroker:
@bahnuhr sagte: Ich möchte 2 Nachkommastellen.
Wenn eine Ganzzahl durch 100 geteilt wird, erhält man (max.) 2 Nachkommastellen.
Also erst * 100
dann math.round
und dann wieder / 100Ist aber auch umständlich, oder ?
-
@bahnuhr sagte: Ist aber auch umständlich, oder ?
Wieso? Ich habe die vorhandene Division nur nach der Rundung gemacht. Original-Formel:
var wert_Heizung = parseFloat(((obj.ADS1115.A1-2650)/1000*23.58/100).toFixed(2));
Geändert in:
var wert_Heizung = Math.round((obj.ADS1115.A1-2650)/1000*23.58) / 100;
-
@paul53 sagte in ESP8266 ESPEASY Heizungsdruck per MQTT an ioBroker:
var wert_Heizung = Math.round((obj.ADS1115.A1-2650)/1000*23.58) / 100;
Ja, funktioniert auch:
Danke für den Input.