kingsleyadam / local-abbfreeathome-hass

This is the Home Assistant custom_components (HACS) repository for Busch Jaeger/ABB Free@Home (Local API)
MIT License
3 stars 2 forks source link

Add support for dimmer switches #23

Open nrenner73 opened 1 week ago

nrenner73 commented 1 week ago

Maybe it´s too early, but I wanted to ask if support for dimmer switches can be implemented.

I digged through your code and I think I get it, but it would help me a lot if I could compare the necessary code for a second device type to the already implemented switch_actuator.

Anyway, attached is the config of a dimming actuator downloaded from the swagger ui of my SysAP.

{
  "00000000-0000-0000-0000-000000000000": {
    "devices": {
      "ABB7F630A832": {
        "deviceReboots": "22",
        "floor": "02",
        "room": "02",
        "interface": "RF",
        "deviceId": "2039",
        "displayName": "Esszimmer Tisch",
        "unresponsive": false,
        "unresponsiveCounter": 0,
        "defect": false,
        "channels": {
          "ch0000": {
            "floor": "02",
            "room": "02",
            "displayName": "Esszimmer Tisch",
            "functionID": "1",
            "inputs": {
              "idp0000": {
                "pairingID": 256,
                "value": "0"
              },
              "idp0001": {
                "pairingID": 18,
                "value": "0"
              },
              "idp0002": {
                "pairingID": 273,
                "value": "0"
              },
              "idp0004": {
                "pairingID": 261,
                "value": "0"
              },
              "idp0005": {
                "pairingID": 278,
                "value": "0"
              },
              "idp0009": {
                "pairingID": 272,
                "value": "0"
              },
              "idp000a": {
                "pairingID": 277,
                "value": "0"
              }
            },
            "outputs": {
              "odp0000": {
                "pairingID": 1,
                "value": "0"
              },
              "odp0001": {
                "pairingID": 16,
                "value": "8"
              },
              "odp0006": {
                "pairingID": 4,
                "value": "0"
              }
            },
            "parameters": {
              "par0002": "30",
              "par0001": "50",
              "par0007": "1"
            }
          },
          "ch0008": {
            "floor": "02",
            "room": "02",
            "displayName": "Esszimmer Tisch",
            "selectedIcon": "1",
            "functionID": "12",
            "inputs": {
              "idp0000": {
                "pairingID": 1,
                "value": "0"
              },
              "idp0001": {
                "pairingID": 16,
                "value": "8"
              },
              "idp0002": {
                "pairingID": 17,
                "value": "0"
              },
              "idp0003": {
                "pairingID": 2,
                "value": "0"
              },
              "idp0004": {
                "pairingID": 3,
                "value": "0"
              },
              "idp0005": {
                "pairingID": 4,
                "value": "0"
              },
              "idp0006": {
                "pairingID": 18,
                "value": "0"
              },
              "idp0007": {
                "pairingID": 6,
                "value": "0"
              }
            },
            "outputs": {
              "odp0000": {
                "pairingID": 256,
                "value": "0"
              },
              "odp0001": {
                "pairingID": 272,
                "value": "0"
              },
              "odp0002": {
                "pairingID": 273,
                "value": "0"
              },
              "odp0003": {
                "pairingID": 257,
                "value": "0"
              }
            },
            "parameters": {
              "par0013": "3",
              "par0004": "20",
              "par0005": "100",
              "par0012": "100",
              "par0015": "60",
              "par0029": "2"
            }
          },
          "ch000b": {
            "floor": "02",
            "room": "02",
            "displayName": "Esszimmer Tisch",
            "functionID": "1",
            "inputs": {
              "idp0000": {
                "pairingID": 256,
                "value": "0"
              },
              "idp0001": {
                "pairingID": 272,
                "value": "0"
              },
              "idp0006": {
                "pairingID": 261,
                "value": "0"
              },
              "idp0007": {
                "pairingID": 277,
                "value": "0"
              }
            },
            "outputs": {
              "odp0000": {
                "pairingID": 1,
                "value": "0"
              },
              "odp0001": {
                "pairingID": 16,
                "value": "0"
              }
            },
            "parameters": {
              "par0010": "1"
            }
          }
        },
        "parameters": {
          "par00ed": "1"
        }
      }
    }
  }
}
derjoerg commented 1 week ago

