Giter VIP home page Giter VIP logo

niko-home-control-ii's Introduction

Niko Home Control II Home Assistant Integration

License: MIT

This custom component will allow you to integrate you Niko Connected Controller II in Home Assistant. You can use a touchscreen profile or the Hobby API account.

This integration communicates directly with the controller. You only need internet when activating/renewing the Hobby API. If you use a touch screen profile, this isn't even needed.

IMPORTANT: There is an issue with the touch profiles, so the only supported way to configure the controller is the Niko Hobby API.

Acknowledgements

This custom component is a spin-off of the hard and excellent work by @filipvh. Thanks!

A big thanks to Johan and Koen from Niko for their support and providing the test equipment.

Some people who made this possible, and should be mentioned:

  • @nexus256
  • @joleys
  • @tijsverkoyen

What works now?

Everything is developed against the Niko documentation. The version that was used can be found at docs/documentation.pdf.

General

The integration provides multiple devices and entities. See below for a list of entities that each type of device exposes.

Entities

The integration itself exposes the following entities:

  • Latest Controller Config Update Entity, If you upload a new configuration to your controller you need to restart Home Assistant. Otherwise the integration will not work correctly. This entity will be on when a new configuration is loaded.

NHC Access Control Action

This action is exposed as a switch (if supported), and a lock (if supported)

Entities

  • Lock, (only if supported), used to unlock the doorlock.
  • Basic State Enum Sensor, (only if supported), This is only available for ring-and-come-in routine. It indicates if the ring-and-come-in is enabled or not. The switch uses the same information but will not take Intermediate into account.
  • Call Answered Binary Sensor, (only if supported), Call is picked up.
  • Call Pending Binary Sensor, (only if supported), Call is pending.
  • Decline Call Applied On All Devices Binary Sensor, which represents the Decline Call Applied On All Devices state.

NHC All Off Action

This action is exposed as a button.

Entities

It has some extra entities that can be used in automations:

  • Basic State Binary Sensor, The state is according the state of all assigned players as configured for that action.
  • AllOff Active Binary Sensor, Is on only upon activation of the action. Off when one of the assigned participants in the action had a state change. Be aware that this state is only updated as the button is pressed, not when all devices are off.
  • AllStarted Binary Sensor, (only if supported), Is on when all outputs have reached their "Started" value

NHC Audio Control Action

This action is exposed as media player.

Entities

It has some extra entities that can be used in automations:

  • Volume Aligned Binary Sensor, on when all speakers / groups have the same volume.
  • Title Aligned Binary Sensor, on when all speakers / groups have the title.
  • Connected Binary Sensor, on when all speakers are connected.
  • Speaker Sensor, the UUID of the speaker to fetch the favourites from.

Not yet implemented

  • Setting the favourite

NHC Basic Alarm Action & NHC Panic Mode Action

Remark: this is untested as I don't own a device of this type.

This action is exposed as alarm control panel.

Entities

It has some extra entities that can be used in automations:

  • Basic State Enum Sensor, which represents the Basic State. It is on when bell button is press, off when no call

NHC BellButton Action

This action exposes a switch and a lock.

Entities

It has some extra entities that can be used in automations:

  • Basic State Switch
  • Basic State Enum Sensor, which represents the Basic State. It is on when bell button is press, off when no call is active. The switch uses the same information but will not take Intermediate into account.
  • Lock, used to unlock the doorlock.
  • Decline Call Applied On All Devices Binary Sensor, which represents the Decline Call Applied On All Devices state.

NHC Dimmer Action

This action is exposed as a light.

Entities

  • Aligned Binary Sensor, this is on when:
    • all dimmers are on and have the same brightness
    • all dimmers are off, regardless of the brightness

Services

The integration exposes a service to set the brightness of a light. This can be used to set the brightness without turning the lights on. For instance if you want your lights to have a certain brightness at night. See Developer Tools → Services → Niko Home Control II: Set brightness for light.

NHC Fan Action

This is exposed as a fan entity.

NHC Free Start Stop Actions

This action is exposed as a switch.

Entities

It has some extra entities that can be used in automations:

  • All Started Binary Sensor, (only if supported), Is on when all outputs have reached their "Started" value.
  • Start Active Binary Sensor, is on upon activation of the action. It is off when one of the assigned participant in the action has a state change.

NHC Garage Door Action

This action is exposed as a cover.

Entities

  • Basic State Enum Sensor, which represents the Basic State. On means the gate is opened, off means the gate is closed. Intermediate means the gate is moving, only when optional moving sensor is available.
  • Port Closed Binary Sensor, undocumented.

NHC House Mode Actions

This action is exposed as a switch.

Entities

It has some extra entities that can be used in automations:

  • Start Active Binary Sensor, is on upon activation of the action. It is off when one of the assigned participant in the action has a state change.
  • All Started Binary Sensor, (only if supported), Is on when all outputs have reached their "Started" value.

NHC HVAC Thermostat

This is exposed as a climate entity.

Entities

  • Setpoint Temperature Sensor, the desired setpoint in the current program.
  • Overrule Active Switch, marks if the overrule-time will be used instead of setpoint as defined in program mode.
  • Overrule Setpoint Temperature Sensor, the current overruled setpoint temperature.
  • Overrule Time Duration Sensor, duration of the overrule period in minutes.
  • EcoSave Switch, marks if the EcoSave mode is active. When active the program keeps going, but the setpointtemperature is altered (+3 when cooling, -3 when heating).
  • Protect Mode Switch, marks if the Protect mode is active. This is the system off mode with temperature protection. Heating is activated when temperature is too low Cooling is activated when temperature is too high.
  • Thermostat on Switch, indicates wheter the thermostat is turned on or off.
  • HVAC On Binary Sensor, indicates that the HVAC indoor unit is online.

NHC Thermostat

