Git Product home page Git Product logo

sinope-gt125's Introduction

This repository has been split up into two.

  • sinope-gt125 for devices management via direct conection to the gt125 web gateway.
  • sinope-1 for devices management via Neviweb portal.

If you already use this custom_component, make a backup of your file devices.json before first update via HACS. Devices.json will be removed. You'll need to copy your devices data to config/.storage/sinope_devices.json after first run of device.py (see below).

Home Assistant Sinope Custom Components (sinope-gt125)

Here is a custom component to suport Sinopé technologies devices in Home Assistant via a direct connection to the GT125 router from Sinopé Technologies to interact with their smart devices like thermostats, light switches/dimmers and load controllers. It also supports some devices made by Ouellet.

Supported Devices

Here is a list of currently supported devices. Basically, it's everything that can be added in Neviweb.

  • Thermostats
    • Sinopé TH1120RF-3000 Line voltage thermostat
    • Sinopé TH1120RF-4000 Line voltage thermostat
    • Sinopé TH1121RF-3000 Thermostat for public areas
    • Sinopé TH1121RF-4000 Thermostat for public areas
    • Sinopé TH1300RF Floor heating thermostat
    • Sinopé TH1400RF Low voltage thermostat
    • Sinopé TH1500RF Double-pole thermostat
    • *Ouellet OTH2750-GT Line voltage thermostat
    • *Ouellet OTH3600-GA-GT Floor heating thermostat
  • Lighting
    • Sinopé SW2500RF Light switch
    • Sinopé DM2500RF Dimmer
  • Specialized Control
    • Sinopé RM3200RF Load controller 40A
    • Sinopé RM3250RF Load controller 50A

*Not tested, but should be working well. Your feedback is appreciated if a device doesn't work.

Prerequisite

You need to connect your devices to your GT125 web gateway before being able to interact with them within Home Assistant. Please refer to the instructions manual of your device or visit Neviweb support.

There are two custom component giving you the choice to manage your devices via the neviweb portal or directly via your GT125 gateway:

  • Neviweb custom component to manage your devices via neviweb portal.
  • Sinope custom component to manage your devices directly via your GT125 gateway.

You need to install only one of them but both can be used at the same time on HA.

Installation (see custom_components/GT125_connect.md for more specific info)

There are two methods to install this custom component:

  • via HACS component (prefered method):
    • This repository is compatible with the Home Assistant Community Store (HACS).
    • After installing HACS, install 'Sinope GT125' from the store, and use the configuration.yaml example below.
  • Manually via direct download:
    • Download the zip file of this repository using the top right, green download button.

    • Extract the zip file on your computer, then copy the entire custom_components folder inside your Home Assistant «config» directory (where you can find your configuration.yaml file).

      • Hassbian: /home/homeassistant/.homeassistant/
      • homeassistant-supervised (Hass.io): /config/
    • Your «config» directory should look like this:

      «config»/
        configuration.yaml
        .storage/
          sinope_devices.json
          sinope_devices_2.json  (if you have two GT125)
        custom_components/
          sinope/
            __init__.py
            light.py
            switch.py
            climate.py
            device.py
            const.py
            services.yaml
            crc8.py
        ...
      

      on Hass.io it look like it is very hard to add python library so we have added crc8.py to the sinope folder.

Configuration

To enable Sinope management in your installation, add the following to your configuration.yaml file, then restart Home Assistant.

# Example configuration.yaml entry
sinope:
  server: "<Ip adress of your GT125>"
  id: "<ID written on the back of your GT125>" no space
  api_key: "<Api_key received on first manual connection with the GT125>" #run device.py for that
  server_2: "<Ip adress of your second GT125>" <Optional>
  id_2: "<ID written on the back of your second GT125>" <Optional> no space 
  api_key_2: "<Api_key received on first manual connection with the second GT125>" <Optional> #run device.py for that 
  my_city: "<the nearest city>" # ex. 'Montreal', needed to get sunrise and sunset hours for your location. <Optional>
  scan_interval: 120 #you can go down to 60 if you want depending on how many devices you have to update. Default set to 180 <Optional>

Make sure the parameters are between quotation mark "" except for the scan_interval which is a number.

DK_KEY and MY_WEATHER parameter have been removed.

First run