Hi @nrenner73,

I'm also keen to implement additional devices 😄

I've done an example implementation for a trigger and @kingsleyadam is now checking how everything fits together to have a solid base for future additions.

As all the logic is within a dedicated python-package you can also look at the repository "local-abbfreeathome". All new stuff first needs to be implemented over there and then this integration can be updated accordingly.

On my todo- and wish-list are so far:

kingsleyadam commented 6 days ago

Maybe it´s too early, but I wanted to ask if support for dimmer switches can be implemented.

I digged through your code and I think I get it, but it would help me a lot if I could compare the necessary code for a second device type to the already implemented switch_actuator.

Anyway, attached is the config of a dimming actuator downloaded from the swagger ui of my SysAP.

{
  "00000000-0000-0000-0000-000000000000": {
    "devices": {
      "ABB7F630A832": {
        "deviceReboots": "22",
        "floor": "02",
        "room": "02",
        "interface": "RF",
        "deviceId": "2039",
        "displayName": "Esszimmer Tisch",
        "unresponsive": false,
        "unresponsiveCounter": 0,
        "defect": false,
        "channels": {
          "ch0000": {
            "floor": "02",
            "room": "02",
            "displayName": "Esszimmer Tisch",
            "functionID": "1",
            "inputs": {
              "idp0000": {
                "pairingID": 256,
                "value": "0"
              },
              "idp0001": {
                "pairingID": 18,
                "value": "0"
              },
              "idp0002": {
                "pairingID": 273,
                "value": "0"
              },
              "idp0004": {
                "pairingID": 261,
                "value": "0"
              },
              "idp0005": {
                "pairingID": 278,
                "value": "0"
              },
              "idp0009": {
                "pairingID": 272,
                "value": "0"
              },
              "idp000a": {
                "pairingID": 277,
                "value": "0"
              }
            },
            "outputs": {
              "odp0000": {
                "pairingID": 1,
                "value": "0"
              },
              "odp0001": {
                "pairingID": 16,
                "value": "8"
              },
              "odp0006": {
                "pairingID": 4,
                "value": "0"
              }
            },
            "parameters": {
              "par0002": "30",
              "par0001": "50",
              "par0007": "1"
            }
          },
          "ch0008": {
            "floor": "02",
            "room": "02",
            "displayName": "Esszimmer Tisch",
            "selectedIcon": "1",
            "functionID": "12",
            "inputs": {
              "idp0000": {
                "pairingID": 1,
                "value": "0"
              },
              "idp0001": {
                "pairingID": 16,
                "value": "8"
              },
              "idp0002": {
                "pairingID": 17,
                "value": "0"
              },
              "idp0003": {
                "pairingID": 2,
                "value": "0"
              },
              "idp0004": {
                "pairingID": 3,
                "value": "0"
              },
              "idp0005": {
                "pairingID": 4,
                "value": "0"
              },
              "idp0006": {
                "pairingID": 18,
                "value": "0"
              },
              "idp0007": {
                "pairingID": 6,
                "value": "0"
              }
            },
            "outputs": {
              "odp0000": {
                "pairingID": 256,
                "value": "0"
              },
              "odp0001": {
                "pairingID": 272,
                "value": "0"
              },
              "odp0002": {
                "pairingID": 273,
                "value": "0"
              },
              "odp0003": {
                "pairingID": 257,
                "value": "0"
              }
            },
            "parameters": {
              "par0013": "3",
              "par0004": "20",
              "par0005": "100",
              "par0012": "100",
              "par0015": "60",
              "par0029": "2"
            }
          },
          "ch000b": {
            "floor": "02",
            "room": "02",
            "displayName": "Esszimmer Tisch",
            "functionID": "1",
            "inputs": {
              "idp0000": {
                "pairingID": 256,
                "value": "0"
              },
              "idp0001": {
                "pairingID": 272,
                "value": "0"
              },
              "idp0006": {
                "pairingID": 261,
                "value": "0"
              },
              "idp0007": {
                "pairingID": 277,
                "value": "0"
              }
            },
            "outputs": {
              "odp0000": {
                "pairingID": 1,
                "value": "0"
              },
              "odp0001": {
                "pairingID": 16,
                "value": "0"
              }
            },
            "parameters": {
              "par0010": "1"
            }
          }
        },
        "parameters": {
          "par00ed": "1"
        }
      }
    }
  }
}

