ABB/FIMER PVI VSN REST Integration
Home Assistant custom integration for ABB/FIMER/Power-One PVI inverters via VSN300/VSN700 datalogger REST API.
Overview
This integration connects to VSN300 or VSN700 dataloggers to monitor
ABB/FIMER/Power-One PV inverters. It communicates via the datalogger’s REST API
and normalizes data to SunSpec-compatible format for consistent Home Assistant
entity creation.
Features
Automatic Discovery: Detects VSN model (VSN300/VSN700) and discovers all connected devices
VSN300 Support: HTTP Digest authentication with X-Digest scheme
VSN700 Support: HTTP Basic authentication
Multi-Device: Supports inverters, meters, batteries, and storage devices
SunSpec Normalization: VSN data mapped to SunSpec standard format
Device Hierarchy: Proper device relationships (inverters via datalogger)
Complete Metadata: Model, manufacturer, firmware version, serial numbers
Configuration UI: Easy setup through Home Assistant UI
Multi-Language: English and Italian translations included
Supported Devices
VSN Dataloggers:
- VSN300 (WIFI LOGGER CARD)
- VSN700 (Ethernet/WiFi datalogger)
Inverters: (via datalogger)
- Single-phase: REACT2-3.6-TL, REACT2-5.0-TL, etc.
- Three-phase: PVI-10.0-OUTD, PVI-12.5-OUTD, etc.
Other Devices: (via datalogger)
- Energy meters
- Battery storage systems
Installation
HACS (Recommended)
This integration is available in HACS as a custom repository. Click this button to open HA directly on the integration page so you can easily install it:
- Open HACS in Home Assistant
- Go to “Integrations”
- Click the three dots menu → “Custom repositories”
- Add repository:
https://github.com/alexdelprete/ha-abb-fimer-pvi-vsn-rest - Category: Integration
- Click “Add”
- Search for “ABB FIMER PVI VSN REST”
- Click “Download”
- Restart Home Assistant
Manual Installation
- Download the latest release from Releases
- Extract and copy
custom_components/abb_fimer_pvi_vsn_restto yourconfig/custom_components/directory - Restart Home Assistant
Configuration
Prerequisites
- VSN300 or VSN700 datalogger connected to your network
- Datalogger IP address or hostname
- Valid credentials (default: username=
guest, password=empty)
Setup Steps
- Go to Settings → Devices & Services
- Click “+ Add Integration”
- Search for “ABB FIMER PVI VSN REST”
- Enter configuration:
- Host: IP address or hostname (e.g.,
192.168.1.100orabb-vsn300.local) - Username: Authentication username (optional, default:
guest) - Password: Authentication password (optional, default: empty)
- Host: IP address or hostname (e.g.,
- Click “Submit”
The integration will:
- Detect VSN model (VSN300 or VSN700)
- Discover all connected devices (inverters, meters, batteries)
- Create Home Assistant entities for all data points
Configuration Options
After setup, click “Configure” on the integration card to adjust:
- Scan Interval: How often to poll data (default: 60 seconds, range: 30-600)
Reconfiguration
If you need to change the hostname/IP or credentials:
- Go to the integration card
- Click the three dots menu → “Reconfigure”
- Enter new settings
Entities
The integration creates sensor entities for all available data points from your devices.
Entity Naming
The integration uses Home Assistant’s modern entity naming pattern (has_entity_name=True).
Device Names: Friendly format for beautiful UI display
- Format:
{Manufacturer} {DeviceType} {Model} ({Serial}) - Examples:
Power-One Inverter PVI-10.0-OUTD (077909-3G82-3112)ABB Datalogger VSN300 (111033-3N16-1421)FIMER Inverter REACT2-3.6-TL (123456-ABCD-5678)
Entity IDs: Automatically generated by Home Assistant (slugified device name + measurement)
- Format:
sensor.{manufacturer}_{device_type}_{model}_{serial}_{measurement} - Examples:
sensor.power_one_inverter_pvi_10_0_outd_077909_3g82_3112_ac_powersensor.abb_datalogger_vsn300_111033_3n16_1421_firmware_versionsensor.fimer_inverter_react2_3_6_tl_123456_abcd_5678_ac_energy
Entity Friendly Names: Shown in the UI (device name + measurement display name)
- Examples:
Power-One Inverter PVI-10.0-OUTD (077909-3G82-3112) AC PowerABB Datalogger VSN300 (111033-3N16-1421) Firmware VersionFIMER Inverter REACT2-3.6-TL (123456-ABCD-5678) AC Energy
Notes:
- Entity IDs are stable and won’t change once created
- Friendly names make entities easy to identify in the UI
- Device page groups all entities by device for easy management
Supported Languages
The integration includes native translations for entity names in 10 European languages:
| Language | Code | Status |
|---|---|---|
| English | en |
|
| Italian | it |
|
| French | fr |
|
| Spanish | es |
|
| Portuguese | pt |
|
| German | de |
|
| Swedish | sv |
|
| Norwegian Bokmål | nb |
|
| Finnish | fi |
|
| Estonian | et |
Automatic Language Selection: Home Assistant automatically selects the appropriate language based on your system settings. No configuration needed!
Examples:
- English:
Power-One Inverter PVI-10.0-OUTD (077909-3G82-3112) Power AC - Italian:
Power-One Inverter PVI-10.0-OUTD (077909-3G82-3112) Potenza AC - French:
Power-One Inverter PVI-10.0-OUTD (077909-3G82-3112) Puissance AC - German:
Power-One Inverter PVI-10.0-OUTD (077909-3G82-3112) AC-Leistung
Note: Device names (manufacturer, model, serial) remain in their original format. Only measurement names are translated.
Device Information
Each device includes complete metadata:
| Field | Description | Example |
|---|---|---|
| Name | Device model + Serial | PVI-10.0-OUTD (077909-3G82-3112) |
| Manufacturer | From device data | Power-One, ABB, FIMER |
| Model | Device model | PVI-10.0-OUTD |
| Serial Number | Device S/N | 077909-3G82-3112 |
| Firmware | Device firmware | C008 |
| Configuration URL | Datalogger only | http://abb-vsn300.local |
| Via Device | Device connection | Linked to datalogger |
Typical Entities (Inverter)
Production:
- AC Power (W)
- AC Current (A)
- AC Voltage (V)
- AC Frequency (Hz)
- Total Energy (Wh)
- Daily Energy (Wh)
DC Inputs (per MPPT):
- DC Voltage (V)
- DC Current (A)
- DC Power (W)
Status:
- Operating State
- Cabinet Temperature
- Isolation Resistance
Architecture
Data Flow
VSN Datalogger
↓ (REST API)
VSN REST Client
↓ (Raw JSON)
Normalizer
↓ (SunSpec-compatible JSON)
Coordinator
↓ (Polling)
Sensor Platform
↓
Home Assistant Entities
Key Components
-
Discovery Module (
discovery.py)- Detects VSN model (VSN300/VSN700)
- Discovers all connected devices
- Extracts metadata (model, manufacturer, firmware)
- Handles device identification (S/N, MAC addresses)
-
REST Client (
client.py)- Authenticates with VSN datalogger
- Fetches data from REST API endpoints
- Handles VSN300/VSN700 authentication differences
-
Normalizer (
normalizer.py)- Transforms VSN proprietary format to SunSpec standard
- Uses mapping definitions from
mapping/directory - Provides consistent data structure
-
Coordinator (
coordinator.py)- Manages periodic data polling
- Handles errors and retries
- Distributes data to sensors
-
Config Flow (
config_flow.py)- User interface for setup
- Connection validation
- Reconfiguration support
VSN Authentication
The integration automatically detects which VSN model you have and uses the appropriate authentication method.
Detection Process
- Send unauthenticated request to
/v1/status - Examine 401 response:
- If
WWW-Authenticatecontainsx-digestordigest→ VSN300 - Otherwise → Try preemptive Basic authentication → VSN700
- If
VSN300
- Scheme: Custom HTTP Digest (X-Digest header)
- Process:
- Request challenge from endpoint
- Compute MD5 digest response:
MD5(MD5(username:realm:password):nonce:MD5(method:uri)) - Send request with
Authorization: X-Digest username="...", realm="...", nonce="...", response="..."
VSN700
- Scheme: Preemptive HTTP Basic Authentication
- Process: Send
Authorization: Basic {base64(username:password)}with every request - Note: VSN700 accepts credentials immediately without requiring a challenge-response flow
Both authentication methods are handled automatically by the integration - no configuration needed!
Troubleshooting
Connection Issues
Symptom: “Cannot connect” error during setup
Solutions:
- Verify datalogger IP/hostname is correct
- Ensure datalogger is powered on and network-accessible
- Check firewall rules allow HTTP (port 80)
- Try accessing
http://{host}/v1/statusin browser
Authentication Issues
Symptom: “Authentication failed” error
Solutions:
- Try default credentials (username:
guest, password: empty) - Check credentials in datalogger web interface
- Reset datalogger credentials if necessary
No Entities Created
Symptom: Integration loads but no sensors appear
Solutions:
- Check Home Assistant logs for errors
- Verify inverter is connected to datalogger
- Check datalogger web interface shows inverter data
- Enable debug logging (see below)
Debug Logging
Add to configuration.yaml:
logger:
default: info
logs:
custom_components.abb_fimer_pvi_vsn_rest: debug
Restart Home Assistant and check logs for detailed information.
Testing and Reporting Issues
If you’re experiencing connection or authentication issues, you can use the standalone test script to diagnose the problem and provide detailed logs when reporting issues.
Using the VSN Test Script
The repository includes a standalone diagnostic script that can test your VSN device without installing the integration:
-
Download the script:
wget https://raw.githubusercontent.com/alexdelprete/ha-abb-fimer-pvi-vsn-rest/master/scripts/vsn_client.py -
Install dependencies:
pip install aiohttp -
Run the test:
python vsn_client.py 192.168.1.100(Replace
192.168.1.100with your datalogger’s IP address) -
Review output:
The script will:
- Auto-detect VSN300 vs VSN700
- Test all REST API endpoints
- Create JSON output files with raw and normalized data
- Display comprehensive debug information
-
When reporting issues:
- Include the console output showing device detection and any errors
- Attach the generated JSON files (especially
vsn300_status.jsonorvsn700_status.json) - Specify your inverter model and VSN datalogger model
Common Test Results
Successful VSN300 detection:
[VSN Detection] Detected VSN300 (digest auth in WWW-Authenticate: X-Digest realm="...")
✓ Device detected: VSN300
Successful VSN700 detection:
[VSN Detection] Not VSN300. Attempting preemptive Basic authentication for VSN700.
[VSN Detection] Detected VSN700 (preemptive Basic authentication)
✓ Device detected: VSN700
Authentication failure:
[VSN Detection] Preemptive Basic auth failed with status 401.
Device authentication failed. Not VSN300/VSN700 compatible.
If you see this, verify your credentials and ensure the device is a VSN300/VSN700 datalogger.
Data Mapping
VSN data points are mapped to SunSpec-compatible schema using definitions in the mapping/ directory.
The mapping includes:
- Device classification (inverter type, meter, battery, etc.)
- Point name translation (VSN → SunSpec)
- Unit conversions and scaling
- Device class and state class for Home Assistant
- Proper labels and descriptions
For details, see MAPPING_NOTES.md.
Translations
The integration includes complete translations for entity names in 10 European languages:
English (en.json) - 258 sensors
Italian (it.json) - 258 sensors
French (fr.json) - 258 sensors
Spanish (es.json) - 258 sensors
Portuguese (pt.json) - 258 sensors
German (de.json) - 258 sensors
Swedish (sv.json) - 258 sensors
Norwegian (nb.json) - 258 sensors
Finnish (fi.json) - 258 sensors
Estonian (et.json) - 258 sensors
The integration automatically uses the language configured in your Home Assistant instance. All UI strings, error messages, configuration flows, and entity names are fully translated.
Contributing Translations
Want to add a new language or improve existing translations? Here’s how:
For Entity Names (258 sensors in entity.sensor section):
-
Fork the repository
-
Copy
translations/en.jsontotranslations/[language_code].json- Use ISO 639-1 language codes (e.g.,
nlfor Dutch,dafor Danish)
- Use ISO 639-1 language codes (e.g.,
-
Translate the
entity.sensorsection:"entity": { "sensor": { "watts": { "name": "Your Translation Here" }, "dc_voltage_1": { "name": "Your Translation Here" }, ... } } -
Keep the
configandoptionssections fromen.json(or translate those too!) -
Test with your Home Assistant instance (set HA language to your new language)
-
Submit a pull request
Translation Tips:
- Maintain technical accuracy (e.g., “Power AC” should remain related to AC power)
- Keep translations concise (they appear in entity names)
- Preserve measurement context (e.g., distinguish “Voltage DC - String 1” from “Voltage AC”)
- Review existing languages for consistency
Questions? Open a GitHub Discussion - the community is happy to help!
See translations/ for existing translations.
Development
See CLAUDE.md for development guidelines and architecture details.
Project Structure
custom_components/abb_fimer_pvi_vsn_rest/
├── __init__.py # Integration entry point
├── config_flow.py # UI configuration
├── coordinator.py # Data update coordinator
├── sensor.py # Sensor platform
├── const.py # Constants and state mappings
├── manifest.json # Integration manifest
├── translations/ # Entity name translations (10 languages)
│ ├── de.json # German
│ ├── en.json # English
│ ├── es.json # Spanish
│ ├── et.json # Estonian
│ ├── fi.json # Finnish
│ ├── fr.json # French
│ ├── it.json # Italian
│ ├── nb.json # Norwegian Bokmål
│ ├── pt.json # Portuguese
│ └── sv.json # Swedish
└── abb_fimer_vsn_rest_client/ # Client library
├── __init__.py # Library exports
├── client.py # REST API client
├── auth.py # Authentication (VSN300/VSN700)
├── discovery.py # VSN model and device discovery
├── normalizer.py # VSN→SunSpec data normalization
├── mapping_loader.py # Mapping file loader
├── models.py # Data models
├── utils.py # Helper utilities
├── exceptions.py # Custom exceptions
└── data/ # Client library resources
└── vsn-sunspec-point-mapping.json # VSN→SunSpec mapping (258 points)
Related Projects
-
ha-abb-fimer-pvi-sunspec
Direct Modbus/TCP integration (no datalogger required) -
ha-abb-powerone-pvi-sunspec
Legacy v4.x integration (Modbus only)
Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
License
This project is licensed under the MIT License - see LICENSE file for details.
Credits
Developed by Alessandro Del Prete
SunSpec model definitions from SunSpec Models Repository (Apache-2.0 license)
Coffee
If you like this integration, I’ll gladly accept some quality coffee, but please don’t feel obliged. ![]()