Skip to content

This is the Home Assistant custom_components (HACS) repository for Busch Jaeger/ABB Free@Home (Local API)

License

Notifications You must be signed in to change notification settings

derjoerg/local-abbfreeathome-hass

 
 

Repository files navigation

Home Assistant Integration - ABB-free@home

GitHub Release hassfest Ruff License: MIT

This is a custom component to integrate with Home Assistant for the ABB-free@home system over the local api server.

The primary goal of this repository is to provide initial development for the integration into Home Assistant. The ultimate goal of this integration is to be merged into the Home Assistant code as a built-in integration.

Because of this, the integration will adhere to the strict styling and code guidelines provided by Home Assistant.

Prerequisites

There are two main prerequisites before being able to use this integration.

  • ABB-free@home System Access Point 2.0
  • System Access Point running version 2.6.0 or newer

ABB-free@home Local API Prerequisites

Device Support

The current list of supported devices by function are:

Function Platform(s)
FID_ATTIC_WINDOW_ACTUATOR Cover
FID_AWNING_ACTUATOR Cover
FID_BLIND_ACTUATOR Cover
FID_BLIND_SENSOR Event
FID_BRIGHTNESS_SENSOR Binary Sensor, Sensor
FID_CARBON_MONOXIDE_SENSOR Binary Sensor
FID_DES_DOOR_OPENER_ACTUATOR Lock
FID_DES_DOOR_RINGING_SENSOR Event
FID_DIMMING_ACTUATOR Light
FID_DIMMING_SENSOR Event
FID_FORCE_ON_OFF_SENSOR Event
FID_HEATING_ACTUATOR Valve
FID_MOVEMENT_DETECTOR Binary Sensor, Sensor
FID_MOVEMENT_DETECTOR_PYCUSTOM0 Binary Sensor, Sensor
FID_RAIN_SENSOR Binary Sensor
FID_ROOM_TEMPERATURE_CONTROLLER_MASTER_WITHOUT_FAN Climate
FID_SHUTTER_ACTUATOR Cover
FID_SMOKE_DETECTOR Binary Sensor
FID_SWITCH_ACTUATOR Switch
FID_SWITCH_ACTUATOR_PYCUSTOM0 Switch
FID_SWITCH_SENSOR Event
FID_TEMPERATURE_SENSOR Binary Sensor, Sensor
FID_TRIGGER Button
FID_WIND_SENSOR Binary Sensor, Sensor
FID_WINDOW_DOOR_SENSOR Binary Sensor
FID_WINDOW_DOOR_POSITION_SENSOR Binary Sensor, Sensor

Additional Devices

This is a new repo written from the ground up in tandem with the PyPi Package local-abbfreeathome in order to communicate with the ABB-free@home System over the local api. The list of supported functions may not include your device. If you expect a device to appear and don't, please open a new issues and include the device configuration. To fetch your device configuration download the integration diagnostics.

I (kingsleyadam) don't have access to the number of different ABB devices and would rely on others to either provide configurations, or contribute code directly in order to add additional device support.

Installation

HACS

The easiest way to add this custom integration is via HACS which the repo has been setup to support. With HACS setup on your Home Assistant installation you'll need to add this repo it as a custom repository.

Once added you'll be able to find it by searching for "ABB-free@home".

Manually

  1. Clone the code locally and copy all the files in custom_components/abbfreeathome_ci to your Home Assistant directory ./config/custom_components/abbfreeathome_ci
  2. Restart Home Assistant
  3. You should be able to add a new integration "ABB-free@home".
  4. Follow the UI configuration to add the integration to your instance.

Configuration

Local API, Credentials

Before you can setup this integration you must turn on the local API on your ABB-free@home SysAP. More information about the local api can be found on the ABB site here.

Navigate to: SysAP Configuration > Settings > free@home - Settings > Local API > Activate Local API

Copy the username listed within that window (usually installer) to be used when invoking the api. The password will be your personally set password to login to the app and web interface.

Add Integration

Configuration Options

The config setup will include some options to help configure the integration.

Configuration Description
Hostname Only available in Manual (User) Setup. The full hostname including schema of the ABB-free@home SysAP endpoint.
Username The api username, likely different from your normal login username.
Password The password for logging into the SysAP.
Include channels NOT on the free@home floorplan? Whether to include channels that are not located on the free@home floorplan.
Example
  • Hostname: http://192.168.1.100
  • Username: installer
  • Password: <password>
  • Include channels NOT on the free@home floorplan?: False

Note: Support for SSL is not provided yet. For a valid SSL connection a cert pulled from the SysAP must be provided, research to be done to know if Home Assistant supports such a scenario.

SysAP Discovery

In most installations the integration will find your free@home SysAP automatically on the network. After you've installed the integration and restarted Home Assistant you should see your SysAP as a new device to be setup. The hostname will automatically be discovered, you just need to enter your api username, password, and whether to include channels not in the floorplan to confirm the setup.

Manual (User) Setup

If the SysAP is not found automatically you can add it manually. Add this integration by searching for and clicking on ABB-free@home.

When adding the integration manually you'll be prompted with all fields. The hostname must be the fully resolvable hostname with protocol (e.g. http). Adding the integration will fail if you just provide the IP address or hostname.

