Coder Social home page Coder Social logo

tschamm / boschshc-hass Goto Github PK

View Code? Open in Web Editor NEW
158.0 11.0 24.0 748 KB

Home Assistant component for accessing Bosch Smart Home Controller using boschshcpy python library.

License: Other

Python 100.00%
bosch-smart-home smart-home home-assistant-component home-assistant boschshcpy

boschshc-hass's Introduction

Validate with hassfest hacs_badge

BuyMeCoffee Stars

Bosch Smart Home Controller (SHC) for Home Assistant

Bosch Smart Home

Custom Home Assistant integration for accessing Bosch Smart Home Controller (SHC).

The integration is using boschshcpy as backend towards the API.

The SmartHomeController is added as a device. The component provides access to:

  • Service calls:
    • bosch_shc.trigger_scenario service call to trigger a scenario by its name
    • bosch_shc.smokedetector_check service call to trigger a check routine of the smokedetector
  • bosch_shc.event events:
    • Button events for Universal Switches devices (lower and upper button, short and long press)
    • Scenario events for triggered scenarios registered in SHC device, each scenario is identified by its name
    • Motion events for detected motion triggered by Motion Detector devices
    • Alarm events for alarms triggered by Smoke Detector devices or by Smoke Detection System

The following platforms are implemented:

  • Alarm Control Panel
    • Intrusion Detection System
  • Binary Sensor
    • Battery: all battery powered devices
    • Shutter Contact
    • Smoke Detector Gen 1 and Gen 2
    • Motion Detector
    • Smoke Detection System
    • Water Leakage Sensor
  • Climate
    • Room Climate Control
  • Cover
    • Shutter Control
  • Light
    • LEDVANCE Light
  • Sensor
    • Thermostat
    • Wall Thermostat Gen 1 and Gen 2
    • Twinguard
    • Smart Plug, Smart Plug Compact and Light Control (energy and power)
  • Switch
    • Smart Plug
    • Smart Plug Compact
    • Light Control

Installation

For installation, follow these steps to add Bosch Smart Home devices to HomeAssistant.

  1. Install bosch_shc custom component
  2. Configure bosch_shc integration in HA.

1.) To install bosch_shc as custom component, inside your HA configuration directory create a new folder called custom_components. This is the folder that Home Assistant will look at when looking for custom code. Install the custom component there: Just copy paste the content of the boschshc-hass/bosch_shc folder in your config/custom_components directory. As example, you will get the entity.py file in the following path: config/custom_components/bosch_shc/entity.py. Afterwards, restart HomeAssistant.

2.) For configuration of bosch_shc custom component, follow the steps described in configuration. During configuration, you have to enter the password of your SHC, which you defined during setup of your SHC.

Configuration

Configuration of the component bosch_shc is done via config flow mechanism, either by zeroconf detection or by manual configuration:

If the SHC is running in the same network as the HomeAssistant, it is even found directly via zeroconf.

Configuration of the discovered integration

1.) Discovered integration

Press configure to start the configuration process.

Discovered integration.

2.) Confirmation of host

Hint: Please press the Bosch SHC's front-side button until LEDs begin flashing. This will put the SHC into client registration mode, so new clients can be added to communicate with the SHC.

Press submit to continue.

Confirmation of host.

3.) Enter credentials: System password

Use the system password of your Bosch Smart Home Controller, which you created upon initial setup of the SHC.

Press submit to continue.

Enter credentials: SSL certificate public / private key pair.

4.) Successful configuration entry created

You can define areas of all supported devices.

Press finish to end the configuration process.

Successful configuration entry created.

Additional information

Follow this thread for discussions on the Bosch Smart Home Controller Home Assistant integration.

Known Issues

  • Encrypted SSL private key is not supported due to limitations of requests library.
  • The integration is not (yet) async.
  • After adding new devices to SHC, reloading the component is necessary before these devices appear in HomeAssistant.
  • Hue Lights added to SHC do not appear in HomeAssistant. Please use the provided hue component instead.
  • Arming and disarming of alarm control panel does not support using a code.

boschshc-hass's People

Contributors

beilm avatar cabrust avatar jarfiles avatar jumlu avatar misa1515 avatar philjak avatar purii avatar tschamm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

boschshc-hass's Issues

Bosch SHC: smokedetector_check not work

I have trigger the service call smokedetector_check with the entity_id: binary_sensor.flur_battery of the smoke detector.
It doesn´t work yet. In The code The device ist the binary_sensor or I do something wrong?

Logger: homeassistant.helpers.script.websocket_api_script
Source: helpers/service.py:694
First occurred: 10:47:13 (1 occurrences)
Last logged: 10:47:13