@nrenner73 , can you post this again with the dimmer's actually turned on? By looking at this I think the dimmers are off, so I just want to double check what it looks like when they're on.

nrenner73 commented 5 days ago

Ok, here´s the dimmer in full throttle (100% on)

{
  "00000000-0000-0000-0000-000000000000": {
    "devices": {
      "ABB7F630A832": {
        "deviceReboots": "22",
        "floor": "02",
        "room": "02",
        "interface": "RF",
        "deviceId": "2039",
        "displayName": "Esszimmer Tisch",
        "unresponsive": false,
        "unresponsiveCounter": 0,
        "defect": false,
        "channels": {
          "ch0000": {
            "floor": "02",
            "room": "02",
            "displayName": "Esszimmer Tisch",
            "functionID": "1",
            "inputs": {
              "idp0000": {
                "pairingID": 256,
                "value": "1"
              },
              "idp0001": {
                "pairingID": 18,
                "value": "1"
              },
              "idp0002": {
                "pairingID": 273,
                "value": "0"
              },
              "idp0004": {
                "pairingID": 261,
                "value": "0"
              },
              "idp0005": {
                "pairingID": 278,
                "value": "0"
              },
              "idp0009": {
                "pairingID": 272,
                "value": "100"
              },
              "idp000a": {
                "pairingID": 277,
                "value": "0"
              }
            },
            "outputs": {
              "odp0000": {
                "pairingID": 1,
                "value": "1"
              },
              "odp0001": {
                "pairingID": 16,
                "value": "0"
              },
              "odp0006": {
                "pairingID": 4,
                "value": "0"
              }
            },
            "parameters": {
              "par0002": "30",
              "par0001": "50",
              "par0007": "1"
            }
          },
          "ch0008": {
            "floor": "02",
            "room": "02",
            "displayName": "Esszimmer Tisch",
            "selectedIcon": "1",
            "functionID": "12",
            "inputs": {
              "idp0000": {
                "pairingID": 1,
                "value": "1"
              },
              "idp0001": {
                "pairingID": 16,
                "value": "0"
              },
              "idp0002": {
                "pairingID": 17,
                "value": "100"
              },
              "idp0003": {
                "pairingID": 2,
                "value": "0"
              },
              "idp0004": {
                "pairingID": 3,
                "value": "0"
              },
              "idp0005": {
                "pairingID": 4,
                "value": "0"
              },
              "idp0006": {
                "pairingID": 18,
                "value": "1"
              },
              "idp0007": {
                "pairingID": 6,
                "value": "0"
              }
            },
            "outputs": {
              "odp0000": {
                "pairingID": 256,
                "value": "1"
              },
              "odp0001": {
                "pairingID": 272,
                "value": "100"
              },
              "odp0002": {
                "pairingID": 273,
                "value": "0"
              },
              "odp0003": {
                "pairingID": 257,
                "value": "0"
              }
            },
            "parameters": {
              "par0013": "3",
              "par0004": "20",
              "par0005": "100",
              "par0012": "100",
              "par0015": "60",
              "par0029": "2"
            }
          },
          "ch000b": {
            "floor": "02",
            "room": "02",
            "displayName": "Esszimmer Tisch",
            "functionID": "1",
            "inputs": {
              "idp0000": {
                "pairingID": 256,
                "value": "0"
              },
              "idp0001": {
                "pairingID": 272,
                "value": "0"
              },
              "idp0006": {
                "pairingID": 261,
                "value": "0"
              },
              "idp0007": {
                "pairingID": 277,
                "value": "0"
              }
            },
            "outputs": {
              "odp0000": {
                "pairingID": 1,
                "value": "0"
              },
              "odp0001": {
                "pairingID": 16,
                "value": "0"
              }
            },
            "parameters": {
              "par0010": "1"
            }
          }
        },
        "parameters": {
          "par00ed": "1"
        }
      }
    }
  }
}