ThermoHID
For those of you who want to use 1-3 USB TEMPer HID devices (from PCSensor) here you have ThermoHID.
The software is written in Delphi6 - so there is no need for any .NET framework here.
I couldn't find any programs out there, with the features I wanted, so I made my own.
These devices do not have any internal power, and therefore cannot work if they are not connected via a USB port.
Note: It does NOT support the older USB TEMPer devices that use a USB serial port (pre mid-2009)
Example: Device Manager reports the TEMPer Hum device as USB-Serial CH340
If anyone still wants me to incorporate this device then let me know as I now know how to drive it.
The following devices CAN be used:-
The manufacturers seem to change the internal workings of the device (and therefore how to talk to it) from time to time.
Unfortunately, they keep the same case, so it is sometimes impossible to tell which generation of device you have.
The newer devices have Vx.x at the end of the name to try and help distinguish them.
I haven't had time to write a manual for it. Until then, you have the tooltip help sprinkled throughout the program. If you have any difficulty working things out, then let me know, because it probably means that it needs to be put in the manual.
The program uses HidFTDll.dll to read/write to the devices, RDingUSB.dll to read/write to the new TEMPerV1.2 devices, and SonixUSB.dll to read/write to the new TEMPer1K2 devices
The program is currently distributed as freeware
V2.0.1.27 Released 16 Dec 2012
V2.0.1.26 Released 16 Oct 2012
Note: It has come to my attention that the above change has caused ThermoHID to become very slow and unresponsive when you have thousands of points in the chart.
In order to reverse this change please do the following:-
1) In ThermoHID menu, choose Options->Chart->Edit
2) In the Editing window that comes up, choose 'Series' tab on the top row.
3) Then choose 'Marks' tab
4) Then choose 'Style' tab
5) Uncheck 'Visible'
6) From the dropdown box, choose all of your other Series in turn and uncheck 'Visible' for each one.
This will turn off all the labels that you can add to each point.
7) Press 'Close' button to see the results of what you have done.
8) Your chart should now be back to the same as the previous version. You can save it using
File->Save Chart Settings and naming the file as 'default.tee'. This will ensure that these settings are loaded in next time the program is run.
If you want to use labels then just make 'Marks' visible for just the graph (series) that you want to label.
Function Type | Description |
---|---|
Add | 'Add' plots the sum of the inputs |
Average | The Average Function will calculate the average of every group of Period points |
Bollinger | The Bollinger Function uses simple or exponential moving average, to construct Bollinger Trading Bands |
Copy | A direct copy of the input Series |
Curve Fitting | This draws a fitted polynomial through data inputs, using the TypeFitting formula |
Divide | The Divide Function plots inputs, divided in descending order of inclusion |
Exponential Average | Exponential average based on Weight |
Exponential Moving Average | Exponential moving average based on Weight |
Exponential Trend | This draws the best exponential trend line through the points in an input series |
High | The High Function plots the high point of inputs |
Low | The Low Function plots the low point of inputs |
MACD | Moving Average Convergence Divergence |
Momentum | Each Y value is the current point's Y value, minus the last Period point's Y value |
Momentum Division | Each Y value is the current point's Y value, divided by the last Period point's YValue, expressed in percents |
Moving Average | The Moving Average Function will calculate the simple or weighted average of every group of Period points |
Multiply | The Multiply Function plots the value of inputs multiplied together |
Root Mean Square | The Root Mean Square Function plots the RMS value of the inputs |
Relative Strength Index | The RSI Function calculates a percent value, based on financial data. Depending on TRSISyle type a different formula will be used to calculate the RSI value |
Standard Deviation | This maps the Standard Deviation (or Complete Standard Deviation) of every group of Period points |
Stochastic | This gets all points from the Source series, performs a function operation on points, and stores the results in the ParentSeries |
Subtract | This plots the value of inputs subtracted in descending order of inclusion |
Trend | This draws the best trend line through the points of the input Series |
TEMPerV1.2 and TEMPer2V1.1 devices
The DLL does not have a function to enumerate devices (meaning, I don't know how to read multiple devices)
Each device has the ability to store a single calibration/correction value. (ThermoHID has its own table anyway)
My measurements show that they have an internal self-heating of approximately 1->2°C
They have a faster measurement time. Approximately 4 readings per second can be achieved compared with 1 reading every 2 to 3 seconds for the older devices.
Device 'Stickiness'
It is definitely the device that is sometimes reporting incorrect readings (flat spots) and not my software.
I have come to call the problem 'stickiness' as the devices appear to 'stick' at a certain temperature until the
actual temperature moves away sufficiently from the 'sticky' temperature.
The 'stickiness' seems repeatable for a given device although the temperatures at which it may occur
(and there may be several for each device) seem to change depending on each individual device.
If you are lucky, some devices don't seem to suffer from it at all.
It is most apparent if the temperature is rising/falling very slowly over time.
So, when you get to know your device, I think you can trust it except at its 'sticky' temperatures at which,
all you can say, is that the real temperature is somewhere 'around' the flat spot.
I have now (over the years) collected about 10 or 12 of these devices of varying sorts TEMPer, TEMPer1 TEMPer2, TEMPerHUM etc.
and even the most recent ones still suffer from it.
I personally have not got in touch with the Chinese manufacturer about it but I know of several people who have.
As far as I can tell, they have not provided a satisfactory answer or fixed it (mostly they have provided no answer).
There are no configuration files or 'Setup' routine - it should just work when you plug it in and start the program.
The devices are seen as standard 'Human Interface Devices' (HID), and MS Windows 2000 and above should automatically install the required drivers
If you are having difficulty, please try these steps:
1) Put the 'ThermoHID.exe', 'HidFTDll.dll', 'RDingUSB.dll' and 'SonixUSB.dll' in a folder of your choice.
2) Start ThermoHID.exe
3) In the Options -> DLL menu option at the top, look to see if 'DLL Loaded' is greyed out and followed by some long number in brackets.
4) Plug in the device.
5) Ensure that the first button (just below the File menu) shows 'No Devices' if there are none plugged in, or it shows '1 device(s) found' if there is one device plugged in, etc.
6) Go to 'Help-> Debug' and look at the middle box at the bottom, which, when you move the mouse over it, pops up a tooltip saying 'HID Devices Found'. Each TEMPerHID device is found twice. (Sensor and LED)'. Ensure this box contains 'PCsensor Temper' or 'TEMPerV1.2' written twice.
7) Select 'Help->Debug' again to turn off the debug windows.
8) Press 'Read Temp' or 'SimulRead' button to read the device. The device should display the temperature where it initially says 'Temp1'.
If you are using MS Windows 2000, then 'HID.dll' from WinXP is required. This is provided in the downloaded zip.
There is no install/uninstall routine for the program.
If you want to delete it, then first start the program and check 'File->Use Ini File For Settings'
If necessary, untick it and then tick it again.
When you are asked 'Remove Registry Settings?' answer 'Yes'.
Ensure that 'Run when Windows Starts' in the Advanced Tab is unchecked.
The program can now be closed and the contents of the program folder can be deleted.
This may include the following files:-
ThermoHID.exe -> The program
ThermoHID.ini -> The Settings
HidFTDll.dll -> Library for accessing the TEMPerHID devices
RDingUSB.dll -> Library for accessing the new TEMPerHID and Waterproof TEMPerHID devices
SonixUSB.dll -> Library for accessing the new TEMPer1K2 devices
libeay32.dll -> Library for SMTP authentication
ssleay32.dll -> Library for SMTP authentication
InternetTempData_COMPUTERNAME_YYYY_MM.txt -> Internet Temperature Log
TempHIDData_COMPUTERNAME_YYYY_MM.txt -> Temperature Log
TempHIDData.txt -> Temperature Log
TempHIDGraph.jpg -> Graph of Temperature (used for Web Server)
ThermoHID.htm -> Output File to FTP
ThermoHID.txt -> Input File for FTP (Template)
ThermoHIDCal_COMPUTERNAME.cal -> Calibration offsets
SomeName.tee -> Saved chart files. View these with TeeChart Office.
default.tee -> If this file is found then it is loaded at program start up
ThermoHID.log -> Diagnostic log of program actions
ThermoHIDRealTime.txt -> Single line file containing the most recent measurements to be used for further processing.
ThermoHIDRealTime1.png -> Image of device1 current value for other applications e.g. WebcamXP
ThermoHIDRealTime2.png -> Image of device2 current value for other applications e.g. WebcamXP
ThermoHIDRealTime3.png -> Image of device3 current value for other applications e.g. WebcamXP
ThermoHIDEmail.txt -> HTML input file (template) used for building HTML Emails
ThermoHIDEmail.htm -> HTML output file. This is the file that is sent as an email
twitsettings -> Once you have authenticated the program for use with Twitter, the settings are stored here.
SomeLanguage.lng -> These files are the localization different languages. They can be edited if required (Please send your improvements to me)
NTC_10K_1.txt -> This is the calibration file used by older TEMPerNTC device. If it is not found then an internal copy is used.
Has anyone tested these devices for accuracy?
If anyone has done any tests, I would be pleased to know the results.
Results of some accuracy testing on my devices.
The "Cal. Temp" column holds the temperatures for which you have calibrated the device.
If you have calibrated at more temperatures than the two extremes shown by default, you can add rows with 'Edit->Add Row'.
The offset columns show the amount by which the read temperature is adjusted, to give the final "calibrated" temperature.
The offset at other temperatures, will be interpolated between these cardinal points.
Example1: if at 0 deg the offset=4 and at 100 deg the offset= -6 then at 50 deg the reading would be adjusted by -1 deg to show 49 deg
Example2: if your device is constantly overreading by, let's say, 3 deg, then, put in an offset of -3 deg for both -40 deg and 120 deg
Note: Newer devices can hold a single number within a small amount of FLASH within the device itself.
This can be used as a 'quick-and-dirty' temperature correction factor if required.
The program can be downloaded here:
(approx. 2MB)
Previous version (V2.0.1.25)
Right-click the link and choose "Save Target As...". If you need to go back to a previous version for any reason then please tell me so I am aware of any problems.
If you want to use one of the languages below please place the .lng file in the same folder as the program.
Then in ThermoHID, go to Options->Settings. Select the 'Language' Tab. Select your desired language.
If you find any mistakes in the language (.lng) files please edit them with a Unicode editor ( e.g. BabelPad) and email the
I you are willing and able to translate into any other languages then email me and I will supply the file to translate.
(Right click or option-click the link and choose "Save As..." to download this file.)
Russian Language File (updated 6 August 2012)
Japanese Language File (updated 6 August 2012)
Bulgarian Language File (updated 6 August 2012)
Dutch Language File (updated 6 August 2012)
French Language File (updated 6 August 2012)
Portuguese Language File (updated 6 August 2012)
Spanish Language File (updated 6 August 2012)
German Language File (updated 19 November 2012)
Greek Language File (updated 6 August 2012)
Hungarian Language File (updated 17 October 2012)
Polish Language File (updated 6 August 2012)
If you need to get in touch, my email address is in the program 'About' box or Help->Email the Author
In order to use FTP, first make a text file (template) with the HTML code that you would like to present on the destination site.
From the table below, place the codes (inside square brackets) that you wish to use into the HTML file at the appropriate places.
Save the file and reference it in 'Local Destination' on the FTP tab.
An example template suitable for an FTP file template can be downloaded here
Keyword | Example/Comment |
---|---|
[NumActiveDevices] | 1 to 3 |
[TempUnits] | °F or °C or % |
[Popup] | Popup Visible |
[CommentText] | text to write to client web page |
[History=x] | shows x number of history lines |
[RangeText] | 24 hours |
[RefreshLimit] | 1m |
[PageCreateTime] | 3/22/2010 10:51:59 AM |
[CurrentInternetTemperature] | 11 |
[MeasTimeIntenetTemperature] | Last Updated on May 1,8:50 AM BST |
[InternetTemperatureLocation] | Birmingham,UK |
[CurrentInternetHumidity] | 58 |
[InternetActive] | 1 |
[CurrentInternetConditions] | Mostly Cloudy |
[CurrentIconInternetTemperature] | http://icons-ak.wxug.com/i/c/i/nt_partlycloudy.gif |
The following end in a number for each device (1 to 3) | |
[DeviceID1] | Phil's Cubicle |
[CurrentTemperature1] | 75.9 or Temp1 |
[MeasTimeTemperature1] | 3/22/2010 10:51:59 AM |
[UpperAlarmLimit1] | 80 |
[LowerAlarmLimit1] | 70 |
[EitherAlarmState1] | OK or Triggered |
[UpperAlarmState1] | OK or Triggered |
[LowerAlarmState1] | OK or Triggered |
[MinTemperature1] | 68.6 |
[MaxTemperature1] | 82.1 |
[LowTemperature1] | 72.6 |
[AverageTemperature1] | 73.9 |
[HighTemperature1] | 76.7 |
[LastAlarmMeasTime1] | 3/22/2010 10:51:59 AM |
[CurrentHumidity1] | 36.4 |
[DeviceType1] | HidTEMPer1 |
[CurrentExternal1] | 27.1 |
[DeviationAlarm1] | 0.5 |
[DeviationTrace1] | Average |
[CurrentDeviation1] | 0.75 |
[DeviationAlarmState1] | OK or Triggered |
[Dewpoint1] | 7.3 |
[DewAlarmState1] | OK or Triggered |
[DeviceColor1] | Substitutes the HTML code for the color of the sensor |
ThermoHID can be run as a Service under Windows NT/2000/XP/2003/7
See this page for details
Advantages of doing so:
1) ThermoHID will automatically start when Windows starts, even before you log in. That’s helpful for continuous temperature monitoring, even with power interruptions, automatic system restarts, etc.
2) The running program will be invisible, with no icon in the system tray.
The downside is that you’ll need to have everything configured and ready to “run on autopilot.”
Program adjustments are a little more tedious to make since you cannot have the program running both as a service AND running the same EXE from your desktop.
To make a configuration change, you must
1) temporarily stop the service,
2) run ThermoHID.exe manually,
3) make your tweaks,
4) exit the program, and
5) restart the service.
Please be aware that, if you are storing the settings in the registry, then the settings will belong to the user that the service is started under.
If you only want one set of settings available then please ensure that File->Use ini file for settings is ticked.
Screen shot of ThermoHID below.
An example of ThermoHID at work
Copyright Steve Timms 2012
If you find the program useful and would like to say thanks...
TEMPer USB thermometer discussion
PCsensor (The hardware manufacturer)
Other Software to control TEMPer devices (UTAC) by Albert Huntington
ThermoHID discussion forum
Unfortunately this forum seems to be a target for hackers and I don't have time to keep repairing it so please email me as well