[RELEASE] ESPHome: Apollo Automation TEMP-1B Driver

This driver connects your Apollo Automation TEMP-1B sensor directly to your HE hub thanks to the great work done by Jonathan Bradshaw (@jonathanb) - the ESPHome Hubitat Toolkit.

The driver can be installed using the community Hubitat Package Manager app or manually as a Bundle archive from GitHub.

  • :no_entry_sign: No Home Assistant Needed: Direct WiFi connection to your Hubitat hub

  • :no_entry_sign: No YAML Files to Edit: Simple IP address configuration - that's it!

  • :no_entry_sign: No Cloud Dependencies: Everything runs locally on your network

  • :zap: Easy Setup: Install this driver package from HPM (Hubitat Package Manager), connect the device to your WiFi network, configure the IP address in the driver - done.

  • :wrench: Zero Configuration: All device features work out-of-the-box

  • :house: Native Hubitat Integration: Full support for Hubitat automations, dashboards, and apps


Technical Specifications (click to expand)
  • Microcontroller: ESP32 with WiFi and Bluetooth

  • Power: USB 5V or CR123A or 16340 rechargeable battery

  • Battery Life: Up to 6 months with optimized sleep settings

  • Temperature Accuracy: ±0.5°C (probes), ±2°C (onboard sensor)

  • Humidity Accuracy: ±2% RH

  • Operating Range: -40°C to +85°C (-40°F to +185°F)

  • Connectivity: WiFi 802.11 b/g/n, Bluetooth 4.2

  • Dimensions: Compact 3D-printed enclosure

  • Mounting: Optional magnetic mount available

Use Cases (click to expand)

The Apollo Automation TEMP-1B is ideal for:

  • Kitchen Monitoring: Food temperature during cooking and baking

  • Refrigeration: Freezer and refrigerator temperature monitoring

  • Aquarium Management: Water temperature monitoring

  • Pool/Spa Monitoring: Water temperature tracking

  • Greenhouse Monitoring: Air and soil temperature monitoring

  • HVAC Monitoring: Room temperature and humidity tracking

  • Server Room Monitoring: Environmental condition monitoring

Apollo Automation TEMP-1B

TEMP-1B Main Device Apollo TMP-1(B) Features:
• ESP32-based platform with WiFi and Bluetooth connectivity
• Battery-powered operation (CR123A or 16340 rechargeable battery)
• Temperature Range: -40°C to +85°C (-40°F to +185°F)
• Humidity Range: 0-100% RH with ±2% accuracy
• Onboard AHT20-F temperature and humidity sensor
• RGB LED indicator with customizable colors
• Buzzer for temperature alerts
• 3.5mm jack for external probes
• Up to 6 months battery life with sleep mode
Temperature Probe Features:
• DS18B20 waterproof temperature sensor
• Available in 20cm (~8in) and 1.5m (~5ft) lengths
• Flat cable design prevents interference with fridge seals
• Submersible and waterproof construction
• Temperature Range: -55°C to +85°C (-67°F to +185°F)
• ±0.5°C accuracy
• Ideal for freezer, fridge, aquarium, and pool monitoring
Temperature Probe
Food Probe Food Probe Features:
• 1m (~3ft) stainless steel food-safe probe
• NTC temperature sensor
• Temperature Range: -40°C to +204°C (-40°F to +400°F)
• Food-safe stainless steel construction
• Perfect for grilling, baking, and cooking
• Not dishwasher safe
• Real-time temperature monitoring for perfect cooking results

Apollo Automation is a local tech startup building advanced hardware and software in Lexington, KY.

Made for ESPHome

:sparkles:Apollo Automation devices come pre-flashed with ESPHome firmware - just connect your TEMP-1B to your WiFi network and add the device IP address in the Preferences tab of this driver. No additional software, bridges, or complex configurations required.

Driver Description

Major Attributes

The Apollo Automation TEMP-1B driver provides comprehensive monitoring and control capabilities with a dozen of available attributes. For everyday use, the driver displays only the essential attributes by default, keeping your device interface clean and focused. Advanced users can enable additional diagnostic attributes through the preferences when needed.

Current States

Main Attributes

  • temperature: Primary temperature reading based on selected probe preference
  • humidity: Relative humidity from onboard AHT20-F sensor (0-100% RH)
  • networkStatus: Connection status ['connecting', 'online', 'offline']
  • rgbLight: RGB LED control ['on', 'off']

Advanced Attributes