To setup this custom_component, login via ssh to your Rpi and cd to the directory config/custom_components/sinope, where you have copied the files. Or use the package «advanced ssh & Web Terminal» to get a terminal inside HA (prefered method). You will need to have the following data handy: On start device.py will ask which GT125 you want to configure; server #1 or server #2

  • IP adress of the GT125,
  • GT125 device ID, written on the back of the device,
  • Port number to connect to the GT125. should be 4550 (default), if you have to configure two GT125 you need to have both data handy. With device.py you can run it many time to add devices to any of your two GT125. If you have only one GT125 just homit the parameter for the second one.
  • For homeassistant-supervised (Hass.io) you already run as root so you don't need the sudo command.
  • To findout if python is installed run: python --version in the terminal or type python and hit the TAB key. This should display python, python3 and python3-xx where xx is the version installed in HA.
  • For easyer install on homeassistant-supervised (Hass.io) add the package «advanced ssh & Web Terminal». With this you don't need to install SSH and you'll be able to edit your config and run device.py directly in a web console inside of HA.
  • to install HACS via that console run the commande: wget https://github.com/custom-components/hacs/archive/1.3.0.zip. Version number could be different.

Execute the command: 'python3 device.py' in console (for python3.10: 'python3.10 device.py'). Sudo is required for file permission fix. In homeassistant-supervised (Hass.io) you don't need sudo. Make sure you are in the config/custom_components/sinope directory when you run device.py or it won't run. Running device.py is required to install the data above and to get the Api_Key and later the deviceID for each Sinopé devices connected to your GT125. On first run, device.py ask for IP, Api ID and port number then send a ping request to the GT125. It will then ask you to push de "WEB" button on the GT125. This will give you the Api Key.

  • Once you get your Api_Key, all data will be written in the config file '«config»/.storage/sinope_devices.json' or '«config»/.storage/sinope_devices_2.json for the second GT125.
  • On the next run of device.py, you will start to get the device_id for all devices connected to your GT125. See devices discovery bellow. Each time you run device.py it will ask for which Gt125, #1 or #2 you want to add devices.

You're ready to setup your Sinopé devices. I've put lots of comment in the code so I think you will understand.

Main difference with Neviweb is that with the GT125 we don't have command to request all data and info from one device at once. We need to issue one data read request for each info or data we want. ex:

  • open a connection
  • login to the GT125
  • send data read request for room temperature
  • send data read request for setpoint temperature
  • send data read request for mode (manual, auto, off, away)
  • send data read request for heat level
  • etc
  • close connection and start over for next device.

This is the same for data write request but in that case we normally send one data like changing temperature or mode to one device. One exception is when we sent request to change mode to auto. We need to send correct time prior to send write request for auto mode.

For the data report request it is possible to send data to all device at once by using a special deviceID = FFFFFFFF, using the service sinope.set_outside_temperature and entity_id: all, this special deviceID will be picked automatically to send outside temperature to all thermostats. To send time, date, sunset and sunrise hour, just use the service set_xxxx_basic_data with any device to broadcast to all device at once. To set all device to away mode, use PRESET_AWAY in climate.set_preset_mode, away mode is broadcasted to all devices.

Devices discovery

Look like the GT125 use a different deviceID then the Neviweb portal. Once you have your Api_key written in sinope_devices.json, you will need to run device.py to request deviceID for each devices on your network one by one. The program will wait for you to push on both button of your device to revceive there deviceID. Then, device.py will ask for device data like name, type and connected watt load. To get the list of devices types just type "h" when asked for device type. This will display all known types and then ask for your device type. If you don't have all information just hit enter to leave those fields blank. It will be possible to add missing data later. All devices ID and data will be written in the file 'config/.storage/sinope_devices.json' or 'config/.storage/sinope_devices_2.json' to insure that any new update won't overwrite it. Once you have all your devices, hit "q" at the end to quit the program. Edit 'config/.storage/sinope_devices.json' and add the name, type and wattage (for light devices) for each devices if needed. Light connected watt load is not measured by the light devices but instead written in Neviweb devices on setup of light devices. We need to write it to 'config/.storage/sinope_devices.json' (kind of Neviweb portal equivalent) to finish the devices setup. ex:

["IP", "Api Key", "Api ID", "PORT"] <- do not erase this line
["id", "name", "type", "watt"] <- do not erase or edit this line
["00470100", " ", " ", " "] <- once discovered by device.py, add devices info between the " "
["2e320100", "Office heating", "10", " "] <- thermostat ex.
["5a2c0100", "Office light", "102", "60"] <- light ex.
["6a560100", "Outside timer", "120", " "] <- power control ex.
["00470100", "Dimmer TV Room", "112", "110"] <- Dimmer ex.