This is exposed as a climate entity.

Entities

  • Setpoint Temperature Sensor, the desired setpoint in the current program.
  • Overrule Active Switch, marks if the overrule-time will be used instead of setpoint as defined in program mode.
  • Overrule Setpoint Temperature Sensor, (only if supported), the current overruled setpoint temperature.
  • Overrule Time Duration Sensor, (only if supported), duration of the overrule period in minutes.
  • EcoSave Switch, (only if supported), marks if the EcoSave mode is active. When active the program keeps going, but the setpointtemperature is altered (+3 when cooling, -3 when heating).

NHC Touch Switch

This is exposed as a climate entity.

Entities

  • Setpoint Temperature Sensor, the desired setpoint in the current program.
  • Overrule Active Switch, marks if the overrule-time will be used instead of setpoint as defined in program mode.
  • Overrule Setpoint Temperature Sensor, the current overruled setpoint temperature.
  • Overrule Time Duration Sensor, duration of the overrule period in minutes.
  • EcoSave Switch, marks if the EcoSave mode is active. When active the program keeps going but limits the temperature range to the value configured.

NHC Mood Action

This action is exposed as a button.

Entities

It has some extra entities that can be used in automations:

  • Basic State Binary Sensor, is on or off according to the state of all assigned players as configured for that action.
  • Mood Active Binary Sensor, is on upon activation of the action. It is off when one of the assigned participant in the action had a state change.
  • All Started Binary Sensor, (only if supported), Is on when all outputs have reached their "Started" value.

NHC Motor Action

This is exposed as a cover entity.

Entities

  • Aligned Binary Sensor, this is on when all motors have the same position.
  • Moving Binary Sensor, this is on when any motor is running.
  • Last Direction Sensor, last movement direction. only used to keep the direction for "one button motor".

NHC PIR Action

This action is exposed as a switch.

Remark: the switch represents the state of the override button. If you need the output of the PIR sensor in Home Assistant you can link a "Virtual on/off device" in the Niko Home Control Programming Software to be switched on when the PIR sensor initiates the routine.

NHC Presence Simulation Action

This action is exposed as a switch.

Entities

It has some extra entities that can be used in automations:

  • Basic State Enum Sensor, the value of the Basic State. The switch uses the same information but will not take Intermediate into account.

NHC Virtual flag

This is exposed as switch.

NHC Relay Action (light, socket, switched-fan, switched-generic)

Lights are exposed as lights. Others are exposed as switches.

NHC Reynaers Action

This is exposed as a cover entity.

Remark: this is untested as I don't own a device of this type.

Entities

  • Status Sensor, status feedback of the Reynaers motor.

NHC Velux Action

This is exposed as a cover entity.

Entities

  • Feedback Enum Sensor, (only if supported), undocumented.

NHC Zigbee Smart plug

This is the energy metering linked to a zigbee smart plug.

Remark: The smart plug itself can be controlled through the Status Switch. But it will also be exposed as a NHC Relay Action Switch.

Entities

  • Electrical Power Sensor, the realtime power usage in W. Positive means power consumed, negative is power produced.
  • Report Instant Usage Binary Sensor, indicates if the Electrical Power is received. When disabled, it will automatically be enabled.
  • Status Switch, (only if supported), a switch to turn on/off the Smart plug.
  • Feedback Enabled Binary Sensor. On if the feedback led shows the relay status. Off if the feedback led is disabled.
  • Measuring Only Binary Sensor. If on, the relay will always be on.
  • Disable Report Instant Usage Re-enabling Switch, a toggle to disable the automatic re-enabling of the Report Instant Usage property. This is useful if you don't need Electrical Power reporting.
  • Switching Only Binary Sensor

Remark: The totals are not available as they are not (yet) exposed by the API.

Generic Zigbee Smart plug

This is the energy metering linked to a generic zigbee smart plug. The smart plug itself is a different device.

Entities

  • Electrical Power Sensor, the realtime power usage in W. Positive means power consumed, negative is power produced.
  • Status Switch, (only if supported), a switch to turn on/off the Smart plug.
  • Report Instant Usage Binary Sensor, indicates if the Electrical Power is received. When disabled, it will automatically be enabled.
  • Disable Report Instant Usage Re-enabling Switch, a toggle to disable the automatic re-enabling of the Report Instant Usage property. This is useful if you don't need Electrical Power reporting.
  • Switching Only Binary Sensor

Remark: The totals are not available as they are not (yet) exposed by the API.

Calculated totals

Totals can be calculated via a Helper:

Goto 'Settings' > 'Devices & Services' and click 'Helpers' at the top. Click the '+ Create Helper' button at the bottom right and select 'Integration - Riemann sum integral sensor'. Type a name for the Helper and select the relevant ' energyhome' entity (i.e. 'Electrical Power to Grid') from the 'Input sensor' dropdown. Integration method 'Trapezoidal rule' should give the most accurate integrated value. Set 'Precision' to '3' and set the 'Metric prefix' to 'k (kilo)'. Leave the time unit at 'Hours'.

At least two helpers are needed: one for the consumption total and one for the production total. These helpers can be used in the HA Energy Dashboard.

Electricity Metering module (with clamp) & NHC ZigBee Electricity Metering module (with clamp)

Entities

  • Electrical Power Sensor, the realtime power usage in W. Positive means power consumed, negative is power produced.
  • Report Instant Usage Binary Sensor, indicates if the Electrical Power is received. When disabled, it will automatically be enabled.
  • Flow Sensor, Producer or Consumer
  • Segment Sensor, Central or Subsegment
  • Clamp Type Sensor, (only if supported), 63A or 120A
  • Disable Report Instant Usage Re-enabling Switch, a toggle to disable the automatic re-enabling of the Report Instant Usage property. This is useful if you don't need Electrical Power reporting.

Remark: The totals are not available as they are not (yet) exposed by the API.