These advanced attributes, disabled by default, provide additional insights and control for power users seeking enhanced functionality.

Complete Attribute List (click to expand)
Attribute Type Description
temperature number Primary temperature reading (°C/°F)
humidity number Relative humidity percentage
networkStatus enum Device connection status
rgbLight enum RGB LED control
battery number Battery charge level (0-100%)
batteryVoltage number Battery voltage measurement
boardTemperature number Internal board temperature
boardTemperatureOffset number Board temperature calibration offset
boardHumidityOffset number Board humidity calibration offset
espTemperature number ESP32 chip temperature
temperatureProbe number External temperature probe reading
tempProbeOffset number Temperature probe calibration offset
foodProbe number Food probe temperature reading
foodProbeOffset number Food probe calibration offset
uptime string Device uptime since last restart
rssi number WiFi signal strength (dBm)
alarmOutsideTempRange enum Temperature range alarm status
notifyOnlyOutsideTempDifference enum Temperature difference notification
preventSleep enum Sleep prevention control
selectedProbe string Active temperature probe selection
sleepDuration number Sleep duration in hours
probeTempDifferenceThreshold number Temperature difference threshold
minProbeTemp number Minimum probe temperature threshold
maxProbeTemp number Maximum probe temperature threshold

Advanced Attributes


Commands

Commands

initialize()

  • Establishes connection to the device and starts monitoring. Automatically called during device setup or manually from device commands.

refresh()

  • Refreshes device information and clears cached data. Manually refresh device status and request updated information from the device.

setRgbLight()

  • Purpose: Control the RGB LED indicator
  • Parameters: value: LED state ['off', 'on']
  • Usage: setRgbLight('on') or setRgbLight('off')

Preferences

Preferences

Basic Settings

Setting Default Description
logEnable false Enable debug logging for troubleshooting
txtEnable true Enable descriptive text logging
ipAddress (required) Device IP address for ESPHome API connection
selectedProbe 'Temperature' Select primary temperature sensor ['Temperature', 'Food']
boardHumidityOffset 0.0 Board humidity calibration offset (-50% to +50%)

Advanced Options

Setting Default Description
password (optional) Device password if required
diagnosticsReporting false Enable reporting of diagnostic attributes
logWarnEnable true Enable warning and info logging

More info on this driver

Driver Features & Technical Details (click to expand)

The driver is a work in progress. uses an intelligent entity management system that:

  • Automatically discovers all available ESPHome entities

  • Maps entities to appropriate Hubitat attributes

  • Handles missing entities gracefully (device variants may not have all sensors)

  • Provides diagnostic control - technical attributes can be hidden from main device view

  • Supports calibration - offset values sync between Hubitat preferences and ESPHome

Temperature Handling

The driver provides flexible temperature management:

  • Dual Temperature Sources: Choose between Temperature Probe and Food Probe

  • Automatic Unit Conversion: Converts between Celsius and Fahrenheit based on hub settings

  • Calibration Support: Individual offset adjustments for each temperature sensor

  • Sleep Mode Compatibility: Optimized for battery-powered operation with sleep cycles

Battery Management

For battery-powered TEMP-1B devices:

  • Battery Level Monitoring: Real-time battery percentage

  • Voltage Monitoring: Actual battery voltage for detailed analysis

  • Sleep Mode Support: Configurable sleep duration to extend battery life

  • Prevent Sleep Option: Keep device awake for continuous monitoring when needed

Network Monitoring

  • Connection Status: Real-time online/offline status

  • Signal Strength: WiFi RSSI monitoring

  • Automatic Reconnection: Built-in ESPHome API reconnection logic

Diagnostic Features

When diagnostic reporting is enabled:

  • ESP32 Monitoring: Internal chip temperature and performance

  • Uptime Tracking: Device restart and reliability monitoring

  • Configuration Access: View the advanced device settings

  • Calibration Values: View all sensor offset parameters

Alert System

The device supports customizable alerts:

  • Temperature Range Alarms: Configurable min/max temperature thresholds (not implemented in this driver)

  • Visual Indicators: RGB LED with customizable colors (only on/off is implemented in the driver)

  • Audible Alerts: Onboard buzzer for critical notifications (not tested)

  • Notification Controls: Flexible alert configuration options (not implemented in the driver and not tested)

Temperature Monitoring Graph

(Generated using the HE inbuilt webCoRE Graphs).


13 Likes

Reserved

1 Like

