How to Build a WeatherRack3 – No Moving Parts – Weather Station

How to Build a WeatherRack3 – No Moving Parts – Weather Station

SwitchDoc Labs has built a new weather station and software with the WeatherRack3, a new generation no-moving parts 7 in 1 sensor.   We are building a solar powered box around the WeatherRack3 that will keep the sensor running for long periods of time (even with out sun – love those large capacity lead acid batteries).   It’s a similar solar power system to SolarMAX2 (designed to run Raspberry Pi 4B systems) but with a much simpler controller because we don’t need nearly as much power as the Raspberry Pi 4B takes (don’t forget the high startup current on the Pi4!).  the WeatherRack3 uses about 1.3W, so we can have a much smaller solar panel (30W) and simpler control system.

WeatherRack3
WeatherRack3 Sensors

The WeatherRack System features:

  • New NO MOVING PARTS Weather Sensor.  It measures:

– Air Temperature
– Air Humidity
– Air Pressure
– Rainfall (Optical)
– Noise
– Air Quality
– Wind Speed (Ultrasonic)
– Wind Direction (Ultrasonic)

    • 433MHz communication fromWeatherRack3 to Raspberry Pi
    • Compatible with the WeatherSense products (Lightning, Radiation, etc.)
    • Solar Powered (panel included)
    • Solar controller and Mini Pro Plus included (all that good solar data!)
    • Permanent, non changing SERIAL NUMBER (Yea!!!)

