pgerke / homebridge-freeathome-local-api

A Homebridge plugin that allows controlling you free@home setup using the local API provided by the System Access Point
MIT License
18 stars 2 forks source link

Support for Weather station #40

Closed sgabriel closed 1 year ago

sgabriel commented 1 year ago

The free@home weather station offers a variety of different measurements, like outside temperature, wind speed or brightness. Is it possible to publish those measurements to HomeKit using this plugin?

I would be open to trying to implement it myself and provide a pull request, but I would need some help to get started.

pgerke commented 1 year ago

Sure, it's possible, at least in parts. You need to create a new accessory that uses the services that you want to expose. You can find a list of services and their characteristics in the Homebridge Developer Documentation. You'll notice that most services you are looking for exist (e.g. Light Sensor, Temperature Sensor, Humidity Sensor), but as far as I can see there is no service you could use for wind speed and direction. From a UX point of view, please note you'll to put your new accessory in a room. Unfortunately, there is no "outside" in Apple Home...

pgerke commented 1 year ago

I'd need asample configuration for the weather station before I can consider the request. Please refer to https://github.com/pgerke/homebridge-freeathome-local-api/wiki/Retrieving-the-Configuration-for-a-device-from-the-System-Access-Point to learn how you can retrieve a device configuration from your System Access Point.

sgabriel commented 1 year ago

The configuration JSON is:

{
  "00000000-0000-0000-0000-000000000000": {
    "devices": {
      "7EB10000388E": {
        "floor": "02",
        "room": "FB",
        "interface": "TP",
        "displayName": "Wetterstation",
        "unresponsive": false,
        "channels": {
          "ch0000": {
            "displayName": "Wetterstation",
            "functionID": "41",
            "inputs": {},
            "outputs": {
              "odp0000": {
                "pairingID": 1026,
                "value": "0"
              },
              "odp0001": {
                "pairingID": 1027,
                "value": "1.4"
              },
              "odp0002": {
                "pairingID": 4,
                "value": "0"
              }
            }
          },
          "ch0001": {
            "displayName": "Wetterstation",
            "functionID": "42",
            "inputs": {},
            "outputs": {
              "odp0000": {
                "pairingID": 39,
                "value": "0"
              },
              "odp0001": {
                "pairingID": 4,
                "value": "0"
              },
              "odp0002": {
                "pairingID": 1029,
                "value": "0"
              },
              "odp0003": {
                "pairingID": 1030,
                "value": "0"
              }
            }
          },
          "ch0002": {
            "displayName": "Wetterstation",
            "functionID": "43",
            "inputs": {},
            "outputs": {
              "odp0000": {
                "pairingID": 38,
                "value": "0"
              },
              "odp0001": {
                "pairingID": 1024,
                "value": "7.66"
              },
              "odp0002": {
                "pairingID": 4,
                "value": "0"
              }
            }
          },
          "ch0003": {
            "displayName": "Wetterstation",
            "functionID": "44",
            "inputs": {},
            "outputs": {
              "odp0000": {
                "pairingID": 37,
                "value": "0"
              },
              "odp0001": {
                "pairingID": 1025,
                "value": "0"
              },
              "odp0002": {
                "pairingID": 4,
                "value": "0"
              },
              "odp0003": {
                "pairingID": 1028,
                "value": "0"
              }
            }
          }
        }
      }
    }
  }
}

From what I can see in the App "functionID": "43" is the outside temperature and "functionID": "41" is brightness measured in Lux. Since both other values are currently 0 I can't tell them apart.

pgerke commented 1 year ago

Preview release version v1.5.0-pre.9 adds experimental support for the weather station's brightness and temperature sensors. I'd be very interested in getting some feedback!

github-actions[bot] commented 1 year ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.