Thank you for making this available. I recently purchased the TEMP-1 probe to monitor my freezer. I have it installed with a temperature probe and it works fine, as long as I activate advanced settings and then Enable Diagnostic Attributes. If I do NOT enable the diagnostic attributes, I only receive humidity reports. While it works when they are enabled, I am also receiving lots of reports I don't need. Is there a way to get the probe temperature without enabling diagnostic attributes? In all cases, the unit says it is sending temperature probe data (looking at the log it displays on it's web interface page).

Thank you!

I spent the last several days trying to get the temperature to report with Diagnostic Attributes not enabled. Of course, shortly after posting my question above, I found that changing line 106 in the ESPHome Apollo TEMP-1(B) driver from:

'temperature_probe': [attr: 'temperatureProbe', isDiag: true, type: 'temperature', description: 'Primary external temperature probe reading'],

to:

'temperature_probe': [attr: 'temperatureProbe', isDiag: false, type: 'temperature', description: 'Primary external temperature probe reading'],

Seems to fix my problem. If this is not a wise change, please let me know!

Thank you!

1 Like

Thank you for catching this bug :lady_beetle: in the code, and yes, your fix is the correct one!

I will include it in the next driver update.

If you have any proposals for improvements in this driver , don’t hesitate to share your ideas.


Update 09/28/25: The fix is included in the "ESPHomeApolloAutomationDrivers" bundle version 1.0.3

Thanks! It's been working great!

1 Like

Hate to dredge up an old thread, but felt it was better than starting a new one. I've just gotten my Temp1 and I got it connected to wifi. I used HPM to install the ESPHome Apollo driver. My device logs show that the driver configuration has been updated to 1.0.2 09/28/2025 9:14 AM (C-8 2.4.3.164). But I'm not getting any temp readings and the events show it is constantly connecting and then timing out. Forgive me, I'm not very well versed with this stuff and may be overlooking something completely obvious. Thanks for your help

Have you set the correct local IP address in the Preferences tab?
This is mine :

If your TEMP-1 sensor is connected successfuly to your WiFi network, you should be able to open the device web page from a browser :

well I thought I had the IP address in correctly, but I guess not. I wasn't able to log into the device web page like you suggested so I knew it wasn't. I was able to find it in the list of devices on my router and updated and now its working! I just had the wrong IP. Do I need to make a DHCP IP reservation so it doesn't change in the future.
Thank you for your help

1 Like

Yes, creating a DHCP reservation for the TEMP-1 sensor on your router will ensure the IP address remains the same after device reboots.

Hello,

I've been using this driver with an Apollo TEMP-1 in my Chest Freezer with great results! Thanks for creating it!