Energy Home

Entities

  • Electrical Power to Grid Sensor, (only if supported), the realtime power usage in W as a sum for all central meters.
  • Electrical Power from Grid Sensor, (only if supported), the realtime power consumption in W as a sum for all central meters.
  • Electrical Power Production Sensor, (only if supported), the realtime power production in W as a sum for all producers.
  • Electrical Power Self Consumption Sensor, (only if supported), electrical power production minus power to grid.
  • Electrical Power Consumption Sensor, (only if supported), electrical power self production + electrical power from grid.
  • Report Instant Usage Binary Sensor, indicates if the Electrical Power is received. When disabled, it will automatically be enabled.
  • Electrical Power Production Threshold Exceeded Binary Sensor, this is on when the central meters electrical power production is greater than the threshold of 300W (+ 5W hysteresis)
  • Disable Report Instant Usage Re-enabling Switch, a toggle to disable the automatic re-enabling of the Report Instant Usage property. This is useful if you don't need Electrical Power reporting.

Remark: There a more properties to this device, but these are not documented so it is difficult to know what they report exactly.

Generic Ventilation Implementation

This is exposed as a fan entity.

Entities

  • Boost Switch, (only if supported), enable/disable boost mode.
  • CO2 Sensor, (only if supported), the CO2 level.
  • Humidity Sensor, (only if supported), the humidity level.
  • Coupling Status Enum Sensor, (only if supported), the connectivity status of the system.

Remark: Some ventilation systems can not be turned off. Home Assistant Fan Entity does not support this. This means you will be able to turn it off in Home Assistant, but this will not have any effect.

Generic Heating/Cooling Implementation

This is exposed as a climate entity.

Entities

  • Overrule Active Binary Sensor, (only if supported), is the overrule mode active or not.
  • Coupling Status Enum Sensor, the connectivity status of the system.

Generic Warm Water Implementation

Entities

  • Domestic Hot Water Temperature Number, control the temperature.
  • Program Select, (only if supported), select the program.
  • Boost Switch, enable/disable boost mode.
  • Coupling Status Enum Sensor, the connectivity status of the system.

Generic ZigBee Heating/Cooling Implementation

Remark: this is untested as I don't own a device of this type.

This is exposed as a climate entity.

Entities

  • Overrule Active Binary Sensor, (only if supported), is the overrule mode active or not.

NHC Player status action

Remark: this is untested as I don't own a device of this type.

Remark: This device can not be controlled. It is a virtual device that shows the status for another player.

Entities

  • BasicState Binary Sensor, follows the on/off state of the player.
  • FeedbackMessage Sensor, the state description

NHC Thermo switch

Remark: this is untested as I don't own a device of this type.

Entities

  • HeatIndex Temperature Sensor, (only if supported)
  • Ambient Temperature Sensor, (only if supported)
  • Humidity Sensor, (only if supported)

NHC Virtual Thermostat

This is exposed as a climate entity.

Remark: this is untested as I don't own a device of this type.

Entities

  • Setpoint Temperature Sensor, the desired setpoint in the current program.
  • Overrule Active Switch, marks if the overrule-time will be used instead of setpoint as defined in program mode.
  • Overrule Setpoint Temperature Sensor, (only if supported), the current overruled setpoint temperature.
  • Overrule Time Duration Sensor, (only if supported), duration of the overrule period in minutes.
  • EcoSave Switch, (only if supported), marks if the EcoSave mode is active. When active the program keeps going, but the setpointtemperature is altered (+3 when cooling, -3 when heating).

RobinsIP Videodoorstation

Remark: This device is not documented/supported by Niko.

This is exposed as a camera.

Remark: Note that this will only work if your camera is not directly connected to the controller. The controller uses its own DHCP server and there is nothing in place to connect to the streams. In older versions of the controller there was port forwarding, but this is disabled (confirmed by Niko).

Entities

  • Call Status 01 Enum Sensor
  • IP Adress Sensor
  • Status Enum Sensor

Mute/Unmute/Hangup

Add the following Shell Commands in your configuration.yaml.

shell_command:
  doorphone_hangup: curl -u admin:123qwe http://192.168.X.X/api/v1/call_hangup
  doorphone_mute: curl -u admin:123qwe http://192.168.X.X/api/v1/mute_set?mute=tones_incoming
  doorphone_unmute: curl -u admin:123qwe http://192.168.X.X/api/v1/mute_set?mute=off

Remark: Replace the IP address with the IP address of your doorstation. Note that this will only work if your camera is not directly connected to the controller.

More information can be found in the API documention and manual of the RobinsIP doorstation:

NHC Condition Action

Remark: This device is not documented/supported by Niko.

This is exposed as a switch.

NHC Timeschedule Action

Remark: This device is not documented/supported by Niko.

Entities

  • Active Binary Sensor

NHC Heating Cooling Action

Remark: This device is not documented/supported by Niko.

Entities

  • Cooling Mode Binary Sensor
  • Heating Mode Binary Sensor

Electrical Heating Action

Remark: This device is not documented/supported by Niko.

This action is exposed as a button.

Entities

  • Basic State Binary Sensor, the current status of the action.

Generic Inverter

Remark: This device is not documented/supported by Niko.

Entities

  • Coupling Status Enum Sensor, (only if supported), the connectivity status of the system.
  • Electrical Power Production Sensor, (only if supported), the realtime power production in W.
  • Report Instant Usage Binary Sensor, indicates if the Electrical Power is received. When disabled, it will automatically be enabled.
  • Disable Report Instant Usage Re-enabling Switch, a toggle to disable the automatic re-enabling of the Report Instant Usage property. This is useful if you don't need Electrical Power reporting.

Peakmode Action

This action is exposed as a button.

Entities

It has some extra entities that can be used in automations:

  • Basic State Binary Sensor, The state is according the state of all assigned players as configured for that action.

