Não implementei o cálculo no Tasmota… Utilizo o Node Red, com um node de subscritor de MQTT no tópico que programei no Tasmota. Num outro node, de funcção, pego os valores e faço o cálculo. Finalmente, publico novamente via MQTT para o tópico que programei no HA um sensor.
No Node Red tenho:
![image](https://forum.cpha.pt/uploads/default/original/2X/5/57920bf0593820ac2bd601de78a64e761b431059.png)
No “function” tenho:
var wet_dev = "DS18B20-1"
var dry_dev = "DS18B20-2"
if (msg.hasOwnProperty("topic")){
if (msg.topic == "Home/Temperatures/SENSOR"){
if (msg.payload.hasOwnProperty(dry_dev) && msg.payload.hasOwnProperty(wet_dev)){
var Td = msg.payload[dry_dev].Temperature
var Tw = msg.payload[wet_dev].Temperature
var e = 2.71828182845904
var N = .6687451584
var Pd = (17.502*Td)/(240.97+Td)
var Pw = (17.502*Tw)/(240.97+Tw)
var ed = 6.112 * Math.pow(e,Pd)
var ew = 6.112 * Math.pow(e,Pw)
var rh = ((ew-N*(1+.00115*Tw)*(Td-Tw))/ed)*100
delete msg._topic
msg.topic = "Home/HT"
msg.payload = {"Time":msg.payload.Time,"GreenHouse":{"DryTemperature":Td,"WetTemperature":Tw,"Humidity":Number(rh.toFixed(1))}}
return msg;
}
}
}
A fórmula de cálculo que utilizei foi a do site que se segue. De notar que não considera a pressão atmosférica mas, para o meu efeito, é mais que preciso. Fórmula:
![image](https://forum.cpha.pt/uploads/default/original/2X/4/442ad769f8c59bcfc65700aaa96d5940dc163910.png)
Site: http://www.1728.org/relhum.htm