Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5

4pro RX keeps silent, no comm with CMX anymore.
#1

Dear all,
i had a working setup with a 4proRX that receives one TX with 2 T/H sensors (1 Rain- and 1 FakeWind-Sensor (4,7kOhm inserted)) and one AQMIII configured as Indoor Airlink Sensor. The RX communicated with a CumulusMX on a RPI via tttyUSB0. this test-setup was running for nearly 2 month now. but i ran in serious problems.

what happend?
i uploaded the latest sketch (v6.3_b008) for the RX via arduino (IDE 1.8.19) and boardmanager 2.0.14 ESP32. 
my guess is, that accidently i had "Erase all flash before sketch upload" activated. but i don´t really know it.
after the upload the spiffs was empty, fonts and pictures were gone. letters on the display were very little.
everything else seemed to function, sensors were received, and data were displayed correctly. but the communication with cumulusMX was gone. 
the latest error section of cumulusMX shows a long list of "WakeVP: *** VP2 Not woken"

next try: connected the 4proRX directly to the LinuxMint notebook with arduino IDE and did a fresh sketch-upload with "Erase flash" before. After successful upload, i transferred the complete "data" folder to SPIFFS  via ESP32 Sketch Data  Upload Tool


 i checked everything. is the correct USB connection in use (yes it is /dev/ttyUSB0 connected to cp210x)
when i reboot the rpi - restart cumulusMX, whats the output of Log:

2026-07-25 11:30:51 - WakeVP: *** VP2 Not woken
2026-07-25 11:30:47 - GetArchiveData: No Ack in response to DMPAFT, giving up
2026-07-25 11:30:47 - GetArchiveData: No Ack in response to DMPAFT
2026-07-25 11:30:45 - GetArchiveData: Unable to wake VP
2026-07-25 11:30:45 - WakeVP: *** VP2 Not woken
2026-07-25 11:30:41 - GetArchiveData: No Ack in response to DMPAFT
2026-07-25 11:30:39 - GetArchiveData: Unable to wake VP
2026-07-25 11:30:39 - WakeVP: *** VP2 Not woken
2026-07-25 11:30:35 - WakeVP: *** VP2 Not woken
2026-07-25 11:30:31 - GetArchiveData: No Ack in response to DMPAFT, giving up
2026-07-25 11:30:31 - GetArchiveData: No Ack in response to DMPAFT
2026-07-25 11:30:29 - GetArchiveData: Unable to wake VP
2026-07-25 11:30:29 - WakeVP: *** VP2 Not woken
2026-07-25 11:30:25 - GetArchiveData: No Ack in response to DMPAFT
2026-07-25 11:30:23 - GetArchiveData: Unable to wake VP
2026-07-25 11:30:23 - WakeVP: *** VP2 Not woken
2026-07-25 11:30:19 - WakeVP: *** VP2 Not woken
2026-07-25 11:30:15 - Console clock: Failed to read console time
2026-07-25 11:30:15 - getTime: Expected 8 bytes, got 0
2026-07-25 11:30:15 - WakeVP: *** VP2 Not woken
2026-07-25 11:30:10 - WakeVP: *** VP2 Not woken
2026-07-25 11:30:06 - Unable to determine the firmware version, LOOP2 may not be supported
2026-07-25 11:30:06 - WakeVP: *** VP2 Not woken
2026-07-25 11:30:02 - WakeVP: *** VP2 Not woken
2026-07-25 11:29:52 - You are not running the latest version of Cumulus MX, Version 5.1.5  - Build 5012 is available.




[Image: image.png]

My next guess was, that i changed something in config.h, but i can´t find a bug. Pls find the config.h attached below. I did further investigation with direct usb connection and debug mode to see the comm. in Serial.Monitor of the IDE. I even did a debug-session with directly connected RX to the Notebook and Serial Monitor. If there´s interest, i´ll post the outcome here too.

Conclusio until now
So while sensor readings are displayed on the WD pro4RX, it seems to me, that the communication with cumulusMX in Davis Mode is completly gone. cumulusMX dashboard keeps empty with 0° and zero time. But there´s one interesting part: the AQMIII readings are displayed in CMX -> Extra Sensors -> Airlink Sensors. 

Thanks in advance, and greetings from Austria.  Rolleyes


