Code:
// --------------------------------------------------------------------------------------
// WeatherDuino Pro2 PLUS Receiver - Version: P2AT2560_RX_v8.2_b006
// Start of user configurable options
// --------------------------------------------------------------------------------------
// If you need help about any of the user configurable settings, please first do a search
// at the WeatherDuino Pro2 support forum. If you don't find any relevant info, then post
// a new thread.
//
// --------------------------------------------------------------------------------------
// Define Name and URL for this weather station
// This data is used list you in the WeatherDuino Online Weather Station Map
// --------------------------------------------------------------------------------------
const char* WeatherStation_Name = "Marne & Park"; // DON'T LEAVE EMPTY - Put here your Weather Station name or Location name
const char* WeatherStation_URL = ""; // If you have an URL to your Meteo Website put it here (can be the WU URL). URL should start with http or https
// --------------------------------------------------------------------------------------
// Define ID's for this weather station
// --------------------------------------------------------------------------------------
#define Station_ID 0xA1 // Station_ID, use the same value in all TX units
#define Relay_ID 0xA3 // Relay_ID, use the same value in all WD units
// --------------------------------------------------------------------------------------
// Define your Weather Station location. Use decimal format for Latitude and Longitude
// --------------------------------------------------------------------------------------
#define LATITUDE 39.22350 // Put here your Station latitude in degrees North (with up to 5 decimal places, don't use less than 3 decimal places)
#define LONGITUDE -8.99650 // Put here your Station longitude in degrees - minus for West (with up to 5 decimal places, don't use less than 3 decimal places)
#define ELEVATION 124 // Put here your Station height above sea level in Meters (no decimal places)
// --------------------------------------------------------------------------------------
// Define rules for Auto Summer Time Display, and clock adjustment
// --------------------------------------------------------------------------------------
// Example for Australia Eastern Time Zone (Sydney, Melbourne)
// TimeChangeRule aEDT = {"AEDT", First, Sun, Oct, 2, 660}; //UTC + 11 hours
// TimeChangeRule aEST = {"AEST", First, Sun, Apr, 3, 600}; //UTC + 10 hours
// Timezone myTZ(aEDT, aEST);
TimeChangeRule NZDT = {"NZDT", Last, Sun, Nov, 2, 780}; //New Zealand Daylight Saving Time
TimeChangeRule NZST = {"NZST", First, Sun, Apr, 3, 720}; //New Zealand Standard Time, UTC + 12 hours
//TimeChangeRule PST = {"PST", Last, Sun, Mar, 1, 60}; //Portuguese Summer Time - "UTC + 1" or GMT + 1
//TimeChangeRule GMT = {"GMT", Last, Sun, Oct, 2, 0}; //Portuguese Winter Time - "UTC + 0" or GMT
Timezone myTZ(NZDT, NZST);
// --------------------------------------------------------------------------------------
// Define Interface Language
// --------------------------------------------------------------------------------------
#include "_lang/en_GB.h" // Change the language code according to your preference. Keep "_lang/" and the ".h" at the end
// Currently available languages: en_GB, fr_FR, de_DE, pt_PT, es_ES, cs_CZ, nl_NL, it_IT, pl_PL
// --------------------------------------------------------------------------------------
// Define Roll Over Hour for Meteorological Day
// --------------------------------------------------------------------------------------
const byte MeteoDay_HStart = 0; // Use values from 0 to 23
// --------------------------------------------------------------------------------------
// Define TFT Display Backlight TimeOut
// --------------------------------------------------------------------------------------
#define SCREENSAVER_TIMEOUT 30 // Timeout for display backlight in minutes (1 to 255). 0 = Always ON
#define USE_BIGCLOCK 1 // Instead of turn off TFT backlight, show a big clock screen. 0= No, 1= Yes
// --------------------------------------------------------------------------------------
// Blink the colon on the TFT Top Clock (a precious waste of time, but some may like it!)
// This setting only has effect when the system is running in normal mode.
// --------------------------------------------------------------------------------------
#define BLINKCOLON 0 // 0= No, 1= Yes
// --------------------------------------------------------------------------------------
// Define data display units
// --------------------------------------------------------------------------------------
#define DATE_TIME_FORMAT 0 // 0 for dd-mm-yyyy, 1 for yyyy/mm/dd
#define TEMP_DISPLAY_UNIT 0 // 0 for ºC, 1 for ºF
#define ATM_DISPLAY_UNIT 0 // 0 for mBar, 1 for inHg
#define RAIN_DISPLAY_UNIT 0 // 0 for mm, 1 for inches
#define WIND_DISPLAY_UNIT 0 // 0 for Km/h, 1 for mph, 2 for m/s, 3 for Knots
// --------------------------------------------------------------------------------------
// Define the type of your Barometric Pressure Sensor
// --------------------------------------------------------------------------------------
#define BAROMETRIC_SENSOR 0 // 0= BME280, 1= BMP280 2= BMP085 / BMP180
// --------------------------------------------------------------------------------------
// Define the type of your inside Temperature / Humidity Sensor
// --------------------------------------------------------------------------------------
#define INSIDE_TH_SENSOR 0 // 0= BME280, 1= HTU21D, 2= SHT21, 3= SHT31
// --------------------------------------------------------------------------------------
// Fine adjusts for Inside Temperature and Barometer
// --------------------------------------------------------------------------------------
const int TemperaturaInt_offset = 0; // Inside Temperature Fine Adjust in Tenths of Degree (-4 = -0,4ºC)
const float pressure_offset = 0; // Pressure Fine Adjust in mB
// --------------------------------------------------------------------------------------
// Define Wind Speed and Wind Gust resolution - Read carefully
// --------------------------------------------------------------------------------------
#define VP2_WIND_RESOLUTION 0 // If set to 2, set Cumulus Wind Speed and Wind Gust multipliers to 0.448. Wind Resolution 0.72 Km/h
// If set to 1, set Cumulus Wind Speed and Wind Gust multipliers to 0.224. Wind Resolution 0.36 Km/h
// WARNING !!!
// Setting this variable to 2 or 1 allows a better wind speed and gust resolution,
// but also limits the maximum readings to 183.6 Km/h and 91.8 Km/h, respectively.
// If set to 0, system uses Standard Davis wind resolution (1 mph or 0.1mph with LOOP2).
// Weather Display users should set this option to 0 - Standard Davis wind resolution
// --------------------------------------------------------------------------------------
// Define use of Wind Gust Spike prevention routines (mostly for FO anemometers)
// --------------------------------------------------------------------------------------
#define WIND_SPIKECONTROL 1 // 0= Disable, 1= Enable
// --------------------------------------------------------------------------------------
// Define the source of your main outside sensors
// --------------------------------------------------------------------------------------
// ---- If you are using just one TX board, the source for all items should be equal to your single TX Unit ID (most likely zero).
// ---- Define the source of your main Temperature / Humidity sensor
#define TH_SOURCE 0 // 0= Temp/Hum sensor connected to TX_Unit 0, 1= for TX_Unit 1, ..., 3 for Auriol RF Temp / Hum
// ---- Define the source of your Main Wind sensor
#define WIND_SOURCE 0 // 0= Wind instruments connected to TX_Unit 0, 1= for TX_Unit 1, ..., 3 for Auriol RF Wind Speed & Dir
// ---- Define the source of your main Rain Gauge
#define RAIN_SOURCE 0 // 0= Rain Gauge connected to TX_Unit 0, 1= for TX_Unit 1, ..., 3 for Auriol RF Rain Gauge
// ---- Define the source of your main Solar Radiation sensor
#define SOLAR_SOURCE 9 // 0= Solar Radiation sensor connected to TX_Unit 0, 1= for TX_Unit1, ..., 9 for not used
// ---- Define the source of your main UV sensor
#define UV_SOURCE 9 // 0= UV sensor connected to TX_Unit 0, 1= for TX_Unit1, ..., 9 for not used
// --------------------------------------------------------------------------------------
// Each TX unit can send data from two Temp / Hum sensors.
// Here you must define which one will be used as your main outside Temperature / Humidity Sensor
// SENSOR_0 can be any of the supported I2C T/H sensors (SHT31, SHT21 or HTU21D), SENSOR_1 can be an SHT1x or DHT22
// --------------------------------------------------------------------------------------
#define MAINOUT_TH_SENSOR 0 // 0 for SENSOR_0, 1 for SENSOR_1
// --------------------------------------------------------------------------------------
// Define the type of your Solar Radiation sensor
// --------------------------------------------------------------------------------------
// 1= Solar Cell "Pyranometer"
// 2= Apogee SP-110 Pyranometer
// 3= Reserved
// 4= Apogee SQ-110: Photosynthetically Active Radiation Sensor (Support for this sensor is experimental)
#define SOLAR_SENSOR 2
// --------------------------------------------------------------------------------------
// Define the type of your UV sensor
// --------------------------------------------------------------------------------------
// 1= UVM-30A
// 2= VEML6075
// 3= Reserved
// 20= Rika RK200-04 (MODBUS)
#define UV_SENSOR 1
const byte UV_Transmission = 65; // UV Transmission percentage of UV sensor cover material.
//---------------------------------------------------------
// Enable / Disable getting Temperature / Humidity from WiFI sensors (Usually the local T/H sensor on Wireless Display units)
//---------------------------------------------------------
#define ENABLE_TH_FROM_WIFISENSORS 0 // 1= Enable, 0= Disable
#define WIFISENSORS_WEBSERVER_PORT 80 // Should be the same port defined as WebServer port on the WiFi Wireless Display units.
// Example: "192.168.1.152"
const char* WIFIunit_address [][4]= { "" // IP address of first WiFi sensor
, "" // IP address of second WiFi sensor
, "" // IP address of third WiFi sensor
, "" // IP address of fourth WiFi sensor
};
// --------------------------------------------------------------------------------------
// Extra Sensors Mapping
// --------------------------------------------------------------------------------------
// ---- Define the source and sensor type (number) for each of the seven extra sensors, insert 9 if not used.
// Sensors SHT31, SHT21 or HTU21D are type 0, sensors SHT1x or DHT22 are type 1
//
// ---- Source 0 means TX unit0, 1 means TX unit1...
// ---- Source 5 is for Temperature/Humidity from the Wireless Display units
// ---- Source 6 (Reserved)
// ---- Source 7 is for BIOS Sensor (Only Temperature is shown)
// ---- Source 8 is for Temperature/Humidity from the Air Quality Monitor
//
// ---- First field = Sensor source, Second field = Sensor type (0 or 1 for TX units)
// ---- Example:
// ---- ES0 ES1 ES2 ES3 ES4 ES5 ES6
//#define EXTRASENSORS_SOURCE { {0,1},{1,1},{5,1},{5,0},{9,9},{9,9},{8,0} }
// {0,1} - First extra sensor (ES0), will be sensor 1 from TX unit0
// {1,1} - Second extra sensor (ES1), will be sensor 1 from TX unit1
// {5,1} - Third extra sensor (ES2), will be T/H data from WiFi Sensor 1 (Wireless Display 1)
// {5,0} - Fourth extra sensor (ES3), will be T/H data from WiFi Sensor 0 (Wireless Display 0)
// {9,9} - Fifth extra sensor (ES4), not use - not mapped
// {9,9} - Sixth extra sensor (ES5), not use - not mapped
// {8,0} - Seventh extra sensor (ES6), will be Temperature / Humidity from the Air Quality Monitor
//
//----- ES0 ES1 ES2 ES3 ES4 ES5 ES6
#define EXTRASENSORS_SOURCE { {9,9},{9,9},{9,9},{9,9},{9,9},{9,9},{8,0} }
// --------------------------------------------------------------------------------------
// Define personalized names for each Extra sensor. Attention, 8 chars maximum
// --------------------------------------------------------------------------------------
// Max. Size [--------]
const char ESname_1[] PROGMEM = ""; // 8 chars max
const char ESname_2[] PROGMEM = ""; // 8 chars max
const char ESname_3[] PROGMEM = ""; // 8 chars max
const char ESname_4[] PROGMEM = ""; // 8 chars max
const char ESname_5[] PROGMEM = ""; // 8 chars max
const char ESname_6[] PROGMEM = ""; // 8 chars max
const char ESname_7[] PROGMEM = "Dust TH"; // 8 chars max
// --------------------------------------------------------------------------------------
// BIOS soil moisture sensor settings
// --------------------------------------------------------------------------------------
// ---- Please use the included BIOS_ID_Scanner sketch to find you BIOS Device ID
#define BIOS_SENSOR_ID 0 // Device ID in HEX format, or 0 not used
// --------------------------------------------------------------------------------------
// Soil / Leaf Interface Settings and Sensors Mapping
// (The mapping logic is the same than used with the Extra Sensors)
// --------------------------------------------------------------------------------------
// 0 = Soil Leaf Interface not used
// 1 = Soil Leaf Interface connected to a TX unit
#define SOIL_LEAF_INTERFACE 0 // 0, 1,
// ---- For Soil & Leaf data from SoilLeaf_Interface wired to a TX unit, use TX Unit number as source
// ---- For BIOS Soil Temp / Moisture use 7 as source
// ---- To disable use 9 in both fields
// S1 S2 S3 S4
#define SOILTEMPSENSORS_SOURCE { {9,9},{9,9},{9,9},{9,9} }
#define LEAFTEMPSENSORS_SOURCE { {9,9},{9,9},{9,9},{9,9} }
#define SOILMOISTSENSORS_SOURCE { {9,9},{9,9},{9,9},{9,9} }
#define LEAFWETSENSORS_SOURCE { {9,9},{9,9},{9,9},{9,9} }
// --------------------------------------------------------------------------------------
// Define personalized names for each Soil and Leaf sensor. Attention, 8 chars maximum
// --------------------------------------------------------------------------------------
// Soil Max. Size [--------]
const char SSname_1[] PROGMEM = "1"; // 8 chars max
const char SSname_2[] PROGMEM = "2"; // 8 chars max
const char SSname_3[] PROGMEM = "3"; // 8 chars max
const char SSname_4[] PROGMEM = "4"; // 8 chars max
// Leaf Max. Size [--------]
const char LSname_1[] PROGMEM = "1"; // 8 chars max
const char LSname_2[] PROGMEM = "2"; // 8 chars max
const char LSname_3[] PROGMEM = "3"; // 8 chars max
const char LSname_4[] PROGMEM = "4"; // 8 chars max
// --------------------------------------------------------------------------------------
// Define VWC calculation method
// --------------------------------------------------------------------------------------
//
// Method 1 applies only for VH400 soil moisture sensor
//
// METHOD 1 - Conversion from voltage to VWC (volumetric water content) is done using the piecewise regressions provided by the manufacturer
// at http://www.vegetronix.com/Products/VH400/VH400-Piecewise-Curve.phtml
//
// METHOD 2 - Used for any sensor which have a linear output between voltage and VWC (0V=0VWC, maxV=100VWC) .
#define VWC_CALCMETHOD 1 // 1 or 2
// --------------------------------------------------------------------------------------
// Define Max and Min output voltage of the analog sensors connected to Soil / Leaf Interface
// --------------------------------------------------------------------------------------
//
// Default value for Decagon Devices LWS Leaf Wetness Sensor (3.3V power): Max. Output Voltage - 1395mV (max wetness), Min Output Voltage - 530mV (dry)
// ADC1 ADC2 ADC3 ADC4
const uint16_t AnalogSensor_MaxVoltOut[4] = { 3000, 1395, 5000, 5000 }; // Values in miliVolts
const uint16_t AnalogSensor_MinVoltOut[4] = { 0, 530, 0, 0 };
// --------------------------------------------------------------------------------------
// Broadcasting Data to Wireless Display Units
// --------------------------------------------------------------------------------------
#define BROADCAST_DATA 2 // 0= Disables Data Broadcast, 1= Broadcast by WiFi, 2= Broadcast by RF
#define UDP_BROADCAST_PORT 9889 // UDP broadcast port - must be the same defined on WiFi Wireless Display units.
// --------------------------------------------------------------------------------------
// Davis compatible Data Logger Settings
// --------------------------------------------------------------------------------------
#define LOGGER_ENABLE 1 // 0= Disable 1= Enable
byte ARCHIVE_PERIOD = 5; // Default Archive Period in Minutes (Usable values: 1, 5, 10, 15, 30)
// --------------------------------------------------------------------------------------
// Define type of your Weather Software
// --------------------------------------------------------------------------------------
#define WEATHERSOFT 1 // 0= CumulusMX, 1= Any other (Cumulus 1, WeewX, Weather Display, etc.)
// --------------------------------------------------------------------------------------
// Easyweather Mode output
// --------------------------------------------------------------------------------------
#define EASYWEATHER_OUT 0 // 0= Disable (defaut) 1= Enable
// --------------------------------------------------------------------------------------
// Enable / Disable WiFi connection
// --------------------------------------------------------------------------------------
#define ENABLE_INTERNET 1 // 1= Enable Internet connection, 0= Disable
// --------------------------------------------------------------------------------------
// Enable / Disable time sync with an NTP server
// --------------------------------------------------------------------------------------
#define ENABLE_NTP 1 // 1= Enable Sync time with NTP servers, 0= Disable
// --------------------------------------------------------------------------------------
// NTP Servers - Enable only one
// --------------------------------------------------------------------------------------
#define TIMESERVER "pool.ntp.org"
//#define TIMESERVER "time.nist.gov" // ntp1.nl.net NTP server
//#define TIMESERVER "80.96.196.58" // timp.mcsi.ro
//#define TIMESERVER "193.79.237.14" // ntp1.nl.net NTP server
// --------------------------------------------------------------------------------------
// Enable / Disable data transmission to Weather Wunderground
// --------------------------------------------------------------------------------------
#define ENABLE_WU_UPLOAD 0 // 1= Enable upload to Wunderground, 0= Disable
#define WU_UPLOAD_INTEMP 0 // 1= Enable upload of Inside Temperature / Humidity, 0= Disable
byte WU_upload_period = 5; // Period in minutes between uploads to WU (Should be >= 3 minutes, if less defaults to 3 minutes)
// --------------------------------------------------------------------------------------
// Enable / Disable data transmission to ThingSpeak
// --------------------------------------------------------------------------------------
#define ENABLE_TS_UPLOAD 0 // 1= Enable, 0= Disable
// --------------------------------------------------------------------------------------
// Air Quality Monitor - Upload and insert data in a SQL table at your own server ----
// Be sure you have already created the database and table. See AirQuality_LogToSQL.php script for info
// --------------------------------------------------------------------------------------
#define ENABLE_AQM_TO_MYSERVER 0 // 1= Enable, 0= Disable
// --------------------------------------------------------------------------------------
// Enable / Disable internal Web Server
// --------------------------------------------------------------------------------------
#define ENABLE_WEBSERVER 0 // 1= Enable 0= Disable
#define WEBSERVER_PORT 80 // WebServer port (default 80)
// --------------------------------------------------------------------------------------
// Enable / Disable GPIO routines - General Purpose Input / Output ports
// --------------------------------------------------------------------------------------
#define USE_GPIO 0 // 0=Disable, 1= Enable
// --------------------------------------------------------------------------------------
// Define display order of data screens on the TFT
// Use sequentially numbers from 1 to 4.
// --------------------------------------------------------------------------------------
#define AirQuality_Data 1
#define TXinfo_Data 2
#define ExtraSensors_Data 3
#define SoilLeaf_Data 4
// --------------------------------------------------------------------------------------
// Test Mode : Never run a live system in test mode
// --------------------------------------------------------------------------------------
bool Test_Mode = false; // false= Normal working mode, true= Test mode only (no logger, no usb connection)
// --------------------------------------------------------------------------------------
// Erase the Data Logger Flash Memory on Factory Reset
// --------------------------------------------------------------------------------------
#define ERASE_DATALOGGER 0 // 0= NO (default), 1= YES
// --------------------------------------------------------------------------------------
// Transmitter Software Version
// --------------------------------------------------------------------------------------
#define TX_SOFTWARE_VERSION 7 // Use main version number only (This setting affects VBat readings)
// Hint: TX software versions released prior to Dec 2018 are all < 7
// *************************************************************************************
// Hardware Settings
// *************************************************************************************
// --------------------------------------------------------------------------------------
// Define PCB Version Number
// --------------------------------------------------------------------------------------
// Take particular attention to this setting.
// Your system may not work properly if you define a wrong pcb version number.
// In case of doubt check what is printed in your pcb.
#define PCB_VERSION 20 // PCB version number, without the decimal point Ex: PCB v1.3 = 13 (integer number)
// --------------------------------------------------------------------------------------
// Define your Display type
// --------------------------------------------------------------------------------------
#define DISPLAY_TYPE 3 // 1= LCD 20x4, 3= TFT 320x240 ILI9341
// --------------------------------------------------------------------------------------
// Define Type of your Touch Panel (Applies only to PCB Versions >= 20)
// --------------------------------------------------------------------------------------
#define TOUCH_TYPE 1 // 3= Default Setting, 1= Setting for displays with the "Yellow Pins"
// --------------------------------------------------------------------------------------
// Define LCD I2C address
// --------------------------------------------------------------------------------------
// Only change this if your LCD don't display any data. I2C_Scanner utility may help you to find the address of your LCD display
// Default address will work most of the times!
#define LCD_ADDRESS 0x27
// --------------------------------------------------------------------------------------
// SHT31 I2C Address - Default address will work most of the times!
// --------------------------------------------------------------------------------------
#define SHT31_ADDRESS 0x44 // Default value is 0x44 which works with the majority of SHT31 modules, however some unusual modules use 0x45. Change if needed.
// --------------------------------------------------------------------------------------
// Presure Sensor Address (no need to change)
// --------------------------------------------------------------------------------------
//#define BMP085_ADDRESS 0x77 // I2C address of BMP085 or BMP180
// --------------------------------------------------------------------------------------
// Debug helper - Print debug messages to serial monitor. For testing purposes ONLY.
//
// !!! NEVER LEAVE ANY OF THESE DEBUG FUNCTIONS ACTIVE WHEN THE STATION IS CONNECTED BY USB TO ANY WEATHER SOFTWARE !!!
// --------------------------------------------------------------------------------------
#define PRINT_DEBUG_WIFI
#define PRINT_DEBUG_NTP_UPDATE // Prints to serial monitor messages related to sync time with NTP server
#define PRINT_DEBUG_WU_UPLOAD // Prints to serial monitor messages related to Weather Underground upload.
#define PRINT_DEBUG_TS_UPLOAD
#define PRINT_DEBUG_MYSERVER_UPLOAD
#define PRINT_DEBUG_VCHECK
#define PRINT_DEBUG_TCP_SERVER
#define PRINT_DEBUG_AURIOL
#define PRINT_DEBUG_BIOS
#define PRINT_DEBUG_RF_MESSAGES
#define PRINT_DEBUG_WIFI_SENSORS
#define PRINT_GENERALDEBUG
// ---------------------------------------------------------------------------------------------------
// End of user configurable options
// ---------------------------------------------------------------------------------------------------
Other than allowing the defines for the debug routines, this is what I have been running so far.