For power switch devices, RM3250RF and RM3200RF, you need to push on the top blue ligth (with the wifi logo) to get the deviceID. Each time you will add a new device to your GT125 you will need to run that device.py setup.

Custom services

Automations require services to be able to send commande. Ex. light.turn_on. For the Sinopé devices connected via GT125 it is possible to use custom services to send specific information to devices or to change some devices parameters. Those custom services can be accessed via development tool/services or can be used in automation:

  • sinope.set_second_display, allow to change setting of the thermostats second display from setpoint temperature to outdoor temperature. This need to be sent only once to each devices.
  • sinope.set_outside_temperature, allow to send outdoor temperature to thermostat second display. This need to be sent at least once per hour or the thermostat will revert to setpoint temperature. You can use the special device «all» which is used to broadcast data to each devices at once, or you can send the data to only one device.
  • sinope.set_climate_keypad_lock, allow to lock the climate devices keypad.
  • sinope.set_light_keypad_lock, allow to lock the light devices keypad.
  • sinope.set_switch_keypad_lock, allow to lock the switch devices keypad.
  • sinope.set_light_event_timer, this is used to set a timer to the light devices events for them to send notice when they are activated.
  • sinope.set_switch_event_timer, this is used to set a timer to the switch devices events for them to send notice when they are activated.
  • sinope.set_backlight_state to set backlight state, 0 = full intensity, 1 = variable intensity when idle, 2 = off when idle, 3 = always variable intensity.
  • sinope.set_backlight_idle to set backlight intensity when idle, 0 = off, 1 to 100 intensity.
  • sinope.set_led_indicator, this allow to change led indicator color and intensity on light devices for «on» and «off» state. you can send any color in the RGB list via the three color parameters red, green and blue and you can set intensity of the led indicator.
  • sinope.set_climate_basic_data, this service send date, time, sunset and sunrize data to each devices for accurate operations. It need to be sent once a day for proper operation via automation. You need to specify one devices only and all devices will be updated. Needed to be done on only one devices, climate, light or switch.
  • sinope.set_light_basic_data, this service send date, time, sunset and sunrize data to each devices for accurate operations. It need to be sent once a day for proper operation via automation. You need to specify one devices only and all devices will be updated. Needed to be done on only one devices, climate, light or switch.
  • sinope.set_switch_basic_data, this service send date, time, sunset and sunrize data to each devices for accurate operations. It need to be sent once a day for proper operation via automation. You need to specify one devices only and all devices will be updated. Needed to be done on only one devices, climate, light or switch. The last three services take into account the time zone set in HA or use the default time zone America/Toronto. They also manage the time changes for DST.

Troubleshooting

If you get a stack trace related to a Sinope component in your home-assistant.log file, you can file an issue in this repository.

You can also post in one of those threads to get help:

Turning on Sinope debug messages in home-assistant.log file

To have a maximum of information to help you, please provide a snippet of your home-assistant.log file. I've added some debug log messages that could help diagnose the problem.

Add thoses lines to your configuration.yaml file

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

This will set default log level to warning for all your components, except for Sinope which will display more detailed messages.

Sending outside temperature to thermostats

Before using this service you must set the second display setting for each thermostats you want outdoor temperature to be displayed. This is done via dev tool only once with service sinope.set_second_display. After you just need to create and automation that will send that outside temperature to your thermostats every hour or more frequently is you wish. The temperature must be sent at least onece per hour or thermostat will revert to setpoint temperature display. Automation example:

#################################
###       Send outside temperature to thermostats
#################################
  - id: hourly outside temp
    alias: send outside temperature
    initial_state: true
    trigger:
      platform: time_pattern
      minutes: "/59"  ## intervall to send data every hours ajust as needed
    action:
      - service: climate.set_outside_temperature
        data_template:
          entity_id: climate.sinope_climate_office  ## you can add many devices to be updated at once or a group of devices
          outside_temperature: "{{ state_attr('weather.openweathermap', 'temperature') }}"

you can use any temperature provider; Openweathermap, Environment canada, even an ouside sensor that give you your local temperature.

Customization

Install Custom-Ui custom_component via HACS and add the following in your code:

Icons for heat level: create folder www in the root folder .homeassistant/www copy the six icons there. You can find them under local/www feel free to improve my icons and let me know. (See icon_view2.png)

For each thermostat add this code in customize.yaml

climate.sinope_climate_thermostat_name:
  templates:
    entity_picture: >
      if (attributes.heat_level < 1) return '/local/heat-0.png';
      if (attributes.heat_level < 21) return '/local/heat-1.png';
      if (attributes.heat_level < 41) return '/local/heat-2.png';
      if (attributes.heat_level < 61) return '/local/heat-3.png';
      if (attributes.heat_level < 81) return '/local/heat-4.png';
      return '/local/heat-5.png';