Code:
// --------------------------------------------------------------------------------------
//  WeatherDuino 4Pro Dual Band RF Receiver - Version: 4PESP32_RX_v6.3_b008
//                  Start of user configurable options
// --------------------------------------------------------------------------------------
//  If you need help about any of the user configurable settings, please first do a search
//  at the WeatherDuino support forum. If you don't find any relevant info, then post
//  a new thread.
//
//
//        >>>   DON'T FORGET THIS   <<<
//  If you are programing a device for the first time,
//  please upload the fonts and icons to SPIFFS memory,
//  using the "ESP32 Sketch Data Upload" menu option in the IDE.
//
//  To add this option follow instructions here:
//  https://github.com/me-no-dev/arduino-esp32fs-plugin
//  or just copy to your Sketchbook location (on Windows, usually C:\Users\xxxxxx\Documents\Arduino)
//  the full tools directory, included in the WeatherDuino 4Pro Dual Band receiver software package (look in utilities folder).
//
//  Close the IDE and open again to see the new menu option.
//
//  Unless clearly indicated, uploading data to SPIFFS memory only needs to be done 1 time.
//  On regular software upgrades, or when reprogramming there is no need to re-upload the graphics and fonts to the SPIFFS memory.


// *******************************************
// *  User configurable settings start here  *
// *******************************************

// --------------------------------------------------------------------------------------
//   Define Name and URL for this weather station
//   This data will be used to list your Weather Station on the WeatherDuino Online Weather Station Map
// --------------------------------------------------------------------------------------
const char* WeatherStation_Name = "Leobendorf";      // DON'T LEAVE EMPTY - Put here your Weather Station name or Location name
const char* WeatherStation_URL  = "http://wetter.papaerde.at";      // OPTIONAL - 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 device ID for this specific unit
//   Use a simple and short name to identify this unit.
//   IMPORTANT: No spaces or special chars. 
// --------------------------------------------------------------------------------------
const char* Device_Name = "LeoWXbase";  // Define a unique ID for each unit (used to identify unit for OTA upload) - DON'T LEAVE EMPTY


// --------------------------------------------------------------------------------------
//   Define Radio Mode
// --------------------------------------------------------------------------------------
#define RADIO_MODE  0      // 0= RFM95 868MHz, 1= Dual Mode, 2= OOK 433Mhz


// --------------------------------------------------------------------------------------
//   Define type of LoRa radio module
// --------------------------------------------------------------------------------------
#define LORA_FREQUENCY  0   // 0= Europe (868Mhz), 1= Australia & USA (915Mhz)


// --------------------------------------------------------------------------------------
//   Define Station Connection Mode - USB or TCP
// --------------------------------------------------------------------------------------
#define CON_MODE    0      // 0= USB, 1= TCP

#define TCP_PORT    22222  // Davis default TCP/IP port: 22222


// --------------------------------------------------------------------------------------
//   Define your Weather Station location
//
//     >>> THIS SETTING IS VERY IMPORTANT! <<<
//
//   The more precise you define your location, the more accurate will be the 4 Days Forecast.
//   Use decimal format for Latitude and Longitude with at least 4 decimal places (preferably 5)
//   LATITUDE:  90.00000 to -90.00000 (negative for Southern hemisphere)
//   LONGITUDE: 180.000 to -180.000 (negative for West)
// --------------------------------------------------------------------------------------
#define LATITUDE      48.380782    // Put here your Station Latitude (up to 5 decimal places, don't use less than 4 decimal places)
#define LONGITUDE     16.324375    // Put here your Station Longitude (up to 5 decimal places, don't use less than 4 decimal places)
#define ELEVATION     190         // Put here your Station height above sea level in Meters (no decimal places)


// --------------------------------------------------------------------------------------
//   Define Timezone and rules for auto Summer Time clock adjust
//
//   System can use POSIX standard format, or a simpler format.
//   Choose and set the one you prefer
// --------------------------------------------------------------------------------------
// Examples:
// In North American Eastern Standard Time (EST) and Eastern Daylight Time (EDT), the normal offset from UTC is 5 hours.
// Since this is west of the prime meridian, the sign is positive (+5 = 5).
// Summer time begins on March’s second Sunday at 2:00am, and ends on November’s first Sunday at 2:00am.
//       TZ_info = "EST+5EDT,M3.2.0/2,M11.1.0/2"
//
// Western Greenland Time (WGT) and Western Greenland Summer Time (WGST) are 3 hours behind UTC in the winter.
// Its clocks follow the European Union rules of springing forward by one hour on March’s last Sunday at 01:00 UTC (-02:00 local time)
// and falling back on October’s last Sunday at 01:00 UTC (-01:00 local time). 
//       TZ_info = "WGT3WGST,M3.5.0/-2,M10.5.0/-1"