Easee Chargingstation

Remark: This device is not documented/supported by Niko.

This is exposed as a switch.

Entities

  • Charging Mode Select, (only if supported), select the charging mode.
  • Charging Status Enum sensor, (only if supported), The current charging status.
  • Electrical Power sensor, (only if supported).
  • EV Status Enum sensor, (only if supported).
  • Coupling Status Enum Sensor, (only if supported), the connectivity status of the system.

Not yet supported

  • Sonos Speaker
  • Bose Speaker

How to get it running

Note: Make sure you have a recent version of Home Assistant!

This integration is not part of the default Home Assistant installation.

The easiest way to install it is through HACS (Home Assistant Community Store). Once you have HACS installed you can search for "Niko Home Control II". Make sure you select the correct one. Ours has the following description:

Home Assistant Custom integration for Niko Home Control II

Once this is done you can install the integration in Home Assistant:

  1. Go to Settings → Devices & Services Integrations
  2. Add an integration, search for Niko Home Control II, and click on it
  3. Follow the wizard

FAQ

The integration is not working after power outage

It is expected behouviour that the integration may not work after a power outage. Please restart Home Assistant. or after a new configuration is uploaded.

The integration is not working after uploading a new configuration

if you uploaded a new configuration to the connected controller / hub, please restart Home Assistant.

The integration is not working after an IP change

Please make sure that the IP of the connected controller / hub does not change. If the IP changes you will need to remove and re-add the integration.

I see a lot of "Report Instant Usage re-enabled" messages in the log

This will only appear in the logs if you have set your log-level to debug.

The Electricity Metering module (with clamp), Energy Home, NHC Zigbee Smart plug and Generic Zigbee Smart plug only report their power usage for 30 seconds when the "Report Instant Usage" is enabled. So as soon as it becomes disabled this integration re-enables it.

I see "Class CocoXXX not found" in the log

This is because this device is not supported (yet) or this device can't be controlled through the API.

Feel free to create an issue on Github. Please include your device list.

I don't have/use the Energy Home, but it is present in the integration

Each installation exposes an Energy Home device. At this point there is no good way to detect if the Energy Home is used.

If you do not want to see / record / ... you can disable the device in the integration.

I need to see the device list

First you will need to enable debug logging for the integration. You can enable debug logging for this integration by adding the following to your configuration.yaml file:

logger:
  default: warning
  logs:
    custom_components.nhc2: debug

When this is done you will need to restart Home Assistant. After that you can see the device list in the logs. You can find it by searching for Received device list:. The device list itself is a large JSON string.

If you don't feel comfortable sharing this device list in a public issue, you can send it to me via mail: niko-ha [at] verkoyen [dot] eu.

Development

Adding support for new Device models

  • Add a new class for the device in nhccoco/devices. The name of the file is {model}_{type}.py. The classname is Coco{Model}{Type}.
  • Import the class in nhccoco/coco.py. This allows the Coco class to create an instance when the device is present in the device list.
  • Create the needed entities in entities
  • Add the entities that should be created in the correct platform-file.

Testing without having the real devices?

If you don't own a device but want to test the integration, and you have the relevant device info (eg. through a device list your received). You can fake the devices returned from the MQTT broker.

  1. Create a folder debugging in the root of the project.
  2. Add the device list json in this folder.
  3. Open coco.py
  4. Search for def _process_devices_list(self, response): and edit the code to look like:
def _process_devices_list(self, response):
    """Convert the response of devices.list into device instances."""
    _LOGGER.debug(f'Received device list: {response}')

    # REMOVE ME START
    from pathlib import Path
    import ast

    path = Path(str(Path(__file__).parent.resolve()) + '/../../../debugging/device_list.json').resolve()
    f = open(path)
    response = ast.literal_eval(f.read())
    # REMOVE ME END

Remark: This is a hackish way, and you will not able to test it for real. You will not receive updates. Check the logs to see if messages are correctly send to the MQTT broker.

Found a bug?

If you found a bug you can create an issue on GitHub.

Before creating an issue:

  1. Check if the issue is already reported
  2. Make sure you are running the latest version of Home Assistant.
  3. Make sure you are running the latest version of this integration.

If you create an issue:

  • Mention which version of Home Assistant you are using.
  • Include relevant logs from Home Assistant. You can enable debug logging for this integration by adding the following to your configuration.yaml file:
logger:
  default: warning
  logs:
    custom_components.nhc2: debug
  • If possible include the steps to reproduce the issue. Explain what is wrong and what you expected to happen.

Want to help?

As you can see in this README, there are still untested devices. These are devices that are implemented based on the available documentation from Niko. If you own one of these devices, please help me out by testing it. Let us know, through an issue, what is working or not.

If you see missing features, feel free to create pull requests. Add missing devices, ...

niko-home-control-ii's People

Contributors

anvarit avatar blatruwe avatar boced66 avatar filipvh avatar firepinn avatar joleys avatar krmarien avatar mirandapoth avatar ostracon avatar tijsverkoyen avatar ubipo avatar walterbrebels 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

Watchers

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

niko-home-control-ii's Issues

Integrate Niko energy clamp

How can i read niko energy clamp? he is direlctly connectet to main niko home control and i cant see the device in the devices on HASS.

All Off routine

I have 2 All Off routines in my NHC2 setup. I see both 'buttons' in HA which I can press to start the routing in NHC2.
But I like to see when this routine runs on NHC2 (triggered by a physical Niko button) so I can use it as trigger to perform additional automation, like powering off music etc.
Can you add this? Should be possible if I read the Hobby API documentation.

Easywave doorcontact

Would it be possible to add the easywave door/window contacts?

