Data String Composition - crestlinesoaring/ArduinoWeatherStation GitHub Wiki

Composition of the MWX data string (WeatherString) values.

The WeatherString consists of time&date and weather data and other telemetric info.
It is held similar to the club's existing Davis WX, to ease interfacing.
The WeatherString is assembled each minute and stored/sent to the host.
Notes:
Values are comma separated.
italic means not implemented (yet)
"X" means capital character
"y" means small character
"123" means three digits

This line is used for the examples below:
15:45,1/6/2019,13.0,18,225,,,,,M,21s,,8.27,100,0221,13.6,-018,13.33,27:26,,1,-1732
.
.

Pos Function Pattern Unit Example
1 Time 12:34 hour:minute 15:45
2 Date 1/6/2019 month/day/year 1/6/2019
3 Wind speed 12.3 mph 13.0
4 Wind speed max over 5 minute gust 12 mph 18
5 Wind direction 360 degrees 225
6 Outside temperature 123 F
7 Outside humidity 123 %RH
8 Spare (Outside barometric pressure) 12345 hPa
9 Status (MWX power, enviromental and communication state) 1 0 0=no solar
10 Location string (M for Marshall, L for Lance, S for Said, D for DJ) X M
11 Software version string 12y 21s
12 Hardware version string X wxHWVersion
13 Inside temperature 12.34 C 8.27
14 Inside humidity 123 %RH 100
15 Solar Panel Current 1234 mA 0221
16 Solar Panel Voltage 12.3 V 13.6
17 Battery Current 1234 or -1234 mA -018
18 Battery Voltage 12.34 V 13.33
19 run time 12:34:56 hour:min:sec 27:26
20 Powered Units USNB Initial of units see #20 below

The rest of the line is used for flags and error checking and future extensions.

// 20: Powered Peripherals, U=Ubiquiti link, S=SouthCam, N=NorthCam, B=BBoxCam
// 21: print weather direction string to make it easy to read which direction the wind is blowing.
// 22-24: Boot, Sleep, and Watchdog counters
// 22+: Assorted info and error values
// add socket status as 8 hex chars
// if (pauseSolarChargeCurrent)...
// If there have been failures, tack them on:
// if (ethConnFails)....
// if (ethTimeouts)....
// if (ethLastFailureCode)....
// Watchdog (year/month/day@hour:minute)
// Tack on a ",R" if we've rebooted to make it easier to spot them