//const char* TZ_info = "GMT0BST,M3.5.0/01,M10.5.0/02";                   // --> British Time Zone
const char* TZ_info = "CEST-1CET,M3.2.0/2:00:00,M11.1.0/2:00:00";       // --> Germany Time Zone
//const char* TZ_info = "CET-1CEST,M3.5.0/2,M10.5.0/3";                   // --> France Timezone
//const char* TZ_info = "AZOT1AZOST,M3.5.0/01:00:00,M10.5.0/02:00:00";    // --> Açores, Portugal Time Zone
//const char* TZ_info = "AEST-10AEDT,M10.1.0,M4.1.0/3";                   // --> Camberra Australia
//const char* TZ_info = "NZST-12NZDT,M9.5.0/2,M4.1.0/3";                  // --> New Zealand Time Zone

//const char* TZ_info = "WET0WEST,M3.5.0/01:00:00,M10.5.0/02:00:00";        // --> Portugal Time Zone

const long gmtOffset_sec      = 0;
const int  daylightOffset_sec = 3600;

#define TIMEZONE_DEFTYPE 0    // 0= POSIX, 1= Simple GMT Offset and Summer Time Offset

// --------------------------------------------------------------------------------------
//   Prefered NTP Server - Enable only one
// --------------------------------------------------------------------------------------
#define TIMESERVER "pool.ntp.org"
//#define TIMESERVER "europe.pool.ntp.org"
//#define TIMESERVER "time.nist.gov"                 // ntp1.nl.net NTP server


// --------------------------------------------------------------------------------------
//   Define User Interface Language
// --------------------------------------------------------------------------------------     
// Change the language code according to your preference.
// Currently available languages: en_GB, fr_FR, de_DE, pt_PT, es_ES, cs_CZ, nl_NL, it_IT, pl_PL                           

#define de_DE


// --------------------------------------------------------------------------------------
//   Define Roll Over Hour for Meteorological Day
// --------------------------------------------------------------------------------------
const uint8_t MeteoDay_HStart = 0;    // Use values from 0 to 23


// --------------------------------------------------------------------------------------
//   Define Screen Saver Settings
//  
//   After the time defined, the screen will turn to a big clock with minimal weather info on bottom.
//   Alternatively, you can set the screen saver to run a slide show of up to five of your favorite pictures.
//   Pictures should be 320x240 pixels in JPG format (try make them smaller than 20KB). File names should be as 0.jpg, 1.jpg and so on.
//   Place your pictures at "data/mypics".
//
//   Enever the Big Clock screen is active, you always can activate the Picture Slide show, by just touching on the top left of the screen.
// --------------------------------------------------------------------------------------
#define SCREENSAVER_TIMEOUT     5      // Timeout for screen saver in minutes (1 to 255). 0 = Always ON
#define SCREENSAVER_MODE         1      // 0= Backlight OFF, 1= Show a Big Clock, 2= Slideshow
   
// --------------------------------------------------------------------------------------
//   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


// --------------------------------------------------------------------------------------
//   Fine adjusts for Inside Temperature and Barometer
// --------------------------------------------------------------------------------------
const int16_t 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


// --------------------------------------------------------------------------------------
//   Fine adjusts for TX Batery Voltage
//   First value is for TX_0, second for TX_1 and so on
// --------------------------------------------------------------------------------------
const int16_t TXBatVolt_offset [4] = {0, 1, 0, 0};   // Fine Adjust in Tenths of Volt (Ex: -4 = -0,4V)


// --------------------------------------------------------------------------------------
//   Define Wind Speed and Wind Gust resolution
// --------------------------------------------------------------------------------------
// This setting only have effect when the software is used in Davis VP emulation mode
#define VP2_WIND_RESOLUTION     2    // 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 1 allows a better wind speed and gust resolution,
                                     // but also limits both of them, to a maximum reading of just 91.8 Km/h
                                     // 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
// ---- Define the source of your main Air Quality sensor
#define AQ_SOURCE       0  // 0= AQM Unit 0, 1= AQM Unit 1, 9 for not used