In configuration.yaml add this

customize: !include customize.yaml

Floorplan

Under www/floorplan you will find what can be done to add Sinopé devices in your floorplan with the icons you need in svg format. My floorplan was created with inkscape and I use the same icon used for thermostat customisation.

Current Limitations

  • Home Assistant doesn't support operation mode selection for light and switch entities. So you won't see any dropdown list in the UI where you can switch between Auto and Manual mode. You can only see the current mode in the attributes. TODO: register a new service to change operation_mode and another one to set away mode.

  • If you're looking for the away mode in the Lovelace 'thermostat' card, you need to click on the three dots button on the top right corner of the card. That will pop a window were you'll find the away mode switch at the bottom.

TO DO

  • Document each available services for every platforms + available attributes.
  • Explore how to automatically setup sensors in HA that will report the states of a specific device attribute (i.e. the wattage of a switch device)
  • Leave socket open to listen for events from devices state changes and answers from our data request. For now I open, send request, get result then close socket.
  • Detect events from light dimer and switch so we can receive state changes from the GT125 without polling the devices (faster).
  • Improve logging and debug.

Contributing

You see something wrong or something that could be improved? Don't hesitate to fork me and send me pull requests.

Buy me a coffee

If you want to make donation as appreciation of my work, you can do so via PayPal. Thank you! Support via PayPal

sinope-gt125's People

Contributors

claudegel avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

sinope-gt125's Issues

Warning in Logger at HA Startup

We see these in the System logs at each HA Startup. Looks fairly minor but thought you may want to have a look during next update cycle. Looks like it applies to both the Neviweb (sinope-1) and the gt125 versions of the integration.

Thank You for your great Sinope integrations!


Logger: homeassistant.components.climate
Source: components/climate/init.py:361
integration: Climate (documentation, issues)
First occurred: 14:42:41 (2 occurrences)
Last logged: 14:42:44

Entity None (<class 'custom_components.sinope.climate.SinopeThermostat'>) implements HVACMode(s): off, auto, heat and therefore implicitly supports the turn_on/turn_off methods without setting the proper ClimateEntityFeature. Please report it to the author of the 'sinope' custom integration

Entity None (<class 'custom_components.neviweb.climate.NeviwebThermostat'>) implements HVACMode(s): off, auto, heat and therefore implicitly supports the turn_on/turn_off methods without setting the proper ClimateEntityFeature. Please report it to the author of the 'neviweb' custom integration

Ouellet thermostat always be unavailable

I use this component since the first commit and Ouellette never works. I finally open issues for that.

Home Assistant see the thermostat but always in unavailable state.

I opened issues here but I use via Neviweb components. On github, the repo sinope-1 can't open issues.

Here some log:

Logger: homeassistant.components.climate
Source: custom_components/neviweb/climate.py:619
Integration: Climate (documentation, issues)
First occurred: 7:08:27 PM (5 occurrences)
Last logged: 7:08:32 PM

neviweb: Error on device update!
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 493, in _async_add_entity
    await entity.async_device_update(warning=False)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 715, in async_device_update
    await task
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/neviweb/climate.py", line 619, in update
    self._early_start = device_data[ATTR_EARLY_START]
KeyError: 'earlyStart'

Debug information (I hide identifier information):


