An ECHONET Lite emulator that controls virtual home appliances. This project is a fork of the original banban525/echonet-lite-kaden-emulator.
This emulator allows you to control virtual devices via a professional web-based dashboard and expose their state using the UDP-based ECHONET Lite protocol. You can also control these virtual devices through ECHONET Lite commands sent over UDP.
| Device | ECHONET Lite Class | EOJ Code |
|---|---|---|
| Ceiling Light (Single-function Lighting) | 0x0291 | 0x029101 |
| Temperature Sensor | 0x0011 | 0x001101 |
| Humidity Sensor | 0x0012 | 0x001201 |
| Human Detection Sensor (Motion) | 0x0007 | 0x000701 |
| Floor Light (General Lighting) | 0x0290 | 0x029001 |
| Electric Shutter/Blind | 0x0263 | 0x026301 |
| Electric Lock + Door | 0x026F / 0x05FD | 0x026F01 / 0x05FD01 |
| Switch (JEM-A / HA Terminal) | 0x05FD | 0x05FD01 |
| Electric Water Heater (EcoCute) | 0x026B | 0x026B01 |
| Home Air Conditioner | 0x0130 | 0x013001 |
This emulator follows the ECHONET Device Object Specification Release P for ECHONET Lite compliance. While we have implemented the required properties, only basic functionality is supported for each device type.
Note: The well-known MoekadenRoom by Sony is another ECHONET Lite emulator. This project was created separately because MoekadenRoom uses an older specification and didn't include the specific devices needed for this project.
- Professional Dashboard UI: Modern dark-themed interface with real-time status updates, device cards, and intuitive controls
- ECHONET Protocol Compatibility: Full TID preservation, response aggregation (OPC), and INF notification support
- Pychonet Compatible: Tested and verified working with pychonet Python library
- REST API: HTTP endpoints for device status queries and state changes
- Multi-Device Configuration: Enable/disable individual devices via configuration file
The web interface features a professional, card-based dashboard layout:
- Real-time Status Monitoring: Live updates for all connected devices (1-second polling)
- Interactive Device Controls: Mode selectors, temperature sliders, toggle switches, and action buttons
- Connection Status Indicator: Visual feedback for server connectivity
- Responsive Design: Works on desktop and mobile browsers
- Device Management: Inline device toggles on each card disable/enable the ECHONET Lite instance. A consolidated "Manage Devices" modal is available via the Actions dropdown menu
| Device | Controls |
|---|---|
| Air Conditioner | Mode (OFF/COOL/HEAT/DRY/WIND), Temperature slider |
| Ceiling Light | ON/OFF/Toggle |
| Floor Light | Color temperature (White/Neutral White/Lamp), Cycle |
| Temperature Sensor | Adjustable reading via slider |
| Humidity Sensor | Adjustable reading via slider |
| Motion Sensor | Detect/Clear buttons |
| Shutter | Open/Stop/Close with position progress bar |
| Entrance Door | Open/Close, Lock/Unlock controls |
| Bath Water Heater | Auto mode, Temperature setting, Water level indicator |
Requirements: Node.js (version 14+ recommended)
# Clone the repository
git clone <repository-url>
cd echonet-lite-kaden-emulator
# Install dependencies (first time only)
npm install
# Start the server
npm start
# Open browser to http://localhost:3000/
# Stop with Ctrl+C| Variable | Description | Default |
|---|---|---|
ECHONET_TARGET_NETWORK |
Target network in CID notation (e.g., 192.168.1.0/24) to bind ECHONET Lite traffic. Auto-detected if not specified. |
Auto-detect IPv4 |
ECHOENT_DELAY_TIME |
Response delay in milliseconds (simulates slow devices) | 0 (no delay) |
WEBPORT |
Port for the web UI and REST API | 3000 |
SETTINGS |
Path to configuration file | - |
DEBUG |
Enable debug logging (TRUE or 1) |
false |
The configuration file allows enabling/disabling individual devices and setting custom Node Profile IDs.
{
"nodeProfile": {
"manufacturer": "TestLab",
"manufacturerName": "Test Laboratory",
"productCode": "0x54 0x45 0x53 0x54",
"uid": "fe000000000000000000000000000001"
},
"network": {
"targetNetwork": "",
"delayTime": 0,
"webPort": 3000
},
"devices": {
"monoFunctionalLighting": {
"disabled": false,
"id": ""
},
"temperatureSensor": {
"disabled": false,
"id": ""
},
"humiditySensor": {
"disabled": false,
"id": ""
},
"humanDetectionSensor": {
"disabled": false,
"id": ""
},
"generalLighting": {
"disabled": false,
"id": ""
},
"electricallyOperatedRainSlidingDoorShutter": {
"disabled": false,
"id": ""
},
"electricLock": {
"disabled": false,
"id": ""
},
"switch": {
"disabled": false,
"id": ""
},
"electricWaterHeater": {
"disabled": true,
"id": ""
},
"homeAirConditioner": {
"disabled": false,
"id": ""
}
}
}| Field | Description |
|---|---|
nodeProfile.uid |
Custom Node Profile ID (must start with fe, 34 hex characters) |
devices.<type>.disabled |
Set to true to disable this device type |
devices.<type>.id |
Custom EOJ identifier (leave empty for auto-generated) |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/status |
Get all device statuses |
| GET | /api/cellingLight |
Get ceiling light status |
| POST | /api/cellingLight |
Set ceiling light state |
| GET | /api/sensorMeter |
Get temperature/humidity sensor status |
| POST | /api/sensorMeter |
Set sensor values |
| GET | /api/motionSensor |
Get motion sensor status |
| POST | /api/motionSensor |
Set motion detection state |
| GET | /api/floorLight |
Get floor light status |
| POST | /api/floorLight |
Set floor light state |
| GET | /api/shutter |
Get shutter status |
| POST | /api/shutter |
Set shutter position |
| GET | /api/door |
Get door/lock status |
| POST | /api/door |
Set door/lock state |
| GET | /api/bathWaterHeater |
Get bath water heater status |
| POST | /api/bathWaterHeater |
Set bath water heater state |
| GET | /api/airConditioner |
Get air conditioner status |
| POST | /api/airConditioner |
Set air conditioner state |
This project is a fork of the original banban525/echonet-lite-kaden-emulator created by banban525. We extend our thanks for the foundational work that made this continuation possible.
- Current maintainer: scottyphillips
- Modernization and plugin architecture: scottyphillips
