An unofficial Home Assistant custom integration for pairing with, monitoring, and controlling June ovens. It communicates directly with June's cloud as a paired companion—no Homebridge, Apple HomeKit, June account login, or extracted app credentials required.
Warning
This integration can start a real heating appliance remotely. Begin testing at a low temperature with the oven attended and unobstructed. Verify that Turn off works before creating any automation that starts cooking.
Important
This project uses an unofficial, reverse-engineered cloud API. June or Weber may change or discontinue the service without notice. The software and protocol checks pass, but broader physical-oven validation is still needed.
- Features
- Requirements and limitations
- Installation
- Pairing the oven
- Configuration
- Entities and controls
- Automations
- Troubleshooting
- Diagnostics, privacy, and security
- Removing the integration
- Development and contributing
- Support the project
- Provenance and license
- Native Home Assistant config flow with an eight-digit oven pairing code.
- Climate entity with current temperature, target temperature, on/off, and cook-mode presets.
- Connectivity, preheat-ready, and cook-done binary sensors.
- Food-probe temperature and cook-progress sensors.
- Interior-camera snapshots while the oven is cooking.
- Live WebSocket telemetry with a periodic cloud-status fallback.
- Signed command acknowledgements, automatic token renewal, and reconnects.
- Multiple ovens by adding the integration once per oven.
- Downloadable diagnostics with credentials and camera URLs redacted.
| Requirement | Details |
|---|---|
| Home Assistant | Version 2025.1 or newer |
| Oven | A June oven connected to Wi-Fi and June's cloud |
| Network | Outbound internet access from Home Assistant |
| Pairing access | Physical access to the oven's Connect screen |
| Distribution | HACS custom repository or manual installation |
This is a cloud-push integration, not local-LAN control. If June's cloud, the oven's internet connection, or Home Assistant's internet connection is unavailable, monitoring and control will be unavailable.
Additional behavior to know:
- Target temperatures range from 100 °F to 500 °F in 5 °F steps.
- Supported cook presets are Bake, Roast, Broil, Air fry, and Toast.
- Changing the temperature or cook mode during an active cook cancels and restarts that cook because the oven does not reliably apply those changes in place.
- The camera is June's native still-image feed, approximately one frame per second while cooking. It is not continuous video or recording.
- The integration does not expose June's guided recipes or food-recognition features.
HACS is not bundled with Home Assistant. If needed, install and configure it using the official HACS instructions.
Use the button below and follow the prompt:
Or add it manually:
- Open HACS in the Home Assistant sidebar.
- Open the three-dot menu in the upper-right corner.
- Select Custom repositories.
- Enter
https://github.com/jclima/ha-june-oven. - Select Integration as the category, then select Add.
- Search for June Oven and open its details page.
- Select Download and choose the latest release.
- Restart Home Assistant when HACS reports Pending restart.
After restarting, continue with Pairing the oven.
-
Download the latest release.
-
Extract the release archive.
-
Copy the extracted
custom_components/june_ovendirectory into thecustom_componentsdirectory inside your Home Assistant configuration. -
Confirm the resulting path is:
config/ └── custom_components/ └── june_oven/ ├── __init__.py ├── manifest.json └── ... -
Restart Home Assistant.
Do not copy the repository's outer directory into custom_components; Home
Assistant must see custom_components/june_oven/manifest.json.
With HACS, install the offered update from Settings → Updates or select Redownload from the repository menu, then restart Home Assistant.
For a manual installation, replace the existing
custom_components/june_oven directory with the directory from the new
release and restart Home Assistant. Do not delete the integration from
Devices & services during a normal update; doing so removes its pairing
credentials.
Pairing creates a private June companion identity for Home Assistant.
-
In Home Assistant, open Settings → Devices & services.
-
Select Add integration and search for June Oven.
-
Enter:
- Oven name: the companion and device name, such as
Kitchen June. - Default cook mode: the mode used when turning the climate entity on.
- Default temperature: the initial target, from 100 °F to 500 °F.
- Oven name: the companion and device name, such as
-
On the oven, swipe left twice from the home screen and select Connect. If connected devices are already listed, select +.
-
Enter the eight-digit code shown by Home Assistant.
-
Wait for the oven to accept the pairing.
-
Return to Home Assistant and select Submit. If pairing is still being processed, wait a few seconds and submit again.
The pairing session expires after approximately five minutes. If it expires, cancel the Home Assistant flow and start again to receive a new code.
To add another oven, repeat these steps. Each oven receives an independent companion identity and Home Assistant device.
To change the default cook mode or temperature:
- Open Settings → Devices & services.
- Find June Oven.
- Select Configure.
- Choose the new defaults and select Submit.
The defaults are used when a cook does not already have a selected target or mode. They do not automatically start the oven.
Entity IDs depend on the name assigned during pairing. Use the entity picker in Home Assistant instead of relying on the examples below.
| Entity | Type | Purpose |
|---|---|---|
| Oven | Climate | Start or cancel cooking, select a mode, and set target temperature |
| Connectivity | Binary sensor | Reports whether June's cloud says the oven is online |
| Preheat ready | Binary sensor | Pulses on for 30 seconds when the oven reaches temperature |
| Cook done | Binary sensor | Pulses on for 30 seconds after a cook ends without cancellation |
| Food probe | Sensor | Latest connected probe temperature |
| Cook progress | Sensor | Native cook progress reported by the oven |
| Interior | Camera | Latest signed interior-camera still |
The climate entity provides two HVAC modes:
- Heat starts the selected cook preset at the selected target temperature.
- Off sends a cook-cancellation command.
Changing the preset or target while the oven is active sends a cancellation, waits briefly, and starts a replacement cook. Any timer or progress associated with the original cook may be lost.
Preheat ready and Cook done are deliberately short-lived binary sensors. Each remains on for 30 seconds so it can trigger an automation, then resets automatically.
Cook done is not emitted when Home Assistant knows the cook was manually cancelled.
Notification-only automations are the safest place to start. Replace the example entity and notification IDs using Home Assistant's entity and action pickers.
automation:
- alias: June oven is ready
triggers:
- trigger: state
entity_id: binary_sensor.kitchen_june_preheat_ready
to: "on"
actions:
- action: notify.mobile_app_your_phone
data:
title: June oven
message: The oven has reached its target temperature.automation:
- alias: June oven cook finished
triggers:
- trigger: state
entity_id: binary_sensor.kitchen_june_cook_done
to: "on"
actions:
- action: notify.mobile_app_your_phone
data:
title: June oven
message: The cook has finished.Caution
Avoid unattended automations that turn the oven on. Conditions, schedules, and presence checks can fail or become stale and are not substitutes for confirming that the oven is empty, unobstructed, and safe to heat.
- Confirm the path is exactly
config/custom_components/june_oven/manifest.json. - Restart Home Assistant after installing or updating the files.
- Check Settings → System → Logs for
june_ovenor manifest errors. - If installed with HACS, confirm the repository is downloaded and no longer shows Pending restart.
- Confirm the oven is online, idle, and closed.
- Start pairing from the oven's Connect screen before entering the code.
- Enter all eight digits, including any leading zero.
- Use the newest code shown in Home Assistant; codes and pairing sessions expire.
- If Home Assistant says the oven has not finished pairing, wait several seconds and select Submit again.
- If the flow was closed or Home Assistant restarted, begin pairing again.
- Confirm the oven itself reports that it is connected to Wi-Fi.
- Confirm Home Assistant has working internet access.
- Check whether June's cloud or API is unavailable.
- Reload the integration from Settings → Devices & services → June Oven.
- Download diagnostics and inspect the connection state before opening an issue.
This is expected. June does not reliably apply in-place changes to an active cook, so the integration cancels and restarts it with the new settings.
- The oven normally publishes camera frames only while actively cooking.
- Signed camera URLs expire and are refreshed through live June messages.
- Confirm the climate entity is active and the oven is online.
- Reload the integration if telemetry is working but the camera remains stale.
The integration waits for June to acknowledge heating and cancellation commands. Confirm the oven is online and inspect Home Assistant logs before retrying. Avoid repeatedly sending a heating command when the oven's state is uncertain.
Download diagnostics from the June Oven integration page under Settings → Devices & services. Diagnostics redact:
- access and refresh tokens;
- the companion password;
- the command-signing seed;
- the built-in client secret; and
- signed camera URLs.
Diagnostics can still contain state and configuration details. Review the file before sharing it publicly.
The integration stores a companion password, access tokens, and an Ed25519
signing seed in Home Assistant's config-entry storage. Anyone with these
values may be able to control the oven. Protect Home Assistant backups,
diagnostic downloads, and the .storage directory.
Do not post pairing codes, tokens, oven IDs, camera URLs, or unredacted backups in GitHub issues. Follow SECURITY.md for vulnerability reports.
- Open Settings → Devices & services.
- Find June Oven, open its menu, and select Delete.
- On the oven, open its connected-devices or companions screen and remove the Home Assistant companion.
- If installed with HACS, remove the repository from HACS and restart Home Assistant.
- For a manual installation, remove
config/custom_components/june_ovenand restart Home Assistant.
Deleting the Home Assistant integration does not revoke its companion identity from June's servers. Removing the companion on the oven is the revocation step.
Clone the repository and install the protocol test dependency and Ruff:
python3 -m pip install PyNaCl==1.6.2 ruffRun the local checks:
ruff format --check custom_components tests
ruff check custom_components tests
python3 -m compileall -q custom_components tests
python3 -m unittest discover -s tests -vGitHub Actions additionally runs HACS and Hassfest validation. Full config-flow and entity tests should run inside a Home Assistant development environment. Pairing, heating, cancellation, telemetry, and camera changes must state whether they were verified on a physical oven.
See CONTRIBUTING.md before opening a pull request.
For bugs, use the issue tracker and attach only redacted diagnostics. This project is maintained independently; do not report integration bugs to HACS, Home Assistant, June, or the upstream Homebridge project.
If this integration is useful to you, you can support its continued development and maintenance:
The protocol work is derived from Keith Herrington's MIT-licensed
homebridge-june-oven and
its
JUNE_INTEGRATION_SPEC.md.
See NOTICE.md for exact attribution.
This project is licensed under the MIT License. It is independent and is not affiliated with or endorsed by June Life, Weber, Home Assistant, or the upstream Homebridge project.