We transmit all the information from the WeatherRack3 using the rtl_433 library (the SwitchDoc Fork).  Devices 154 and 155.   We have two devices defined, one for the Weather Data and one for all the Solar Power data.   The solar power controller we are using at the moment is a Renogy 10A Solar Power controller.  We have decoded the information from the RS232 port ion the Renogy using our Arduino Mini Pro Plus board and then we transmit a subset of the information via 433MHz to the Raspberry Pi (running an SDR and the SDL_Pi_WeatherSense software.

WeatherRack3 System Wiring Pictures

For more information on the MC4 Plugs and how you put them together, refer to the SolarMAX2 Assembly and Test Guide:

https://www.switchdoc.com/wp-content/uploads/2021/09/SolarMax2AssemblyAndOperation1.1.pdf

Parts List

NO 12V Battery included

Buy on Amazon:

12V 7ah Battery – https://amzn.to/3Dcsb8u 

or

12V 10ah Battery – https://amzn.to/3D96kPh

Don’t Want to Order All This Stuff?

For a limited time only (limited to stock on hand) you can buy a partially assembled entire kit (w/o hookup wire or battery) here.

https://shop.switchdoc.com/products/weatherrack3-sensor-package

Downloads

WeatherSense Software

https://github.com/switchdoclabs/SDL_Pi_WeatherSense

SwitchDoc Labs rtl_433 Software

https://github.com/switchdoclabs/rtl_433

Software for the Mini Grove Plus

https://github.com/switchdoclabs/SDL_Arduino_WeatherSenseWR3

Manual for Ultrasonic Weather Station – With Modbus Addresses

Ultrasonic Weather Station Manual

Renogy Manual including Modbus Addresses

Renogy-Rover Modbus Manual

RJ12 Renogy Cable Notes

Easiest way to do this cable is buy an assembled one and cut it in half.   Note wire positions and colors.  Your colors may be different.

 

Note only the first three lines are used in the RJ12 connector.  See our end below of this cable that plugs into the Renogy.   Note colors and compare above.  Your cable must match the connectivity, but your colors may be different.

 

 

Wiring Guide Pictures

The Utility Board

Bare board before pin soldering.

With Pins soldered in.  Note the three pin screw down terminals on top.  You can just solder the wires in or buy these connectors at:  ( https://www.digikey.com/en/products/detail/w%C3%BCrth-elektronik/691214110003/2508517 )

WeatherRack3

Fully Populated Boards

 

Wiring Pictures

WeatherRack3

 

WeatherRack3

Your WeatherRack3 ID Number

You can find that by looking at the serial output from the Mini Pro Plus board or by looking at the JSON messages from the unit.  You will see it as deviceid in the JSON message.

You can find the message ID in the serial debugging output (in Hex) as below (Unit ID: 0xCA50):

11:56:26.761 -> 
11:56:26.761 -> 
11:56:26.761 -> >>>>>>>>>><<<<<<<<< 11:56:26.761 -> WeatherSense WeatherRack3 / Renogy Controller
11:56:26.761 -> >>>>>>>>>><<<<<<<<< 11:56:26.761 -> Software Version:8
11:56:26.761 -> FreeMemory=767
11:56:26.957 -> Send Renogy Command Address=0x0
11:56:26.957 -> Sending ModChecksum=6000
11:56:26.957 -> Sending Message
11:56:27.088 -> myRenogySerial.available()=0
11:56:27.088 -> _len=0
11:56:27.579 -> Send Renogy Command Address=0x0
11:56:27.579 -> Sending ModChecksum=6000
11:56:27.579 -> Sending Message
11:56:27.676 -> myRenogySerial.available()=0
11:56:27.676 -> _len=0
11:56:27.677 -> Send Renogy Command Address=0x10A
11:56:27.708 -> Sending ModChecksum=69F4
11:56:27.708 -> Sending Message
11:56:27.806 -> myRenogySerial.available()=0
11:56:27.806 -> _len=0
11:56:28.298 -> Send Renogy Command Address=0x10A
11:56:28.298 -> Sending ModChecksum=69F4
11:56:28.298 -> Sending Message
11:56:28.396 -> myRenogySerial.available()=0
11:56:28.396 -> _len=0
11:56:30.422 -> Writing MessageCount=0
11:56:30.422 -> MessageCount=0
11:56:30.422 -> Writing myID=CA50
11:56:30.422 -> Unit ID: 0xCA50

 

WeatherRack3 Output

 

Here are the two JSON messages (output from the SDL rtl_433 Library) and the definitions of the values:

First the Weather Data Message:

{"time" : "2022-12-18 13:19:53", "model" : "SwitchDoc Labs WeatherRack3", "len" : 37, "messageid" : 30039, "deviceid" : 15727, "protocolversion" : 1, "softwareversion" : 0, "weathersenseprotocol" : 20, "windspeed" : 0, "windforce" : 0, "winddirectiondegrees" : 0, "humidity" : 750, "temperature" : -12, "noise" : 412, "PM2_5" : 7, "PM10" : 8, "pressure" : 937, "hwlux" : 0, "lwlux" : 7612, "lightvalue20W" : 76, "rain" : 0, "mic" : "CRC"}

– time: Time of receipt on local machine – time zone is what is on local machine
– model: model name
– len: Message length
– messageid: unique message ID from WR3
– deviceid: unique serial number of WR3
– protocolversion: version of the WeatherSense Protocol
– softwareversion: version of the SDL_Arudino_WeatherSenseWR3 software
– weathersenseprotocol: WeatherSense Protocol Number
– windspeed: meters/second * 10
– windforce: wind force level
– winddirectiondegrees: wind direction in degrees – N is 0 degrees
– humidity: % relative humidity * 10
– temperature: celcius * 10
– noise: dbm (?) * 10
– PM2_5: 2.5um particulate count – air quality
– PM10: 10um particulate count – air quality
– pressure: Kpa absolute value * 10
– hwlux: High 16 bit value of Lux
– lwlux: Low 16 bit value of Lux
– lightvalue20W: lux / 100 (used for when lux > 32 bits as in really bright sunlight)
– rain: mm * 10
– mic: CRC – What is used for message validation

Then the WeatherRack3 Solar Power Message:

{"time" : "2022-12-18 13:20:34", "model" : "SwitchDoc Labs WR3 Power Message", "len" : 53, "messageid" : 30040, "deviceid" : 15727, "protocolversion" : 1, "softwareversion" : 0, "weathersenseprotocol" : 21, "batterycapacity" : 51, "batteryvoltage" : 12.100, "batterychargecurrent" : 0.240, "loadvoltage" : 12.100, "loadcurrent" : 0.110, "solarpanelvoltage" : 12.700, "solarpanelcurrent" : 0.150, "Min_Battery_Voltage_Today_Volts" : 12.100, "Max_Charge_Current_Today_Amps" : 0.600, "Max_Discharge_Current_Today_Amps" : 0.130, "Charge_Amp_Hrs_Today_Amp_Hours" : 1.000, "Discharge_Amp_Hrs_Today_Amp_Hours " : 2.000, "Charge_Watt_Hrs_Today_Watt_Hours" : 12.000, "Discharge_Watt_Hrs_Today_Watt_Hours" : 12.000, "Controller_Uptime_Days" : 0, "Total_Battery_Over_Charges_Count" : 0, "Total_Battery_Full_Charges_Count" : 0, "Controller_Type" : 2560, "wakecount" : 1650, "auxa" : 0, "solarpresent" : 0, "WR3BoardPresent" : 0, "justbooted" : 0, "lowbattery" : 0, "mic" : "CRC"}


– time: Time of receipt on local machine – time zone is what is on local machine
– model: model name
– len: Message length
– messageid: unique message ID from WR3
– deviceid: unique serial number of WR3
– protocolversion: version of the WeatherSense Protocol
– softwareversion: version of the SDL_Arudino_WeatherSenseWR3 software
– weathersenseprotocol: WeatherSense Protocol Number
– batterycapacity : % of capacity that the battery is charged
– batteryvoltage : Current voltage o the battery (V)
– batterychargecurrent : Amount that the battery is being charged in Amps (Note: If you battery is currently being discharged, it will be zero)
– loadvoltage : Voltage of the Load terminals
– loadcurrent : Current going to the load (A)
– solarpanelvoltage : Current voltage on the solar panels
– solarpanelcurrent : Amount of current from the solar panels
– Min_Battery_Voltage_Today_Volts : Lows battery voltage in past 24 hours
– Max_Charge_Current_Today_Amps : maximum charge current in past 24 hours in Amps
– Max_Discharge_Current_Today_Amps : maximum discharge current from the battery in past 24 hours in Ampls
– Charge_Amp_Hrs_Today_Amp_Hours : Number of AmpHours charged in past 24 hours
– Discharge_Amp_Hrs_Today_Amp_Hours : Number of AmpHours discharged in past 24 hours
– Charge_Watt_Hrs_Today_Watt_Hours : Number of Watt Hours charged in past 24 hours
– Discharge_Watt_Hrs_Today_Watt_Hours : Number of Watt Hours discharged in past 24 hours
– Controller_Uptime_Days : Number of days the controller has been on
– Total_Battery_Over_Charges_Count : Total count of Over charges of Battery
– Total_Battery_Full_Charges_Count : Total count of the number of times the battery has been fully charged
– Controller_Type : 2560 – Renogy 10A Wanderer
– wakecount : Number of times the Mini Pro Processor has been awakened. Only reset to zero if the processor has rebooted
– auxa : Additional information – will be defined later
– solarpresent :Additional information – will be defined later
– WR3BoardPresent :Additional information – will be defined later
– justbooted : 1 if just booted
– lowbattery : Additional information – will be defined later
– mic : CRC – What is used for message validation

Next up we will be discussing the MODBUS interface to the Renogy Wanderer RS232 port and also the MODBUS interface to the WeatherRack3 sensor.