2022-12-07 19:08:24.418 DEBUG (SyncWorker_1) [custom_components.neviweb] Received gateway data: [{'id': 116268, 'identifier': 'XXXXXXX', 'name': 'Atelier', 'family': '725', 'signature': {'model': 725, 'modelCfg': 82, 'hardRev': 0, 'softVersion': {'major': 1, 'middle': 0, 'minor': 2}, 'softBuildCfg': 0}, 'location$id': 5979, 'parentDevice$id': 25006, 'group$id': 5957, 'orderIdx': 0, 'sku': 'OTH3600-GA-GT', 'vendor': 'Ouellet', 'url_en': 'http://www.ouellet.com/en-ca/products/accessories-and-controls.aspx?product=OTH3600-GA-GT', 'url_fr': 'http://www.ouellet.com/fr-ca/produits/accessoires-et-controles.aspx?product=OTH3600-GA-GT'}, {'id': 100243, 'identifier': 'XXXXXXX-XXX', 'name': 'Bureau', 'family': '1122', 'signature': {'model': 1122, 'modelCfg': 4, 'hardRev': 1, 'softVersion': {'major': 1, 'middle': 7, 'minor': 0}, 'softBuildCfg': 4}, 'location$id': 5979, 'parentDevice$id': 25006, 'group$id': 5956, 'orderIdx': 0, 'sku': 'TH1120RF-3000B', 'vendor': 'Sinopé', 'url_en': 'http://www.sinopetech.com/en/boutique/products/neviweb-en/thermostat-for-electric-heating-wireless-communication/', 'url_fr': 'http://www.sinopetech.com/boutique/produits/thermostat-pour-chauffage-electrique-communication-sans-fil/'}, {'id': 100985, 'identifier': 'XXXXXXX-xxxx', 'name': 'Ch maître', 'family': '1122', 'signature': {'model': 1122, 'modelCfg': 4, 'hardRev': 1, 'softVersion': {'major': 1, 'middle': 7, 'minor': 0}, 'softBuildCfg': 4}, 'location$id': 5979, 'parentDevice$id': 25006, 'group$id': 16193, 'orderIdx': 0, 'sku': 'TH1120RF-3000B', 'vendor': 'Sinopé', 'url_en': 'http://www.sinopetech.com/en/boutique/products/neviweb-en/thermostat-for-electric-heating-wireless-communication/', 'url_fr': 'http://www.sinopetech.com/boutique/produits/thermostat-pour-chauffage-electrique-communication-sans-fil/'}, {'id': 25009, 'identifier': 'XXXXXXX-xxx', 'name': 'Chambre Arnaud', 'family': '725', 'signature': {'model': 725, 'modelCfg': 82, 'hardRev': 0, 'softVersion': {'major': 1, 'middle': 0, 'minor': 2}, 'softBuildCfg': 0}, 'location$id': 5979, 'parentDevice$id': 25006, 'group$id': 16574, 'orderIdx': 0, 'sku': 'OTH3600-GA-GT', 'vendor': 'Ouellet', 'url_en': 'http://www.ouellet.com/en-ca/products/accessories-and-controls.aspx?product=OTH3600-GA-GT', 'url_fr': 'http://www.ouellet.com/fr-ca/produits/accessoires-et-controles.aspx?product=OTH3600-GA-GT'}, {'id': 25010, 'identifier': 'XXXXXXX-xxxx', 'name': 'Éloi et Flavie', 'family': '725', 'signature': {'model': 725, 'modelCfg': 82, 'hardRev': 0, 'softVersion': {'major': 1, 'middle': 0, 'minor': 2}, 'softBuildCfg': 0}, 'location$id': 5979, 'parentDevice$id': 25006, 'group$id': 5955, 'orderIdx': 0, 'sku': 'OTH3600-GA-GT', 'vendor': 'Ouellet', 'url_en': 'http://www.ouellet.com/en-ca/products/accessories-and-controls.aspx?product=OTH3600-GA-GT', 'url_fr': 'http://www.ouellet.com/fr-ca/produits/accessoires-et-controles.aspx?product=OTH3600-GA-GT'}, {'id': 25006, 'identifier': 'xxxxxxxx', 'name': 'GT125', 'family': 'GT125', 'signature': {'model': 125, 'modelCfg': 0, 'softBuildCfg': 0, 'softVersion': {'major': 3, 'middle': 0, 'minor': 0}, 'hardRev': 2}, 'location$id': 5979, 'parentDevice$id': None, 'group$id': None, 'orderIdx': 0, 'sku': 'GT125', 'vendor': 'Sinopé', 'url_en': 'https://www.sinopetech.com/produit/passerelle-web/', 'url_fr': 'https://www.sinopetech.com/en/product/web-interface-gateway-sinope-mi-wi/'}, {'id': 25008, 'identifier': 'XXXXXXX-xxx', 'name': 'S.Bain-S.Lavage', 'family': '725', 'signature': {'model': 725, 'modelCfg': 82, 'hardRev': 0, 'softVersion': {'major': 1, 'middle': 0, 'minor': 2}, 'softBuildCfg': 0}, 'location$id': 5979, 'parentDevice$id': 25006, 'group$id': None, 'orderIdx': 0, 'sku': 'OTH3600-GA-GT', 'vendor': 'Ouellet', 'url_en': 'http://www.ouellet.com/en-ca/products/accessories-and-controls.aspx?product=OTH3600-GA-GT', 'url_fr': 'http://www.ouellet.com/fr-ca/produits/accessoires-et-controles.aspx?product=OTH3600-GA-GT'}, {'id': 100997, 'identifier': 'XXXXXXX-19C96', 'name': 'Salle de bain', 'family': '1122', 'signature': {'model': 1122, 'modelCfg': 4, 'hardRev': 1, 'softVersion': {'major': 1, 'middle': 7, 'minor': 0}, 'softBuildCfg': 4}, 'location$id': 5979, 'parentDevice$id': 25006, 'group$id': 16195, 'orderIdx': 0, 'sku': 'TH1120RF-3000B', 'vendor': 'Sinopé', 'url_en': 'http://www.sinopetech.com/en/boutique/products/neviweb-en/thermostat-for-electric-heating-wireless-communication/', 'url_fr': 'http://www.sinopetech.com/boutique/produits/thermostat-pour-chauffage-electrique-communication-sans-fil/'}, {'id': 25007, 'identifier': 'XXXXXXX-xxxx', 'name': 'Salle Familiale', 'family': '725', 'signature': {'model': 725, 'modelCfg': 82, 'hardRev': 0, 'softVersion': {'major': 1, 'middle': 0, 'minor': 2}, 'softBuildCfg': 0}, 'location$id': 5979, 'parentDevice$id': 25006, 'group$id': 5957, 'orderIdx': 0, 'sku': 'OTH3600-GA-GT', 'vendor': 'Ouellet', 'url_en': 'http://www.ouellet.com/en-ca/products/accessories-and-controls.aspx?product=OTH3600-GA-GT', 'url_fr': 'http://www.ouellet.com/fr-ca/produits/accessoires-et-controles.aspx?product=OTH3600-GA-GT'}, {'id': 100242, 'identifier': 'XXXXXXX-xxxx', 'name': 'Salon - cuisine', 'family': '1122', 'signature': {'model': 1122, 'modelCfg': 4, 'hardRev': 1, 'softVersion': {'major': 1, 'middle': 7, 'minor': 0}, 'softBuildCfg': 4}, 'location$id': 5979, 'parentDevice$id': 25006, 'group$id': 16192, 'orderIdx': 0, 'sku': 'TH1120RF-3000B', 'vendor': 'Sinopé', 'url_en': 'http://www.sinopetech.com/en/boutique/products/neviweb-en/thermostat-for-electric-heating-wireless-communication/', 'url_fr': 'http://www.sinopetech.com/boutique/produits/thermostat-pour-chauffage-electrique-communication-sans-fil/'}, {'id': 100244, 'identifier': 'XXXXXXX-xxx', 'name': 'Salon - Table', 'family': '1122', 'signature': {'model': 1122, 'modelCfg': 4, 'hardRev': 1, 'softVersion': {'major': 1, 'middle': 7, 'minor': 0}, 'softBuildCfg': 4}, 'location$id': 5979, 'parentDevice$id': 25006, 'group$id': 16192, 'orderIdx': 0, 'sku': 'TH1120RF-3000B', 'vendor': 'Sinopé', 'url_en': 'http://www.sinopetech.com/en/boutique/products/neviweb-en/thermostat-for-electric-heating-wireless-communication/', 'url_fr': 'http://www.sinopetech.com/boutique/produits/thermostat-pour-chauffage-electrique-communication-sans-fil/'}]

