tschamm / boschshc-hass

Home Assistant component for accessing Bosch Smart Home Controller using boschshcpy python library.
Other
149 stars 22 forks source link

Bosch Outdoor Siren #120

Open n0x31x opened 7 months ago

n0x31x commented 7 months ago

Hi !

Would it be possible to Support the Bosch Outdoor Siren? If you need any help, please let me know !

Thanks ans regards!

tschamm commented 7 months ago

I don't own that one. If you can provide the rawscan, I can try to add support.

n0x31x commented 6 months ago

Hi Tschamm

Kenne mich leider nicht so gut damit aus. Woher bekomme ich das nötige Zertifikat? Notfalls kann ich dir die sirene auch zuschicken oder wir machen eine kurze remote Session? :)

tschamm commented 6 months ago

Das ist in Abschnitt CLI access to SHC erklärt. Allerdings brauchst du dafür ein System mit Python >=3.10.

Wenn du das nicht verfügbar hast, kannst du auch den integrierten Dienst in Home Assistant nutzen: Entwicklerwerkzeuge -> Dienste -> "Bosch SHC: Rawscan auslösen", Rawscan Befehl devices (falls du die Device ID noch nicht kennst), ansonsten device_services mit der device_id. Du findest die Informationen dann im Home Assistant Log: Einstellungen -> System -> Protokolle. Melde dich gerne nochmals, wenn du Fragen hast.

n0x31x commented 6 months ago

Klappt nicht wirklich über HA, bekomme errors, dabei macht es keinen unterschied ob devices oder device_services mit der device_id. Werde das noch mit dem lokalen python probieren, dafür müsste ich mir erstmal ein cert erstellen.

websocket_api script: Error executing script. Unexpected error for call_service at pos 1: SHC Error (message: API call returned non-OK result (code 404)!: b'{"@type":"JsonRestExceptionResponseEntity","errorCode":"ENTITY_NOT_FOUND","statusCode":404}') Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 468, in _async_step await getattr(self, handler)() File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 704, in _async_call_service_step response_data = await self._async_run_long_action( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 666, in _async_run_long_action return long_task.result() ^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/core.py", line 2067, in async_call response_data = await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/core.py", line 2104, in _execute_service return await target(service_call) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/bosch_shc/init.py", line 203, in rawscan_service_call rawscan = await hass.async_add_executor_job( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/boschshcpy/session.py", line 389, in rawscan return self._api.get_device_services(device_id=kwargs["device_id"]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/boschshcpy/api.py", line 176, in get_device_services return self._get_api_result_or_fail(api_url) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/boschshcpy/api.py", line 80, in _get_api_result_or_fail self._process_nok_result(result) File "/usr/local/lib/python3.11/site-packages/boschshcpy/api.py", line 123, in _process_nok_result raise SHCSessionError( boschshcpy.exceptions.SHCSessionError: SHC Error (message: API call returned non-OK result (code 404)!: b'{"@type":"JsonRestExceptionResponseEntity","errorCode":"ENTITY_NOT_FOUND","statusCode":404}')

tschamm commented 6 months ago

Das Key/Cert Paar erstellen geht auch über das Command Line Interface:

boschshc_registerclient -ip _your_shc_ip_ -pw _your_shc_password_
n0x31x commented 6 months ago

endlich hinbekommen , vielen Dank für deine Hilfe, auszug aus dem rawscan:

{ "@type": "device", "rootDeviceId": "64-da-a0-XX-XX-XX", "id": "hdm:ZigBee:385b44fffexxxx", "deviceServiceIds": [ "CommunicationQuality", "BatteryLevel", "OutdoorSiren", "LegacyAlarmConfiguration", "OutdoorSirenPowerSupply" ], "manufacturer": "BOSCH", "roomId": "hz_2", "deviceModel": "OUTDOOR_SIREN", "serial": "XXXXXXXXXX", "profile": "GENERIC", "name": "Au\u00dfensirene", "status": "UNDEFINED", "childDeviceIds": [], "supportedProfiles": []

tschamm commented 6 months ago

Super, kannst du bitte noch die Services schicken?

n0x31x commented 6 months ago

bitte sehr:

{
    "@type": "DeviceServiceData",
    "id": "OutdoorSiren",
    "deviceId": "hdm:ZigBee:385b44fffXXXXXX",
    "state": {
        "@type": "outdoorSirenState",
        "tamperActivated": true,
        "acousticAlarmOn": false,
        "visualAlarmOn": false,
        "legacyAlarm": false,
        "smartAlarm": false,
        "outdoorSirenConfiguration": {
            "alarmDuration": 3,
            "flashDuration": 15,
            "soundLevel": "LOW",
            "alarmDelay": 0,
            "flashDelay": 0
        }
    },
    "operations": [
        "triggerTestAlarm",
        "muteWarning"
    ],
    "path": "/devices/hdm:ZigBee:385b44fffXXXXXX/services/OutdoorSiren"
},
{
    "@type": "DeviceServiceData",
    "id": "BatteryLevel",
    "deviceId": "hdm:ZigBee:385b44fffXXXXXX",
    "faults": {
        "entries": [
            {
                "type": "LOW_BATTERY",
                "category": "WARNING"
            }
        ]
    },
    "path": "/devices/hdm:ZigBee:385b44fffXXXXXX/services/BatteryLevel"
},
{
    "@type": "DeviceServiceData",
    "id": "CommunicationQuality",
    "deviceId": "hdm:ZigBee:385b44fffXXXXXX",
    "state": {
        "@type": "communicationQualityState",
        "quality": "GOOD"
    },
    "path": "/devices/hdm:ZigBee:385b44fffXXXXXX/services/CommunicationQuality"
},
{
    "@type": "DeviceServiceData",
    "id": "OutdoorSirenPowerSupply",
    "deviceId": "hdm:ZigBee:385b44fffXXXXXX",
    "state": {
        "@type": "powerSupplyState",
        "acDcError": true,
        "batteryDefect": false,
        "batteryTemperatureAbnormal": false,
        "batteryPercentageRemaining": 10,
        "mainPowerSupply": "BATTERY",
        "configuredPowerSupply": "NONE",
        "primaryPowerSupplyOutage": false,
        "solarChargingCurrent": 0,
        "solarChargingScore": "BAD"
    },
    "path": "/devices/hdm:ZigBee:385b44fffXXXXXX/services/OutdoorSirenPowerSupply"
},
{
    "@type": "DeviceServiceData",
    "id": "LegacyAlarmConfiguration",
    "deviceId": "hdm:ZigBee:385b44fffXXXXXX",
    "state": {
        "@type": "legacyAlarmConfiguration",
        "profileToActivate": "0",
        "triggerSmartAlarmSystemEnabled": false,
        "overrideDisarmedSmartAlarmSystemEnabled": true
    },
    "path": "/devices/hdm:ZigBee:385b44fffXXXXXX/services/LegacyAlarmConfiguration"
}
n0x31x commented 5 months ago

Wie stehen die Chancen, dass es klappen wird? :)

tschamm commented 5 months ago

Sorry for the delay, I try to follow up with this when there is more time available.

n0x31x commented 4 months ago

Thank you, if there is anything I can help, please let me know

dondomon82 commented 3 months ago

I would also love the integration of the outdoor siren. Greetings

n0x31x commented 2 months ago

I think there is a way to Integrate the outdoor sirene via zigbee2mqtt, will try that