// --------------------------------------------------------------------------------------
//   ADVANCED SETTING - Blocked TX Units
//   All data from blocked TX Units, no matter the Station_ID,  will be rejected.
//   Each bit corresponds to a TX_Unit number. Bit 0 means TX Unit0, bit 1 TX Unit1 and so on, up to TX Unit3
//   Putting a Bit to zero (0) forbids the corresponding TX Unit
// --------------------------------------------------------------------------------------
const byte Blocked_TX = B1111;            // Default = B1111


// --------------------------------------------------------------------------------------
//   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     1  


// --------------------------------------------------------------------------------------
//   Define the type of your UV sensor
// --------------------------------------------------------------------------------------
//                       1= UVM-30A
//                       2= VEML6075
//                       3= Reserved
//                      20= Rika RK200-04 (MODBUS)

#define UV_SENSOR        1
const uint8_t UV_Transmission = 65;    // UV Transmission percentage of UV sensor cover material. 


// --------------------------------------------------------------------------------------
//   If you are receiving Air Quality data from an AQM-II unit, then the settings bellow MUST match the settings defined on the AQM-II
//   If you are receiving Air Quality data from and AQM-III unit, then the settings below can be chosen independently of the settings defined on the AQM-III
// --------------------------------------------------------------------------------------
#define AQI_STANDARD   1   //  0= USA (AQI-EPA), 1= EUROPE (EAQI), 2= UK (DAQI), 3= AUSTRALIA (AQC - NSW)
#define AQ_AVGMODE     1   //  1= 1 Hour Average, 2= 3 Hours Average, 3= Nowcast 12H, 4= 24 Hours Average


//---------------------------------------------------------
//    Enable / Disable getting data WiFI sensors
//    This can be data from the T/H sensor installed on the Wireless Display units,
//    and/or T/H plus AQM data from one (just one) Air Quality Monitor (version III or II).
//    If present, system can identify which one is an Air Quality Monitor, using the AQM device name defined bellow.
//    Define the WiFi devices sequentially, first device, second device, and so on up to four.
//---------------------------------------------------------
#define GETDATA_FROM_WIFISENSORS       0                         // 1= Enable, 0= Disable
#define WIFISENSORS_WEBSERVER_PORT    80                         // WebServer Port defined on WD units (should be equal in all units)


const char* WIFIunit_address [][4]= { ""            // IP address of first WiFi sensor (Ex: 192.168.1.122)
                                    , ""            // IP address of second WiFi sensor
                                    , ""            // IP address of third WiFi sensor                 
                                    , ""            // IP address of fourth WiFi sensor
                                    };

//------------------------------------------------------------------------------------------
//    Enable / Disable getting Air Quality Data by WiFI instead of RF.
//    IP address of the AQM should be included in list above
//    In this case AQM sensor should be mapped to an availabe position
//    on the extra-sensors table, always using code 8 as Source, and 0 as unit (Ex: {8,0}).
//    See Mapping options and examples below.
//
//    WeatherDuino can handle Air Quality data from just one AQM sensor,
//    however can receive Temp / Hum data from a second or third AQM unit.
//    They are treated as Wireless Display units, and should be mapped with code 5,
//    and the number corresponding to the order of the defined IP address.
//-----------------------------------------------------------------------------------------
#define GETAQM_FROM_WIFI  0                 // 0= No (means get it by RF if available), 1= Yes
const char* AQM_DeviceName = "My-AQM";     // This must be the same name used for Device_ID on the Config_Options of the AQ Monitor software


// --------------------------------------------------------------------------------------
//   Extra Sensors Settings and 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 SPECIAL. For getting data (not only Temperature/Humidity) from the Air Quality Monitor, no matter received by RF or WiFi, source 8 MUST be defined at any desired position.
//
// ---- First field = Sensor source, Second field = Sensor number
// ---- For the Sensor number use the following rules: 0 or 1 for sensor 0 or sensor 1 on TX units,
// ----                                                0 to 3* for T/H data from WiFi Wireless Display units,
// ----                                                always 0 for Temp. / Hum. from AQM units.
// ----
// ---- *Number is given by definition order of units IP Address, done above: First IP Address is unit 0, second IP Address is unit 1 and so on.
//
// ---- Example:
// ----                          ES0   ES1   ES2   ES3   ES4   ES5   ES6    
//#define EXTRASENSORS_SOURCE { {0,1},{1,1},{9,9},{5,0},{5,1},{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
//               {9,9} - Third extra sensor (ES2), not used - not mapped
//               {5,0} - Fourth extra sensor (ES3), will be T/H data from the first WiFi Sensor defined at WIFIunit_address (first IP address)
//               {5,1} - Fifth extra sensor (ES3), will be T/H data from the second WiFi Sensor defined at WIFIunit_address (second IP address)
//               {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 { {0,1},{9,9},{9,9},{9,9},{9,9},{9,9},{8,0} }  // Defaut Config - No Extra Sensors mapped}