{"Uuid":"80d24b81-78fc-43ed-921a-e099d1e18425","Identifier":"f942162f-1f68-4eaa-b782-e67655fcdfe6","Model":"magneticcontactsensor","Online":"True","Name":"Draadloos deur of raam contact Slk 3 Links","Technology":"easywave","Type":"contactsensor","Traits":[{"MacAddress":"00013xxx"},{"ProductId":"05-363"}],"Parameters":[{"LocationName":"Slaapkamer 3"},{"LocationId":"a2273264-466e-43b7-af45-de00023b2ae3"},{"LocationIcon":"bedroom"},{"Inverted":"False"}],"Properties":[],"PropertyDefinitions":[]}

MQTT Connection refused - not authorized

Hello,

I installed the nhc2 integration but can't get it working (I don't even get the installation wizard). When looking at the HA logs I find the error generated by coco.py line126 "Exception: Connection refused - not authorised", systematically.

What can be wrong?

Logger: root
Source: custom_components/nhc2/nhccoco/coco.py:126
Integration: Niko Home Control II (documentation, issues)
First occurred: 7:14:47 PM (1 occurrences)
Last logged: 7:14:47 PM

Uncaught thread exception
Traceback (most recent call last):
File "/usr/local/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.10/threading.py", line 953, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 3591, in _thread_main
self.loop_forever(retry_first_connection=True)
File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 1756, in loop_forever
rc = self._loop(timeout)
File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 1164, in _loop
rc = self.loop_read()
File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 1556, in loop_read
rc = self._packet_read()
File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 2439, in _packet_read
rc = self._packet_handle()
File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 3039, in _packet_handle
return self._handle_connack()
File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 3138, in _handle_connack
on_connect(
File "/config/custom_components/nhc2/nhccoco/coco.py", line 126, in _on_connect
raise Exception(MQTT_RC_CODES[rc])
Exception: Connection refused - not authorised

Home Assistant 2022.9.7
Supervisor 2022.09.1
Operating System 9.0
Frontend 20220907.2 - latest

state of cover unknown

Hi,

Today I noticed my NHC2 covers have an unknown state in HA.

I can control them, and the up/down arrow changes whether the cover is open or closed.
So, it is picking up something, but the state open/closed is missing. Resulting in "unknown" in the history, as well as an unknown state icon.

So expecting this:
image

But getting this:
image

This used to work in the original hass-nhc2 integration (and probably still does, but that integration has other flaws and seems to be abandoned).

fan - boost speed?

Just switched from filipvh's original integration to this one, and hurray, my fan is working again via HA :-)
What I do not find is a way to call the boost option of the fan.

Is this possible in any way? I'm guessing because it is using percentages now instead of low/med/high the boost 'speed' also disappeared.

Any idea on how to achieve this?
I guess I could recreate something similar in HA where a button would activate speed 100% for 15 minutes and then go back to the previous speed setting, but using the nhc2 boost option might be a cleaner way to go.

NHC2 integration times out after 15-20 minutes

I have a Niko Home Control II installation (for non-bus wiring). Through HomeAssistant and HACS, I have had this integration running for several weeks without any issue (55 devices). All data reports correctly and I can steer the NHC2 components through Home Assistant.

Since a couple of days though, an action in Home Assistant no longer triggers NHC2. Vice versa changing a light via physical button is no reflected in Home Assistant. I cannot pinpoint any software or config update (not in HomeAssistant and not in Niko Home Control II). The hobby API key is still valid.

When I restart the Home Assistant server (docker installation on a Synology NAS), all is working fine for around 15-20 minutes. After that it seems Home Assistant is no longer communicating with the API. Changing a switch in HA then no longer makes a physical difference. Pushing a physical button then no longer changes anything in HA.

I tried uninstalling the integration from HACS, restarted and reinstalled, but the issue remains. In the logbook I cannot find specific errors that point to an issue without NHC2 integration. Several other integrations (myEnergi, SMA, Sonos etc.) remain working fine without any issue, so I am led to believe there is an issue in the connectivity towards NHC2.

Any suggestion on why the connection is stopped after 15-20 minutes?

NHC Audio Control Action - implement setting the favourite

The NHC Audio Control Action device allows the favourite to be set/controlled, I think it is a number between 00 and 69. These favourites can be retrieved from the Bose Speaker and Sonos Speaker (generic_audiocontrol) (not implemented yet).

But I don't have an idea on how to implement this, as there can be multiple speakers that can have different favourites. And I also suspect that we should send the number of the favourite, but in the interface the readable name should be shown.

No entities showing up

I managed to get nhc2 working on my HA.
One day the entities just stopped showing up.
Tried removing the integration and even removing it from HACS. Rebooted HA a million times, even my NUC.
I get no error when adding the integration with the hobby profile.

Only logs I see is
2022-11-20 13:15:33.760 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration nhc2 which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant

But this seems normal.
Im all out of ideas.

image
image

Detected integration that uses deprecated `async_get_registry` - simple edit needed.

I'm never quite sure where the right place to report things is. But on HA startrup I'm getting a log warning. Looking at the Pythin code it is obvious what needs a minor edit right at the end of the initi.py file. If this is the wrong place, please do me a favour and forward it to the correct person:

Logger: homeassistant.helpers.frame
Source: helpers/frame.py:103
First occurred: 10:22:08 AM (1 occurrences)
Last logged: 10:22:08 AM

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 nhc2 using this method at custom_components/nhc2/init.py, line 118: dev_reg = await hass.helpers.device_registry.async_get_registry()

hass.data.setdefault(KEY_GATEWAY, {})[entry.entry_id] = coco
hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, on_hass_stop)

_LOGGER.debug('Connecting to %s with %s',
              entry.data[CONF_HOST], entry.data[CONF_USERNAME]
              )
coco.connect()
**dev_reg = await hass.helpers.device_registry.async_get_registry()**
coco.get_systeminfo(get_process_sysinfo(dev_reg))

