node-red-contrib-huawei-solar
v0.0.4
Published
Node-RED nodes for reading data from Huawei SmartLogger 3000 and SUN2000 inverters via Modbus TCP
Downloads
17
Maintainers
Readme
Node-RED Contrib Huawei Solar
Node-RED nodes for reading data from Huawei SmartLogger 3000 and SUN2000 inverters via Modbus TCP.
Converted from the proven n8n-nodes-huaweisolar project with full functionality preservation.
Installation
Via Node-RED Palette Manager
- Open Node-RED in your browser
- Go to Menu → Manage palette → Install
- Search for
node-red-contrib-huawei-solar - Click Install
Via npm
cd ~/.node-red
npm install node-red-contrib-huawei-solarNodes
🌐 SmartLogger 3000 Node
Connects to Huawei SmartLogger 3000 devices to:
- Read Data: System status, power data, environmental sensors, alarms
- Discover Devices: Scan for connected inverters and smart meters
- Parallel Processing: Fast device discovery with configurable concurrency
- Flexible Output: Choose between descriptive or IEC 61850 field naming
Configuration
- Host/Port: SmartLogger IP address and Modbus port (typically 502)
- Unit ID: Modbus unit ID (typically 3 for SmartLogger)
- Data Categories: Select system, power, environmental, or alarm data
- Discovery Range: Unit ID ranges to scan (e.g., "1-50" or "12,13,14,15")
- Timeout/Retries: Connection resilience settings
⚡ SUN2000 Inverter Node
Reads detailed data from Huawei SUN2000 inverters with two operation modes:
1. Read From Discovery (Recommended)
- Input: SmartLogger discovery data
- Automatically reads all discovered inverters
- Optional filtering to inverters only
- Maintains connection metadata
2. Specify Devices
- Manually specify inverter addresses
- Direct connection parameters
- Custom device naming support
- Address range parsing (e.g., "12-15" or "1,3,5,7")
Data Categories
- Device Information: Model, serial number, firmware, specifications
- Power & Energy: Real-time power, daily/total energy, efficiency
- Grid Voltages: Line and phase voltages (UAB, UBC, UCA, Ua, Ub, Uc)
- Grid Currents: Phase currents and frequency
- PV String Data: Individual string voltages, currents, and power
- Status & Temperature: Device status, temperatures, insulation resistance
- Alarms & Faults: Comprehensive alarm decoding with human-readable messages
Usage Examples
Basic SmartLogger Data Reading
// Inject → SmartLogger → Debug
SmartLogger Config:
- Operation: "Read Data"
- Data Categories: ["power", "alarms"]
- Host: "192.168.1.10"Complete System Monitoring
// Inject → SmartLogger (Discovery) → SUN2000 → Debug
// ↓
// Debug (Discovery Results)
SmartLogger Config:
- Operation: "Discover Devices"
- Discovery Range: "1-50"
- Parallel Scans: 10
SUN2000 Config:
- Operation: "Read From Discovery"
- Filter Inverters: true
- Data Categories: ["power", "voltages", "status"]Manual Inverter Reading
// Inject → SUN2000 → Debug
SUN2000 Config:
- Operation: "Specify Devices"
- Host: "192.168.1.10"
- Inverter Addresses: "12,13,14,15"
- Data Categories: ["power", "alarms"]Data Output Structure
SmartLogger Output
{
"system": {
"datetime": 1642780800,
"dstEnable": false
},
"power": {
"activePowerTotal": 25.4,
"dailyEnergy": 45.2,
"plantStatus": "Unlimited"
},
"_metadata": {
"operation": "readData",
"host": "192.168.1.10",
"timestamp": "2024-01-21T10:00:00.000Z",
"success": true
}
}SUN2000 Output (per inverter)
{
"ts": "2024-01-21T10:00:00.000Z",
"unitId": 12,
"deviceName": "SUN2000-10KTL-M1",
"telemetry": {
"activePower": 8.5,
"phaseAVoltage": 230.1,
"phaseACurrent": 12.3,
"efficiency": 97.8,
"pvStrings": [
{
"stringNumber": 1,
"voltage": 380.5,
"current": 8.2,
"power": 3120.1
}
]
},
"status": {
"deviceStatus": 512,
"deviceStatusText": "On-grid",
"internalTemperature": 45.2,
"alarmTexts": []
}
}Field Naming Conventions
Descriptive Names (Default)
activePower, reactivePower, phaseAVoltage,
internalTemperature, dailyEnergyYieldIEC 61850 Standard
P, Q, Ua, TempInt, EPIdNetwork Configuration
Typical Setup
- SmartLogger IP: 192.168.1.10 (or your network's gateway)
- Modbus Port: 502 (standard)
- SmartLogger Unit ID: 3
- Inverter Addresses: Usually 12, 13, 14, 15, etc.
Firewall Requirements
- Allow TCP connections to SmartLogger on port 502
- Ensure Node-RED host can reach SmartLogger network segment
Troubleshooting
Connection Issues
- Verify Network: Ping the SmartLogger IP address
- Check Port: Ensure port 502 is open and not blocked
- Unit ID: Confirm SmartLogger uses unit ID 3 (not 0 as in some docs)
- Timeout: Increase timeout for slow networks
No Devices Discovered
- Range: Expand discovery range (try "1-100")
- Timeout: Increase discovery timeout to 3000ms
- Concurrency: Reduce parallel scans if network is overwhelmed
Missing Inverter Data
- Filter: Disable inverter filtering to see all devices
- Categories: Enable more data categories to get complete data
- Addresses: Verify inverter addresses are correct
Performance Optimization
- Use discovery mode for dynamic setups
- Use manual mode for fixed installations
- Adjust parallel scan count based on network capacity
- Implement caching with function nodes for high-frequency reads
Advanced Features
Custom Device Naming
// In SUN2000 "Specify Devices" mode
Device Mappings:
- Address: 12, Name: "East Roof Array"
- Address: 13, Name: "West Roof Array"
- Address: 14, Name: "South Wall Array"Error Handling
- Enable "Continue on fail" to receive error objects instead of flow stops
- Errors include connection details and specific failure reasons
- Node status indicators show connection state
Integration Examples
- InfluxDB: Store time-series data for monitoring dashboards
- MQTT: Publish data to IoT platforms
- Dashboard: Real-time visualization with Node-RED dashboard
- Alerts: Set up email/SMS notifications for alarms
Requirements
- Node.js: >= 18.0
- Node-RED: >= 3.0
- Network: TCP access to SmartLogger on port 502
- Hardware: Huawei SmartLogger 3000 with connected SUN2000 inverters
License
MIT License - see LICENSE file for details.
Credits
Converted from the n8n-nodes-huaweisolar project by Edward Tollemache.
All Modbus register mappings, data processing logic, and device communication protocols have been preserved from the original implementation.