Unable to execute device.py

Followed instructions to install the integration v1.5.7 on home assistant OS v9.4. I try to execute the following command to be able to get the API key required for the configuration.yaml file.

sudo python3 device.py

Both sudo and python3 gives "command not found".

How can I execute this script to retrieve the API key?

Problème avec automation hvac_mode

Bonjour,

Lorsque j'ai un automation qui met certain thermostat en mode OFF ou en mode manuel à une température x tout fonctionne.
Cependant quand un autre automation viens passer après celle-ci pour remettre le hvac_mode à auto pour une raison que j'ignore le thermostat 4 fois sur 5 ce met en mode manuel et non en mode automatique.

Avez vous un fix pour cette situation ?

Warning timeouts with one v e r y slow thermostat

Is there a way to increase the response wait time?

2022-02-17 21:40:48 WARNING (SyncWorker_29) [custom_components.neviweb.climate] Cannot update neviweb climate Angela: {'error': {'code': 'DVCCOMMTO', 'data': {'retry': 2}}}. Device is busy or does not respond quickly enough.

In Neviweb app, it does report but is very slow. It also does update to changes from HA but it does take it's sweet time! I will see if I can relocate the hub but that won't be easy. They are in opposite corners of the townhouse and on different floors (main level vs upstairs).

Déconnexion de la liaison