return True

Uncaught thread exception

After update my integration with niko dont work. I got Uncaught thread exception in logg.

Traceback (most recent call last): File "/usr/local/lib/python3.10/threading.py", line 1016, in _bootstrap_inner self.run() File "/usr/local/lib/python3.10/threading.py", line 953, in run self._target(*self._args, **self._kwargs) File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 3591, in _thread_main self.loop_forever(retry_first_connection=True) File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 1756, in loop_forever rc = self._loop(timeout) File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 1164, in _loop rc = self.loop_read() File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 1556, in loop_read rc = self._packet_read() File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 2439, in _packet_read rc = self._packet_handle() File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 3033, in _packet_handle return self._handle_publish() File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 3330, in _handle_publish self._handle_on_message(message) File "/usr/local/lib/python3.10/site-packages/paho/mqtt/client.py", line 3570, in _handle_on_message on_message(self, self._userdata, message) File "/config/custom_components/nhc2/nhccoco/coco.py", line 95, in _on_message self._process_devices_list(response) File "/config/custom_components/nhc2/nhccoco/coco.py", line 216, in _process_devices_list self.initialize_devices(CoCoDeviceClass.ENERGYMETERS, actionable_devices) File "/config/custom_components/nhc2/nhccoco/coco.py", line 241, in initialize_devices self._devices_callback[device_class](self._devices[device_class]) File "/config/custom_components/nhc2/helpers.py", line 37, in process_entities new_entity = obj_create(entity) File "/config/custom_components/nhc2/sensor.py", line 30, in <lambda> lambda x: NHC2HassEnergyMeter(x)) File "/config/custom_components/nhc2/sensor.py", line 49, in __init__ self._state = self._nhc2energymeter.state File "/config/custom_components/nhc2/nhccoco/coco_energy.py", line 31, in state return self._state AttributeError: 'CoCoEnergyMeter' object has no attribute '_state'
I have latest version for niko and homeassistant and i have tried to uninstall and reinstall niko in hacs. But still have the same problem.

Renew Hobby API

What is the right procedure to reconnect the module to the controller after I had to renew my Niko Hobby API?

Stop worked in 2022.3.5, HASS os 7.5

The integration has stopped working after update to latest Homeassistant.

I got this in the log.

Logger: root
Source: custom_components/nhc2/nhccoco/coco_climate.py:169
Integration: Niko Home Control II (documentation, issues)
First occurred: 07:13:56 (1 occurrences)
Last logged: 07:13:56