I just received a second TEMP-1 sensor which I plan on using to monitor my Refrigerator/Freezer (I have two probes for it--one for the refrigerator compartment and one for the freezer). However, I am having difficulty getting it into Hubitat (I can use my browser to go to the sensor's IP, which is reserved, and see all values fine). However, Hubitat doesn't read it properly. It gets some data, but not all and has many errors in the logs (see below).

First, did I include it properly? In order to get a second instance of the driver, I selected "Add Device", then "Virtual Device" (since the other options were Zigbee, Z-Wave, and MAtter), then selected the ESPHome Apollo TEMP-1(B) driver. I then went in to the preferences of the device and entered the correct IP.

Logs for the new device:

What am I doing wrong! Thanks!

Hi @rewilson42 , I've reviewed the code and found a problem in the refresh() method. Will post the fix tomorrow, when I will have the chance to test the changes. Do not click on the Refresh() button for now ....

Will the device work if you click on the Initialize() button? Also, does it respond to Ping() commands?

Thank you for looking at this.

Clicking on Initialize doesn't help. Network Status says "Connecting" but no results. HE Logs:

When I access the device via it's address from my browser, the status window says the HE connects, but then disconnects about 30 seconds later with an error:

07:33:51 [D] [api:161] Accept 192.168.xx.xx
07:33:51 [D] [binary_sensor:041] 'Online': New state is ON
07:33:52 [D] [api.connection:1386] Hubitat Wilson Hub (192.168.xx.xx) connected
07:33:57 [W] [Apollo:031] Preventing Deep Sleep Due To OTA Or Switch
07:34:10 [D] [sensor:133] 'Board Temperature': Sending state 26.09863 °C with 2 decimals of accuracy
07:34:10 [D] [sensor:133] 'Board Humidity': Sending state 27.90222 % with 2 decimals of accuracy
07:34:11 [D] [sensor:133] 'Uptime': Sending state 44402.78906 s with 0 decimals of accuracy
07:34:11 [D] [sensor:133] 'ESP Temperature': Sending state 30.10000 °C with 1 decimals of accuracy
07:34:11 [D] [dallas.temp.sensor:054] 'Temperature Probe 2': Got Temperature=-16.4°C
07:34:11 [D] [sensor:133] 'Temperature Probe 2': Sending state -16.43750 °C with 1 decimals of accuracy
07:34:13 [D] [dallas.temp.sensor:054] 'Temperature Probe': Got Temperature=6.9°C
07:34:13 [D] [sensor:133] 'Temperature Probe': Sending state 6.87500 °C with 1 decimals of accuracy
07:34:14 [D] [sensor:133] 'RSSI': Sending state -47.00000 dBm with 0 decimals of accuracy
07:34:22 [D] [api.connection:256] Hubitat Wilson Hub (192.168.xx.xx) disconnected
07:34:22 [W] [api.connection:1889] Hubitat Wilson Hub (192.168.xx.xx): Reading failed CONNECTION_CLOSED errno=128
07:34:22 [D] [binary_sensor:041] 'Online': New state is OFF

Here are the logs after a ping:

However, it did populate the Current States section on the Commands page. The State Variables section remains mostly empty. It appears that it is not properly querying the device capabilities.

Also, when it did load some data, I only received one Temperature probe value. I have two probes attached. How do I get the second one?

Thanks, again!

Just uploaded "ESPHome Apollo Automation Drivers" Bundle version 1.0.4 :

  • bugfix: null-safe exception handling;
  • bugfix in checkDriverVersion;
  • refresh() does not delete state anymore;
  • commented out duplicated advancedOptions

I see some other items for fixes/improvements, but let's first see if the exceptions will go away.

Do you have two temperature probes, connected to the device via a splitter?

Thanks!

I've updated the driver to 1.0.4. I'm still seeing the " Reading failed CONNECTION_CLOSED errno=128" message on the device web page with HE disconnecting about 30 seconds after connecting). Ever since I did the ping earlier, I am getting temperatures periodically, but not consistently. I'm only getting the first probe. I can send logs, but they're large. Any actions you want me to take first (then send the logs that result)?

As far as probes, I have two temp probes (one short and one long--NOT the food probe). They are attached to the splitter from Apollo Automations (it allows for up to four probes). The temp I do get periodically is the probe in the refrigerator compartment, not the one in the freezer compartment (which is the more important one for me!).

Again, let me know what you need and I'll try to get it to you. Also, thank you for your efforts!

Here is the most recent log for the device. It shows an attempt to get temp probe 2 and still multiple retries of one message.

The connection problem is most probably related to this change in ESPHOME API - your device has API version 1.13, while mine has version 1.10 .... and I don't know how to update mine... (yet).

I have an idea what to do next (my copy of espHomeApiHelper library needs to be updated), will notify you when done (hopefully will have the time during the weekend).

My original TEMP-1, which I have been using for a while now to monitor my basement freezer, is API version 1.12. I only have one probe on that one.

It is the new one that has two probes and is API version 1.13.

Thanks for your help. I'll be patient!

1 Like

I added two lines to your driver and was able to access Temperature Probe 2.

I added after line 59:
attribute 'temperatureProbe2', 'number' // Add this line

and after original line 112 (line 113 after adding the above):
'temperature_probe_2': [attr: 'temperatureProbe2', isDiag: false, type: 'temperature', description: 'Secondary external temperature probe reading'],

This is letting me access both probes and act on them. However, I am still getting the:
ESPHome sending message type #3 (x retries left)
and
ESPHome message type #3 retry count exceeded
messages in the HE logs for the device.

I also con't to see:
|21:35:00|[W]|[api.connection:1889]|Hubitat Wilson Hub (192.168.xx.xx): Reading failed CONNECTION_CLOSED errno=128|
messages in the device web page.

I don't see any of those messages for my other TEMP-1 unit, just this new one.

However, at least I am getting temp readings for both probes now.

1 Like

Please update the bundle to version 1.0.5 2026-03-26 :

  • added temperatureProbe2 (tnx @rewilson42);
  • using API_HELPER_VERSION 3.0.0 (community version 1.3)

Fingers crossed the connectivity retry errors are fixed! :crossed_fingers: