This repository contains ESPHome configurations for various automation devices, including custom components for enhanced functionality. These are open-source firmware configurations that you can customize and build yourself.
JetHome DIN-rail automation controller with display. For a proprietary firmware version with additional features and support, visit JetHome official website.
Configurations:
JXD/jxd-r6-e1eth-lcd-eth.yaml- Ethernet variantJXD/jxd-r6-e1eth-lcd-wifi.yaml- WiFi variant
The JXD-R6-E1ETH-LCD is a powerful DIN-rail automation controller with the following capabilities:
- ESP32 microcontroller with 8MB flash and PSRAM
- 6 Relay outputs via PCA9554 I/O expander
- 6 Digital inputs via PCA9554 I/O expander
- OLED Display: SSD1306/SH1106 128x64 pixels with interactive menu
- RTC: PCF8563 hardware real-time clock with battery backup
- Temperature monitoring: Onboard TMP102 sensor + Dallas DS18B20 OneWire support
- Connectivity: LAN8720 Ethernet or WiFi (ESP32 built-in)
- Voltage monitoring: Input voltage measurement
- RS485/Modbus: 2x UART interfaces for Modbus RTU communication
- RTC Time Synchronization: Hardware RTC with NTP sync and battery backup
- Modbus RTU Server: Acts as Modbus slave with automatic group-based configuration (coils, discrete inputs, holding registers)
- Home Assistant Integration: Native ESPHome API with automatic entity discovery and OTA updates
- Display Control: Interactive OLED menu with status, time, relay control, inputs monitoring, and settings
- Dallas Temperature Sensors: OneWire support for multiple DS18B20 sensors (setup guide)
- Python 3.11 or higher
- ESPHome 2025.10.5 (pinned version for compatibility)
- USB cable or serial adapter for initial flashing
- Network connection for OTA updates
- Clone this repository:
git clone <repository-url>
cd esphome-device-configs- Set up Python environment:
Linux/macOS:
./scripts/setup.sh
source .venv/bin/activateWindows:
scripts\setup.bat
.venv\Scripts\activateThe repository provides two configuration variants:
esphome run JXD/jxd-r6-e1eth-lcd-eth.yaml- Uses LAN8720 Ethernet controller
- Static or DHCP IP configuration
- Best for industrial/stable installations
esphome run JXD/jxd-r6-e1eth-lcd-wifi.yaml- Uses ESP32 built-in WiFi
- Captive portal for easy setup
- WiFi credentials stored in device
- Access Point mode for configuration
For the first flash, connect via USB:
esphome run JXD/jxd-r6-e1eth-lcd-eth.yaml
# or
esphome run JXD/jxd-r6-e1eth-lcd-wifi.yamlSubsequent updates can be done over-the-air (OTA):
esphome run JXD/jxd-r6-e1eth-lcd-eth.yaml --device <IP_ADDRESS>The WiFi version supports easy configuration through a captive portal:
-
Flash the firmware via USB using the WiFi configuration
-
Device creates Access Point:
- SSID:
JXD-R6-E1ETH-LCD-XXXX(where XXXX is last 2 bytes of MAC address) - Password: Last 4 bytes of MAC address (8 hex digits)
- Example: If MAC is
AA:BB:CC:DD:EE:FF, SSID will beJXD-R6-E1ETH-LCD-EEFFwith passwordccddeeff
- SSID:
-
Connect to the AP:
- Use your phone or laptop to connect to the device's WiFi network
- You can view the MAC address in the device display menu: Menu → Info → MAC
-
Configure WiFi:
- Your device will show a captive portal notification suggesting to open WiFi settings
- Tap the notification or manually navigate to
http://192.168.4.1 - The captive portal will display a list of available WiFi networks
- Select your WiFi network from the list
- Enter your WiFi password
- Click "Save"
-
Device connects:
- Device will disconnect from AP mode
- Connects to your WiFi network
- IP address displayed on device screen
- Device now accessible via Home Assistant and web interface
You can change WiFi configuration in two ways:
Method 1: Via Display Menu (WiFi version)
- Press the Menu button to open the display menu
- Navigate to: Settings → Reset WiFi creds → Yes
- Device clears stored WiFi credentials and reboots in AP mode
- Reconfigure WiFi using the captive portal (see Initial Setup above)
Method 2: Via Configuration File
- Edit
include/wifi.yamlto set default credentials - Recompile and upload firmware:
esphome run JXD/jxd-r6-e1eth-lcd-wifi.yaml --device <IP_ADDRESS>Method 3: Factory Reset
- Open display menu: Settings → Factory reset → Yes
- This clears all stored data including WiFi credentials
- Device reboots and creates AP for reconfiguration
The Access Point is automatically created using device MAC address:
- SSID Format:
${friendly_name}-${MAC_SUFFIX} - Password Format: Last 4 MAC bytes (8 hex characters)
- Timeout: AP activates if no WiFi connection after 5 seconds
- IP Address: Device accessible at
192.168.4.1when in AP mode
The device features an interactive OLED display with multiple pages accessible via the menu button:
Shows device name, uptime, input voltage, and IP address.
Shows system status and diagnostic information.
Displays current date and time from the hardware RTC.
View and control relay states directly from the display.
Monitor the status of all 6 digital inputs in real-time.
Interactive menu for accessing temperatures, device info, and settings including:
- Temperature sensors display
- Network information (IP, MAC address)
- Display settings (auto-off timer)
- WiFi configuration (WiFi version only - Reset WiFi credentials)
- Factory reset
- Device reboot
- OneWire Workflow Guide: Step-by-step guide for adding Dallas DS18B20 temperature sensors
- Components Documentation: Details about custom and modified ESPHome components used in this project
This project includes several custom and modified ESPHome components:
- groups: Entity grouping system for organizing relays, inputs, and sensors
- modbus_server_group: Automatic Modbus server configuration from entity groups
- display_menu_base: Enhanced menu system with additional navigation options
- graphical_display_menu: OLED menu renderer with value display support
- modbus_controller: Enhanced with server mode, coils, and discrete inputs support
See Components Documentation for detailed information.
The device can act as a Modbus RTU server (slave) for integration with PLCs, SCADA systems, and other industrial automation equipment:
- Slave Address: 0x01 (configurable)
- Baud Rate: Configurable via UART settings
- Coils (0xA000+): Read/write relay states
- Discrete Inputs (0xA000+): Read digital input states
- Holding Registers: Device information and configuration
RS-485 Connector (JXM2):
- Pin 1: B
- Pin 2: A
- Pin 3: B
- Pin 4: A
Configuration example in include/jxd-jxm-modbus-auto.yaml uses the automatic group-based mapping for simple setup.
For detailed information about the automatic Modbus server configuration, see the modbus_server_group component documentation.
Contributions are welcome! Please feel free to submit issues or pull requests.
This project is open-source.
- ESPHome Official Documentation
- JetHome Official Website - Proprietary firmware version with additional features
- JetHome AliExpress Store
For issues related to:
- Open-source firmware: Use GitHub issues in this repository
- Hardware or proprietary firmware: Contact JetHome support