Schmidt Consulting |
Outside Temperature/Humidity logger |
|
|
Tom Schmidt |
12/15/2019 |
This is another WebControl 8 project. It provides real time web reporting of outdoor temperature and humidity as well as min/max temperature for the previous couple of days. |
We have a very old Davis Weather Monitor station with software that updates temperature information on our internal web site. That no longer worked after I upgraded our computers to Windows 10. As much fun as it was having a personal weather station found we never used it for much other than checking overnight low temperature when we were concerned about first frost of the season or just to complain about how cold it was.
I decided to use another WebControl 8 PLC to create a data logger and post the information on our internal web server. That way the information is locally accessible from any networked device. For security reasons have not made the information remotely accessible but it I ever need to do that will set up a VPN.
For real time outdoor and inside temperature/humidity we purchased several ThermPro TP-60 wireless units. They have been very reliable and are pretty cheap. I installed a single transmitter in the weather station radiation shield for accurate reporting and located several displays around the house.
The downside is the lack of easy to use min/max temperature logging and you have to go to one of the indoor units to view temperature and humidity.
I’ve used a bunch of these WebControl 8 programmable logic controllers for other home automation projects so decided to use it as the basis of the temperature logger. Unlike my other projects there is no additional electronics so I was able to use the off the shelf WebControl chassis to house the controller.
The controller is located near our Ethernet switch powered by a 9 volt SMPS wall wart. I used 4-pair Category rated cable to remote the temperature and humidity sensor. Each sensor only needs 3 wires each so I doubled up on grounds.
The temperature sensor is Maxim 18B20 digital sensor and the humidity sensor is an analog Honeywell HIH 4000. Both are readily available on eBay.
The web interface displays today’s min/max temperature and min/max for the previous couple of days. The daily update is done at 6AM to better account for overnight temperature changes. The system sends out a daily email as part of the 6AM update. It also sends an email if the temperature sensor has a hard failure.
For accuracy the temperature sensor must be protected from direct sunlight and surfaces that radiate heat. I used the radiation shield from our old weather station mounted on the north side of a deck post about 12 feet from the west side of the house. The purpose of the radiation shield is to allow the free flow of ambient air while shielding the sensors for direct sunlight.
I attached a 6-postion screw terminal strip to the top of the radiation shield to mount the temperature and humidity sensors.
The shield houses both the WebControl 8 temperature/humidity sensors and the ThermPro wireless transmitter. Having two distinct systems quickly indicates problems.
It is interesting to see how effective the radiation shield is. We have another outdoor temperature sensor used by the greenhouse and mounted on the north facing wall of the house about 30 feet from the radiation shield. It is affected by the thermal mass of the house. During rapid temperature swings the two sensors differ by several degrees.
Radiation shield mounting recommendations:
1. Locate away from fences, buildings, trees or other obstructions that interfere with air flow
2. Install over plants or soil to limit heat radiation
3. Do not install over sprinklers, the shield is not designed to protect from water sprayed upward
4. If attached to building preferred location is on the north side in the Northern Hemisphere.
5. Locate temperature sensor 4-6 above the ground
The WebControl web interface is not very beautiful. One of the items on my to-do list is to write some web server code to integrate all my DIY home automation widgets to make the information easier to read.
I used items I had laying around for this project. If you purchase everything new here is the expected cost.
Item |
Cost |
CAINetworks WebControl 8 |
$37.50 |
WebControl metal chassis |
$15.00 |
6-postion Jones terminal strip |
$2.00 |
Maxim 18B20 Temperature sensor |
$1.00 |
Honeywell HIH 4000 Humidity sensor |
$14.00 |
9V 1A Wall wart |
$5.00 |
AcuRite 06054M Radiation shield |
$21.00 |
Cat 5 cable |
A/R |
|
|
Total |
$95.50 |
Outside Temperature/Humidity Monitor
T. Schmidt
*********** Change Log *********************
11/25/2019 Added another day to temp history log, current day and two
previous as of 6AM standard time. Divided temp by /10 displayed
in VARs to display in full degrees F.
Ordered Honeywell HIH-4000-003 humidity sensor on eBay. Other
then that had all the other parts on hand.
Installed system. Controller located on top of 16-port gig switch.
Sensors installed in Davis Weather radiation used with the old
Davis Weather stuff. Used Cat5e cable, doubled up on grounds
since only 6-conductors are needed. Added aluminum plate on the top
of the shield to attached 6-position Jones screw terminal.
Temp sensor +5V screw terminal does not work, ran temp and
humidity +5 to the humidity terminal block.
11/24/2019 Code start
11/22/2019 Davis Weather Monitor II Ambient Weather web software does not play
nicely with Win 10. The only thing I use the weather station for is
to display min/max outdoor temperature. Plus I don't have the
outdoor humidity sensor module, so cant track outside humidity.
Project based on an old WebControl8 board I pulled from greenhouse
controller. Updated greenhouse WebControl to new hardware with SMPS
so I could increase system voltage to 12V for humidity exhaust fan.
System monitors outdoor temperature and humidity. Sensors are
located in the weather shield I had used for the Davis gear.
Firmware records daily min/max and two previous day's min/max
temperature. At 6AM sends email with the result.
11/22/2019 Project start
*************** PCB Hardware/Firmware version ****************
Hardware: 2.2.2
Firmware: 3.02.17d
Static IP: 192.168.2.109
Customer loop executed every ~50ms (minimal test code)
VAR and RAM initialized to 0 by system at power up
To reset PLC to power up state - update network settings (Send)
RAM location reset to 0 on code upload, VAR not affected
WebControl takes about 400ms to init I/O at power up
Per CAI Support Temp sensors take up to 2 sec to stabilize at power up
Email takes about 1.5 sec to send, no timeout if SMTP server does not respond
TTL inputs have 10k pulldown
Output buffers 10mA per output, 30mA total
A/D 10V full scale 10-bits
9V power consumption:
WebControl board: 120ma (Live Ethernet serving web page)
***************** I/O Defs **********************
Analog Inputs
-------------
AIP1 - not used
AIP2 - not used
AIP3 - not used
Digital Inputs
--------------
IP1 - not used
IP2 - not used
IP3 - not used
IP4 - not used
IP5 - not used
IP6 - not used
IP7 - not used
IP8 - not used
Digital Outputs
---------------
OP1 - not used
OP2 - not used
OP3 - not used
OP4 - not used
OP5 - not used
OP6 - not used
OP7 - not used
OP8 - not used
Temperature Sensors
-------------------
T1 - Outside Temperature
T2 - not used
T3 - not used
T4 - not used
T5 - not used
T6 - not used
T7 - not used
T8 - not used
Temp Sensor status (1 = OK)
------------------
TS1
TS2
TS3
TS4
TS5
TS6
TS7
TS8
Humidity Sensor
---------------
H1 - Outside relative humidity
Email message Identifiers
-------------------------
EM1 - System status (init and temp hard failure)
EM2 - not used
EM3 - not used
EM4 - not used
EM5 - not used
EM6 - not used
EM7 - Morning daily status email (6AM)
EM8 - not used
Variables
--------
VAR1 - System Status: 0 power up, 1 normal, 2 bad temp sensor
VAR2 - Bad temp Sensor state: 0=send email, 1-100 debounce counter, 101=email sent
VAR3 - current day max temperature in degrees F
VAR4 - current day min temperature
VAR5 - previous day max temperature
VAR6 - previous day min temperature
VAR7 - 2nd day max temperature
VAR8 - 2nd day min temperature
RAM
---
RAM1 - T1 Temp /10
RAM2 -
RAM3 -
RAM4 -
RAM5 -
RAM6 -
RAM7 -
RAM8 -
Web constants
------------
UROM1 - not used
UROM2 - not used
UROM3 - not used
UROM4 - not used
**************************************************
PUINIT
Runs once at power up. Delay for temp sensors to stabilize and sets VAR1
status flag =1
OUTTEMP
Fetches current temperature and sets current day min/max. Debounces bad temp
status and sends email if hard failure.
NEWDAY
Sends email at 6AM (std time) with current temp/humidity and min/max value
for previous two days.
******************* Code *************************
START
TSTEQ VAR1 0
CALLSUB PUINIT
CALLSUB OUTTEMP
CALLSUB NEWDAY
DELAY 1000
END
PUINIT:
SET VAR1 1
SET VAR2 100
DELAY 3000
CALLSUB TEMPSTAT
TSTNE VAR2 100
GOTO PUINIT1
DIV T1 10 RAM1
SET VAR3 RAM1
SET VAR4 RAM1
PUINIT1:
EMAIL EM1
RET
OUTTEMP:
CALLSUB TEMPSTAT
TSTNE VAR2 100
RET
DIV T1 10 RAM1
TSTGT RAM1 VAR3
SET VAR3 RAM1
TSTLT RAM1 VAR4
SET VAR4 RAM1
RET
NEWDAY:
TSTNE CH 6
RET
TSTNE CM 0
RET
SET VAR7 VAR5
SET VAR8 VAR6
SET VAR5 VAR3
SET VAR6 VAR4
DIV T1 10 RAM1
SET VAR3 RAM1
SET VAR4 RAM1
EMAIL EM7
NEWDAY1:
TSTEQ CM 0
GOTO NEWDAY1
RET
TEMPSTAT:
TSTEQ VAR2 101
RET
TSTNE TS1 1
GOTO BADTEMP
SET VAR2 100
RET
BADTEMP:
DEC VAR2
TSTNE VAR2 0
RET
SET VAR1 2
SET VAR2 101
EMAIL EM1
RET
******************* End **************************
Parting thoughts
It is nice being able to read outside temperature from any web enabled device at home and observe the min/max readings for the last couple of days.