websocket_api script: Error executing script. Unexpected error for call_service at pos 1: 'BatterySensor' object has no attribute 'async_request_smoketest'
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 381, in _async_step
await getattr(self, handler)()
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 584, in _async_call_service_step
await service_task
File "/usr/src/homeassistant/homeassistant/core.py", line 1495, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1530, in _execute_service
await handler.job.target(service_call)
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 691, in handle_service
await service.entity_service_call(
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 663, in entity_service_call
future.result() # pop exception if have
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 896, in async_request_call
await coro
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 694, in _handle_entity_call
result = hass.async_run_job(partial(getattr(entity, func), **data)) # type: ignore
AttributeError: 'BatterySensor' object has no attribute 'async_request_smoketest'

Lux from Motion Detector

Hi, thanks for your great Integration.
Is it possible to integrate a Lux Sensor from the Motion Detector?

BR Tom

Deprecated warning async_get_registry

Hello,

the following warning message occurs at startup of home assistant (core-2022.6.7):

Logger: homeassistant.helpers.frame
Source: helpers/frame.py:103
First occurred: 08:18:50 (1 occurrences)
Last logged: 08:18:50

Detected integration that uses deprecated async_get_registry to access device registry, use async_get instead. Please report issue to the custom component author for bosch_shc using this method at custom_components/bosch_shc/device_trigger.py, line 47: dev_registry = await dr.async_get_registry(hass)

Bosch SHC isn't discovered

After installing the custom component via HACS (v0.4.12) and restarting HA the SHC isn't discovered and I'm not able to configure the integration.

Failed to get public information from SHC controller: HTTPSConnectionPool(host='169.254.112.7', port=8446): Max retries exceeded with url: /smarthome/public/information (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f19b814a8b0>, 'Connection to 169.254.112.7 timed out. (connect timeout=30)'))

With the official Bosch SHC integration it works without any problem.

Exception discovery_info.get('name') since 2021.12

Hello,

I get the following error message with the current 2021.12 beta of home assistant:

Logger: homeassistant.helpers.frame
Source: helpers/frame.py:103
First occurred: 07:23:36 (1 occurrences)
Last logged: 07:23:36

Detected integration that accessed discovery_info.get('name') instead of discovery_info.name; this will fail in version 2022.6. Please report issue to the custom component author for bosch_shc using this method at custom_components/bosch_shc/config_flow.py, line 186: if not discovery_info.get("name", "").startswith("Bosch SHC"):

I know version 2022.6 is a long time away, so it's not a real problem yet.

Bosch SHC not generating unique IDs

Hi,

Since my house has two apartments and the walls are too thick for the signal to reach both of them, I'm using two separate Bosch Smart-Home-Controllers. Until recently, I've handled this by having the lower apartments controller on an old phone, but I wanted to change this with HA. I started by using the official HA plugin, but it doesn't support the "Room Climate" control, so I switched to this plugin.

Some of these rooms have/had the same name: Kitchen, Living room, Bedroom, ... and these rooms are not showing up on the second controller in HA. Everything else (radiator thermostat, window contacts, water alarm, smoke alarm), except the IDS, smoke detection system, and the few rooms, show up and work normally.

I already changed the room names in the Bosch smart home app and added a unique identifier to the entity IDs of the lower apartments entities. After that, I removed the upper apartments integration and readded it, but the devices mentioned above are still missing.

The logs of HA show the following entries:

2022-09-25 20:40:16.704 ERROR (MainThread) [homeassistant.components.binary_sensor] Platform bosch_shc does not generate unique IDs. ID smokeDetectionSystem already exists - ignoring binary_sensor.loap_smokedetectionsystem
2022-09-25 20:40:16.740 ERROR (MainThread) [homeassistant.components.climate] Platform bosch_shc does not generate unique IDs. ID roomClimateControl_hz_1 already exists - ignoring climate.loap_bathroom_room_climate
2022-09-25 20:40:16.743 ERROR (MainThread) [homeassistant.components.climate] Platform bosch_shc does not generate unique IDs. ID roomClimateControl_hz_3 already exists - ignoring climate.loap_livingroom_room_climate
2022-09-25 20:40:16.745 ERROR (MainThread) [homeassistant.components.climate] Platform bosch_shc does not generate unique IDs. ID roomClimateControl_hz_2 already exists - ignoring climate.loap_bedroom_room_climate
2022-09-25 20:40:16.747 ERROR (MainThread) [homeassistant.components.climate] Platform bosch_shc does not generate unique IDs. ID roomClimateControl_hz_5 already exists - ignoring climate.loap_workspace_room_climate
2022-09-25 20:40:16.748 ERROR (MainThread) [homeassistant.components.alarm_control_panel] Platform bosch_shc does not generate unique IDs. ID /intrusion already exists - ignoring alarm_control_panel.loap_intrusion_detection_system
2022-09-25 20:41:02.537 ERROR (MainThread) [homeassistant.components.binary_sensor] Platform bosch_shc does not generate unique IDs. ID smokeDetectionSystem already exists - ignoring binary_sensor.loap_smokedetectionsystem
2022-09-25 20:41:02.592 ERROR (MainThread) [homeassistant.components.climate] Platform bosch_shc does not generate unique IDs. ID roomClimateControl_hz_1 already exists - ignoring climate.loap_bathroom_room_climate
2022-09-25 20:41:02.596 ERROR (MainThread) [homeassistant.components.climate] Platform bosch_shc does not generate unique IDs. ID roomClimateControl_hz_3 already exists - ignoring climate.loap_livingroom_room_climate
2022-09-25 20:41:02.598 ERROR (MainThread) [homeassistant.components.climate] Platform bosch_shc does not generate unique IDs. ID roomClimateControl_hz_2 already exists - ignoring climate.loap_bedroom_room_climate
2022-09-25 20:41:02.601 ERROR (MainThread) [homeassistant.components.climate] Platform bosch_shc does not generate unique IDs. ID roomClimateControl_hz_5 already exists - ignoring climate.loap_workspace_room_climate
2022-09-25 20:41:02.603 ERROR (MainThread) [homeassistant.components.alarm_control_panel] Platform bosch_shc does not generate unique IDs. ID /intrusion already exists - ignoring alarm_control_panel.loap_intrusion_detection_system

