Ecowitt WS90 Sensor Hub:
Live Data: North Berlin
NodeRED Function Parse MQTT Message from GW2000 and split into separate MQTT topics:
// Decode URL-encoded form
const payload = decodeURIComponent(msg.payload);
// Split key=value pairs
const pairs = payload.split('&');
const output = [];
pairs.forEach(pair => {
const [key, value] = pair.split('=');
if (key && value !== undefined) {
output.push({
topic: `/ecowitt-bea22/${key}`,
payload: value
});
}
});
return [output];
NodeRED Function Calc Pressure Abs:
// Converts baromabsin from inHg to hPa
let inHg = parseFloat(msg.payload);
if (!isNaN(inHg)) {
let hPa = +(inHg * 33.8639).toFixed(1);
return { topic: "/ecowitt-bea22/baromabsin_hpa", payload: hPa };
} else {
return null; // invalid input
}
NodeRED Function Calc Pressure Rel:
// Converts baromrelin from inHg to hPa
let inHg = parseFloat(msg.payload);
if (!isNaN(inHg)) {
let hPa = +(inHg * 33.8639).toFixed(1);
return { topic: "/ecowitt-bea22/baromrelin_hpa", payload: hPa };
} else {
return null;
}
configuration.yaml:
mqtt:
sensor:
# ECOWITT
- name: "Ecowitt Outdoor Temperature"
state_topic: "/ecowitt-bea22/tempf"
unit_of_measurement: "°C"
value_template: "{{ ((value | float - 32) * 5 / 9) | round(1) }}"
unique_id: ecowitt_outdoor_temperature
- name: "Ecowitt Indoor Temperature"
state_topic: "/ecowitt-bea22/tempinf"
unit_of_measurement: "°C"
value_template: "{{ ((value | float - 32) * 5 / 9) | round(1) }}"
unique_id: ecowitt_indoor_temperature
- name: "Ecowitt Outdoor Humidity"
state_topic: "/ecowitt-bea22/humidity"
unit_of_measurement: "%"
unique_id: ecowitt_outdoor_humidity
- name: "Ecowitt Indoor Humidity"
state_topic: "/ecowitt-bea22/humidityin"
unit_of_measurement: "%"
unique_id: ecowitt_indoor_humidity
- name: "Ecowitt Absolute Pressure"
state_topic: "/ecowitt-bea22/baromabsin"
unit_of_measurement: "hPa"
value_template: "{{ (value | float * 33.8639) | round(1) }}"
unique_id: ecowitt_absolute_pressure
- name: "Ecowitt Relative Pressure"
state_topic: "/ecowitt-bea22/baromrelin"
unit_of_measurement: "hPa"
value_template: "{{ (value | float * 33.8639) | round(1) }}"
unique_id: ecowitt_relative_pressure
- name: "Ecowitt Wind Speed"
state_topic: "/ecowitt-bea22/windspeedmph"
unit_of_measurement: "m/s"
value_template: "{{ (value | float * 0.44704) | round(1) }}"
unique_id: ecowitt_wind_speed
- name: "Ecowitt Gust Speed"
state_topic: "/ecowitt-bea22/windgustmph"
unit_of_measurement: "m/s"
value_template: "{{ (value | float * 0.44704) | round(1) }}"
unique_id: ecowitt_gust_speed
- name: "Ecowitt Max Daily Gust"
state_topic: "/ecowitt-bea22/maxdailygust"
unit_of_measurement: "m/s"
value_template: "{{ (value | float * 0.44704) | round(1) }}"
unique_id: ecowitt_max_daily_gust
- name: "Ecowitt Wind Direction"
state_topic: "/ecowitt-bea22/winddir"
unit_of_measurement: "°"
unique_id: ecowitt_wind_direction
- name: "Ecowitt Solar Radiation"
state_topic: "/ecowitt-bea22/solarradiation"
unit_of_measurement: "W/m²"
unique_id: ecowitt_solar_radiation
- name: "Ecowitt UV Index"
state_topic: "/ecowitt-bea22/uv"
unique_id: ecowitt_uv_index
- name: "Ecowitt VPD"
state_topic: "/ecowitt-bea22/vpd"
unit_of_measurement: "kPa"
unique_id: ecowitt_vpd
- name: "Ecowitt Rain Event"
state_topic: "/ecowitt-bea22/erain_piezo"
unit_of_measurement: "mm"
unique_id: ecowitt_rain_event
- name: "Ecowitt Rain Rate"
state_topic: "/ecowitt-bea22/rrain_piezo"
unit_of_measurement: "mm/h"
unique_id: ecowitt_rain_rate
- name: "Ecowitt Rain Day"
state_topic: "/ecowitt-bea22/drain_piezo"
unit_of_measurement: "mm"
unique_id: ecowitt_rain_day
- name: "Ecowitt Rain Week"
state_topic: "/ecowitt-bea22/wrain_piezo"
unit_of_measurement: "mm"
unique_id: ecowitt_rain_week
- name: "Ecowitt Rain Month"
state_topic: "/ecowitt-bea22/mrain_piezo"
unit_of_measurement: "mm"
unique_id: ecowitt_rain_month
- name: "Ecowitt Rain Year"
state_topic: "/ecowitt-bea22/yrain_piezo"
unit_of_measurement: "mm"
unique_id: ecowitt_rain_year
- name: "Ecowitt PASSKEY"
state_topic: "/ecowitt-bea22/PASSKEY"
unique_id: ecowitt_passkey
- name: "Ecowitt CDN Flag"
state_topic: "/ecowitt-bea22/cdnflg"
unique_id: ecowitt_cdnflg
- name: "Ecowitt Date UTC"
state_topic: "/ecowitt-bea22/dateutc"
unique_id: ecowitt_dateutc
- name: "Ecowitt DNS Error Count"
state_topic: "/ecowitt-bea22/dns_err_cnt"
unique_id: ecowitt_dns_err_cnt
- name: "Ecowitt Frequency"
state_topic: "/ecowitt-bea22/freq"
unit_of_measurement: "Hz"
unique_id: ecowitt_freq
- name: "Ecowitt Heap"
state_topic: "/ecowitt-bea22/heap"
unit_of_measurement: "bytes"
unique_id: ecowitt_heap
- name: "Ecowitt Hourly Rain"
state_topic: "/ecowitt-bea22/hrain_piezo"
unit_of_measurement: "mm"
unique_id: ecowitt_hrain_piezo
- name: "Ecowitt Interval"
state_topic: "/ecowitt-bea22/interval"
unit_of_measurement: "s"
unique_id: ecowitt_interval
- name: "Ecowitt Model"
state_topic: "/ecowitt-bea22/model"
unique_id: ecowitt_model
- name: "Ecowitt Runtime"
state_topic: "/ecowitt-bea22/runtime"
unit_of_measurement: "s"
unique_id: ecowitt_runtime
- name: "Ecowitt Storm Rain"
state_topic: "/ecowitt-bea22/srain_piezo"
unit_of_measurement: "mm"
unique_id: ecowitt_srain_piezo
- name: "Ecowitt Station Type"
state_topic: "/ecowitt-bea22/stationtype"
unique_id: ecowitt_stationtype
- name: "Ecowitt WH90 Battery"
state_topic: "/ecowitt-bea22/wh90batt"
unit_of_measurement: "%"
unique_id: ecowitt_wh90batt
- name: "Ecowitt Weekly Rain"
state_topic: "/ecowitt-bea22/wrain_piezo"
unit_of_measurement: "mm"
unique_id: ecowitt_rain_weekly
- name: "Ecowitt WS90 Firmware"
state_topic: "/ecowitt-bea22/ws90_ver"
unique_id: ecowitt_ws90_version
- name: "Ecowitt WS90 Capacitor Voltage"
state_topic: "/ecowitt-bea22/ws90cap_volt"
unit_of_measurement: "V"
unique_id: ecowitt_ws90cap_voltage