// --------------------------------------------------------------------------------------
//   Define personalized names for each Extra Sensors. Attention, maximum 12 chars
// --------------------------------------------------------------------------------------
//                       [- Max. Size ] 
//                       [- 12 chars -]
const char ESname_1[]  = "Bodentemp.";  
const char ESname_2[]  = "";
const char ESname_3[]  = "";
const char ESname_4[]  = ""; 
const char ESname_5[]  = "";
const char ESname_6[]  = "";
const char ESname_7[]  = "AQ Sensor";


// --------------------------------------------------------------------------------------
//   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, maximum 12 chars
// --------------------------------------------------------------------------------------
//                       [- Max. Size ] 
//                       [- 12 chars -]
const char SSname_1[]  = "";
const char SSname_2[]  = "";     
const char SSname_3[]  = "";    
const char SSname_4[]  = "";

//                       [- Max. Size ] 
//                       [- 12 chars -]
const char LSname_1[]  = ""; 
const char LSname_2[]  = "";
const char LSname_3[]  = ""; 
const char LSname_4[]  = "";


// --------------------------------------------------------------------------------------
//   Define type of your Soil Moisture probe
//
//   Type 1  - Applies only for VH400 soil moisture probes
//             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
//
//   Type 2  - Used for any sensor which have a linear output between voltage and VWC (0V=0VWC, maxV=100VWC)
// --------------------------------------------------------------------------------------
#define SOILMOISTURE_PROBE_TYPE     1      

// Soil Moisture probes supported by WeatherDuino provide output in VWC. There isn't a direct conversion from VWC to cb !!!
// So, bear in mind that the conversion procedure we are currently using is valid (while always an approximation) just on part of the measurement range.
#define SOILMOISTURE_OUTPUT_UNIT    0     // 0= 0 to 100% VWC (Volumetric Water Content), 1 = 200 to 0 cb (Soil Moisture Tension)

// 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 };


// --------------------------------------------------------------------------------------
//   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


// --------------------------------------------------------------------------------------
//   Deprecated! Enable only if you really know what you are doing.
//   Output data in Easyweather format data
// --------------------------------------------------------------------------------------
#define EASYWEATHER_OUT  0   // 0= Disable (defaut) 1= Enable


// --------------------------------------------------------------------------------------
//   Data Logger Settings (Davis compatible)
// --------------------------------------------------------------------------------------
#define LOGGER_ENABLE      1   // 0= Disable 1= Enable
uint8_t ARCHIVE_PERIOD  =  5;  // Default Archive Period in Minutes (Usable values: 1, 5, 10, 15, 30)

  // --------------------------------------------------------------------------------------
  //   Send the whole content of the logger when no match record was found?
  //   Cumulus users may prefer NO, so the default option is NO.
  // --------------------------------------------------------------------------------------
#define SEND_WHOLE_DATALOGGER  0   // 0= NO, 1= YES

  // --------------------------------------------------------------------------------------
  //   Erase the Data Logger Flash Memory on Factory Reset 
  // --------------------------------------------------------------------------------------
#define ERASE_DATALOGGER   0      // 0= NO, 1= YES


// --------------------------------------------------------------------------------------
//   Enable / Disable WiFi connection
// --------------------------------------------------------------------------------------
#define ENABLE_WIFI     1                            // 1= Enable WiFi connection, 0= Disable


// --------------------------------------------------------------------------------------
//   Broadcasting data to Wireless Display Units using WiFi
// --------------------------------------------------------------------------------------
#define BROADCAST_DATA      0                        // 0= Disables Data Relay, 1= Enables Data Relay
#define UDP_BROADCAST_PORT  9889                     // Define the UPD broadcast port


// --------------------------------------------------------------------------------------
//   Enable / Disable send data 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 >= 4 minutes) 


// --------------------------------------------------------------------------------------
//   Enable / Disable send data to WeatherCloud
//   ATTENTION - You can only change the default 10 minutes interval, if you have an WeatherCloud Pro or Premium account
// --------------------------------------------------------------------------------------
#define ENABLE_WC_UPLOAD   0                         // 1= Enable upload to WeatherCloud, 0= Disable
#define WC_UPLOAD_INTEMP   0                         // 1= Enable upload of Inside Temperature / Humidity, 0= Disable
byte    WC_upload_period = 10;                       // Period in minutes between uploads to WC (Default for free and PLUS accounts is 10 minutes)