Best regards,
Kiana

Setup failed for custom integration bosch_shc: Requirements for bosch_shc not found: ['boschshcpy==0.2.31'].

Hi,
since the last update (0.4.28) I get the following error:

Unable to install package boschshcpy==0.2.31: ERROR: Could not find a version that satisfies the requirement boschshcpy==0.2.31 (from versions: 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5.dev0, 0.1.5.dev1, 0.1.5, 0.1.6, 0.1.7, 0.1.8, 0.1.9, 0.1.10.dev0, 0.1.10, 0.1.11, 0.1.12.dev0, 0.1.12, 0.1.13, 0.1.14, 0.1.15.dev0, 0.1.15.dev1, 0.1.15.dev2, 0.1.15.dev3, 0.1.15.dev4, 0.1.15, 0.1.16, 0.1.17.dev0, 0.1.17, 0.1.18.dev0, 0.1.18.dev1, 0.1.18.dev2, 0.1.18.dev3, 0.1.18.dev4, 0.1.18.dev5, 0.1.19, 0.1.20, 0.1.21, 0.1.22, 0.2.0, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6, 0.2.7.dev0, 0.2.7.dev1, 0.2.7, 0.2.8.dev0, 0.2.8.dev1, 0.2.8.dev2, 0.2.8.dev3, 0.2.8.dev4, 0.2.8.dev5, 0.2.9, 0.2.10, 0.2.11, 0.2.12, 0.2.13, 0.2.14, 0.2.15, 0.2.16.dev0, 0.2.16.dev1, 0.2.16, 0.2.17, 0.2.18, 0.2.19, 0.2.20, 0.2.21, 0.2.22, 0.2.23, 0.2.24, 0.2.25, 0.2.26, 0.2.27, 0.2.28, 0.2.29.dev0, 0.2.29.dev1, 0.2.29, 0.2.30) ERROR: No matching distribution found for boschshcpy==0.2.31 WARNING: You are using pip version 22.0.3; however, version 22.0.4 is available. You should consider upgrading via the '/usr/local/bin/python3 -m pip install --upgrade pip' command.

HA OS and core version is the latest (core-2022.4.4, Home Assistant OS 7.6)

How can I fix this?

BR

Connect second controller?

Is it possible to connect a second controller or even a third to the system?
I've tried a few things, but i could not figure out how to do this.

At first it seems to work but then the authentification fails.
I guess that this happens because there is only one cert and key?

Thanks

Ledvance RGBW are recognized as RGB-only

After restarting the home assistant, RGBW Ledvance lights are only detected as RGB.

(Another reason might be, that I temporarily tried to put them in a light group. Also, I'm not sure if it was detected as RGBW at all ... quite bad Issue description, sorry)

Sensor from Thermostate not found

Hi,
the temperatur-sensor from the Thermostate is not found in the Integration.
In the climate.room sensor will ist works but i want the temperatur-sensor separately.
How can i catch the Sensor?

Can you help me?

Battery level always 100%

Hi,
all of my thermostats show 100% battery level, even the ones I have used for months.

Is this a bug or (mis)reported by the gateway?

Thanks!

Single thermostat as entity (next to room climate)

I have multiple Bosch thermostats II in my apartment. If several thermostats are part of a room ...
image

... in the mobile app > Favorites, these thermostats are combined in a room view (here a simple example). Finally only the average room temperature is displayed, not the single thermostat temperature.
image

Is it possible to display the details for the single thermostat in Home Assistant?

I would also expect sensor data like the valve position.
image

Is there a way to show and use this in Home Assistant? Or is it the implementation planned for this integration?

Thanks & kind regards

Climate entities not shown

I just switched from the official integration to the custom component integration to have the ability to control my room thermostats and climate controls. I deleted the official integration, loaded in the custom one and restarted hass. After the configuration was done all the previously configured entities showed up properly (meaning all the sensors and such) however no climate entity is present in my hass.

Do I need to perform additional steps to make them available? Restarting a couple of times did not help. I would expect that eight thermostats and one room climate control appear in my entity list.

Feature Request: Show valvetappet on climate card

Hi,

love the custom component. After upgrading from the builtin, I can do a lot more than before. However, I'd like to see the valvetappet in the climate card.
I think this might be difficult because there can be multiple radiator thermostats in one climate service, and I am not yet experienced enough with HA, but would like to chip in as well.

Can you provide some guidance where I need to start?
I think the climate.py needs to be extended to return a list of valve (names and tappet), and then a custom card needs to be added which is derived from the builtin card that. Is that the correct approach?

Not able to connect / connection failed

Hi there,

at first I want to thank for the work being done to make this integration possible. Unfortunately, I'm not able to make the integration work. After several hours trying, I'd like to ask for some support here.

Specs:

  • HassOS 7.0
  • HA 2021.12.2 (via Docker)
  • Bosch Smart Home Controller and HA in the same network
  • Multiple other systems/devices discovered inside the network by HA

Neither auto detection nor manual setup of SHC work.

I tried:

  1. Adding it manually via UI
  2. Adding it manually after adding the plugin into config/custom_components
  3. Adding the config manually like
bosch_shc:
  host: X.X.X.X

No matter what, I'm not able to connect to the SHC.

Bildschirmfoto 2021-12-15 um 22 32 17

The logs don't show any issues (or at least I did not find anything). For testing purposes, I entered some other IP or host domain. In those cases, HA raises an HTTPSConnectionPool error (Failed to get public information from SHC controller: HTTPSConnectionPool(host='X.X.X.X.', port=8446): Max retries exceeded with url: /smarthome/public/information....).

It does not show those errors when entering the actual SHC address.

Are there other ways to get more information/logs?

Error adding entities for domain light with platform bosch_shc

I did install the branch into my custom-components folder from scratch. So due to initializing the boschshc-devices, the following error occurs in HA-Logs. Thus the lights will not be added as entity.


Logger: homeassistant.components.light
Source: custom_components/bosch_shc/light.py:40
Integration: Licht (documentation, issues)
First occurred: 08:36:14 (8 occurrences)
Last logged: 08:39:15

    Error adding entities for domain light with platform bosch_shc
    Error while setting up bosch_shc platform for light

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 316, in async_add_entities
    await asyncio.gather(*tasks)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 422, in _async_add_entity
    capabilities=entity.capability_attributes,
  File "/usr/src/homeassistant/homeassistant/components/light/__init__.py", line 412, in capability_attributes
    supported_features = self.supported_features
  File "/config/custom_components/bosch_shc/light.py", line 40, in supported_features
    if self._device.supports_brightness:
AttributeError: 'SHCLight' object has no attribute 'supports_brightness'


How to migrate from custom component to native support

Congrats on being accepted as an official hass integration :)