Nous avons une grande maison et le gateway à de la peine à couvrir tous les thermostats.
Ce qui est embêtant c'est que la liaison gt125 home assistant tombe et surtout ne se rétabli pas. Lorsque la liaison tombe, je n'ai pkus aucune info des thermostats. Je suis obligé de redémarrer H.A. serait-il possible d'établir une supervision de la connexion et de la redémarrer si nécessaire? Merci pour tout le travail qui a été fait!

last update problem

hi, since the last update 1.5.4, I have this error message.

I try to reinstall, I can not reboot home assistant...

[140074111939488] The system cannot restart because the configuration is not valid: Integration error: sinope - Integration 'sinope' not found.
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 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/components/hassio/init.py", line 599, in async_handle_core_service
raise HomeAssistantError(
homeassistant.exceptions.HomeAssistantError: The system cannot restart because the configuration is not valid: Integration error: sinope - Integration 'sinope' not found.

issue Error code: 7ffc

Hi

I have many error message, do you have idea?

Logger: custom_components.sinope
Source: custom_components/sinope/init.py:281
Integration: Sinope GT125 (documentation)
First occurred: 02:01:04 (1358 occurrences)
Last logged: 11:03:44

Error code: 7ffc (None or invalid value for 9aa40100), Data:(550015004102248129500a01009aa40100070802000002fc7f4f)
Error code: 7ffc (None or invalid value for bda60100), Data:(550015004102564277400a0100bda60100070802000002fc7faf)
Error code: 7ffc (None or invalid value for 5ebb0000), Data:(550015004102348457490a01005ebb0000070802000002fc7f60)
Error code: 7ffc (None or invalid value for 45ff0000), Data:(550015004102331685930a010045ff0000070802000002fc7f6d)
Error code: 7ffc (None or invalid value for 9efe0000), Data:(550015004102156114230a01009efe0000070802000002fc7fa2)

"Setup failed" in latest Home Assistant boot.

Copied from HomeAssistant logs

Logger: homeassistant.setup
Source: setup.py:172
First occurred: 5 May 2021, 19:09:41 (1 occurrences)
Last logged: 5 May 2021, 19:09:41

Setup failed for sinope: Unable to import component: cannot import name 'Astral' from 'astral' (/usr/local/lib/python3.8/site-packages/astral/__init__.py)

System Health

version core-2021.5.0
installation_type Home Assistant Supervised
dev false
hassio true
docker true
virtualenv false
python_version 3.8.9
os_name Linux
os_version 5.4.0-72-generic
arch x86_64
timezone America/Toronto
Home Assistant Community Store
GitHub API ok
Github API Calls Remaining 4775
Installed Version 1.12.3
Stage running
Available Repositories 842
Installed Repositories 37
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Ubuntu 20.04.2 LTS
update_channel stable
supervisor_version supervisor-2021.04.3
docker_version 20.10.2
disk_total 30.9 GB
disk_used 12.2 GB
healthy true
supported failed to load: Unsupported
supervisor_api ok
version_api ok
installed_addons Check Home Assistant configuration (3.7.1), Home Assistant Google Drive Backup (0.104.2), Terminal & SSH (9.1.1), Let's Encrypt (4.11.0), File editor (5.3.0), ADB - Android Debug Bridge (0.8.0), Node-RED (9.0.1)
Lovelace
dashboards 2
resources 32
views 4
mode storage

Problem with version 1.3

Hello, since version 1.3 I have 4 thermostats which have lost communication with Home Assistant.

2021-01-03 11:13:54 ERROR (MainThread) [homeassistant.components.climate] neviweb: Error on device update!
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 359, in _async_add_entity
await entity.async_device_update(warning=False)
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 466, in async_device_update
await task
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/neviweb/climate.py", line 177, in update
self._away_temp = float(device_data[ATTR_AWAY_SETPOINT])
KeyError: 'roomSetpointAway'
2021-01-03 11:13:56 WARNING (MainThread) [homeassistant.components.climate] Setup of climate platform neviweb is taking over 10 seconds.
2021-01-03 11:13:56 ERROR (MainThread) [homeassistant.components.climate] neviweb: Error on device update!
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 359, in _async_add_entity
await entity.async_device_update(warning=False)
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 466, in async_device_update
await task
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/neviweb/climate.py", line 177, in update
self._away_temp = float(device_data[ATTR_AWAY_SETPOINT])
KeyError: 'roomSetpointAway'
2021-01-03 11:13:57 ERROR (MainThread) [homeassistant.components.climate] neviweb: Error on device update!
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 359, in _async_add_entity
await entity.async_device_update(warning=False)
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 466, in async_device_update
await task
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/neviweb/climate.py", line 177, in update
self._away_temp = float(device_data[ATTR_AWAY_SETPOINT])
KeyError: 'roomSetpointAway'
2021-01-03 11:13:58 ERROR (MainThread) [homeassistant.components.climate] neviweb: Error on device update!
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 359, in _async_add_entity
await entity.async_device_update(warning=False)
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 466, in async_device_update
await task
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/neviweb/climate.py", line 177, in update
self._away_temp = float(device_data[ATTR_AWAY_SETPOINT])
KeyError: 'roomSetpointAway'

Platform not found (No module named 'aiofiles')

Hi, i try to setup my thermostat with hass 2024.6.4 and i receive this error.

I try to install the module with the command: pip3 install aiofiles

But i continue to get the error. My setup is based ont proxmox Home Assistant Core LXC

GT130

Claude,

Do you know if there are issues using this code with the GT-130 ?

Merci
Stéphane

Service sinope.set_outside_temperature

Bonjour,

Le service sinope.set_outside_temperature ne semble pas fonctionner, quand j'essaie de caller le service manuellement par les developper tools avec la variable temperature comme ceci: temperature: "{{ state_attr('weather.home', 'temperature') }}" j'obtient ce code d'erreur. Failed to call service sinope/set_outside_temperature. expected float for dictionary value @ data['temperature']

Pouvez vous m'aider, en fait je voudrais être en mesure de pousser la valeur de temperature de ma sonde exterieur dans l'affichage secondaire du thermostat à l'aide d'une automation toute les 5 minutes.

None or invalid value for

Hello, first of all, thank you for your integration work for Sinope products. I moved from Neviweb integration to GT125 last week. Since then, I have noticed a lot of errors from the integration. Here are some examples;

2020-06-03 11:10:14 WARNING (SyncWorker_0) [custom_components.sinope] Error code: 7ffc (None or invalid value for 79760000)
2020-06-03 11:11:57 WARNING (SyncWorker_7) [custom_components.sinope] Error code: 7ffc (None or invalid value for 69710000)
2020-06-03 11:12:03 WARNING (SyncWorker_19) [custom_components.sinope] Error code: 7ffc (None or invalid value for 33080000)
2020-06-03 11:12:09 WARNING (SyncWorker_8) [custom_components.sinope] Error code: 7ffc (None or invalid value for 147c0000)
2020-06-03 11:12:12 WARNING (SyncWorker_5) [custom_components.sinope] Error code: 7ffc (None or invalid value for fc070000)
2020-06-03 11:12:15 WARNING (SyncWorker_11) [custom_components.sinope] Error code: 7ffc (None or invalid value for 79760000)
2020-06-03 11:13:58 WARNING (SyncWorker_11) [custom_components.sinope] Error code: 7ffc (None or invalid value for 69710000)
2020-06-03 11:14:04 WARNING (SyncWorker_17) [custom_components.sinope] Error code: 7ffc (None or invalid value for 33080000)
2020-06-03 11:14:10 WARNING (SyncWorker_9) [custom_components.sinope] Error code: 7ffc (None or invalid value for 147c0000)
2020-06-03 11:14:13 WARNING (SyncWorker_15) [custom_components.sinope] Error code: 7ffc (None or invalid value for fc070000)
2020-06-03 11:14:16 WARNING (SyncWorker_16) [custom_components.sinope] Error code: 7ffc (None or invalid value for 79760000)
2020-06-03 11:15:59 WARNING (SyncWorker_1) [custom_components.sinope] Error code: 7ffc (None or invalid value for 69710000)
2020-06-03 11:16:05 WARNING (SyncWorker_17) [custom_components.sinope] Error code: 7ffc (None or invalid value for 33080000)
2020-06-03 11:16:11 WARNING (SyncWorker_12) [custom_components.sinope] Error code: 7ffc (None or invalid value for 147c0000)
2020-06-03 11:16:14 WARNING (SyncWorker_13) [custom_components.sinope] Error code: 7ffc (None or invalid value for fc070000)
2020-06-03 11:16:17 WARNING (SyncWorker_18) [custom_components.sinope] Error code: 7ffc (None or invalid value for 79760000)

Do you have a solution or advice to solve the problem?

Protocol Docs

Do you have any documentation for this binary protocol?

I'm working on separating the gt125 code from home assistant code so the gt125 code can be used as a library in other projects

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.