// --------------------------------------------------------------------------------------
//   Enable / Disable Air Quality send data to ThingSpeak
// --------------------------------------------------------------------------------------
#define ENABLE_TS_UPLOAD   0                         // 1= Enable, 0= Disable


// --------------------------------------------------------------------------------------
// Enable / Disable Air Quality send data to 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      1                       // 1= Enable 0= Disable
#define WEBSERVER_PORT       80                       // WebServer port (default 80) 


//---------------------------------------------------------
//    Enable / Disable getting the 12 Hours Forecast from OpenWeather
//    IMPORTANT: Sign up for an account at Open Weather to get your free API Key,
//               then put it in Credentials.h
//---------------------------------------------------------
#define ENABLE_FORECAST  1       // 1= Enable, 0= Disable


// --------------------------------------------------------------------------------------
//   Define data screens order
//   Use numbers from 1 to 5 to define a personalized order for the data screens
// --------------------------------------------------------------------------------------
#define AIRQUALITY_DATA    1
#define SYSINFO_DATA       2
#define EXTRASENSORS_DATA  3
#define SOILLEAF_DATA      4
#define FORECAST_DATA      5

// --------------------------------------------------------------------------------------
//   Test Mode : Never run a live system in test mode
// --------------------------------------------------------------------------------------
bool Test_Mode = false;    // false= Normal working mode, true= Test mode only (no usb connection)

                                 

/*************************************************************************************
     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   32   // PCB version number, without the decimal point Ex: 1.3 = 13 (integer number)


// --------------------------------------------------------------------------------------
//   Define Display type
// --------------------------------------------------------------------------------------
//   If your display is show inverted colors please chose type 2 (applies only for units supplied after August 2025).

#define DISPLAY_TYPE  1    //  1= TFT 3.2, 2= IPS 3.2


// --------------------------------------------------------------------------------------
//   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_SYNCTIME            // Prints to serial monitor messages related to sync system time
//#define PRINT_DEBUG_WU_UPLOAD           // Prints to serial monitor messages related to Weather Underground upload.
//#define PRINT_DEBUG_WC_UPLOAD
//#define PRINT_DEBUG_TS_UPLOAD
//#define PRINT_DEBUG_MYSERVER_UPLOAD
//#define PRINT_DEBUG_VCHECK
//#define PRINT_DEBUG_AURIOL
//#define PRINT_DEBUG_BIOS
//#define PRINT_DEBUG_RF_MESSAGES
//#define PRINT_DEBUG_WIFI_SENSORS_DEF
//#define PRINT_DEBUG_WIFI_SENSORS
//#define PRINT_GENERALDEBUG
//#define PRINT_DEBUG_FORECAST
//#define PRINT_DEBUG_LOGGER

// ---------------------------------------------------------------------------------------------------
//     End of user configurable options
//     There isn't any editable setting below this point.
// ---------------------------------------------------------------------------------------------------

#ifdef pt_PT
  #include "data/lang/pt_PT_UTF8.h"
#endif
#ifdef en_GB
  #include "data/lang/en_GB_UTF8.h"
#endif
#ifdef fr_FR
  #include "data/lang/fr_FR_UTF8.h"
#endif
#ifdef de_DE
  #include "data/lang/de_DE_UTF8.h"
#endif
#ifdef es_ES
  #include "data/lang/es_ES_UTF8.h"
#endif
#ifdef cs_CZ
  #include "data/lang/cs_CZ_UTF8.h"
#endif
#ifdef nl_NL
  #include "data/lang/nl_NL_UTF8.h"
#endif
#ifdef it_IT
  #include "data/lang/it_IT_UTF8.h"
#endif
#ifdef pl_PL
  #include "data/lang/pl_PL_UTF8.h"
#endif
Reply


Messages In This Thread
4pro RX keeps silent, no comm with CMX anymore. - by PapaErde - 25-07-2026, 12:08
RE: 4pro RX keeps silent, no comm with CMX anymore. - by PapaErde - 27-07-2026, 11:14
RE: 4pro RX keeps silent, no comm with CMX anymore. - by PapaErde - 29-07-2026, 15:49



Users browsing this thread: 1 Guest(s)