Busch-Jaeger Free@Home

Hi all,
I got every time same error message…

2022-06-27 11:00:05.956 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing ‘freeathome:bridge:5a95606744’ changed from INITIALIZING to OFFLINE (BRIDGE_OFFLINE): XMPP connection lost

…sometimes the freeathomeBridge works fine. After reboot or connection lost I´m not able to reconnect to the bridge. However the reinstalling of bridge doesn’t work. I tried both versions, org.openhab.binding.freeathome-3.1.0-SNAPSHOT 1 and org.openhab.binding.freeathome-3.3.0-SNAPSHOT.

What could I do?

System: Raspi 3+
Release = Raspbian GNU/Linux 11 (bullseye)
openHAB 3.2.0 - Release Build

Greets

Hi Andi,

i have had the problem, that my bridge after restart/reboot stayed offline.
Also sometimes the connection was lost without a reason.

My Reason:
I copied the Binding without stopping openhab.
As i noticed this was a possible error, i does it like recommended:
Stop openhab service, copy the jar file into the addon folder, start openhab service.

Additional i cleared the cache (also by stopping openhab).

Since a reboot everything works fine.

Thanks for your reply…
i will test it and report…
Greets

@Stephan-Prem
My virtual switches were working ok, both for individual switching as well as for scenes. Although, I was until just recently running SysAp version 2.6.4. After upgrading SysAp to 3.0.1, I am also experiencing the same problem as you with the virtual switches. All my virtual devices are set witout virtualDeviceEmulation.

So, virtual switches included as part of scenes are no longer triggered/changing states. What is strange though, is that individual switching still works fine. Need to look more into details to see what happens when scenes are triggered.

EDIT
It appears to be related to some changes made as part of the SysAp upgrade. Looking into the XMPP stream while triggering scenes, the only change recognised for the virtual switches after the upgrade is a change on ch0000/idp0003, however the value remains the same even if scene is triggering ON or OFF for the virtual switch, so there is no logical way having the binding updating state change. Physical devices included in scenes are still recognised with updates on channel/idp/odp required for state changes. Have forwarded the issue to the ABB developer team.

2 Likes

Hello guys…my name ist Thomas and i am new in this board and I want to install free@home on my OpenHab 3.3.
I have installed the binding for the device and installed the bride with the correct ip, tha API user and my passwort, so i thinks it is ok.
The bridge do not going online, the status os yellow and in the OH console i have follow mistake.

org.openhab.binding.freeathome.internal.handler.FreeAtHomeBridgeHandler

Can somebody help me, i don´t know what i should do.
Thanks and best regards, Thomas

1 Like

same here. SysAP v2.
“[OH-safeCall-2] WARN org.openhab.binding.freeathome.internal.handler.FreeAtHomeBridgeHandler - Problems getting JID: java.util.concurrent.ExecutionException: java.net.SocketTimeoutException: Connect Timeout”

Your problem is that you are logging in with a usename unknown to the SysAp / username without installer rights (as set within the SysAp interface).

Some more log details would be required to identify your issue.

I had the same problem with my busch jäger sysap…

I have to restart the bundle manually after the openhab container was booted from my Synology NAS…

bundle:restart org.openhab.binding.freeathome in the console, otherwise the bridge would not go online.

My bridge is created via .thing file

