ThermoHID

Features
Version History
To Add a Function Series to the Chart
Known Problems
Useful Stuff
Observations
To Get the device working
To Delete the Program
Accuracy of the Device
Calibration of the Device
Downloading
FTP Help
Running as a Service
Screenshots
Donations
Useful links
Discussion Forum
Bug Reporting

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

  • HidTEMPer (without external probe)
  • HidTEMPer1 (with external probe)
  • HidTEMPer2 (internal and external probe)
  • HidTEMPer2V1.1 (internal and external probe. New)
  • HidTEMPerHUM (internal and relative humidity)
  • HidTEMPerHUMV1.0 (internal and relative humidity. New)
  • HidTEMPerNTC (internal and external probe)
  • HidTEMPerNTCII (internal and two external probes. ThermoHID currently only supports one probe)
  • HidTEMPer (gold) (without external probe, waterproof shell)
  • HidTEMPerV1.2 (without external probe. New)
  • HidTEMPer1K2 (internal and K-Type thermocouple. New)

    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.

    Features

  • MS Windows 2000/XP/Vista/7 (32bit and 64bit)
  • Integration of up to three HID Devices, in one chart
  • Support for the HID devices: TEMPer, TEMPer1, TEMPer2, TEMPerHUM, TEMPerNTC, TEMPerV1.2, TEMPer (gold), TEMPer1K2, TEMPerHUMV1.0 and TEMPer2V1.1
  • Display in Celsius or Fahrenheit
  • Relative Humidity display (requires HID TEMPerHUM and/or Internet connection)
  • Upper and lower alarms for each device
  • Adjustable monitoring interval
  • To store automatically the data to disk
  • Automatic graphing
  • To email on alarm condition
  • To start a program on alarm condition
  • To play a sound on alarm condition
  • To send an SMS (Text) on alarm condition
  • To upload data to FTP, when the device is measured
  • Web Server for current temperatures and graph (with optional alarm sound)
  • Live zoom and automatic scroll of graph
  • Display of the maximum and minimum temperatures
  • Adjustable live view of the most recent readings
  • Graphical display of the difference of two temperatures
  • To send the temperature's data to URL, to add to a database, etc.
  • To read the current temperatures of your location (or any other location) from Weather Underground (Internet Connection Required)
  • Alarm on relative differences between two devices
  • Show day/night indication on the chart
  • Devices can be corrected for inaccuracy, over many points.(calibrated)
  • The alarm for when the calculated dewpoint is reached (only TEMPerHUM)
  • Alarms can be inhibited at certain times of the day/night.
  • The alarm can be set for deviation from the current value of a function. E.g. average of device1.
  • Multi Language Support
  • Run as a Service
  • To send a Tweet to Twitter on alarm condition
  • To send an Instant Message (chat) to Skype on alarm condition
  • Allows addition of external data from a file to be added to the chart (e.g. heater on/off etc.)
  • Alarm can control USB mains switch

    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

    TODO (Things that are on my list to do)

  • User Manual
  • New version supporting up to eight of any TEMPer device.

    The program is currently distributed as freeware

    Version History:

    V2.0.1.27 Released 16 Dec 2012

  • Added: Can now use *new* Weather Underground API for Internet Weather.
    Unfortunately I now have a combined (i.e. from ALL users) 'free' request limit of 500/day so I have limited readings to once/hour
    The older WUI Internet Temperature is currently still usable but may become obsolete (deprecated) at any time.
  • Fixed: Bug in TEMPer2F1.1 raw data conversion routine when temperature was just below zero degrees C.
  • Added: [CurrentIconInternetTemperature] to FTP commands to display the current Internet weather icon.
  • Fixed: (Hopefully) Occasional occurence of 'List Index out of bounds' when using External file import.
  • Fixed: (Hopefully) Problems with Twitter Authentication now Twitter uses mandatory gzip compression.

    V2.0.1.26 Released 16 Oct 2012

  • Fixed: Bug in data load routine for some devices if decimal separator is not period(.)
  • Added: Ability to name (i.e. label) points on a series. Click on a point to name it. (Note: These Labels are not saved to disk)

    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.

    Older Version History

    To Add a Function Series to the Chart

    In the Chart Editor, (ThermoHID menu Options->Chart->Edit)
    On the first tab (named "Chart"), select the Add... button to add a new Series to the Chart. In the TeeChart Gallery, choose the Line Series and press the 'OK' button
    Press the 'Title' button and rename the series as required.
    Select the 'Series' tab on the top row of tabs
    Ensure that the new function series is selected in the drop down list
    Select the 'General' tab
    In the 'Horizontal Axis' box, ensure that 'DateTime' is checked
    In the 'Vertical Axis' box, select 'Left' for TEMPerHUM devices, or 'Right' for all the other devices
    Click the 'Data Source' tab, and choose 'Function' from the drop down box
    In the 'Functions:' drop down box, select the Function that you require, e.g. 'Exp.Mov.Avrg.' (see the description below)
    Click the 'Source Series' tab, and choose the graph(s) to use from the 'Available:' list.
    When you have selected the ones you want,then press '>' to move it/them to the 'Selected' list.
    In the 'Options' tab choose the required options e.g. calculate Exp.Mov.Avrg. every 10 points.
    Click the 'Close' button when you have finished.

    Function Types

    Function TypeDescription
    Add'Add' plots the sum of the inputs
    AverageThe Average Function will calculate the average of every group of Period points
    BollingerThe Bollinger Function uses simple or exponential moving average, to construct Bollinger Trading Bands
    CopyA direct copy of the input Series
    Curve FittingThis draws a fitted polynomial through data inputs, using the TypeFitting formula
    DivideThe Divide Function plots inputs, divided in descending order of inclusion
    Exponential AverageExponential average based on Weight
    Exponential Moving AverageExponential moving average based on Weight
    Exponential TrendThis draws the best exponential trend line through the points in an input series
    HighThe High Function plots the high point of inputs
    LowThe Low Function plots the low point of inputs
    MACDMoving Average Convergence Divergence
    MomentumEach Y value is the current point's Y value, minus the last Period point's Y value
    Momentum DivisionEach Y value is the current point's Y value, divided by the last Period point's YValue, expressed in percents
    Moving AverageThe Moving Average Function will calculate the simple or weighted average of every group of Period points
    MultiplyThe Multiply Function plots the value of inputs multiplied together
    Root Mean SquareThe Root Mean Square Function plots the RMS value of the inputs
    Relative Strength IndexThe 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 DeviationThis maps the Standard Deviation (or Complete Standard Deviation) of every group of Period points
    StochasticThis gets all points from the Source series, performs a function operation on points, and stores the results in the ParentSeries
    SubtractThis plots the value of inputs subtracted in descending order of inclusion
    TrendThis draws the best trend line through the points of the input Series

    Known Problems:

  • Using the 'SimulRead' button (Simultaneous Read) makes the program unresponsive for the duration of the measurement time.
  • Any email Settings using Verizon, do not work.
  • Only one new type TEMPerV1.2, TEMPer2V1.1, TEMPer1K2 or TEMPerHUMV1.0 can be used.
  • The 'Read Temp' button does not work with the new type TEMPerV1.2, TEMPer2V1.1, TEMPer1K2 and TEMPerHUMV1.0 devices (Use 'SimulRead' instead).
  • The new type TEMPerV1.2, TEMPer2V1.1, TEMPer1K2 and TEMPerHUMV1.0 devices and older devices cannot be mixed.

    A Solution:

    Some of these problems are being addressed in a new program designed to handle a mix of up to eight of all the newer type devices.
    This includes TEMPerV1.2, TEMPer2V1.1, TEMPer1K2 or TEMPerHUMV1.0
    This program is not a modification of ThermoHID but designed from the ground up to cope with the new TEMPerNTC which has one internal and two external sensors per device.
    I am just conducting some more testing and then I will make it available here very soon.
    If you have any features that you would like to see incorporated then please let me know.

    Useful Stuff:

  • If the data is copied to the clipboard and pasted into MS Excel, then, format the date/time column as Custom dd/mm/yyyy hh:mm:ss
  • Right-click the temperature display to set the precision (number of decimal digits to display)
  • The 'Read every' checkbox will act upon the last pressed button 'ReadTemp' or 'SimulRead'
  • You can change the names of the devices by pressing Options->Chart->Edit, and then hilighting the device that you want to rename and clicking the 'Title...' button.
  • You may need to switch on the countdown message for Firefox and MSIE7, if you want to update it in the Status Bar of the client's Web Browser. (For instructions see the web page source in the client's Web Browser).
  • 'Send to URL' currently sends to the URL: 'device' (1,2 or 3), 'sensor' (t or h), 'temp' (the temperature or relative humidity) and 'type' (C, F or %).
  • Click and drag on the Alarm display area, to break it off and reposition it, if the screen resolution is small.
  • If you have proxy issues, then you can try and uncheck Help->'Use Indy for Internet'. (It uses the MSIE internet settings i.e. WinInet).
  • Relative Alarms will only work once per trigger (They currently don't use 'Single Shot' nor 'Latch' checkbox).
  • The small red dot next to each temperature/humidity display, denotes that it is 'calibrated'. (The hint shows by how much).
  • If a chart (*.tee file) is found called 'default.tee', it will be loaded on the program 'startup'.
  • If you would like to view or edit chart (*.tee) files then you can use TeeChart Office.
  • Please only delete series that YOU create. The program will crash if you try to delete the series that it came with.


    To use the 'image' with WebcamXP (written for V5.5.0.8):-
    In ThermoHID, go to Options->Settings
    Choose the 'URL' tab.
    In the section called 'Real Time Images' you will see an image for each device that you have connected.
    Right-click on the image to change the settings (Font color, background coloe etc.) to whatever you like.

    In WebcamXP,
    On the left side of the screen, click the 'Monitor' button
    In the 'Source Selection' section click on the 'Overlay Editor'
    Click on the fourth button from the left (Hint says 'Local Image')
    Click in the camera image and browse to the 'ThermoHIDRealTimeX.png'
    Double-click on the png file you have just loaded and tick 'Transparent' in the 'File' tab
    In the 'Auto-refresh' box enter the number of milliseconds to refresh the image.
    Click 'OK'
    Drag the png to where you would like it and press 'OK'.

    Observations

    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).

    Example of 'stickiness' of TEMPer1 using TemperV23.5 software from the manufacturer's website (PCSensor).

    Example of 'stickiness' of TEMPer1 from ThermoHID

    To Get the device working

    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.

    To Delete the Program

    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.

    Accuracy of the Device

    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.

    Calibration of the Device

    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.

    Downloading

    The program can be downloaded here:

    V2.0.1.27

    (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 new file to me and I will put it on the website.
    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

    Web Help for keywords that can be used in the FTP file template, Email Subject Line and Run Program parameters

    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

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

    See my own Latest FTP files

    Running As A Service

    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.

    Screenshots

    Screen shot of ThermoHID below.

    An example of ThermoHID at work

    Copyright Steve Timms 2012

    Donations

    If you find the program useful and would like to say thanks...

    Acceptance Mark

    Useful links:

    TEMPer USB thermometer discussion

    PCsensor (The hardware manufacturer)

    Other Software to control TEMPer devices (UTAC) by Albert Huntington

    Branch of the original UTAC project by Björn Böttcher and Albert Huntington (developed by Ramon Smits)

    free counters

    Post a Comment

    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

    ThermoHID bug reports