NEWS
ESP8266 ESPEASY Heizungsdruck per MQTT an ioBroker
-
@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.
-
@bahnuhr Hi , ich bin mal wieder Habe den Sensor eingebaut , aber irgendwie passen die Werte nicht. Kannst Du bitte nochmal drüber schauen. Wo ist meine Gedankenfehler.
Tasmota:
Excel:
Wenn Die Pumpe aus ist bekomme ich diesen Wert angezeit:
AUS:
EIN:
Auf dem Manometer von der Pumpe steht aber 1.0bar ! Zur Info noch der Sensor ist auf ADS01 angeschlossen.
Wo liegt der Fehler ? Siehst Du es oder ist der Sensor shit ?
-
Jetzt muss ich mich noch mal melden, die ganze Sache ist total einfach.
Ich habe damals einen ADS1115 verwendet, diesen nur mit 3,3V angeschlossen dadurch kamen die Probleme.
Dies habe ich behoben und dabei festgestellt das der Drucksensor defekt ist.Habe an den ADS einen Signalgeber angeschlossen um 0 und 10bar im espeasy auslesen.
Dadurch das ein Drucksensor immer Linear ist muss man im ESPEasy nur Null und 10Bar angeben.
Danach wieder Sensor angeschlossen und nachgemessen was auf Signal rauskommt.zBsp bei einerm Sensor wie oben beschrieben:
kommt 1,3V am Signal an
1,3V - 0,5V = 0,8V
0,8V : 4V = 0,2V x 10Bar = 2Bar sollte der Manometer an der Heizung anzeigenMfG
-
@mymeyer zeig mal ein Bild wo dein Sensor sitzt.
Du solltest den Sensor in der Nähe vom MAG setzen.MfG
-
Hast du an A0 wirklich 5V dran?
Der Wert erscheint mir zu wenig.