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"},

#-----------------------------------------------------------------------------------------

Reply via email to