Is there anything that has to be done before updating home assistant to the most current version for those who are already using the custom integration?

Thanks!

call_service throws 503

In an automation, I'm currently setting eight covers at once to a custom position.
Sometimes, the automation dies with an HTTP-503 error (see log attached). Unfortunately, this is not reproducible in a reliable manner.

I'm not sure, if I'm using too many "calls" at once. Does the integration queue the requests and sends them one by one or are they sent as soon as they "arrive"? I'd guess that this sometimes ends in an overload of the SHC.

Source: custom_components/bosch_shc/cover.py:104 
Integration: Automatisierung (documentation, issues) 
First occurred: 7:31:48 (2 occurrences) 
Last logged: 7:31:48

Bis später (Rolladen): Error executing script. Unexpected error for call_service at pos 7: API call returned non-OK result (code 503)!: b'{"@type":"JsonRestExceptionResponseEntity","errorCode":"SERVICE_INVOCATION_FAILED","statusCode":503}'
While executing automation automation.bis_spater
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 359, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 562, in _async_call_service_step
    await self._async_run_long_action(service_task)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 523, in _async_run_long_action
    long_task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1480, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1515, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 264, in service_handler
    await script_entity.async_turn_on(
  File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 375, in async_turn_on
    await coro
  File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 392, in _async_run
    return await self.script.async_run(variables, context)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1200, in async_run
    await asyncio.shield(run.async_run())
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 341, in async_run
    await self._async_step(log_exceptions=False)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 359, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 559, in _async_call_service_step
    await service_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 1480, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1515, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 206, in handle_service
    await self.hass.helpers.service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 649, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 692, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 686, in _handle_entity_call
    await result
  File "/usr/src/homeassistant/homeassistant/components/cover/__init__.py", line 281, in async_set_cover_position
    await self.hass.async_add_executor_job(
  File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/bosch_shc/cover.py", line 104, in set_cover_position
    self._device.level = position / 100.0
  File "/usr/local/lib/python3.8/site-packages/boschshcpy/models_impl.py", line 182, in level
    self._service.put_state_element("level", level)
  File "/usr/local/lib/python3.8/site-packages/boschshcpy/device_service.py", line 49, in put_state_element
    self.put_state({key: value})
  File "/usr/local/lib/python3.8/site-packages/boschshcpy/device_service.py", line 44, in put_state
    self._api.put_device_service_state(
  File "/usr/local/lib/python3.8/site-packages/boschshcpy/api.py", line 164, in put_device_service_state
    self._put_api_or_fail(api_url, state_update)
  File "/usr/local/lib/python3.8/site-packages/boschshcpy/api.py", line 102, in _put_api_or_fail
    self._process_nok_result(result)
  File "/usr/local/lib/python3.8/site-packages/boschshcpy/api.py", line 123, in _process_nok_result
    raise SHCSessionError(
boschshcpy.exceptions.SHCSessionError: API call returned non-OK result (code 503)!: b'{"@type":"JsonRestExceptionResponseEntity","errorCode":"SERVICE_INVOCATION_FAILED","statusCode":503}'```

No switch entity for light switches

I have Bosch light switches in my wall, connected to the home controller of bosch. In HA, I see the values for power an energy of each switch. However I cannot control the switch, there is no entity to do that.

Enable/Disable Alarmpanel with presence detection

Hi,

thank you very much for this nice integration. Can you please help me with a couple of questions regarding the integration, as I am new to HA and python/YAML:

  1. how to enable/disable the alarm_panel with an automation?
  2. is there a way to add a Smoke detector to the HA alarm panel as a siren?

Basically i want to ditch the Bosch APP for everything except the initial device setup.

Thank you very much.

Failed to get public information from SHC Controller

Hello,

i get after the upgrade to version 04.25 following error in the Log:

Logger: root
Source: /srv/homeassistant/lib/python3.9/site-packages/boschshcpy/api.py:142
First occurred: 16:57:11 (3 occurrences)
Last logged: 16:58:33
Failed to get public information from SHC controller: Could not find a suitable TLS CA certificate bundle, invalid path: /srv/homeassistant/lib/python3.9/site-packages/boschshcpy/tls_ca_chain.pem

Is there a Bug or have someone a solution for this problem.

I run the newest Home Assistant version. Its a venv installation.

Thanks for help!

Check whether temperature is settable on room climate, before setting it

This is not really a big issue, but before setting a temperature on a room climate, one should ensure that the room climate is not in 'Lo' mode (window open). Otherwise, setting the temperature anyways will result in an error in the logs.

2021-02-09 03:00:00 ERROR (SyncWorker_7) [root] Body: {"@type": "climateControlState", "setpointTemperature": 14.0}
2021-02-09 03:00:00 ERROR (SyncWorker_7) [root] Headers: {'User-Agent': 'python-requests/2.25.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'api-version': '2.1', 'Content-Type': 'application/json', 'Content-Length': '61'}
2021-02-09 03:00:00 ERROR (SyncWorker_7) [root] URL: https://192.168.178.64:8444/smarthome/devices/roomClimateControl_hz_6/services/RoomClimateControl/state
2021-02-09 03:00:01 ERROR (MainThread) [homeassistant.components.automation.neue_automatisierung] Reset Climate: Error executing script. Unexpected error for call_service at pos 2: API call returned non-OK result (code 400)!: b'{"@type":"JsonRestExceptionResponseEntity","errorCode":"WRONG_THERMOSTAT_GROUP_MODE","statusCode":400}'
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 254, in _async_step
await getattr(
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 464, in _async_call_service_step
await service_task
File "/usr/src/homeassistant/homeassistant/core.py", line 1455, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1490, in _execute_service
await handler.job.target(service_call)
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
await self.hass.helpers.service.entity_service_call(
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 595, in entity_service_call
future.result() # pop exception if have
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 664, in async_request_call
await coro
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 632, in _handle_entity_call
await result
File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 544, in async_service_temperature_set
await entity.async_set_temperature(**kwargs)
File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 404, in async_set_temperature
await self.hass.async_add_executor_job(
File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/bosch_shc/climate.py", line 163, in set_temperature
self._device.setpoint_temperature = float(temperature)
File "/usr/local/lib/python3.8/site-packages/boschshcpy/models_impl.py", line 335, in setpoint_temperature
self._roomclimatecontrol_service.setpoint_temperature = temperature
File "/usr/local/lib/python3.8/site-packages/boschshcpy/services_impl.py", line 45, in setpoint_temperature
self.put_state_element("setpointTemperature", value)
File "/usr/local/lib/python3.8/site-packages/boschshcpy/device_service.py", line 47, in put_state_element
self.put_state({key: value})
File "/usr/local/lib/python3.8/site-packages/boschshcpy/device_service.py", line 42, in put_state
self._api.put_device_service_state(
File "/usr/local/lib/python3.8/site-packages/boschshcpy/api.py", line 142, in put_device_service_state
self._put_api_or_fail(api_url, state_update)
File "/usr/local/lib/python3.8/site-packages/boschshcpy/api.py", line 82, in _put_api_or_fail
self._process_nok_result(result)
File "/usr/local/lib/python3.8/site-packages/boschshcpy/api.py", line 101, in _process_nok_result
raise ValueError(
ValueError: API call returned non-OK result (code 400)!: b'{"@type":"JsonRestExceptionResponseEntity","errorCode":"WRONG_THERMOSTAT_GROUP_MODE","statusCode":400}'

Vavle Position of Room Climate Control

In the BOSCH SmartHome App, you can finde the Valve Position (Ventilstellung) of room climate controls as a separate information.

Is this information also available via this integration, and if so, how is it called/do I find it.

Thanks for the great work!

Device names of Room Climate Controls is always "-RoomClimateControl-"

After updating to the most recent version of boschshc-hass and boschshcpy and runnint a clean integration setup, Thermostats are detected as both "Heizung" and "Room Climate Control" (as before), where Heizung is the sensor and Room Climate Control is the actor.

However, the name of the Room Climate Controls is now always detected with a device name of "-RoomClimateControl-", which makes it hard to distinguish (entity name is correct). Is this "wanted" behavior or a bug?

Thanks

Shutter contact position reversed

First of all; thanks for the great integration! If you need any testers I'm happy to help with whatever I can.

I noticed that when using the shutter contacts, the reported position is inverted. E.g. "0" is closed and "100" is open, which I find counterintuitive. The open and close buttons do work correctly, though.
I found no easy way to fix this for all shutters at once, but it can certainly be done with a script for each device. It just needs something like "inverted = 100 - position".
Maybe inspiration from the Z-Wave integration can be taken (https://www.home-assistant.io/integrations/zwave). It has the options "invert_openclose_buttons" and "invert_percent".
Even if this breaks some existing installations when updating, I think that this behavior should be the default, not the other way around.
I did notice that using the Google Assistant on the controller directly shows the same behavior. I am also not quite sure if this or the boschshcpy repository is the right place to post this.

Thanks in advance. I might try to write my own fix for now and will post it here if I succeed.

HomeCom / Heating Integration

Hi,

I'm using the Integration for a Long time now and like it very much. Heave you ever thought about integrating the gas heatings that can already be connected via Bosch HomeCom to the Bosch Smart Home? This would lead to a bunch of new functions like automations to turn on / off the water heating when home or not home for instance. Also the statistics for the solar water buffer temperatures could be stored.

Here is the link to the HomeCom integration:

https://www.bosch-homecom.com/de/de/boschhomecomeasy/ueberblick/

Best regards,
Sven

No temperature values in 0.4.16

Since the update to 0.4.16 the temperature of the valves and also the thermostate is not shown anymore.

Sensor not available is shown.

After downgrade to 0.4.12 it works again.

Battery sensors became binary sensors

With the last update the Battery sensors became binary sensors, which is a bit confusing. I read the other issue from Februar where you explained that the sensor reports only normal, low and critical low. But now it is reduced just to 2 states. Which state is used for fault state? Low or critical low?

Door Sensor in Automation

First off,

thank you for some great work. I was following your merge request on HASS which is nearing its first birthday. Congratulations on a 1-year old request and your tenacity :)

The entire thing works like a charm and my Bosch stuff (underfloor heating controls, shutter controls, smoke detectors, twinguards etc) work great. The only thing thats a little off is the door sensor. It does detect them all, and instantly shows in lovelace that a door is opened or closed, but I cant act on them.

Basic thing: I want to turn off/on a light if a door is opened. I tried as trigger....

Device: Trigger is unkown trigger,
State: tried On, Off, Open, Opened, Closed, true, false, 0, 1... nothing triggers.

I also tried Developer Tools -> States -> Door Sensor: State is always off and the yaml only shows

friendly_name: Büro Tür
device_class: window

What am I missing here?

Universal Switch not working after HA 2021.7 update

After I update my Home Assistant core to 2021.7 today the Universal Switch does not work anymore. I mean its shown as entity but in the Automation only the battery level could be selected as trigger, but not anymore the button press events.

_long_poll returned and SHC claims unknown poll i, showing up in the log.

Logger: boschshcpy
Source: /usr/local/lib/python3.10/site-packages/boschshcpy/session.py:194
First occurred: August 6, 2022 at 20:45:51 (1 occurrences)
Last logged: August 6, 2022 at 20:45:51

_long_poll returned False. Waiting 1 second.
Logger: boschshcpy
Source: /usr/local/lib/python3.10/site-packages/boschshcpy/session.py:125
First occurred: August 6, 2022 at 20:45:51 (1 occurrences)
Last logged: August 6, 2022 at 20:45:51

SHC claims unknown poll id. Invalidating poll id and trying resubscribe next time...

Integration "broken" after Update of Bosch Controller

Hello everyone and thank you so much for this smooth integration!

It works fine but one small issue grinds my gears:
Whenever the Bosch Controller is doing an update, I have to restart the Home Assistant (or better: the integration) to make it work again.
I am new here and I am not sure whether this is an "issue" anyway and just wanted to ask if you are aware of that?

Switches not recognized in latest HA

Window contacts, power plugs, and the universal switch stopped working after upgrading to 2022.7.3. I think it worked fine with 2022.7.0 but I'm not sure. Reverting to 2022.6.7 made these devices available again.

BOSCH SHC is installed via HACS.

Thank you for your work!

Integration not working after latest bosch smarthome controller update.

Hello,

since I updated my bsc to the newest firmware (10.2.2164-20551) the shutter controls are not working anymore.
The climate control and contact sensors are working as normal.
I get the following error logs when trying to control my shutters:

2021-09-04 19:36:00 ERROR (SyncWorker_3) [root] Body: {"@type": "shutterControlState", "level": 0.0}
2021-09-04 19:36:00 ERROR (SyncWorker_3) [root] Headers: {'User-Agent': 'python-requests/2.25.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '/', 'Connection': 'keep-alive', 'api-version': '2.1', 'Content-Type': 'application/json', 'Content-Length': '46'}
2021-09-04 19:36:00 ERROR (SyncWorker_3) [root] URL: https://169.254.65.242:8444/smarthome/devices/hdm:HomeMaticIP:3014F711A00018DBB85E66A4/services/ShutterControl/state
2021-09-04 19:36:00 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [547964644368] SHC Error (message: API call returned non-OK result (code 503)!: b'{"@type":"JsonRestExceptionResponseEntity","errorCode":"SERVICE_INVOCATION_FAILED","statusCode":503}')
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 185, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1492, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1527, in _execute_service
await handler.job.target(service_call)
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 213, in handle_service
await self.hass.helpers.service.entity_service_call(
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 658, in entity_service_call
future.result() # pop exception if have
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 843, in async_request_call
await coro
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 695, in _handle_entity_call
await result
File "/usr/src/homeassistant/homeassistant/components/cover/init.py", line 288, in async_close_cover
await self.hass.async_add_executor_job(ft.partial(self.close_cover, **kwargs))
File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/bosch_shc/cover.py", line 89, in close_cover
self._device.level = 0.0
File "/usr/local/lib/python3.9/site-packages/boschshcpy/models_impl.py", line 182, in level
self._service.put_state_element("level", level)
File "/usr/local/lib/python3.9/site-packages/boschshcpy/device_service.py", line 49, in put_state_element
self.put_state({key: value})
File "/usr/local/lib/python3.9/site-packages/boschshcpy/device_service.py", line 44, in put_state
self._api.put_device_service_state(
File "/usr/local/lib/python3.9/site-packages/boschshcpy/api.py", line 170, in put_device_service_state
self._put_api_or_fail(api_url, state_update)
File "/usr/local/lib/python3.9/site-packages/boschshcpy/api.py", line 102, in _put_api_or_fail
self._process_nok_result(result)
File "/usr/local/lib/python3.9/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 503)!: b'{"@type":"JsonRestExceptionResponseEntity","errorCode":"SERVICE_INVOCATION_FAILED","statusCode":503}')

Sorry for bad formatting, i could not find how to properly format log entries on github.

KeyError: 'smokeDetectionSystem'

Unfortunately I have a problem in my Bosch integration since the last update. Various entities are displayed as unavailable.
In the logs I find the following entry, which apparently cancels the correct integration.

Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 249, in _async_setup_platform await asyncio.shield(task) File "/config/custom_components/bosch_shc/binary_sensor.py", line 81, in async_setup_entry binary_sensor = session.device_helper.smoke_detection_system File "/usr/local/lib/python3.9/site-packages/boschshcpy/device_helper.py", line 182, in smoke_detection_system return self._devices_by_model["SMOKE_DETECTION_SYSTEM"]["smokeDetectionSystem"] KeyError: 'smokeDetectionSystem'

It would be nice if you could help me.

Trouble installing

Hey guys,

I want to control my Bosch light switch controls from inside HA.

I have tried installing the Bosch SHC-Integration in Configuration->Integrations->Add Integration->Bosch SHC. However, I only get two sensor entities (sensor.*_energy and sensor.*_power) created in Home Assistant over this integration and hence cannot control the switches over them.

Later on, I found your integration, which is a different one, am I correct about this? The readme states that it supports light control switches, so I guess that is my use case. So I tried installing it, but didn't come far. I tried both installing the Bosch Smart Home Controller (SHC) integration via HACS (which is this integration, isn't it?) and via manual file deployment inside custom_components. However, after restarting HA, it doesn't automatically show up under Configuration->Integrations. When I press Add Integration, it shows a Bosch SHC, but this is again the official one from my first try, isn't it? If I click on it, it hangs a moment with the message Please wait while the integration is being installed andafter a few seconds it tells me: Error - Config flow could not be loaded.

What am I doing wrong?
Thanks for the clarifications and tips in advance!

Sincerely, Lucas

Failed to connect

Hello everyone,

just bought a Bosch Smart Home Kit because of the possibility to integrate it into HA. Unfortunately, I have issues connecting my HA with my SHC. Even the IP is correct (I already create a key-pair and added the client), I got this message:

image

My HA is running in a docker environment.

Does anyone have an idea, why this happens?

Thanks!
Philip

// Edit:
My machine has two different IPs in two different networks. Could this cause the problem? But I can see other hardware like Blink, Tado, Hue without any problems.

// Debug info

System Health

version 2021.1.5
installation_type Home Assistant Container
dev false
hassio false
docker true
virtualenv false
python_version 3.8.7
os_name Linux
os_version 4.15.0-112-generic
arch x86_64
timezone Europe/Berlin
Home Assistant Community Store
GitHub API ok
Github API Calls Remaining 4682
Installed Version 1.11.2
Stage running
Available Repositories 746
Installed Repositories 1
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Lovelace
dashboards 1
mode storage
views 1
resources 0

Bug related to color temperature conversion

There seems to be a bug in the conversion code for white temperatures (see log below). Seems that the color temperature cannot be gathered correctly?

Related: #17

Logger: homeassistant.components.alexa.capabilities
Source: util/color.py:510
Integration: Amazon Alexa (documentation, issues)
First occurred: 7. Februar 2021, 20:08:32 (94 occurrences)
Last logged: 8:23:44

Unexpected error getting Alexa.ColorTemperatureController.colorTemperatureInKelvin property from <state light.stehlampe_mitte=on; min_mireds=153, max_mireds=500, brightness=255, color_temp=0, hs_color=(39.13, 54.118), rgb_color=(255, 206, 116), xy_color=(0.461, 0.412), friendly_name=Stehlampe mitte, supported_features=19 @ 2021-02-08T21:01:30.877374+01:00>
Unexpected error getting Alexa.ColorTemperatureController.colorTemperatureInKelvin property from <state light.gismo=on; min_mireds=153, max_mireds=500, brightness=255, color_temp=0, hs_color=(39.13, 54.118), rgb_color=(255, 206, 116), xy_color=(0.461, 0.412), entity_id=['light.stehlampe_oben', 'light.stehlampe_mitte'], friendly_name=Gismo, icon=mdi:lightbulb-group, supported_features=19 @ 2021-02-08T21:01:30.885542+01:00>
Unexpected error getting Alexa.ColorTemperatureController.colorTemperatureInKelvin property from <state light.stehlampe_mitte=on; min_mireds=153, max_mireds=500, brightness=255, color_temp=0, hs_color=(39.13, 54.118), rgb_color=(255, 206, 116), xy_color=(0.461, 0.412), friendly_name=Stehlampe mitte, supported_features=19 @ 2021-02-09T08:07:59.908412+01:00>
Unexpected error getting Alexa.ColorTemperatureController.colorTemperatureInKelvin property from <state light.gismo=on; min_mireds=153, max_mireds=500, brightness=255, color_temp=0, hs_color=(39.13, 54.118), rgb_color=(255, 206, 116), xy_color=(0.461, 0.412), entity_id=['light.stehlampe_oben', 'light.stehlampe_mitte'], friendly_name=Gismo, icon=mdi:lightbulb-group, supported_features=19 @ 2021-02-09T08:07:59.916410+01:00>
Unexpected error getting Alexa.ColorTemperatureController.colorTemperatureInKelvin property from <state light.stehlampe_oben=on; min_mireds=153, max_mireds=500, brightness=255, color_temp=0, hs_color=(39.13, 54.118), rgb_color=(255, 206, 116), xy_color=(0.461, 0.412), friendly_name=Stehlampe oben, supported_features=19 @ 2021-02-09T08:08:08.121837+01:00>
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/alexa/capabilities.py", line 243, in serialize_properties
    prop_value = self.get_property(prop_name)
  File "/usr/src/homeassistant/homeassistant/components/alexa/capabilities.py", line 624, in get_property
    return color_util.color_temperature_mired_to_kelvin(
  File "/usr/src/homeassistant/homeassistant/util/color.py", line 510, in color_temperature_mired_to_kelvin
    return math.floor(1000000 / mired_temperature)
ZeroDivisionError: division by zero

AttributeError: module 'homeassistant.components.zeroconf' has no attribute 'ZeroconfServiceInfo'

Thank you for providing the Bosch Smart Home Integration. I'm looking forward to use it. But I'm facing an issue after installation.

After installation as described in https://github.com/tschamm/boschshc-hass#readme I've restarted Home Assistant. Now I see following error in the logs:

2021-12-11 08:11:03 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/discovery_flow.py", line 74, in _async_process_pending_flows
await gather_with_concurrency(
File "/usr/src/homeassistant/homeassistant/util/async_.py", line 170, in gather_with_concurrency
return await gather(
File "/usr/src/homeassistant/homeassistant/util/async_.py", line 168, in sem_task
return await task
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 197, in async_init
flow, result = await task
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 215, in _async_init
flow = await self.async_create_flow(handler, context=context, data=data)
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 709, in async_create_flow
integration.get_platform("config_flow")
File "/usr/src/homeassistant/homeassistant/loader.py", line 530, in get_platform
cache[full_name] = self._import_platform(platform_name)
File "/usr/src/homeassistant/homeassistant/loader.py", line 535, in _import_platform
return importlib.import_module(f"{self.pkg_path}.{platform_name}")
File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 850, in exec_module
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "/config/custom_components/bosch_shc/config_flow.py", line 78, in <module>
class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
File "/config/custom_components/bosch_shc/config_flow.py", line 186, in ConfigFlow
self, discovery_info: zeroconf.ZeroconfServiceInfo
AttributeError: module 'homeassistant.components.zeroconf' has no attribute 'ZeroconfServiceInfo'

I'm running Home Assistant 2021.11.5

Adjusting light color for RGBA-Lightstripe

So now that I've got a ledvance RGBA-Lightstripe, I'd like to adjust the Light-Color.

Here some device details as json-output from postman:

{
        "@type": "device",
        "rootDeviceId": "ff-ff-ff-ff-ff-ff",
        "id": "hdm:ZigBee:ffffffffffffffff",
        "deviceServiceIds": [
            "CommunicationQuality",
            "MultiLevelSwitch",
            "HSBColorActuator",
            "BinarySwitch"
        ],
        "manufacturer": "LEDVANCE",
        "roomId": "hz_2",
        "deviceModel": "LEDVANCE_LIGHT",
        "serial": "FFFFFFFFFFFFFFFF",
        "profile": "GENERIC",
        "iconId": "icon_ledvance_light_strip",
        "name": "Farbstreifen",
        "status": "AVAILABLE",
        "childDeviceIds": []
    },

Services for this device:

[
    {
        "@type": "DeviceServiceData",
        "id": "MultiLevelSwitch",
        "deviceId": "hdm:ZigBee:f0d1b80000157e90",
        "state": {
            "@type": "multiLevelSwitchState",
            "level": 100
        },
        "path": "/devices/hdm:ZigBee:f0d1b80000157e90/services/MultiLevelSwitch"
    },
    {
        "@type": "DeviceServiceData",
        "id": "HSBColorActuator",
        "deviceId": "hdm:ZigBee:f0d1b80000157e90",
        "state": {
            "@type": "colorState",
            "rgb": -12427,
            "gamut": "LEDVANCE_GAMUT_A",
            "colorTemperatureRange": {
                "minCt": 153,
                "maxCt": 526
            }
        },
        "path": "/devices/hdm:ZigBee:f0d1b80000157e90/services/HSBColorActuator"
    },
    {
        "@type": "DeviceServiceData",
        "id": "BinarySwitch",
        "deviceId": "hdm:ZigBee:f0d1b80000157e90",
        "state": {
            "@type": "binarySwitchState",
            "on": true
        },
        "path": "/devices/hdm:ZigBee:f0d1b80000157e90/services/BinarySwitch"
    },
    {
        "@type": "DeviceServiceData",
        "id": "CommunicationQuality",
        "deviceId": "hdm:ZigBee:f0d1b80000157e90",
        "state": {
            "@type": "communicationQualityState",
            "quality": "GOOD"
        },
        "path": "/devices/hdm:ZigBee:f0d1b80000157e90/services/CommunicationQuality"
    }
]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.