Uncaught thread exception
Traceback (most recent call last):
File "/usr/local/lib/python3.9/threading.py", line 973, in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.9/threading.py", line 910, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 3591, in _thread_main
self.loop_forever(retry_first_connection=True)
File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 1756, in loop_forever
rc = self._loop(timeout)
File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 1164, in _loop
rc = self.loop_read()
File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 1556, in loop_read
rc = self._packet_read()
File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 2439, in _packet_read
rc = self._packet_handle()
File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 3033, in _packet_handle
return self._handle_publish()
File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 3330, in _handle_publish
self._handle_on_message(message)
File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 3570, in _handle_on_message
on_message(self, self._userdata, message)
File "/config/custom_components/nhc2/nhccoco/coco.py", line 88, in _on_message
self._process_devices_list(response)
File "/config/custom_components/nhc2/nhccoco/coco.py", line 201, in _process_devices_list
self.initialize_devices(CoCoDeviceClass.THERMOSTATS, actionable_devices)
File "/config/custom_components/nhc2/nhccoco/coco.py", line 218, in initialize_devices
DEVICE_SETS[device_class][INTERNAL_KEY_CLASS](base_device,
File "/config/custom_components/nhc2/nhccoco/coco_climate.py", line 89, in init
self.update_dev(dev, callback_container)
File "/config/custom_components/nhc2/nhccoco/coco_climate.py", line 138, in update_dev
if self._check_for_status_change(dev):
File "/config/custom_components/nhc2/nhccoco/coco_climate.py", line 169, in _check_for_status_change
return has_changed
UnboundLocalError: local variable 'has_changed' referenced before assignment

Implement precision

See Sensor entity can now do rounding of numerical values.

Revisit all entities that expose a float and check if we can detect the precision from the range description. In the documentation Range(min, max, step) is used. The step could be used as the precision.

Check all climate entities and check if we can define the precision property, also based on the range from the description.

Screen (motor module) remains open in HA

I have 5 screens connected to NHC with a motor module. All of them show the correct status in HA, while 1 remains in the open status.
I tried restarting NHC & HA but did not resolve the issue, I also used the action button to open/close the screen to maybe update the status but nothing changes. In NHC the status of the screen is correct.

Somebody an idea what might be wrong?

Cannot import name 'TEMP_CELSIUS' from 'homeassistant.components.climate'

Hi,

The NHC2 integration stopped working after upgrading HA to 2023.1.1. On startup I receive the follow error log:

Logger: homeassistant.setup
Source: setup.py:210
First occurred: 11:33:35 AM (1 occurrences)
Last logged: 11:33:35 AM

Setup failed for custom integration nhc2: Unable to import component: cannot import name 'TEMP_CELSIUS' from 'homeassistant.components.climate' (/usr/src/homeassistant/homeassistant/components/climate/__init__.py)

Any ideas how to fix this?

NHC compatibility

Hello,
Is there a way to make it compatible with the niko home control v1 ?
The official integration for home-assistant is working fine but I can only list the lights.
I have now integrate the energy module but the HA integration doesn't list the entities for energy.
I found this hacs and I was very interested. THen I installed it and provide the ip of the nhc gateway but it was not working.

Is this integration supposed to be compatible or not ?
If not how could we make it compatible ? I can help if needed.

Thanks for your feedback.

Energy dashboard integration

Hello

Is there any possibility to enable integration of power consumption/generation into the energy dashboard?
Thanks for the great work!

Adding more than 1 meter

Do you know how to add more than one electricel meter?

I have tested to add more of this

- platform: integration
    source: sensor.totalmatare
    name: energy_elektriciteit
    unit_prefix: k
    round: 3
    method: left
    
    source: sensor.solceller
    name: energy_solceller
    unit_prefix: k
    round: 3
    method: left

But not getting it to work. Any idé?

Service set brightness for light

I tried this service, but for some reason it still goes first to 100% and then it will Dimm to the % I set in the scene.

the lights are dimmed with 1-10v dimmer of Niko.

Would you have an idea of the problem?
thx in advance!

Fan is always marked as 'unavailable'

For some reason, my fan is always marked as unavailable. I've tested the configuration sent over mqtt to see if anything is funky, but it happily returns my fan config:

{
          "Uuid": "dd0456ae-8049-4a68-856d-85af2a90684b",
          "Identifier": "c2dff8d5-4de4-4345-8b7c-7f323542f332",
          "Model": "fan",
          "Online": "True",
          "Name": "Ventilatiesysteem",
          "Technology": "nikohomecontrol",
          "Type": "action",
          "Traits": [],
          "Parameters": [
            {
              "LocationName": "Kelder"
            },
            {
              "LocationId": "98863a90-49bc-4a8d-bfa9-4f0d44a78d8d"
            },
            {
              "LocationIcon": "garage"
            },
            {
              "IconCode": "standby"
            }
          ],
          "Properties": [
            {
              "FanSpeed": "Low"
            }
          ],
          "PropertyDefinitions": [
            {
              "FanSpeed": {
                "HasStatus": "true",
                "CanControl": "true",
                "Description": "Choice(Low,Medium,High,Boost)"
              }
            }
          ]
}

I can also successfully control it using MQTTX.

Anything I'm doing wrong in Home assistant?
Screenshot 2022-09-02 at 19 20 07

Shutters doens’t report final state after command

shutters doens’t report final state after command. So for example:

if the shutters receives command position to 10% then after reaching this position the device doesn’t report back that it has reached this state. Also for close (0%) and open (100%) state.
As soon as the stop button is manual pressed the shutter reports back it’s state.
Would be great of this could fix fixed somehow.

Installed but no devices showing

This may be a dumb newbie question but I have the Integration installed and NHCII password setup in the Integrations section of Settings but I'm not seeing any NHC devices like I have seen with other integrations? I am very new to HA....
I found this when I briefly switched on logging for the integration if that is related...
"2023-04-14 10:36:23.789 WARNING (MainThread) [homeassistant.util.async_] Detected blocking call to sleep inside the event loop. This is causing stability issues. Please report issue to the custom integration author for nhc2 doing blocking calls at custom_components/nhc2/nhccoco/coco_profiles.py, line 34: sleep(0.05)"
Much appreciate any clues. This a new installation of HA at latest level in a virtual machine on a Synology NAS DSM7.1

Virtual device not showing up

I have a light sensitive switch outside of my house. This is connected to a relay which is connected to a digital sensor module on slot 1. Within the Niko home control software I can use this switch sensor to turn on my lights once it gets dark enough outside.

I want this sensor to become available in Home Assistant so I added a virtual device and linked a condition between the sensor and the virtual device. As far as I understand from #43 this sensor/switch should become a binary sensor within Home Assistant, however, I do not see my newly created virtual device. I have restarted home assistant and re-added the Niko Home control connection but still not success.

Am I doing something wrong here?

Not working after upgrade

Hi!
Have you seen any problem after updating HA to get the connection working again?

I have problem with time-out on mqqtt so my connection stop working after restart.

My system is a fieldtest but what i can see there seems that its homeassistant doing time-out.

Logbook warning "Detected blocking call to sleep inside the event loop"

Version of Home assistant: 2022.8.2

Logger: homeassistant.util.async_
Source: util/async_.py:180
First occurred: 12:37:00 (2 occurrences)
Last logged: 12:37:00

Detected blocking call to sleep inside the event loop. This is causing stability issues. Please report issue to the custom integration author for nhc2 doing blocking calls at custom_components/nhc2/nhccoco/coco_profiles.py, line 34: sleep(0.05)

PIR integration

Hi,
is it possible that the PIR's can be integrated?
I want to help as test user if needed!

Zigbee network saturation

The current design for having realtime power monitoring create a lot of traffic on the Zigbee network for installations with a lot (15+) of Zigbee Smartplugs.

This is because when ReportInstantUsage is switched to True every 2 seconds the new value is reported for a period of 30 seconds. The current implementation setsReportInstantUsage to True every time it has changed to False.

At the moment there is no way to disable this behaviour

Credits: This issue was reported by Niko

Sensor integration

Great job, and love the sensor for electricity.
Would it be possible to also include following pulse sensors?

  • water
  • gas

It seems that I'm also missing a switched outlet that is configured in NHC2.

'Generic (Action)' devices toggle when turned on or off rather than turning on or off

I have two external blinds that are controlled in Niko as venetianblind devices. I have generic actions set up in Niko to open or close these together. HA correctly shows when they are open or closed:
image

I use these devices in scripts, for example at night to close all the blinds in the house:
image

The problem is, if the blinds are already closed, they open! Similarly, if the blinds are open and the 'open external blinds' device is already on, they close. Looking at nhc2 debug messages, I can see that the device is sending 'Triggered', so it's acting like a toggle.

I think the solution is for nhc2 to check the current status of the device before triggering it. Is this possible please?

Let me know if you need any more information.

Thermostat current temperature

It appears that the current temperature of thermostats are not updated. Subscribing to the MQTT topic, I can see that the API is sending the correct value back, but no updates occur in home assistant.

Covers: missing initialisation of _state

@joleys thank you SO much for this new version of Filip's nhc2.

I got your code this morning (31st March at around 10:30 UK time). I have two venetianblind devices in my Niko installation and I noticed the following error in the HA log:

2022-03-31 11:49:45 ERROR (MainThread) [homeassistant.components.cover] Error while setting up nhc2 platform for cover
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/nhc2/cover.py", line 24, in async_setup_entry
gateway.get_devices(CoCoDeviceClass.COVERS,
File "/config/custom_components/nhc2/nhccoco/coco.py", line 161, in get_devices
self._devices_callbackdevice_class
File "/config/custom_components/nhc2/helpers.py", line 37, in process_entities
new_entity = obj_create(entity)
File "/config/custom_components/nhc2/cover.py", line 29, in
lambda x: NHC2HassCover(x))
File "/config/custom_components/nhc2/cover.py", line 38, in init
self._state = self._nhc2cover.state
File "/config/custom_components/nhc2/nhccoco/coco_cover.py", line 25, in state
return self._state
AttributeError: 'CoCoCover' object has no attribute '_state'

I found that just adding 'self._state = None' to the initialisation code in coco_cover.py solved the problem.

This might be related to issue #10 ??

I would initiate the change myself on here if I knew how to do it :-)