Bridge freeathome:bridge:sysap "SysAP_Bridge" @ "Room" [ host="yx", ipAddress="xy", port="5280", login="<username_withInstallerRights>", password="<pw>", log_dir="/tmp/", log_enabled=false, dummy_things_enabled=true ] {
    //PC
    Thing raffstore Raff_PC_Doppel "Raff_PC_Doppel" @ "PC" [ DeviceId="<..>", ChannelId="ch0003", InputIdComplete="idp0000", InputIdPercentage="idp0002", InputIdStepwise="idp0001", OutputIdPercentage="odp0001" ]
    Thing raffstore Raff_PC_Klein "Raff_PC_Klein" @ "PC" [ DeviceId="<..>", ChannelId="ch0003", InputIdComplete="idp0000", InputIdPercentage="idp0002", InputIdStepwise="idp0001", OutputIdPercentage="odp0001" ]

Hello all,
I have installed OpenHAB 3.3.0 on Ubuntu and downloaded freeathome binding from GitHub - andrasU/openhab-free-home-binding: OpenHAB free@home binding.
My SysAP is version 3.1.0 and Freeathome bridge in OH is online.
Unfortunately when I try to add thing - scan doesnt find any item. I dont see any messages in /var/log/openhab/openhab.log or event.log.
Any idea where problem could be? Or how to enable debub logging?
Thanks

Hello,

at frist you have to setup the bridge manually.

Afterwards the scan will work.

I just updated my SysAP to the new Version 3.1.0 Revision 9754, and the binding still works fine.

Hello,

thanks for quick response.
I have Free@Home Bridge already configured. Please see screenshot:

Bridge is online but scan cannot find any device. Is there any way how to track down communication with SysAP?
I am new in this area so I hope I installed freeathome binding properly (just downloaded to specific folder in linux). I will try to investigate if did something wrong during installation.

I see you are using the swagger version of the binding created by @UhA, so then I am uncertain what is the problem.

The other version of the binding could be downloaded:
https://community.openhab.org/t/busch-jaeger-free-home/31043/599?u=kjoglums

Thanks a lot. I installed version you shared and now it works very well.
Have a nice day

Is it possible to get/see the source code of that binding? I want to learn, how to create a binding.

PS: My special issue is, that I’m at 3.1.0 of my SysAP2 and get an connection error. I believe the XMPP protocol changed in some way, that the addon can’t used.
I wanted to upload the openapi.json, but as new user I was not allowed to do that. Because of that, I posted the YAML file inline.

openapi: 3.0.1
info:
  title: free@home API
  description: free@home is the leading Smart Home System from ABB.
  version: v1
servers:
  - url: https://{hostname}/fhapi/v1
    variables:
      hostname:
        default: 192.168.2.1
        description: Hostname of the System Access Point or IP Address
paths:
  /api/rest/configuration:
    get:
      tags:
        - api
      summary: Get configuration
      description:
        "Get configuration for all user registered System Access Points, this
        includes the schema for all devices, channels and data points, the floorplan and
        current user information.
        \n\n
        The response body is a JSON object that uses the SysAP UUID of each SysAP of the
        requesting user account as key. The configuration of that SysAP is the corresponding
        value and is again a JSON object.
        \n\n
        You can find further description and an example of the returned data model in the
        [documentation](https://developer.eu.mybuildings.abb.com/fah_cloud/concepts/#data-model)
        and an example of this request in the
        [samples](https://developer.eu.mybuildings.abb.com/fah_cloud/samples/#query-the-configuration)."
      operationId: getconfiguration
      responses:
        "200":
          description: Configuration
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Configuration"
        "502":
          description: free@home error
          content:
            text/plain:
              schema:
                $ref: "#/components/schemas/ApiRestConfigurationGet502TextPlainResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
  /api/rest/devicelist:
    get:
      tags:
        - api
      summary: Get devicelist
      description: "Get list of devices for all System Access Points.
        \n\n
        This endpoint is similar to the /api/rest/configuration endpoint,
        but only provides access to the list of Device IDs that are known
        by each SysAP, not their corresponding configuration."
      operationId: getdevicelist
      responses:
        "200":
          description: Devicelist
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Devicelist"
        "502":
          description: free@home error
          content:
            text/plain:
              schema:
                $ref: "#/components/schemas/ApiRestDevicelistGet502TextPlainResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
  "/api/rest/device/{sysap}/{device}":
    get:
      tags:
        - api
      summary: Get device
      description: "Get configuration information for given device.
        \n\n
        This endpoint is similar to the /api/rest/configuration endpoint,
        but except for returning the full configuration of all SysAPs,
        it returns the configuration of a single device in a single SysAP
        only and therefore is much faster and requires less bandwidth.
        \n\n
        The response body is a JSON object that maps the (single) SysAP
        UUID to an object that contains \"devices\" object (only) which
        in turn holds the specified device object (only).
        \n\n
        See also the [documentation](https://developer.eu.mybuildings.abb.com/fah_cloud/concepts/#data-model)
        for the meaning of the contents of the device object."
      operationId: getdevice
      parameters:
        - name: sysap
          in: path
          description: SysAP UUID
          required: true
          schema:
            $ref: "#/components/schemas/SysapUuid"
          example: "00000000-0000-0000-0000-000000000000"
        - name: device
          in: path
          description: Device Serial
          required: true
          schema:
            $ref: "#/components/schemas/DeviceSerial"
          example: "6000D2CB27B2"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiRestDevice_sysap__device_Get200ApplicationJsonResponse"
        "502":
          description: free@home error
          content:
            text/plain:
              schema:
                $ref: "#/components/schemas/ApiRestDevice_sysap__device_Get502TextPlainResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
  "/api/rest/datapoint/{sysap}/{device}.{channel}.{datapoint}":
    get:
      tags:
        - api
      summary: Get datapoint value
      description: "Get the current value of a given datapoint.
        See the
        [documentation on datapoints](https://developer.eu.mybuildings.abb.com/fah_cloud/concepts/#input-and-output-datapoints)
        for further information and the
        [samples](https://developer.eu.mybuildings.abb.com/fah_cloud/samples/#query-a-datapoint)
        for an example."
      operationId: getdatapoint
      parameters:
        - name: sysap
          in: path
          description: SysAP UUID
          required: true
          schema:
            $ref: "#/components/schemas/SysapUuid"
          example: "00000000-0000-0000-0000-000000000000"
        - name: device
          in: path
          description: "Datapoint Serial.
            as obtained from e.g. a
            /api/rest/configuration call."
          required: true
          schema:
            $ref: "#/components/schemas/DeviceSerial"
          example: "6000D2CB27B2"
        - name: channel
          in: path
          description: "Channel of a device.
            Selects a channel in a device, as obtained from e.g. a
            /api/rest/configuration call."
          required: true
          schema:
            $ref: "#/components/schemas/ChannelSerial"
          example: "ch0000"
        - name: datapoint
          in: path
          description: "Datapoint Serial.
            Selects a datapoint in a channel of a device."
          required: true
          schema:
            $ref: "#/components/schemas/DatapointSerial"
          example: "odp0000"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiRestDatapoint_sysap__serial_Get200ApplicationJsonResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
    put:
      tags:
        - api
      summary: Set datapoint value
      description: "Set a new value for a given datapoint.
        See the
        [documentation on datapoints](https://developer.eu.mybuildings.abb.com/fah_cloud/concepts/#input-and-output-datapoints)
        for further information and the
        [samples](https://developer.eu.mybuildings.abb.com/fah_cloud/samples/#set-a-datapoint)
        for an example."
      operationId: putdatapoint
      parameters:
        - name: sysap
          in: path
          description: SysAP UUID
          required: true
          schema:
            $ref: "#/components/schemas/SysapUuid"
          example: "00000000-0000-0000-0000-000000000000"
        - name: device
          in: path
          description: "Datapoint Serial.
            as obtained from e.g. a
            /api/rest/configuration call."
          required: true
          schema:
            $ref: "#/components/schemas/DeviceSerial"
          example: "6000D2CB27B2"
        - name: channel
          in: path
          description: "Channel of a device.
            Selects a channel in a device, as obtained from e.g. a
            /api/rest/configuration call."
          required: true
          schema:
            $ref: "#/components/schemas/ChannelSerial"
          example: "ch0000"
        - name: datapoint
          in: path
          description: "Datapoint Serial.
            Selects a datapoint in a channel of a device."
          required: true
          schema:
            $ref: "#/components/schemas/DatapointSerial"
          example: "odp0000"
      requestBody:
        description: New value
        content:
          text/plain:
            schema:
              $ref: "#/components/schemas/ApiRestDatapoint_sysap__serial_PutRequest"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiRestDatapoint_sysap__serial_Put200TextPlainResponse"
        "502":
          description: free@home error
          content:
            text/plain:
              schema:
                $ref: "#/components/schemas/ApiRestDatapoint_sysap__serial_Put502TextPlainResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
  /api/ws:
    get:
      summary: Websocket connection
      description: "This endpoint is used to open a websocket connection.
        In order to use this endpoint, you must use a websocket implementation and use the \"wss://\"
        protocol schema instead of \"https\",a normal http request on this URL will fail.
        \n\n
        When the websocket has been opened successfully, the client will receive events from the
        free@home cloud for all registered SysAPs in the account of the requester.
        \n\n
        Also note that this call can NOT be tested by using the swagger ui frontend (the \"Try it\" button).
        You must use a websocket implementation for this request, the portal does not support this.
        See the [websocket section](https://developer.eu.mybuildings.abb.com/fah_cloud/concepts/#websocket) in the documentation for an example."
      operationId: ws
      responses:
        "101":
          description: "Switching protocols (websocket success).
            This response code is sent to indicate that the connection is upgraded from an HTTP to a websocket connection.
            You should normally not see this response code, the library/code that implements the websocket should have handled this."
        "418":
          description: "This code will never replied from the server.
            This response code only exists to document the schema of messages that are send by the server on the websocket."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebsocketMessage"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
  "/api/rest/virtualdevice/{sysap}/{serial}":
    put:
      tags:
        - api
      summary: Create virtual device
      description: "Create a virtual device inside free@home.
        You can choose a serialnumber freely.
        The following devices can be created:
        <ul>
        <li>BinarySensor</li>
        <li>SwitchingActuator </li>
        <li>CeilingFanActuator </li>
        <li>RTC </li>
        <li>DimActuator </li>
        <li>WindowSensor </li>
        <li>ShutterActuator </li>
        <li>WeatherStation </li>
        <li>Weather-TemperatureSensor </li>
        <li>Weather-WindSensor </li>
        <li>Weather-BrightnessSensor </li>
        <li>Weather-RainSensor </li>
        <li>CODetector </li>
        <li>FireDetector</li>
        <li>KNX-SwitchSensor</li>
        <li>MediaPlayer</li>
        <li>EnergyBattery</li>
        <li>EnergyInverter</li>
        <li>EnergyMeter</li>
        <li>EnergyInverterBattery</li>
        <li>EnergyInverterMeter</li>
        <li>EnergyInverterMeterBattery</li>
        <li>EnergyMeterBattery</li>
        <li>AirQualityCO2</li>
        <li>AirQualityCO</li>
        <li>AirQualityFull</li>
        <li>AirQualityHumidity</li>
        <li>AirQualityNO2</li>
        <li>AirQualityO3</li>
        <li>AirQualityPM10</li>
        <li>AirQualityPM25</li>
        <li>AirQualityPressure</li>
        <li>AirQualityTemperature</li>
        <li>AirQualityVOC</li>
        </ul>
        \n\n
        As response you should recieve a success message with internal serialnumber granted by the SysAP for that virtual device.
        Now you can continue working with that virtual device as with any other native free@home component via free@home API.
        \n\n
        This endpoint is also used to update the TTL regularly per device.
        When the application does not call this endpoint every TTL seconds (defaults to 180),
        the SysAP will mark the virtual device as unresponsive until a newlife sign is send.
        Changes to the datapoints can be sent via the /api/rest/datapoint/ endpoint.
        \n\n
        Please find further description in the [virtual device documentation](https://developer.eu.mybuildings.abb.com/fah_cloud/concepts/#virtual-devices)
        and an example in the [samples](https://developer.eu.mybuildings.abb.com/fah_cloud/samples/#how-to-register-a-virtual-device)."
      operationId: create-virtual-device
      parameters:
        - name: sysap
          in: path
          description: SysAP UUID
          required: true
          schema:
            $ref: "#/components/schemas/SysapUuid"
          example: "00000000-0000-0000-0000-000000000000"
        - name: serial
          in: path
          description: serialnumber for virtual device (choose freely)
          required: true
          schema:
            $ref: "#/components/schemas/NativeSerial"
          example: "abcd12345"
      requestBody:
        description: Optional description in *JSON*
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/VirtualDevice"
      responses:
        "200":
          description: successful
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VirtualDevicesSuccess"
        "502":
          description: free@home error
        "401":
          $ref: "#/components/responses/UnauthorizedError"
  "/api/rest/proxydevice/{sysap}/{class}/{device}/action/{action}":
    get:
      tags:
        - "experimental api"
      summary: Trigger proxy device
      description: "Trigger proxy device"
      operationId: proxydevice
      parameters:
        - name: sysap
          in: path
          description: SysAP UUID
          required: true
          schema:
            $ref: "#/components/schemas/SysapUuid"
          example: "00000000-0000-0000-0000-000000000000"
        - name: class
          in: path
          description: "device class"
          required: true
          schema:
            $ref: "#/components/schemas/DeviceClass"
          example: "pushbutton"
        - name: device
          in: path
          description: "individual device ID"
          required: true
          schema:
            $ref: "#/components/schemas/NativeSerial"
          example: "shelly"
        - name: action
          in: path
          description: "action to execute"
          required: true
          schema:
            type: string
            enum:
              - "shortpress"
              - "doublepress"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiRestDevice_sysap__device_Get200ApplicationJsonResponse"
        "502":
          description: free@home error
          content:
            text/plain:
              schema:
                $ref: "#/components/schemas/ApiRestDevice_sysap__device_Get502TextPlainResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
  "/api/rest/proxydevice/{sysap}/{class}/{device}/value/{value}":
    put:
      tags:
        - "experimental api"
      summary: Set proxy device value
      description: "Set proxy device value"
      operationId: proxydevice_value
      parameters:
        - name: sysap
          in: path
          description: SysAP UUID
          required: true
          schema:
            $ref: "#/components/schemas/SysapUuid"
          example: "00000000-0000-0000-0000-000000000000"
        - name: class
          in: path
          description: "device class"
          required: true
          schema:
            $ref: "#/components/schemas/DeviceClass"
          example: "temperaturesensor"
        - name: device
          in: path
          description: "individual device ID"
          required: true
          schema:
            $ref: "#/components/schemas/NativeSerial"
          example: "shelly"
        - name: value
          in: path
          description: "value to be set"
          required: true
          schema:
            type: string
            enum:
              - "temperature"
              - "alarm"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiRestDevice_sysap__device_Get200ApplicationJsonResponse"
        "502":
          description: free@home error
          content:
            text/plain:
              schema:
                $ref: "#/components/schemas/ApiRestDevice_sysap__device_Get502TextPlainResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedError"
components:
  schemas:
    Error:
      type: object
      properties:
        code:
          type: string
        detail:
          type: string
        title:
          type: string
      nullable: true
      example:
        code: "2010"
        detail: FreeAtHome connection timeout
        title: Connection Error
    SysapUuid:
      type: string
      pattern: "^0{8}-0{4}-0{4}-0{4}-0{12}$"
    DeviceSerial:
      type: string
      pattern: "^[0-9A-Fa-f]{12}$"
    ChannelSerial:
      type: string
      pattern: "^ch[0-9A-Fa-f]{4}$"
    DatapointSerial:
      type: string
      pattern: "^[io]dp[0-9A-Fa-f]{4}$"
    DeviceAndEndPontSerial:
      type: string
      pattern: "^[0-9A-Fa-f]{12}.ch[0-9A-Fa-f]{4}.[io]dp[0-9A-Fa-f]{4}$"
    NativeSerial:
      type: string
      pattern: "^[a-zA-Z0-9\\-_]{1,64}$"
    DeviceClass:
      type: string
      enum:
        - "doorring"
        - "pushbutton"
        - "smokedetector"
        - "temperaturesensor"
    Rooms:
      type: object
      additionalProperties:
        type: object
        properties:
          name:
            type: string
    Floors:
      type: object
      additionalProperties:
        type: object
        properties:
          name:
            type: string
          rooms:
            $ref: "#/components/schemas/Rooms"
    InOutPut:
      type: object
      properties:
        pairingID:
          type: integer
        value:
          type: string
    Channel:
      properties:
        displayName:
          type: string
        functionID:
          type: string
        room:
          type: string
        floor:
          type: string
        inputs:
          type: object
          additionalProperties:
            $ref: "#/components/schemas/InOutPut"
        outputs:
          type: object
          additionalProperties:
            $ref: "#/components/schemas/InOutPut"
        type:
          type: string
    Devices:
      additionalProperties:
        $ref: "#/components/schemas/Device"
    Device:
      type: object
      properties:
        displayName:
          type: string
        room:
          type: string
        floor:
          type: string
        interface:
          type: string
        nativeId:
          type: string
        channels:
          type: object
          additionalProperties:
            $ref: "#/components/schemas/Channel"
    Users:
      type: object
      additionalProperties:
        type: object
        properties:
          enabled:
            type: boolean
          flags:
            type: array
            items:
              type: string
          grantedPermissions:
            type: array
            items:
              type: string
          jid:
            type: string
          name:
            type: string
          requestedPermissions:
            type: array
            items:
              type: string
          role:
            type: string
      example:
        foobar-fhapi:
          enabled: true
          flags:
            - oauth
            - randomPassword
            - system
          grantedPermissions:
            - ""
            - oauth
            - randomPassword
            - system
          requestedPermissions:
            - ""
            - oauth
            - randomPassword
            - system
          role: switch
          name: foobar-fhapi
          jid: foobar-fhapi@busch-jaeger.de
    SysAP:
      type: object
      properties:
        devices:
          $ref: "#/components/schemas/Devices"
        floorplan:
          type: object
          properties:
            floors:
              $ref: "#/components/schemas/Floors"
        sysapName:
          type: string
        users:
          $ref: "#/components/schemas/Users"
        error:
          $ref: "#/components/schemas/Error"
      description: SysAP
    Configuration:
      type: object
      additionalProperties:
        $ref: "#/components/schemas/SysAP"
      description: Configuration for all SysAPs
    Devicelist:
      type: object
      additionalProperties:
        type: array
        items:
          type: string
          description: Device Serial Number
      example:
        3c542979-abe2-43ad-9ce0-f7d2b14b8d48:
          - ABB700000000
    VirtualDeviceType:
      type: string
      enum:
        - "BinarySensor"
        - "BlindActuator"
        - "SwitchingActuator"
        - "CeilingFanActuator"
        - "RTC"
        - "DimActuator"
        - "evcharging"
        - "WindowSensor"
        - "simple_doorlock"
        - "ShutterActuator"
        - "WeatherStation"
        - "Weather-TemperatureSensor"
        - "Weather-WindSensor"
        - "Weather-BrightnessSensor"
        - "Weather-RainSensor"
        - "WindowActuator"
        - "CODetector"
        - "FireDetector"
        - "KNX-SwitchSensor"
        - "MediaPlayer"
        - "EnergyBattery"
        - "EnergyInverter"
        - "EnergyMeter"
        - "EnergyInverterBattery"
        - "EnergyInverterMeter"
        - "EnergyInverterMeterBattery"
        - "EnergyMeterBattery"
        - "AirQualityCO2"
        - "AirQualityCO"
        - "AirQualityFull"
        - "AirQualityHumidity"
        - "AirQualityNO2"
        - "AirQualityO3"
        - "AirQualityPM10"
        - "AirQualityPM25"
        - "AirQualityPressure"
        - "AirQualityTemperature"
        - "AirQualityVOC"
    VirtualDevice:
      type: object
      required:
        - "type"
      properties:
        type:
          $ref: "#/components/schemas/VirtualDeviceType"
        properties:
          type: "object"
          properties:
            ttl:
              type: "string"
            displayname:
              type: "string"
      example:
        {
          "type": "SwitchingActuator",
          "properties": { "ttl": "180", "displayname": "Virtual switch" },
        }
    ScenesTriggered:
      type: object
      additionalProperties:
        type: object
        required:
          - "channels"
        properties:
          channels:
            type: object
            additionalProperties:
              type: object
              required:
                - "outputs"
              properties:
                outputs:
                  type: object
                  additionalProperties:
                    type: object
                    required:
                      - "value"
                      - "pairingID"
                    properties:
                      value:
                        type: string
                      pairingID:
                        type: integer
    WebsocketMessage:
      type: object
      additionalProperties:
        type: object
        required:
          - datapoints
          - devices
          - devicesAdded
          - devicesRemoved
          - scenesTriggered
        properties:
          datapoints:
            type: object
            additionalProperties:
              type: string
          devices:
            type: object
            additionalProperties:
              $ref: "#/components/schemas/Devices"
          devicesAdded:
            type: array
            items:
              type: string
          devicesRemoved:
            type: array
            items:
              type: string
          scenesTriggered:
            $ref: "#/components/schemas/ScenesTriggered"
    ApiRestConfigurationGet502TextPlainResponse:
      type: string
      example: FreeAtHome Connection Timeout
    ApiRestDevicelistGet502TextPlainResponse:
      type: string
      example: FreeAtHome Connection Timeout
    ApiRestDevice_sysap__device_Get200ApplicationJsonResponse:
      type: object
      additionalProperties:
        type: object
        properties:
          devices:
            $ref: "#/components/schemas/Devices"
      example:
        {
          "00000000-0000-0000-0000-000000000000":
            {
              "devices":
                {
                  "600028E1ED13":
                    {
                      "channels":
                        {
                          "ch0000":
                            {
                              "displayName": "Test",
                              "functionID": "0007",
                              "inputs":
                                {
                                  "idp0000": { "pairingID": 1, "value": "0" },
                                  "idp0001": { "pairingID": 2, "value": "0" },
                                  "idp0002": { "pairingID": 3, "value": "0" },
                                  "idp0003": { "pairingID": 4, "value": "0" },
                                  "idp0004": { "pairingID": 6, "value": "0" },
                                  "idp0005": { "pairingID": 48, "value": "" },
                                  "idp0006": { "pairingID": 323, "value": "" },
                                  "idp0007": { "pairingID": 333, "value": "" },
                                  "idp0008": { "pairingID": 334, "value": "" },
                                },
                              "outputs":
                                {
                                  "odp0000": { "pairingID": 256, "value": "0" },
                                  "odp0001": { "pairingID": 257, "value": "0" },
                                  "odp0002": { "pairingID": 273, "value": "" },
                                  "odp0003": { "pairingID": 305, "value": "" },
                                  "odp0004": { "pairingID": 321, "value": "" },
                                  "odp0005": { "pairingID": 335, "value": "" },
                                  "odp0006": { "pairingID": 336, "value": "" },
                                },
                            },
                        },
                      "displayName": "Test",
                      "nativeId": "47110815AA",
                      "unresponsive": false,
                    },
                },
            },
        }
    ApiRestDevice_sysap__device_Get502TextPlainResponse:
      type: string
      example: FreeAtHome Connection Timeout
    ApiRestDatapoint_sysap__serial_Get200ApplicationJsonResponse:
      type: object
      additionalProperties:
        type: object
        properties:
          values:
            type: array
            items:
              type: string
      example: { "00000000-0000-0000-0000-000000000000": { "values": ["1"] } }
    ApiRestDatapoint_sysap__serial_PutRequest:
      type: string
      example: "1"
    ApiRestDatapoint_sysap__serial_Put200TextPlainResponse:
      type: object
      example: { "00000000-0000-0000-0000-000000000000": { "result": "OK" } }
    ApiRestDatapoint_sysap__serial_Put502TextPlainResponse:
      type: string
      example: FreeAtHome Connection Timeout
    VirtualDevicesSuccess:
      description: payload contains new generated device id
      type: object
      additionalProperties:
        type: object
        properties:
          devices:
            type: object
            additionalProperties:
              type: object
              properties:
                serial:
                  type: string
      example:
        {
          "00000000-0000-0000-0000-000000000000":
            { "devices": { "abcd12345": { "serial": "6000D2CB27B2" } } },
        }
  responses:
    UnauthorizedError:
      description: Authentication information is missing or invalid

  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
security:
  - basicAuth: []
tags:
  - name: api
    description: Main API
  - name: "experimental api"
    description: Experimental API

https://github.com/kjoglum/openhab2-addons/tree/freeathome-3.0/bundles/org.openhab.binding.freeathome

Does this work with Firmware 3.1.0? Because I can’t get any connection. My user isn’t the „installer“ account, and the API setting created some long username.

As I wrote above:

It works fine with the 3.1.0 Firmware

Yes, I am running this version of the binding, being the source code as referred to above under SysAp FW version 3.1.0. Although, you need to be using a SysAp account set up with “installer” rights to get the binding working.

Also, as @ML1982 points out: You need to manually set up the bridge first (using correct IP and account with installer rights), and once the bridge is online, you can scan for things for autodiscovery.

I’ve uploaded the JAR into the /usr/share/openhab/addons folder and changed via chown the user to openhab. My free@home system has an activated API. The used user has all rights within free@home (compared to the “installer”).

But it’s always initializing. I don’t know why.

Is there a way to see any logs? (sorry, but I’m new to openHAB).