On Monday, October 13, 2025 at 9:45:57 AM UTC-7 steepleian wrote:
So maybe the perfect solution is MQTT with a backfill process built in?
Uncertain. Some folks might not want to run a MQTT broker although it's
easy and lightweight on Linux.
Ecowitt uses so many formats and naming conventions that it's difficult to
suggest what the best path forward might be. I certainly find the MQTT
easier to read and should be far easier to program to (for me at least)
since we already have the nice MQTTSubscribe driver/extension that can
handle the annoyances in how Ecowitt returns the MQTT data.
Re: content.....
MQTT seems more current than the HTTP API data for my gw1200 running latest
firmware that came out recently:
- MQTT has additional info missing from HTTP (vpd, soil moisture ADC
value, gateway model, gateway freq)
- MQTT and HTTP report battery levels much differently it seems
- MQTT makes absolute and relative pressure easily both available, HTTP
has an item that 'seems' to be the offset in kPa (?)
- HTTP structure for how it reports rain is just odd. They have
hardware info in the same element as the yearly rain totals
- HTTP is also odd in their model identifiers. My gw1200 inside
temp/hum/pressure info comes up as being from a wh25 (!!!!)
- getting HTTP data can mean dealing with that horrid "page=N" thing and
assembling things from multiple pages of data
- http://x.x.x.x/get_sensors_info?page=1
- http://x.x.x.x/get_sensors_info?page=2
- then assembling them in some order based on type id value
That said....Ecowitt MQTT isn't perfect either
- sensor RSSI and 'signal' (whatever that is) is only available via HTTP
get_sensors_info if that matters to you
- and MQTT returns a HTTP POST header and multiple blank lines, using WU
protocol formatting with & rather than , as the delimeter, but folks have
already reported and worked that issue here with how to set up
MQTTSubscribe to deal with that annoyance so while it's ugly it's easy to
work around
I'll attach a txt file with the data I see here with a little light editing
to make it easier to go through.....
--
You received this message because you are subscribed to the Google Groups
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/weewx-user/c1c94948-8e21-4249-85da-fd4aaa726127n%40googlegroups.com.
#--------------------------------------------
# mosquitto_sub -h 192.168.2.87 -t GW1200
#--------------------------------------------
POST /data/ip_api/ HTTP/1.1
HOST: cdnrtpdate.ecowitt.net
Connection: Close
Content-Type: application/x-www-form-urlencoded
Content-Length: 926
PASSKEY=68ED8E69B59F5B11ED703756B8A264A8&stationtype=GW1200B_V1.4.0&runtime=1120708&heap=97840&dateutc=2025-10-13+16%3A44%3A49&dns_err_cnt=0&cdnflg=20&tempinf=68.90&humidityin=48&baromrelin=29.878&baromabsin=29.495&tempf=46.04&humidity=86&vpd=0.044&winddir=39&windspeedmph=0.00&windgustmph=3.13&maxdailygust=8.05&rainratein=0.000&eventrainin=0.016&hourlyrainin=0.000&dailyrainin=0.016&weeklyrainin=0.051&monthlyrainin=0.445&yearlyrainin=0.736&rrain_piezo=0.000&erain_piezo=0.000&hrain_piezo=0.000&drain_piezo=0.012&wrain_piezo=0.047&mrain_piezo=0.409&yrain_piezo=0.780&srain_piezo=0&ws85cap_volt=2.7&ws85_ver=116&temp1f=68.90&humidity1=51&temp2f=65.48&humidity2=54&temp3f=65.66&humidity3=56&temp4f=69.80&humidity4=53&temp5f=46.94&humidity5=82&soilmoisture1=35&soilad1=202&tf_ch1=48.38&wh40batt=1.5&wh26batt=1&batt1=1&batt2=0&batt3=0&batt4=0&batt5=0&soilbatt1=1.2&tf_batt1=1.36&wh85batt=3.28&freq=915M&model=GW1200B&interval=60
-----------
# same with header removed and & replaced by ,^M for ease of reading
-----------
PASSKEY=68ED8E69B59F5B11ED703756B8A264A8,
stationtype=GW1200B_V1.4.0,
runtime=1120708,
heap=97840,
dateutc=2025-10-13+16%3A44%3A49,
dns_err_cnt=0,
cdnflg=20,
tempinf=68.90,
humidityin=48,
baromrelin=29.878,
baromabsin=29.495,
tempf=46.04,
humidity=86,
vpd=0.044,
winddir=39,
windspeedmph=0.00,
windgustmph=3.13,
maxdailygust=8.05,
rainratein=0.000,
eventrainin=0.016,
hourlyrainin=0.000,
dailyrainin=0.016,
weeklyrainin=0.051,
monthlyrainin=0.445,
yearlyrainin=0.736,
rrain_piezo=0.000,
erain_piezo=0.000,
hrain_piezo=0.000,
drain_piezo=0.012,
wrain_piezo=0.047,
mrain_piezo=0.409,
yrain_piezo=0.780,
srain_piezo=0,
ws85cap_volt=2.7,
ws85_ver=116,
temp1f=68.90,
humidity1=51,
temp2f=65.48,
humidity2=54,
temp3f=65.66,
humidity3=56,
temp4f=69.80,
humidity4=53,
temp5f=46.94,
humidity5=82,
soilmoisture1=35,
soilad1=202,
tf_ch1=48.38,
wh40batt=1.5,
wh26batt=1,
batt1=1,
batt2=0,
batt3=0,
batt4=0,
batt5=0,
soilbatt1=1.2,
tf_batt1=1.36,
wh85batt=3.28,
freq=915M,
model=GW1200B,
interval=60
#--------------------------------------------
# curl http://192.168.2.87/get_livedata_info
#
# missing vs. MQTT data:
# model
# freq
# batteries are in 20% levels not voltages
# vpd
# abs/rel pressure (common_list seems to have the offset)
#
#--------------------------------------------
{
#--- outdoor rain/wind things --------
"common_list":[
{ "id": "0x02", "val": "46.0", "unit": "F" }, #
outdoor temp
{ "id": "0x07", "val": "86%" }, #
outdoor hum
{ "id": "3", "val": "44.2", "unit": "F" }, #
dewpt ?
{ "id": "5", "val": "0.148 kPa" }, #
abs-vs-rel press offset ?
{ "id": "0x03", "val": "42.1", "unit": "F", "battery": "1" }, #
dewpt
{ "id": "0x0B", "val": "4.03 mph" }, # wind
{ "id": "0x0C", "val": "4.47 mph" }, # gust
{ "id": "0x19", "val": "8.05 mph" }, # day
max wind
{ "id": "0x0A", "val": "353" }, #
wind dir
{ "id": "0x6D", "val": "355" } # day
max wind dir ? gust dir ?
],
#----- wh40 tipping rain sensor -----
"rain":[
{ "id": "0x0D", "val": "0.02 in" }, # rain event
{ "id": "0x0E", "val": "0.00 in/Hr" }, # rain rate
{ "id": "0x7C", "val": "0.04 in" }, # ????
{ "id": "0x10", "val": "0.02 in" }, # day
{ "id": "0x11", "val": "0.05 in" }, # week
{ "id": "0x12", "val": "0.44 in" }, # month
{ "id": "0x13", "val": "0.74 in", "battery": "5", "voltage": "1.5" }
# year and hardware data
],
#----- wh85 piezo rain sensor -------
"piezoRain":[
{ "id": "srain_piezo", "val": "0" }, # 1 = raining
{ "id": "0x0D", "val": "0.00 in" }, # event
{ "id": "0x0E", "val": "0.00 in/Hr" }, # rate
{ "id": "0x7C", "val": "0.03 in" }, # ????
{ "id": "0x10", "val": "0.01 in" }, # day
{ "id": "0x11", "val": "0.05 in" }, # week
{ "id": "0x12", "val": "0.41 in" }, # month
{ "id": "0x13", "val": "0.78 in", "battery": "5", "voltage": "3.28",
"ws85cap_volt": "2.7", "ws85_ver": "116" } # year and hardware data
],
#----- indoor console t+h -----------
#----- actually from the gw1200 -----
"wh25":[
{ "intemp": "69.1", "unit": "F", "inhumi": "49%", "abs": "29.49 inHg",
"rel": "29.88 inHg" }
],
#----- wh31 indoor t+h sensors ------
#--- no idea what 'aisle' means -----
"ch_aisle":[
{ "channel": "1", "name": "", "battery": "1", "temp": "69.1",
"unit": "F", "humidity": "51%" }, # <== battery shows red/low on
wsview+ app
{ "channel": "2", "name": "", "battery": "0", "temp": "65.5",
"unit": "F", "humidity": "54%" },
{ "channel": "3", "name": "", "battery": "0", "temp": "65.7",
"unit": "F", "humidity": "56%" },
{ "channel": "4", "name": "", "battery": "0", "temp": "70.0",
"unit": "F", "humidity": "53%" },
{ "channel": "5", "name": "", "battery": "0", "temp": "46.9",
"unit": "F", "humidity": "82%" }
],
#----- wh51 soil moisture sensor ----
"ch_soil":[
{ "channel": "1", "name": "", "battery": "1", "voltage": "1.20",
"humidity": "35%" } # <== battery shows red/low on wsview+ app
],
#----- wh34 soil temp sensors -------
"ch_temp":[
{ "channel": "1", "name": "", "temp": "48.4", "unit": "F",
"battery": "3", "voltage": "1.36" }
],
#----- system diagnostic data -------
"debug":[
{ "heap": "100728", "runtime": "1120836", "usr_interval": "60" }
]
}%
#--------------------------------------------
# to get RSSI values it seems necessary to battle through two pages of
# http://x.x.x.x/get_sensors_info?page=1 and get_sensors_info?page=2
# - this example is lightly sorted by type id as run vs. a gw1200 running
firmware V1.4
#--------------------------------------------
{"img":"wh69","type":"0","name":"Temp & Humidity & Solar & Wind &
Rain","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh68","type":"1","name":"Solar &
Wind","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh80","type":"2","name":"Temp & Humidity & Solar &
Wind","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh40","type":"3","name":"Rain","id":"1C835","batt":"5","rssi":"-76","signal":"4","idst":"1"},
{"img":"wh25","type":"4","name":"Temp & Humidity &
Pressure","id":"FFFFFFFE","batt":"9","rssi":"--","signal":"0","idst":"0"},
{"img":"wh26","type":"5","name":"Temp &
Humidity","id":"32","batt":"1","rssi":"-76","signal":"4","idst":"1"},
{"img":"wh31","type":"6","name":"Temp & Humidity
CH1","id":"91","batt":"1","rssi":"-64","signal":"4","idst":"1"},
{"img":"wh31","type":"7","name":"Temp & Humidity
CH2","id":"99","batt":"0","rssi":"-84","signal":"4","idst":"1"},
{"img":"wh31","type":"8","name":"Temp & Humidity
CH3","id":"C4","batt":"0","rssi":"-79","signal":"4","idst":"1"},
{"img":"wh31","type":"9","name":"Temp & Humidity
CH4","id":"37","batt":"0","rssi":"-75","signal":"3","idst":"1"},
{"img":"wh31","type":"10","name":"Temp & Humidity
CH5","id":"CA","batt":"0","rssi":"-65","signal":"4","idst":"1"},
{"img":"wh31","type":"11","name":"Temp & Humidity
CH6","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh31","type":"12","name":"Temp & Humidity
CH7","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh31","type":"13","name":"Temp & Humidity
CH8","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh51","type":"14","name":"Soil moisture
CH1","id":"1260","batt":"1","rssi":"-72","signal":"4","idst":"1"},
{"img":"wh51","type":"15","name":"Soil moisture
CH2","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh51","type":"16","name":"Soil moisture
CH3","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh51","type":"17","name":"Soil moisture
CH4","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh51","type":"18","name":"Soil moisture
CH5","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh51","type":"19","name":"Soil moisture
CH6","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh51","type":"20","name":"Soil moisture
CH7","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh51","type":"21","name":"Soil moisture
CH8","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh41","type":"22","name":"PM2.5
CH1","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh41","type":"23","name":"PM2.5
CH2","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh41","type":"24","name":"PM2.5
CH3","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh41","type":"25","name":"PM2.5
CH4","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh57","type":"26","name":"Lightning","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh55","type":"27","name":"Leak
CH1","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh55","type":"28","name":"Leak
CH2","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh55","type":"29","name":"Leak
CH3","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh55","type":"30","name":"Leak
CH4","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh34","type":"31","name":"Temp
CH1","id":"379B","batt":"3","rssi":"-77","signal":"4","idst":"1"},
{"img":"wh34","type":"32","name":"Temp
CH2","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh34","type":"33","name":"Temp
CH3","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh34","type":"34","name":"Temp
CH4","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh34","type":"35","name":"Temp
CH5","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh34","type":"36","name":"Temp
CH6","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh34","type":"37","name":"Temp
CH7","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh34","type":"38","name":"Temp
CH8","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh45","type":"39","name":"PM25 & PM10 &
CO2","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh35","type":"40","name":"Leaf Wetness
CH1","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh35","type":"41","name":"Leaf Wetness
CH2","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh35","type":"42","name":"Leaf Wetness
CH3","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh35","type":"43","name":"Leaf Wetness
CH4","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh35","type":"44","name":"Leaf Wetness
CH5","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh35","type":"45","name":"Leaf Wetness
CH6","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh35","type":"46","name":"Leaf Wetness
CH7","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh35","type":"47","name":"Leaf Wetness
CH8","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"}
{"img":"wh90","type":"48","name":"Temp & Humidity & Solar & Wind &
Rain","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh85","type":"49","name":"Wind &
Rain","version":"116","id":"278E","batt":"5","rssi":"-76","signal":"4","idst":"1"},
{"img":"wh51","type":"58","name":"Soil moisture
CH9","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh51","type":"59","name":"Soil moisture
CH10","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh51","type":"60","name":"Soil moisture
CH11","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh51","type":"61","name":"Soil moisture
CH12","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh51","type":"62","name":"Soil moisture
CH13","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh51","type":"63","name":"Soil moisture
CH14","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh51","type":"64","name":"Soil moisture
CH15","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh51","type":"65","name":"Soil moisture
CH16","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh54","type":"66","name":"Lds
CH1","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh54","type":"67","name":"Lds
CH2","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh54","type":"68","name":"Lds
CH3","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wh54","type":"69","name":"Lds
CH4","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"}
{"img":"wn20","type":"70","name":"Rain
Mini","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
{"img":"wn38","type":"71","name":"BGT","id":"FFFFFFFF","batt":"9","rssi":"--","signal":"0","idst":"1"},
#-----------------------------------------------------------------------------------------