Configuration.yaml

The integration also allows you to setup and configure the integration via YAML. For this, add the following to your configuration.yaml file.

abbfreeathome_ci:
  host: http://<hostname or ip address>
  username: installer
  password: <password>
  include_orphan_channels: false

Each time Home Assistant is loaded, the configuration.yaml entry for abbfreeathome_ci will be checked, verified, and updated accordingly. This means that if you want to update your configuration, simply modify the configuration.yaml file and restart Home Assistant.

Note: If your configuration settings are invalid in the configuration.yaml file, you won’t see any changes in the Home Assistant interface. Instead, you’ll need to check the logs to identify any issues that occurred while adding the integration. For this reason, it’s recommended to set up the integration via the Home Assistant add integrations interface or through auto-discovery.

Automatic Area Discovery

When adding the integration it'll automatically add devices to different Areas in Home Assistant. The areas will be pulled from your ABB-free@home Configuration/Floorplan. When prompted to add the devices double check the area for each.

Events

Switch Sensor

The Switch Sensors can be deceiving. These are additional On/Off sensors associated with a switching device. If you physically toggle the switch sensor (On or Off), the status of the switch sensor will be updated in Home Assistant accordingly.

However, if you turn off the light using Home Assistant, the free@home app, or any other non-physical method, the switch sensor will not be updated to reflect the light's status.

This discrepancy can cause issues when automating a light. If the light is already turned off via Home Assistant, but the switch sensor still indicates an On state, you won't be able to turn the light on using the switch sensor.

It is best to associate a switch directly with a light in the free@home configuration whenever possible. For example, if you have a Philips Hue bulb, it's advisable to set up Philips Hue lights within free@home and associate a switch with it directly. This approach avoids using Home Assistant entirely, making the setup much more straightforward and responsive.

If you want to control a device or a set of devices using the switch sensor in Home Assistant, it's best to use emitted events. The SwitchSensor class will emit an event when pressed.

These will be visible as events within the devices that support it. Using these events you can create automations to control devices accordingly.

Example Automation

alias: Test Trigger Sensor Event
description: This will turn off/on a light based on the Switch Sensor event.
triggers:
  - trigger: state
    entity_id:
      - event.study_area_rocker_switch_event
    to: 'Off'
    attribute: event_type
    id: study_area_event_off
  - trigger: state
    entity_id:
      - event.study_area_rocker_switch_event
    attribute: event_type
    to: 'On'
    id: study_area_event_on
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - study_area_event_off
        sequence:
          - action: switch.turn_off
            target:
              device_id:
                - 615bdcd2980a3a2a341488f50b7d8aea
      - conditions:
          - condition: trigger
            id:
              - study_area_event_on
        sequence:
          - action: switch.turn_on
            target:
              device_id: 615bdcd2980a3a2a341488f50b7d8aea
mode: single

Debugging

If you're having issues with the integration, maybe not all devices are showing up, or entities are not responding as you'd expect, you can do a few things to help debug.

Gather Debug Logs

You can temporarily enable debug logs to be captured and downloaded, then shared. This is documented within the Home Assistant documentation. To do this navigate to the integration and click Enable Debug Logging.

While this is enabled, all logging events from this integration and the corresponding python package will be available in the home assistant core logs at Settings -> System -> Logs. Ensure Home Assistant Core logs are select in the top right (default) and then click the three dot menu and Show raw logs.

As log events come in you should see a mix of INFO (green) and DEBUG (blue) logs. You may have to trigger an event on the free@home system to view the logs (e.g. turn on a light switch).

You can filter the logs as well. You may want to filter on Websocket Response to view all events happening on the websocket. These are ALL events, even those that are NOT associated with a device or entity in Home Assistant.

If you're requesting a new device added this this repository we may ask you to run through the above steps and provide the logs for the specific device you want integrated. You'll want to trigger all of the different functions of the device (close and open curtain, tilt curtain, etc) to capture all events in the logs. You can filter the logs by the serial number (e.g. ABB7F59C9F7C) to reduce the amount of logs and easier sharing.

Once finished go back to the integration page and Disable debug logging. Once disabled you'll be greeted with a download of all the logs captured during this time.

Enable Verbose Logging

You can enable more verbose logging permanently within your Home Assistant installation just for this integration by adding the following to your Home Assistant configuration.yaml file.

By default the Home Assistant default logger is warning, this configuration won't change that. But it'll create additional logs for both this integration and the PyPi module running a number of calls to the SysAP.

logger:
  default: warning
  logs:
    abbfreeathome: info
    custom_components.abbfreeathome_ci: info

Download Diagnostics

If you request help via GitHub Discussions you will likely be asked to share the integration diagnostics.

The diagnostics will share some information about your Home Assistant installation and this integration's installation.

To pull the diagnostics about this integration navigate to the integration under Settings --> Devices & Services --> ABB-free@home. Click the 3 dots next to the integration entity and click Download Diagnostics. Private information should be redacted from the download, but it's always good to double check the output before sending.

Along with the home_assistant and integration_manifest you should also see data which includes your SysAP configuration and devices.

About

This is the Home Assistant custom_components (HACS) repository for Busch Jaeger/ABB Free@Home (Local API)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%