Cover does not work in automations

When i add a cover to an automation as an action, the only option is to set position and set a value.
The problem is that in version 3.0 the position value doesnt work. The cover doesnt move when i use the position-value and only work with up, down and stop.

NHC2 Wall Switch in combination with Smart Light Bulbs

Hey all,

I'm trying to use the wall switch of my NHC2 installation to control my IKEA Tradfri smart lights via HA.
The problem is that the wall switch actually cuts the power to the light bulbs, which is not the intended behaviour.
So basically, when pressing the wall switch, I want to send an event to HA to turn off the IKEA light bulbs without cutting the actual power.

Is this something that is possible? If yes, how? :)

Thanks in advance!

Add garagedoor

Can you add the garagedoor sensor to this integration?

Switch events are not received

I've noticed after the update to version 3.x that I am no longer receiving events from light switches. I can still turn them on or off from home-assistant, but their state is not updated from the API as far as I can tell.

Discovery of sensors / energy

Am I correct it is still needed to manually add these lines?
filipvh/hass-nhc2#28 (comment)

Saw that you where the person who made the thermostat possible :-) so thank you!

Due the pip bug of philip's repo I installed your's as I also wanted the energy sensor.
If you need help with debugging let me know!

'Exception: Connection refused - not authorised' when HA starts

This has been working fine until today, when I updated my NIko API token and let the Niko software update do its updates.
When HA starts, I get the following error in the log:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/threading.py", line 973, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.9/threading.py", line 910, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 3591, in _thread_main
    self.loop_forever(retry_first_connection=True)
  File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 1756, in loop_forever
    rc = self._loop(timeout)
  File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 1164, in _loop
    rc = self.loop_read()
  File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 1556, in loop_read
    rc = self._packet_read()
  File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 2439, in _packet_read
    rc = self._packet_handle()
  File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 3039, in _packet_handle
    return self._handle_connack()
  File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 3138, in _handle_connack
    on_connect(
  File "/config/custom_components/nhc2/nhccoco/coco.py", line 124, in _on_connect
    raise Exception(MQTT_RC_CODES[rc])
Exception: Connection refused - not authorised

All the Niko devices show in Lovelace but are greyed out. When I click on one to view its details, it says 'This entity is currently unavailable and is an orphan to a removed, changed or dysfunctional integration or device.'

I know that the new token is OK and there is nothing wrong with Niko because I can connect to the controller using MQTT Explorer using the same credentials as are in my configuration.yaml. The Niko app on my phone works fine.

This has happened before, and my previous solution (which took days to find!) was to delete the Niko integration from the list of Integrations in the HA Configuration. However, doing this means I have to reallocate all my 84 devices to their correct areas, which I do not want to have to do again.

I have tried the following, in this order, and nothing has made any difference:

  • Disabled and reenabled the Niko integration.
  • Shutdown the actual server and restarted it.
  • Found the Niko integration in HACS, downloaded new version, restarted HA.
  • Updated the Mosquitto broker and restarted the whole machine.
  • Unplugged the Niko Ethernet cable for a few minutes then plugged it back in again.
  • Restarted the whole machine again.
  • Updated HA from 2022.3.8 to 2022.8.1 and rebooted the host.

I'm wondering if the old API token is cached somewhere in HA or something, but I have no idea how to tell. Or perhaps it's something completely different ...

Any ideas on what might be causing this and/or how I can try to find the problem?

Logbook warning "Failed to invoke callback"

Since 2022.8.2 I have the following issue, I don't know if it's related.

Logger: custom_components.nhc2.nhccoco.coco
Source: custom_components/nhc2/nhccoco/coco.py:109
Integration: Niko Home Control II (documentation, issues)
First occurred: 12:48:45 (2 occurrences)
Last logged: 12:48:55

Failed to invoke callback: 'c6c45601-8f1e-45dc-8e6d-c5e0e0c92f54'

Suggest changing the installation instructions to say this has to be installed via HACS

I'm a long-time user of this integration (and Filip's originally) and I had it installed via configuration.yaml.

I just updated HA and copied in the latest nhc2 code into custom_components as I usually do, and HA would not restart via the UI; error "Failed to restart Home Assistant. The system cannot restart because the configuration is not valid: Component error: nhc2 - cannot import name 'VALUE_TRUE' from 'custom_components.nhc2.nhccoco.const' (/config/custom_components/nhc2/nhccoco/const.py)."

I had to remove the nhc2 section from configuration.yaml and perform the upgrade via HACS.

I suggest that the readme be changed to tell people to install the integration via HACS. Installed using the old method of adding it to the config file no longer works.

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.