Uses the Duke Energy Gateway to import near real time energy usage into Home Assistant

Overview

Duke Energy Logo Duke Energy Gateway

GitHub Release GitHub Build GitHub Activity

License pre-commit Black

hacs Project Maintenance BuyMeCoffee

This is a custom integration for Home Assistant. It pulls near-real-time energy usage from Duke Energy via the Duke Energy Gateway pilot program.

This component will set up the following entities.

Platform Description
sensor.duke_energy_usage_today_kwh Represents today's energy consumption (from 0:00 local time to 23:59 local time, then resetting). Additional attributes are available containing the meter ID, gateway ID, and the timestamp of the last measurement.

This integration leverages the pyduke-energy library, also written by me, to pull data. This API is very unofficial and may stop working at any time (see Disclaimer). Also, you are required to have a Duke Energy Gateway connected to your smartmeter for this to work. This integration does not support any other method of retrieving data (see Gateway Requirement).

Energy usage will be provided as daily data, resetting at midnight local time. At the moment, the API appears to be limited to providing new records every 15 minutes, meaning readings could be delayed up to 15 minutes. For more information, see limitations in the pyduke-energy repo.

Installation

HACS Installation

  1. Add as a Custom Repository under Settings in HACS: mjmeli/ha-duke-energy-gateway and choose Integration as the Category.
  2. Restart Home Assistant
  3. In the HA UI go to "Configuration" -> "Integrations" click "+" and search for "Duke Energy Gateway"

Manual Installation

  1. Using the tool of choice open the directory (folder) for your HA configuration (where you find configuration.yaml).
  2. If you do not have a custom_components directory (folder) there, you need to create it.
  3. In the custom_components directory (folder) create a new folder called duke_energy_gateway.
  4. Download all the files from the custom_components/duke_energy_gateway/ directory (folder) in this repository.
  5. Place the files you downloaded in the new directory (folder) you created.
  6. Restart Home Assistant
  7. In the HA UI go to "Configuration" -> "Integrations" click "+" and search for "Duke Energy Gateway"

Configuration is done in the UI

Configuration will be done in the UI. You will need to provide the following data:

Data Description
email Your login email to Duke Energy.
password Your login password to Duke Energy.

Meter Selection

The configuration flow will automatically attempt to identify your gateway and smartmeter. Right now, only one is supported per account. The first one identified will be used. If one cannot be found, the configuration process should fail.

Development

I suggest using the dev container for development by opening in Visual Studio Code with code . and clicking on the option to re-open with dev container. In VS Code, you can run the task "Run Home Assistant on the port 9123" and then access it via http://localhost:9123.

If you want to install manually, you can install dev dependencies with pip install -r requirements_dev.txt.

Before commiting, run pre-commit run --all-files.

Contributions are welcome!

If you want to contribute to this please read the Contribution guidelines

Credits

This project was generated from @oncleben31's Home Assistant Custom Component Cookiecutter template.

Code template was mainly taken from @Ludeeus's integration_blueprint template


Comments
  • HA Energy Dashboard No Longer Displaying Duke Electric Usage

    HA Energy Dashboard No Longer Displaying Duke Electric Usage

    Version of the custom_component

    When I look at a device, the about says it is v1.0.0, but HACS shows the version as 0.1.2.

    Configuration

    It is connected to my account and has been working fine for quite a while.

    Describe the bug

    I noticed a couple of days ago that my energy usage was no longer being reported in the HA tab.

    I think that the timing may have correlated with my upgrade to HA 2022.11.0.

    It appears to me from the debug logging (see below) that it is receiving data from the Duke service. So I'm wondering if something about the interface to HA was changed in 2022.11.0 which is causing this integration to not properly pass the data to HA.

    Debug log

    2022-11-05 15:36:45.097 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read()
    2022-11-05 15:36:45.098 DEBUG (MainThread) [pyduke_energy.realtime] Received PUBLISH (d0, q0, r0, m0), 'DESH/P210400605/out/sm/1/live', ... (129 bytes)
    2022-11-05 15:36:48.100 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read()
    2022-11-05 15:36:48.102 DEBUG (MainThread) [pyduke_energy.realtime] Received PUBLISH (d0, q0, r0, m0), 'DESH/P210400605/out/sm/1/live', ... (129 bytes)
    2022-11-05 15:36:51.096 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read()
    2022-11-05 15:36:51.097 DEBUG (MainThread) [pyduke_energy.realtime] Received PUBLISH (d0, q0, r0, m0), 'DESH/P210400605/out/sm/1/live', ... (129 bytes)
    2022-11-05 15:36:54.112 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read()
    2022-11-05 15:36:54.113 DEBUG (MainThread) [pyduke_energy.realtime] Received PUBLISH (d0, q0, r0, m0), 'DESH/P210400605/out/sm/1/live', ... (129 bytes)
    2022-11-05 15:36:56.084 DEBUG (MainThread) [pyduke_energy.realtime] Sending PINGREQ
    2022-11-05 15:36:56.085 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability.
    2022-11-05 15:36:56.086 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write
    2022-11-05 15:36:56.087 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability.
    2022-11-05 15:36:56.116 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read()
    2022-11-05 15:36:56.117 DEBUG (MainThread) [pyduke_energy.realtime] Received PINGRESP
    2022-11-05 15:36:57.096 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read()
    2022-11-05 15:36:57.098 DEBUG (MainThread) [pyduke_energy.realtime] Received PUBLISH (d0, q0, r0, m0), 'DESH/P210400605/out/sm/1/live', ... (129 bytes)
    2022-11-05 15:37:00.168 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read()
    2022-11-05 15:37:00.169 DEBUG (MainThread) [pyduke_energy.realtime] Received PUBLISH (d0, q0, r0, m0), 'DESH/P210400605/out/sm/1/live', ... (129 bytes)
    2022-11-05 15:37:03.100 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read()
    2022-11-05 15:37:03.101 DEBUG (MainThread) [pyduke_energy.realtime] Received PUBLISH (d0, q0, r0, m0), 'DESH/P210400605/out/sm/1/live', ... (129 bytes)
    2022-11-05 15:37:06.096 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read()
    2022-11-05 15:37:06.097 DEBUG (MainThread) [pyduke_energy.realtime] Received PUBLISH (d0, q0, r0, m0), 'DESH/P210400605/out/sm/1/live', ... (129 bytes)
    2022-11-05 15:37:09.096 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read()
    2022-11-05 15:37:09.097 DEBUG (MainThread) [pyduke_energy.realtime] Received PUBLISH (d0, q0, r0, m0), 'DESH/P210400605/out/sm/1/live', ... (129 bytes)
    2022-11-05 15:37:12.098 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read()
    2022-11-05 15:37:12.100 DEBUG (MainThread) [pyduke_energy.realtime] Received PUBLISH (d0, q0, r0, m0), 'DESH/P210400605/out/sm/1/live', ... (129 bytes)
    2022-11-05 15:37:13.293 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-11-05T04:00 UTC and 2022-11-06T04:00 UTC
    2022-11-05 15:37:15.094 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read()
    2022-11-05 15:37:15.095 DEBUG (MainThread) [pyduke_energy.realtime] Received PUBLISH (d0, q0, r0, m0), 'DESH/P210400605/out/sm/1/live', ... (129 bytes)
    2022-11-05 15:37:18.097 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read()
    2022-11-05 15:37:18.098 DEBUG (MainThread) [pyduke_energy.realtime] Received PUBLISH (d0, q0, r0, m0), 'DESH/P210400605/out/sm/1/live', ... (129 bytes)
    
    opened by BrettEBowman 8
  • Could not identify a smart meter on your account with gateway access

    Could not identify a smart meter on your account with gateway access

    I'm receiving this message in the logs:

    Could not identify a smart meter on your account with gateway access

    Any idea on how to address this one? Version 0.0.6. Details from log:

    _This error originated from a custom integration.

    Logger: custom_components.duke_energy_gateway Source: custom_components/duke_energy_gateway/init.py:82 Integration: Duke Energy Gateway (documentation, issues) First occurred: 10:09:06 AM (2 occurrences) Last logged: 10:11:53 AM

    Could not identify a smart meter on your account with gateway access._

    opened by slappula 8
  • Realtime energy unavailable in b7 or  b8

    Realtime energy unavailable in b7 or b8

    Version of the custom_component

    Version 0.1.0b8

    Configuration

    Realtime interval left blank or set to 3.

    Debug Logger set as follows:

    logger:
      default: info
      logs:
        custom_components.duke_energy_gateway: debug
        pyduke_energy.client: debug
        pyduke_energy.realtime: debug
    

    Describe the bug

    I had noticed this issue on b7 and had opted to continue running b6 where realtime energy usage was working at the time. I updated to b8 this morning after the patch for the API change. I'm seeing the same behavior in b8 as I observed in b7 where sensor.duke_energy_current_usage_w shows 'unavailable' and has not updated at the specified interval. I have tried leaving interval blank and also setting it to 3 (seconds), but it does not change. I do see two entries in the debug log for the realtime sensor, but I do not see any realtime updates as was in previous versions, only for today's usage. Rolling back to b6 restores realtime usage, but has the now outdated API references.

    Debug log

    2021-12-16 08:48:31 INFO (MainThread) [homeassistant.setup] Setting up duke_energy_gateway
    2021-12-16 08:48:31 INFO (MainThread) [homeassistant.setup] Setup of domain duke_energy_gateway took 0.0 seconds
    2021-12-16 08:48:31 INFO (MainThread) [custom_components.duke_energy_gateway]
    -------------------------------------------------------------------
    Duke Energy Gateway
    This is a custom integration!
    If you have any issues with this you need to open an issue here:
    https://github.com/mjmeli/ha-duke-energy-gateway/issues
    -------------------------------------------------------------------
    2021-12-16 08:48:31 DEBUG (MainThread) [custom_components.duke_energy_gateway] Set up Duke Energy API clients
    2021-12-16 08:48:31 DEBUG (MainThread) [pyduke_energy.client] Getting new OAuth auth
    2021-12-16 08:48:34 DEBUG (MainThread) [pyduke_energy.client] Accounts to check for gateway (1): 'XXXXXXXX'
    2021-12-16 08:48:34 DEBUG (MainThread) [pyduke_energy.client] Checking account XXXXXXXX' for gateway
    2021-12-16 08:48:41 DEBUG (MainThread) [pyduke_energy.client] Meters to check for gateway (1): 'XXXXXXXX'
    2021-12-16 08:48:41 DEBUG (MainThread) [pyduke_energy.client] Checking meter 'XXXXXXXX' for gateway [meter_type=ELECTRIC, is_certified_smart_meter=True]
    2021-12-16 08:48:41 DEBUG (MainThread) [pyduke_energy.client] Getting new gateway auth
    2021-12-16 08:48:42 DEBUG (MainThread) [pyduke_energy.client] Found meter 'XXXXXXXX' with gateway 'XXXXXXXX'
    2021-12-16 08:48:42 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:48:42 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.297 seconds (success: True)
    2021-12-16 08:48:42 INFO (MainThread) [homeassistant.components.sensor] Setting up sensor.duke_energy_gateway
    2021-12-16 08:48:42 DEBUG (MainThread) [custom_components.duke_energy_gateway] Subscribed target for _RealtimeUsageSensor to dispatcher
    2021-12-16 08:48:42 DEBUG (MainThread) [custom_components.duke_energy_gateway] Triggered real-time connect/subscribe async task
    2021-12-16 08:49:12 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:49:13 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.765 seconds (success: True)
    2021-12-16 08:49:42 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:49:43 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.886 seconds (success: True)
    2021-12-16 08:50:12 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:50:13 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 1.087 seconds (success: True)
    2021-12-16 08:50:42 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:50:43 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 1.082 seconds (success: True)
    2021-12-16 08:51:12 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:51:13 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.611 seconds (success: True)
    2021-12-16 08:51:42 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:51:43 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.896 seconds (success: True)
    2021-12-16 08:52:12 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:52:13 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.761 seconds (success: True)
    2021-12-16 08:52:42 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:52:43 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.719 seconds (success: True)
    2021-12-16 08:53:12 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:53:13 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.467 seconds (success: True)
    2021-12-16 08:53:42 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:53:43 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.485 seconds (success: True)
    2021-12-16 08:54:12 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:54:13 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.838 seconds (success: True)
    2021-12-16 08:54:42 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:54:43 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.910 seconds (success: True)
    2021-12-16 08:55:12 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:55:13 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.865 seconds (success: True)
    2021-12-16 08:55:42 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2021-12-16T05:00 UTC and 2021-12-17T05:00 UTC
    2021-12-16 08:55:43 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.771 seconds (success: True)
    
    opened by JacobWasFramed 7
  • Log errors v0.1.0b5

    Log errors v0.1.0b5

    Everything appears to be working

    Logger: homeassistant
    Source: /usr/src/homeassistant/homeassistant/runner.py:98
    First occurred: 3:28:26 PM (13 occurrences)
    Last logged: 3:29:02 PM
    
    Error doing job: Exception in callback MqttConnHelper.on_socket_open.<locals>.call_bk() at /usr/local/lib/python3.9/site-packages/pyduke_energy/realtime.py:299
    Traceback (most recent call last):
      File "/usr/local/lib/python3.9/asyncio/events.py", line 80, in _run
        self._context.run(self._callback, *self._args)
      File "/usr/local/lib/python3.9/site-packages/pyduke_energy/realtime.py", line 302, in call_bk
        client.loop_read()
      File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 1572, in loop_read
        rc = self._packet_read()
      File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 2310, in _packet_read
        rc = self._packet_handle()
      File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 2936, in _packet_handle
        return self._handle_publish()
      File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 3216, in _handle_publish
        self._handle_on_message(message)
      File "/usr/local/lib/python3.9/site-packages/paho/mqtt/client.py", line 3444, in _handle_on_message
        self.on_message(self, self._userdata, message)
      File "/usr/local/lib/python3.9/site-packages/pyduke_energy/realtime.py", line 168, in _on_msg
        self.rx_msg.set_result((msg.payload.decode("utf8")))
    asyncio.exceptions.InvalidStateError: invalid state
    
    Logger: pyduke_energy.realtime
    Source: /usr/local/lib/python3.9/site-packages/paho/mqtt/client.py:2404
    First occurred: 3:28:26 PM (13 occurrences)
    Last logged: 3:29:02 PM
    
    Caught exception in on_message: invalid state
    
    

    HA version 2021.11.0 Home Assistant Container python version 3.9.7

    opened by tteck 6
  • HA error logs.

    HA error logs.

    Capture

    This error originated from a custom integration.

    Logger: custom_components.duke_energy_gateway Source: custom_components/duke_energy_gateway/init.py:107 Integration: Duke Energy Gateway (documentation, issues) First occurred: 12:06:23 PM (1 occurrences) Last logged: 12:06:23 PM

    Could not identify a smart meter on your account with gateway access.

    I configured the gateway earlier today and it is showing in the app as configured and online. I am able to access data real time via the Duke Energy app.

    Screenshot_20210921-124255_Duke Energy

    Note: When logging into the Duke Energy website; I see an old account (no longer active) along with the existing one that is in use and connected to the gateway.

    Any advice on how I may be able to resolve this? Thank you so much for all your efforts on this project!!

    opened by shthfuup 6
  • Error setting up entry brett@bowman-tech.com for duke_energy_gateway -- intermittent error

    Error setting up entry [email protected] for duke_energy_gateway -- intermittent error

    Version of the custom_component

    0.1.1

    Configuration

    Basically default configuration with 15 minute updates and correct Duke Energy Account which has the Gateway linked.

    Describe the bug

    Recently I've noticed quite a few failures of the integration to connect to the Duke Energy Gateway. This especially seems to happen after I do a restart of HA.

    I do have the Smart Meter Gateway installed and linked to my account. And normally the integration works just fine. However, for some reason part of the time it errors saying "Failed to identify any smart meter with gateway access on your account"

    Traceback (most recent call last):
      File "/usr/src/homeassistant/homeassistant/config_entries.py", line 357, in async_setup
        result = await component.async_setup_entry(hass, self)
      File "/config/custom_components/duke_energy_gateway/__init__.py", line 54, in async_setup_entry
        selected_meter, selected_gateway = await client.select_default_meter()
      File "/usr/local/lib/python3.10/site-packages/pyduke_energy/client.py", line 175, in select_default_meter
        raise DukeEnergyError(
    pyduke_energy.errors.DukeEnergyError: Failed to identify any smart meter with gateway access on your account
    

    I'm not sure if there is some timeout that need to be lengthened or what. When this occurs, the Integrations screen show a red ! error saying "Failed to setup" Screen Shot 09-07-22 at 12 22 PM

    I believe that when that happens, the integration no longer tries to connect. So, maybe something just needs to be added so that when a known working configuration tries to restart and gets this error (i.e. due to a problem with the Duke servers) it would keep trying in the background.

    Debug log

    2022-09-07 11:08:23.399 INFO (MainThread) [homeassistant.bootstrap] Setting up stage 2: {'energy', 'counter', 'ring', 'proximity', 'input_number', 'homeassistant_alerts', 'hardware', 'localtuya', 'person', 'sensor', 'mobile_app', 'image', 'blueprint', 'analytics', 'script', 'repairs', 'ffmpeg', 'trace', 'onboarding', 'device_tracker', 'hardkernel', 'logbook', 'sun', 'timer', 'ipp', 'my', 'dwains_dashboard', 'brother', 'radio_browser', 'template', 'roku', 'mqtt', 'remote_homeassistant', 'search', 'tag', 'input_button', 'history', 'rest', 'device_automation', 'input_boolean', 'application_credentials', 'lovelace', 'openweathermap', 'wyzeapi', 'persistent_notification', 'input_text', 'tuya', 'duke_energy_gateway', 'input_datetime', 'hacs', 'diagnostics', 'met', 'browser_mod', 'tts', 'system_health', 'default_config', 'myq', 'config', 'zone', 'automation', 'input_select', 'map', 'utility_meter', 'auth', 'scene', 'media_source'}
    2022-09-07 11:08:26.621 INFO (MainThread) [homeassistant.setup] Setting up duke_energy_gateway
    2022-09-07 11:08:26.621 INFO (MainThread) [homeassistant.setup] Setup of domain duke_energy_gateway took 0.0 seconds
    2022-09-07 11:08:26.671 INFO (MainThread) [custom_components.duke_energy_gateway]
    2022-09-07 11:08:26.671 DEBUG (MainThread) [custom_components.duke_energy_gateway] Set up Duke Energy API clients
    2022-09-07 11:08:28.878 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry [email protected] for duke_energy_gateway
    File "/config/custom_components/duke_energy_gateway/__init__.py", line 54, in async_setup_entry
    2022-09-07 11:08:56.530 DEBUG (MainThread) [custom_components.duke_energy_gateway] Set up Duke Energy API clients
    2022-09-07 11:08:57.347 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry [email protected] for duke_energy_gateway
    File "/config/custom_components/duke_energy_gateway/__init__.py", line 54, in async_setup_entry
    2022-09-07 11:09:31.927 DEBUG (MainThread) [custom_components.duke_energy_gateway] Set up Duke Energy API clients
    2022-09-07 11:09:32.487 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry [email protected] for duke_energy_gateway
    File "/config/custom_components/duke_energy_gateway/__init__.py", line 54, in async_setup_entry
    
    opened by BrettEBowman 5
  • Duke Energy Usage Today sensor rising off the charts!

    Duke Energy Usage Today sensor rising off the charts!

    v0.1.0b7

    At a little after 11am eastern time, the Duke Energy Usage Today sensor started climbing much higher than the actual usage. The Duke Energy Current Usage sensor is functioning properly. I checked the Duke app and can confirm that I am not actually using this much energy. I have tried restarting Home Assistant. Restarting the Duke App. When I get home I will try to power cycle the gateway.

    image

    opened by apercrcl01 5
  • Resubscribe real-time and cumulative usage after connection outage

    Resubscribe real-time and cumulative usage after connection outage

    Currently running the beta with real-time energy usage. I notice that after an internet connection time out, the real-time usage doesn’t resubscribe when connection is restored. The cumulative usage only seems to fail if the outage happens during a reading due to an internet or Duke API outage longer than the 15 minute interval. Seems like any outage requires a restart of HA to restore. I’m unsure if this can be addressed here or should be address in the Duke Python repository.

    I think a good solution would be to poll every 1-5 minutes after a connection is out until a successful response is received and at that point resubscribe or reinitialize the integration.

    Potentially related, being unable to restart the integration without having to restart HA.

    opened by JacobWasFramed 4
  • Could not identify a smart meter on your account with gateway access.

    Could not identify a smart meter on your account with gateway access.

    I am using version 0.0.8 and get the below error when trying to setup the integration.
    I am not sure how to run the example (no python experience here) but I did verify the correct account number and meter is being returned in the logs. I read the previous issue that was similar and even tried 0.0.7 but it gave the same error.

    0.0.8 Log

    2021-09-07 17:59:56 DEBUG (MainThread) [custom_components.duke_energy_gateway] Setup Duke Energy API client 2021-09-07 17:59:56 DEBUG (MainThread) [custom_components.duke_energy_gateway] Accounts to check for gateway (1): 62XXXXXXX 2021-09-07 17:59:56 DEBUG (MainThread) [custom_components.duke_energy_gateway] Checking account 62XXXXXXX for gateway 2021-09-07 17:59:57 DEBUG (MainThread) [custom_components.duke_energy_gateway] Meters to check for gateway (2): ,33XXXXXXX 2021-09-07 17:59:57 DEBUG (MainThread) [custom_components.duke_energy_gateway] Checking meter for gateway [meter_type=ELECTRIC, is_certified_smart_meter=True] 2021-09-07 17:59:58 DEBUG (MainThread) [custom_components.duke_energy_gateway] Failed to find meter on account 62XXXXXXX: Request failed with unexpected error [https://cust-pilot-api.duke-energy.com/smartmeter/v1/auth]: 500, message='Internal Server Error', url=URL('https://cust-pilot-api.duke-energy.com/smartmeter/v1/auth') 2021-09-07 17:59:58 ERROR (MainThread) [custom_components.duke_energy_gateway] Could not identify a smart meter on your account with gateway access.

    0.0.7 Log

    2021-09-07 17:59:56 DEBUG (MainThread) [custom_components.duke_energy_gateway] Setup Duke Energy API client 2021-09-07 17:59:56 DEBUG (MainThread) [custom_components.duke_energy_gateway] Accounts to check for gateway (1): 62XXXXXXX 2021-09-07 17:59:56 DEBUG (MainThread) [custom_components.duke_energy_gateway] Checking account 62XXXXXXX for gateway 2021-09-07 17:59:57 DEBUG (MainThread) [custom_components.duke_energy_gateway] Meters to check for gateway (2): ,33XXXXXXX 2021-09-07 17:59:57 DEBUG (MainThread) [custom_components.duke_energy_gateway] Checking meter for gateway [meter_type=ELECTRIC, is_certified_smart_meter=True] 2021-09-07 17:59:58 DEBUG (MainThread) [custom_components.duke_energy_gateway] Failed to find meter on account 62XXXXXXX : Request failed with unexpected error [https://cust-pilot-api.duke-energy.com/smartmeter/v1/auth]: 500, message='Internal Server Error', url=URL('https://cust-pilot-api.duke-energy.com/smartmeter/v1/auth') 2021-09-07 17:59:58 ERROR (MainThread) [custom_components.duke_energy_gateway] Could not identify a smart meter on your account with gateway access.

    opened by awboyd79 4
  • AFter v2021.11 update: Error setting up XXXXXX@EMAIL.com for duke_energy_gateway

    AFter v2021.11 update: Error setting up [email protected] for duke_energy_gateway

    Received the following error message after updating HA to v2021.11. Note, I scrubbed my e-mail address from the log.

    This error originated from a custom integration.

    Logger: homeassistant.config_entries Source: custom_components/duke_energy_gateway/init.py:85 Integration: Duke Energy Gateway (documentation, issues) First occurred: 12:23:22 PM (1 occurrences) Last logged: 12:23:22 PM

    Error setting up entry [email protected] for duke_energy_gateway Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/pyduke_energy/client.py", line 213, in _async_request resp.raise_for_status() File "/usr/local/lib/python3.9/site-packages/aiohttp/client_reqrep.py", line 1000, in raise_for_status raise ClientResponseError( aiohttp.client_exceptions.ClientResponseError: 400, message='Bad Request', url=URL('https://cust-api.duke-energy.com/gep/v2/auth/oauth2/token')

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 304, in async_setup result = await component.async_setup_entry(hass, self) # type: ignore File "/config/custom_components/duke_energy_gateway/init.py", line 51, in async_setup_entry selected_meter, selected_gateway = await find_meter_with_gateway(client) File "/config/custom_components/duke_energy_gateway/init.py", line 85, in find_meter_with_gateway account_list = await client.get_account_list() File "/usr/local/lib/python3.9/site-packages/pyduke_energy/client.py", line 81, in get_account_list headers = await self._get_oauth_headers() File "/usr/local/lib/python3.9/site-packages/pyduke_energy/client.py", line 168, in _get_oauth_headers await self._oauth_login() File "/usr/local/lib/python3.9/site-packages/pyduke_energy/client.py", line 160, in _oauth_login resp = await self._async_request("POST", CUST_API_BASE_URL, endpoint, headers=headers, data=FormData(request)) File "/usr/local/lib/python3.9/site-packages/pyduke_energy/client.py", line 219, in _async_request raise RequestError(f"Request failed with unexpected error [{full_url}]: {ce}") from ce pyduke_energy.errors.RequestError: Request failed with unexpected error [https://cust-api.duke-energy.com/gep/v2/auth/oauth2/token]: 400, message='Bad Request', url=URL('https://cust-api.duke-energy.com/gep/v2/auth/oauth2/token')

    opened by eboettn 3
  • 2021.9 Sensor Statistics Changes

    2021.9 Sensor Statistics Changes

    In 2021.9, Home Assistant is changing how long-term statistics are supported on sensors. This is a breaking change for how the data gets into the energy dashboard.

    Currently: use state_class measurement and set the last_reset state attribute when the meter ticks over

    After 2021.9: use state_class total_increasing (STATE_CLASS_TOTAL_INCREASING) without the last_reset state attribute

    https://developers.home-assistant.io/docs/core/entity/sensor/#long-term-statistics

    breaking 
    opened by mjmeli 3
  • Bump pre-commit from 2.20.0 to 2.21.0

    Bump pre-commit from 2.20.0 to 2.21.0

    Bumps pre-commit from 2.20.0 to 2.21.0.

    Release notes

    Sourced from pre-commit's releases.

    pre-commit v2.21.0

    Features

    Fixes

    Changelog

    Sourced from pre-commit's changelog.

    2.21.0 - 2022-12-25

    Features

    Fixes

    Commits
    • 40c5bda v2.21.0
    • bb27ea3 Merge pull request #2642 from rkm/fix/dotnet-nuget-config
    • c38e0c7 dotnet: ignore nuget source during tool install
    • bce513f Merge pull request #2641 from rkm/fix/dotnet-tool-prefix
    • e904628 fix dotnet hooks with prefixes
    • d7b8b12 Merge pull request #2646 from pre-commit/pre-commit-ci-update-config
    • 94b6178 [pre-commit.ci] pre-commit autoupdate
    • b474a83 Merge pull request #2643 from pre-commit/pre-commit-ci-update-config
    • a179808 [pre-commit.ci] pre-commit autoupdate
    • 3aa6206 Merge pull request #2605 from lorenzwalthert/r/fix-exe
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Bump black from 22.8.0 to 22.12.0

    Bump black from 22.8.0 to 22.12.0

    Bumps black from 22.8.0 to 22.12.0.

    Release notes

    Sourced from black's releases.

    22.12.0

    Preview style

    • Enforce empty lines before classes and functions with sticky leading comments (#3302)
    • Reformat empty and whitespace-only files as either an empty file (if no newline is present) or as a single newline character (if a newline is present) (#3348)
    • Implicitly concatenated strings used as function args are now wrapped inside parentheses (#3307)
    • Correctly handle trailing commas that are inside a line's leading non-nested parens (#3370)

    Configuration

    • Fix incorrectly applied .gitignore rules by considering the .gitignore location and the relative path to the target file (#3338)
    • Fix incorrectly ignoring .gitignore presence when more than one source directory is specified (#3336)

    Parser

    • Parsing support has been added for walruses inside generator expression that are passed as function args (for example, any(match := my_re.match(text) for text in texts)) (#3327).

    Integrations

    • Vim plugin: Optionally allow using the system installation of Black via let g:black_use_virtualenv = 0(#3309)

    22.10.0

    Highlights

    • Runtime support for Python 3.6 has been removed. Formatting 3.6 code will still be supported until further notice.

    Stable style

    • Fix a crash when # fmt: on is used on a different block level than # fmt: off (#3281)

    Preview style

    ... (truncated)

    Changelog

    Sourced from black's changelog.

    22.12.0

    Preview style

    • Enforce empty lines before classes and functions with sticky leading comments (#3302)
    • Reformat empty and whitespace-only files as either an empty file (if no newline is present) or as a single newline character (if a newline is present) (#3348)
    • Implicitly concatenated strings used as function args are now wrapped inside parentheses (#3307)
    • For assignment statements, prefer splitting the right hand side if the left hand side fits on a single line (#3368)
    • Correctly handle trailing commas that are inside a line's leading non-nested parens (#3370)

    Configuration

    • Fix incorrectly applied .gitignore rules by considering the .gitignore location and the relative path to the target file (#3338)
    • Fix incorrectly ignoring .gitignore presence when more than one source directory is specified (#3336)

    Parser

    • Parsing support has been added for walruses inside generator expression that are passed as function args (for example, any(match := my_re.match(text) for text in texts)) (#3327).

    Integrations

    • Vim plugin: Optionally allow using the system installation of Black via let g:black_use_virtualenv = 0(#3309)

    22.10.0

    Highlights

    • Runtime support for Python 3.6 has been removed. Formatting 3.6 code will still be supported until further notice.

    Stable style

    • Fix a crash when # fmt: on is used on a different block level than # fmt: off

    ... (truncated)

    Commits
    • 2ddea29 Prepare release 22.12.0 (#3413)
    • 5b1443a release: skip bad macos wheels for now (#3411)
    • 9ace064 Bump peter-evans/find-comment from 2.0.1 to 2.1.0 (#3404)
    • 19c5fe4 Fix CI with latest flake8-bugbear (#3412)
    • d4a8564 Bump sphinx-copybutton from 0.5.0 to 0.5.1 in /docs (#3390)
    • 2793249 Wordsmith current_style.md (#3383)
    • d97b789 Remove whitespaces of whitespace-only files (#3348)
    • c23a5c1 Clarify that Black runs with --safe by default (#3378)
    • 8091b25 Correctly handle trailing commas that are inside a line's leading non-nested ...
    • ffaaf48 Compare each .gitignore found with an appropiate relative path (#3338)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Bump pylint from 2.15.2 to 2.15.9

    Bump pylint from 2.15.2 to 2.15.9

    Bumps pylint from 2.15.2 to 2.15.9.

    Commits
    • 1ded4d0 Bump pylint to 2.15.9, update changelog (#7952)
    • 785c629 [testutil] More information in output for functional test fail (#7948)
    • 3c3ab98 [pypy3.8] Disable multiple-statements false positive on affected functional t...
    • dca3940 Fix inconsistent argument exit code when argparse exit with its own error cod...
    • 494e514 Fix ModuleNotFoundError when using pylint_django (#7940) (#7941)
    • 83668de fix: bump dill to >= 0.3.6, prevents tests hanging with python3.11 (#7918)
    • eadc308 [github actions] Fix enchant's install in the spelling job
    • 391323e Avoid hanging forever after a parallel job was killed (#7834) (#7930)
    • 4655b92 Prevent used-before-assignment in pattern matching with a guard (#7922) (#7...
    • 1f84ed9 Bump pylint to 2.15.8, update changelog (#7899)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Bump black from 22.8.0 to 22.12.0 in /.github/workflows

    Bump black from 22.8.0 to 22.12.0 in /.github/workflows

    Bumps black from 22.8.0 to 22.12.0.

    Release notes

    Sourced from black's releases.

    22.12.0

    Preview style

    • Enforce empty lines before classes and functions with sticky leading comments (#3302)
    • Reformat empty and whitespace-only files as either an empty file (if no newline is present) or as a single newline character (if a newline is present) (#3348)
    • Implicitly concatenated strings used as function args are now wrapped inside parentheses (#3307)
    • Correctly handle trailing commas that are inside a line's leading non-nested parens (#3370)

    Configuration

    • Fix incorrectly applied .gitignore rules by considering the .gitignore location and the relative path to the target file (#3338)
    • Fix incorrectly ignoring .gitignore presence when more than one source directory is specified (#3336)

    Parser

    • Parsing support has been added for walruses inside generator expression that are passed as function args (for example, any(match := my_re.match(text) for text in texts)) (#3327).

    Integrations

    • Vim plugin: Optionally allow using the system installation of Black via let g:black_use_virtualenv = 0(#3309)

    22.10.0

    Highlights

    • Runtime support for Python 3.6 has been removed. Formatting 3.6 code will still be supported until further notice.

    Stable style

    • Fix a crash when # fmt: on is used on a different block level than # fmt: off (#3281)

    Preview style

    ... (truncated)

    Changelog

    Sourced from black's changelog.

    22.12.0

    Preview style

    • Enforce empty lines before classes and functions with sticky leading comments (#3302)
    • Reformat empty and whitespace-only files as either an empty file (if no newline is present) or as a single newline character (if a newline is present) (#3348)
    • Implicitly concatenated strings used as function args are now wrapped inside parentheses (#3307)
    • For assignment statements, prefer splitting the right hand side if the left hand side fits on a single line (#3368)
    • Correctly handle trailing commas that are inside a line's leading non-nested parens (#3370)

    Configuration

    • Fix incorrectly applied .gitignore rules by considering the .gitignore location and the relative path to the target file (#3338)
    • Fix incorrectly ignoring .gitignore presence when more than one source directory is specified (#3336)

    Parser

    • Parsing support has been added for walruses inside generator expression that are passed as function args (for example, any(match := my_re.match(text) for text in texts)) (#3327).

    Integrations

    • Vim plugin: Optionally allow using the system installation of Black via let g:black_use_virtualenv = 0(#3309)

    22.10.0

    Highlights

    • Runtime support for Python 3.6 has been removed. Formatting 3.6 code will still be supported until further notice.

    Stable style

    • Fix a crash when # fmt: on is used on a different block level than # fmt: off

    ... (truncated)

    Commits
    • 2ddea29 Prepare release 22.12.0 (#3413)
    • 5b1443a release: skip bad macos wheels for now (#3411)
    • 9ace064 Bump peter-evans/find-comment from 2.0.1 to 2.1.0 (#3404)
    • 19c5fe4 Fix CI with latest flake8-bugbear (#3412)
    • d4a8564 Bump sphinx-copybutton from 0.5.0 to 0.5.1 in /docs (#3390)
    • 2793249 Wordsmith current_style.md (#3383)
    • d97b789 Remove whitespaces of whitespace-only files (#3348)
    • c23a5c1 Clarify that Black runs with --safe by default (#3378)
    • 8091b25 Correctly handle trailing commas that are inside a line's leading non-nested ...
    • ffaaf48 Compare each .gitignore found with an appropiate relative path (#3338)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Realtime data stops polling, won't resume until HA is restarted

    Realtime data stops polling, won't resume until HA is restarted

    At some point after HA has been running, realtime energy no longer updates. There are no issues for the daily/other metrics that are provided by the plugin. If I restart or update HA, realtime usage data resumes. The debug logs show that a timeout occurs, but it never seems to reconnect after. Debug logs are pasted below - functional at the start, then timeout, then the same messages repeated over and over (which have continued for the last 5 hours).

    Is there some solution for this or some way I could make HA restart the plugin components on a regular basis to work around this?

    2022-12-15 09:24:27.144 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:24:27.145 DEBUG (MainThread) [pyduke_energy.realtime] Received PUBLISH (d0, q0, r0, m0), 'DESH/Pxxxxxxxxx/out/sm/1/live', ... (129 bytes) 2022-12-15 09:24:27.145 DEBUG (MainThread) [custom_components.duke_energy_gateway] Ignoring real-time update as still in throttling interval 2022-12-15 09:24:30.121 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:24:30.122 DEBUG (MainThread) [pyduke_energy.realtime] Received PUBLISH (d0, q0, r0, m0), 'DESH/Pxxxxxxxxx/out/sm/1/live', ... (129 bytes) 2022-12-15 09:24:30.122 DEBUG (MainThread) [custom_components.duke_energy_gateway] Ignoring real-time update as still in throttling interval 2022-12-15 09:24:35.996 DEBUG (MainThread) [pyduke_energy.realtime] Sending PINGREQ 2022-12-15 09:24:35.996 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:24:35.997 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:24:35.998 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:24:36.015 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:24:36.016 DEBUG (MainThread) [pyduke_energy.realtime] Received PINGRESP 2022-12-15 09:24:50.834 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:24:50.963 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.129 seconds (success: True) 2022-12-15 09:25:20.835 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:25:20.961 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.126 seconds (success: True) 2022-12-15 09:25:26.076 DEBUG (MainThread) [pyduke_energy.realtime] Sending PINGREQ 2022-12-15 09:25:26.076 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:25:26.077 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:25:26.078 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:25:26.095 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:25:26.096 DEBUG (MainThread) [pyduke_energy.realtime] Received PINGRESP 2022-12-15 09:25:30.125 DEBUG (MainThread) [pyduke_energy.realtime] Message timeout, requesting fastpoll 2022-12-15 09:25:30.159 DEBUG (MainThread) [pyduke_energy.client] Smartmeter fastpoll requested 2022-12-15 09:25:50.836 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:25:51.019 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.183 seconds (success: True) 2022-12-15 09:26:16.148 DEBUG (MainThread) [pyduke_energy.realtime] Sending PINGREQ 2022-12-15 09:26:16.148 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:26:16.149 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:26:16.149 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:26:16.167 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:26:16.167 DEBUG (MainThread) [pyduke_energy.realtime] Received PINGRESP 2022-12-15 09:26:20.837 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:26:20.970 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.133 seconds (success: True) 2022-12-15 09:26:30.160 DEBUG (MainThread) [pyduke_energy.realtime] Message timeout, requesting fastpoll 2022-12-15 09:26:30.186 DEBUG (MainThread) [pyduke_energy.client] Smartmeter fastpoll requested 2022-12-15 09:26:50.840 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:26:50.977 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.137 seconds (success: True) 2022-12-15 09:27:06.221 DEBUG (MainThread) [pyduke_energy.realtime] Sending PINGREQ 2022-12-15 09:27:06.221 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:27:06.223 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:27:06.224 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:27:06.241 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:27:06.242 DEBUG (MainThread) [pyduke_energy.realtime] Received PINGRESP 2022-12-15 09:27:20.840 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:27:21.071 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.231 seconds (success: True) 2022-12-15 09:27:30.187 DEBUG (MainThread) [pyduke_energy.realtime] Message timeout, requesting fastpoll 2022-12-15 09:27:30.220 DEBUG (MainThread) [pyduke_energy.client] Smartmeter fastpoll requested 2022-12-15 09:27:50.842 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:27:50.974 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.133 seconds (success: True) 2022-12-15 09:27:56.289 DEBUG (MainThread) [pyduke_energy.realtime] Sending PINGREQ 2022-12-15 09:27:56.289 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:27:56.289 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:27:56.290 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:27:56.307 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:27:56.308 DEBUG (MainThread) [pyduke_energy.realtime] Received PINGRESP 2022-12-15 09:28:20.843 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:28:20.975 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.132 seconds (success: True) 2022-12-15 09:28:30.221 DEBUG (MainThread) [pyduke_energy.realtime] Multiple msg timeout, attempting reconnect 2022-12-15 09:28:30.221 DEBUG (MainThread) [pyduke_energy.realtime] Sending UNSUBSCRIBE (d0, m26) [b'DESH/Pxxxxxxxxx/out/sm/1/live'] 2022-12-15 09:28:30.221 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:28:30.224 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:28:30.224 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:28:30.242 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:28:30.243 DEBUG (MainThread) [pyduke_energy.realtime] Received UNSUBACK (Mid: 26) 2022-12-15 09:28:30.243 DEBUG (MainThread) [pyduke_energy.realtime] MQTT unsubscribed msg_id: 26 2022-12-15 09:28:30.243 DEBUG (MainThread) [pyduke_energy.realtime] Sending DISCONNECT 2022-12-15 09:28:30.243 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:28:30.245 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:28:30.246 DEBUG (MainThread) [pyduke_energy.realtime] MQTT disconnected with result code: No error. 2022-12-15 09:28:30.246 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:28:30.247 DEBUG (MainThread) [pyduke_energy.realtime] Socket closed 2022-12-15 09:28:30.248 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop cancelled 2022-12-15 09:28:30.248 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop finished 2022-12-15 09:28:30.345 DEBUG (SyncWorker_4) [pyduke_energy.realtime] Socket opened 2022-12-15 09:28:30.346 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop started 2022-12-15 09:28:30.347 DEBUG (SyncWorker_4) [pyduke_energy.realtime] Sending CONNECT (u1, p1, wr0, wq0, wf0, c1, k50) client_id=b'mobileSub1-Pxxxxxxxxx-02832c93-7a1d-4848-ad4c-46b87b2948e8' 2022-12-15 09:28:30.347 DEBUG (SyncWorker_4) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:28:30.348 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:28:30.349 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:28:30.677 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:28:30.678 DEBUG (MainThread) [pyduke_energy.realtime] Received CONNACK (0, 0) 2022-12-15 09:28:30.678 DEBUG (MainThread) [pyduke_energy.realtime] MQTT connected with result code: Connection Accepted. 2022-12-15 09:28:30.678 DEBUG (MainThread) [pyduke_energy.realtime] Sending SUBSCRIBE (d0, m27) [(b'DESH/Pxxxxxxxxx/out/sm/1/live', 0)] 2022-12-15 09:28:30.678 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:28:30.680 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:28:30.681 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:28:30.699 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:28:30.700 DEBUG (MainThread) [pyduke_energy.realtime] Received SUBACK 2022-12-15 09:28:30.700 DEBUG (MainThread) [pyduke_energy.realtime] MQTT subscribed msg_id: 27 qos: (0,) 2022-12-15 09:28:50.844 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:28:50.972 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.129 seconds (success: True) 2022-12-15 09:29:20.412 DEBUG (MainThread) [pyduke_energy.realtime] Sending PINGREQ 2022-12-15 09:29:20.413 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:29:20.413 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:29:20.414 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:29:20.431 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:29:20.431 DEBUG (MainThread) [pyduke_energy.realtime] Received PINGRESP 2022-12-15 09:29:20.845 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:29:20.972 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.127 seconds (success: True) 2022-12-15 09:29:30.684 DEBUG (MainThread) [pyduke_energy.realtime] Multiple msg timeout, attempting reconnect 2022-12-15 09:29:30.684 DEBUG (MainThread) [pyduke_energy.realtime] Sending UNSUBSCRIBE (d0, m28) [b'DESH/Pxxxxxxxxx/out/sm/1/live'] 2022-12-15 09:29:30.684 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:29:30.685 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:29:30.685 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:29:30.703 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:29:30.704 DEBUG (MainThread) [pyduke_energy.realtime] Received UNSUBACK (Mid: 28) 2022-12-15 09:29:30.704 DEBUG (MainThread) [pyduke_energy.realtime] MQTT unsubscribed msg_id: 28 2022-12-15 09:29:30.704 DEBUG (MainThread) [pyduke_energy.realtime] Sending DISCONNECT 2022-12-15 09:29:30.704 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:29:30.705 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:29:30.706 DEBUG (MainThread) [pyduke_energy.realtime] MQTT disconnected with result code: No error. 2022-12-15 09:29:30.706 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:29:30.708 DEBUG (MainThread) [pyduke_energy.realtime] Socket closed 2022-12-15 09:29:30.708 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop cancelled 2022-12-15 09:29:30.709 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop finished 2022-12-15 09:29:30.791 DEBUG (SyncWorker_1) [pyduke_energy.realtime] Socket opened 2022-12-15 09:29:30.792 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop started 2022-12-15 09:29:30.793 DEBUG (SyncWorker_1) [pyduke_energy.realtime] Sending CONNECT (u1, p1, wr0, wq0, wf0, c1, k50) client_id=b'mobileSub1-Pxxxxxxxxx-02832c93-7a1d-4848-ad4c-46b87b2948e8' 2022-12-15 09:29:30.793 DEBUG (SyncWorker_1) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:29:30.800 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:29:30.800 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:29:31.138 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:29:31.139 DEBUG (MainThread) [pyduke_energy.realtime] Received CONNACK (0, 0) 2022-12-15 09:29:31.139 DEBUG (MainThread) [pyduke_energy.realtime] MQTT connected with result code: Connection Accepted. 2022-12-15 09:29:31.139 DEBUG (MainThread) [pyduke_energy.realtime] Sending SUBSCRIBE (d0, m29) [(b'DESH/Pxxxxxxxxx/out/sm/1/live', 0)] 2022-12-15 09:29:31.139 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:29:31.141 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:29:31.142 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:29:31.161 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:29:31.162 DEBUG (MainThread) [pyduke_energy.realtime] Received SUBACK 2022-12-15 09:29:31.162 DEBUG (MainThread) [pyduke_energy.realtime] MQTT subscribed msg_id: 29 qos: (0,) 2022-12-15 09:29:50.847 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:29:50.998 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.151 seconds (success: True) 2022-12-15 09:30:20.848 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:30:20.860 DEBUG (MainThread) [pyduke_energy.realtime] Sending PINGREQ 2022-12-15 09:30:20.860 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:30:20.861 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:30:20.861 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:30:20.879 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:30:20.880 DEBUG (MainThread) [pyduke_energy.realtime] Received PINGRESP 2022-12-15 09:30:20.984 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.136 seconds (success: True) 2022-12-15 09:30:31.145 DEBUG (MainThread) [pyduke_energy.realtime] Multiple msg timeout, attempting reconnect 2022-12-15 09:30:31.145 DEBUG (MainThread) [pyduke_energy.realtime] Sending UNSUBSCRIBE (d0, m30) [b'DESH/Pxxxxxxxxx/out/sm/1/live'] 2022-12-15 09:30:31.145 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:30:31.146 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:30:31.146 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:30:31.165 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:30:31.166 DEBUG (MainThread) [pyduke_energy.realtime] Received UNSUBACK (Mid: 30) 2022-12-15 09:30:31.166 DEBUG (MainThread) [pyduke_energy.realtime] MQTT unsubscribed msg_id: 30 2022-12-15 09:30:31.166 DEBUG (MainThread) [pyduke_energy.realtime] Sending DISCONNECT 2022-12-15 09:30:31.166 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:30:31.167 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:30:31.167 DEBUG (MainThread) [pyduke_energy.realtime] MQTT disconnected with result code: No error. 2022-12-15 09:30:31.169 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:30:31.170 DEBUG (MainThread) [pyduke_energy.realtime] Socket closed 2022-12-15 09:30:31.171 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop cancelled 2022-12-15 09:30:31.171 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop finished 2022-12-15 09:30:31.254 DEBUG (SyncWorker_0) [pyduke_energy.realtime] Socket opened 2022-12-15 09:30:31.254 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop started 2022-12-15 09:30:31.255 DEBUG (SyncWorker_0) [pyduke_energy.realtime] Sending CONNECT (u1, p1, wr0, wq0, wf0, c1, k50) client_id=b'mobileSub1-Pxxxxxxxxx-02832c93-7a1d-4848-ad4c-46b87b2948e8' 2022-12-15 09:30:31.255 DEBUG (SyncWorker_0) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:30:31.261 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:30:31.261 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:30:31.556 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:30:31.557 DEBUG (MainThread) [pyduke_energy.realtime] Received CONNACK (0, 0) 2022-12-15 09:30:31.557 DEBUG (MainThread) [pyduke_energy.realtime] MQTT connected with result code: Connection Accepted. 2022-12-15 09:30:31.557 DEBUG (MainThread) [pyduke_energy.realtime] Sending SUBSCRIBE (d0, m31) [(b'DESH/Pxxxxxxxxx/out/sm/1/live', 0)] 2022-12-15 09:30:31.557 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:30:31.559 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:30:31.560 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:30:31.578 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:30:31.579 DEBUG (MainThread) [pyduke_energy.realtime] Received SUBACK 2022-12-15 09:30:31.579 DEBUG (MainThread) [pyduke_energy.realtime] MQTT subscribed msg_id: 31 qos: (0,) 2022-12-15 09:30:50.849 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:30:50.981 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.132 seconds (success: True) 2022-12-15 09:31:20.850 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:31:21.007 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.157 seconds (success: True) 2022-12-15 09:31:21.343 DEBUG (MainThread) [pyduke_energy.realtime] Sending PINGREQ 2022-12-15 09:31:21.343 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:31:21.344 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:31:21.345 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:31:21.363 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:31:21.364 DEBUG (MainThread) [pyduke_energy.realtime] Received PINGRESP 2022-12-15 09:31:31.562 DEBUG (MainThread) [pyduke_energy.realtime] Multiple msg timeout, attempting reconnect 2022-12-15 09:31:31.562 DEBUG (MainThread) [pyduke_energy.realtime] Sending UNSUBSCRIBE (d0, m32) [b'DESH/Pxxxxxxxxx/out/sm/1/live'] 2022-12-15 09:31:31.562 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:31:31.563 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:31:31.564 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:31:31.583 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:31:31.584 DEBUG (MainThread) [pyduke_energy.realtime] Received UNSUBACK (Mid: 32) 2022-12-15 09:31:31.584 DEBUG (MainThread) [pyduke_energy.realtime] MQTT unsubscribed msg_id: 32 2022-12-15 09:31:31.584 DEBUG (MainThread) [pyduke_energy.realtime] Sending DISCONNECT 2022-12-15 09:31:31.584 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:31:31.585 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:31:31.586 DEBUG (MainThread) [pyduke_energy.realtime] MQTT disconnected with result code: No error. 2022-12-15 09:31:31.587 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:31:31.588 DEBUG (MainThread) [pyduke_energy.realtime] Socket closed 2022-12-15 09:31:31.589 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop cancelled 2022-12-15 09:31:31.589 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop finished 2022-12-15 09:31:31.669 DEBUG (SyncWorker_11) [pyduke_energy.realtime] Socket opened 2022-12-15 09:31:31.670 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop started 2022-12-15 09:31:31.670 DEBUG (SyncWorker_11) [pyduke_energy.realtime] Sending CONNECT (u1, p1, wr0, wq0, wf0, c1, k50) client_id=b'mobileSub1-Pxxxxxxxxx-02832c93-7a1d-4848-ad4c-46b87b2948e8' 2022-12-15 09:31:31.670 DEBUG (SyncWorker_11) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:31:31.676 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:31:31.677 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:31:31.964 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:31:31.965 DEBUG (MainThread) [pyduke_energy.realtime] Received CONNACK (0, 0) 2022-12-15 09:31:31.965 DEBUG (MainThread) [pyduke_energy.realtime] MQTT connected with result code: Connection Accepted. 2022-12-15 09:31:31.965 DEBUG (MainThread) [pyduke_energy.realtime] Sending SUBSCRIBE (d0, m33) [(b'DESH/Pxxxxxxxxx/out/sm/1/live', 0)] 2022-12-15 09:31:31.965 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:31:31.967 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:31:31.968 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:31:31.989 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:31:31.990 DEBUG (MainThread) [pyduke_energy.realtime] Received SUBACK 2022-12-15 09:31:31.990 DEBUG (MainThread) [pyduke_energy.realtime] MQTT subscribed msg_id: 33 qos: (0,) 2022-12-15 09:31:50.851 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:31:50.977 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.126 seconds (success: True) 2022-12-15 09:32:20.852 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:32:20.982 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.130 seconds (success: True) 2022-12-15 09:32:21.734 DEBUG (MainThread) [pyduke_energy.realtime] Sending PINGREQ 2022-12-15 09:32:21.734 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:32:21.735 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:32:21.736 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:32:21.753 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:32:21.754 DEBUG (MainThread) [pyduke_energy.realtime] Received PINGRESP 2022-12-15 09:32:31.970 DEBUG (MainThread) [pyduke_energy.realtime] Multiple msg timeout, attempting reconnect 2022-12-15 09:32:31.970 DEBUG (MainThread) [pyduke_energy.realtime] Sending UNSUBSCRIBE (d0, m34) [b'DESH/Pxxxxxxxxx/out/sm/1/live'] 2022-12-15 09:32:31.970 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:32:31.973 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:32:31.974 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:32:31.992 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:32:31.993 DEBUG (MainThread) [pyduke_energy.realtime] Received UNSUBACK (Mid: 34) 2022-12-15 09:32:31.993 DEBUG (MainThread) [pyduke_energy.realtime] MQTT unsubscribed msg_id: 34 2022-12-15 09:32:31.993 DEBUG (MainThread) [pyduke_energy.realtime] Sending DISCONNECT 2022-12-15 09:32:31.993 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:32:31.995 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:32:31.996 DEBUG (MainThread) [pyduke_energy.realtime] MQTT disconnected with result code: No error. 2022-12-15 09:32:31.996 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:32:31.997 DEBUG (MainThread) [pyduke_energy.realtime] Socket closed 2022-12-15 09:32:31.998 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop cancelled 2022-12-15 09:32:31.998 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop finished 2022-12-15 09:32:32.155 DEBUG (SyncWorker_15) [pyduke_energy.realtime] Socket opened 2022-12-15 09:32:32.156 DEBUG (MainThread) [pyduke_energy.realtime] Misc loop started 2022-12-15 09:32:32.157 DEBUG (SyncWorker_15) [pyduke_energy.realtime] Sending CONNECT (u1, p1, wr0, wq0, wf0, c1, k50) client_id=b'mobileSub1-Pxxxxxxxxx-02832c93-7a1d-4848-ad4c-46b87b2948e8' 2022-12-15 09:32:32.157 DEBUG (SyncWorker_15) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:32:32.163 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:32:32.164 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:32:32.505 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:32:32.506 DEBUG (MainThread) [pyduke_energy.realtime] Received CONNACK (0, 0) 2022-12-15 09:32:32.506 DEBUG (MainThread) [pyduke_energy.realtime] MQTT connected with result code: Connection Accepted. 2022-12-15 09:32:32.506 DEBUG (MainThread) [pyduke_energy.realtime] Sending SUBSCRIBE (d0, m35) [(b'DESH/Pxxxxxxxxx/out/sm/1/live', 0)] 2022-12-15 09:32:32.506 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:32:32.508 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:32:32.509 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:32:32.527 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:32:32.528 DEBUG (MainThread) [pyduke_energy.realtime] Received SUBACK 2022-12-15 09:32:32.528 DEBUG (MainThread) [pyduke_energy.realtime] MQTT subscribed msg_id: 35 qos: (0,) 2022-12-15 09:32:50.854 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:32:50.985 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.131 seconds (success: True) 2022-12-15 09:33:20.857 DEBUG (MainThread) [pyduke_energy.client] Requesting usage between 2022-12-15T05:00 UTC and 2022-12-16T05:00 UTC 2022-12-15 09:33:20.997 DEBUG (MainThread) [custom_components.duke_energy_gateway] Finished fetching homeassistant data in 0.140 seconds (success: True) 2022-12-15 09:33:22.223 DEBUG (MainThread) [pyduke_energy.realtime] Sending PINGREQ 2022-12-15 09:33:22.223 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:33:22.225 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:33:22.225 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability. 2022-12-15 09:33:22.243 DEBUG (MainThread) [pyduke_energy.realtime] Socket readable, calling loop_read() 2022-12-15 09:33:22.244 DEBUG (MainThread) [pyduke_energy.realtime] Received PINGRESP 2022-12-15 09:33:32.511 DEBUG (MainThread) [pyduke_energy.realtime] Multiple msg timeout, attempting reconnect 2022-12-15 09:33:32.512 DEBUG (MainThread) [pyduke_energy.realtime] Sending UNSUBSCRIBE (d0, m36) [b'DESH/Pxxxxxxxxx/out/sm/1/live'] 2022-12-15 09:33:32.512 DEBUG (MainThread) [pyduke_energy.realtime] Watching socket for writability. 2022-12-15 09:33:32.514 DEBUG (MainThread) [pyduke_energy.realtime] Socket is writable, calling loop_write 2022-12-15 09:33:32.515 DEBUG (MainThread) [pyduke_energy.realtime] Stop watching socket for writability.

    opened by koliha 1
  • Bump flake8 from 5.0.4 to 6.0.0

    Bump flake8 from 5.0.4 to 6.0.0

    Bumps flake8 from 5.0.4 to 6.0.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
Releases(v0.1.2)
  • v0.1.2(Sep 7, 2022)

    What's Changed

    • update pydukeenergy version to 1.0.2 to fix account-details 400 issue (fixes #128) by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/129

    Dev Dependency Updates

    • Bump reorder-python-imports from 2.6.0 to 3.1.0 by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/91
    • Bump reorder-python-imports from 3.0.1 to 3.1.0 in /.github/workflows by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/90
    • Bump black from 21.7b0 to 22.8.0 by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/127
    • Bump release-drafter/release-drafter from 5.19.0 to 5.20.1 by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/120
    • Bump crazy-max/ghaction-github-labeler from 3.1.1 to 4.0.0 by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/102
    • Bump reorder-python-imports from 3.1.0 to 3.8.2 in /.github/workflows by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/113
    • Bump pre-commit from 2.16.0 to 2.20.0 in /.github/workflows by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/114
    • Bump black from 22.3.0 to 22.8.0 in /.github/workflows by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/121
    • Bump pip from 22.0.4 to 22.2.2 in /.github/workflows by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/122
    • Bump flake8 from 3.9.2 to 5.0.4 by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/126
    • Bump pylint from 2.10.2 to 2.15.2 by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/130
    • Bump actions/setup-python from 3 to 4 by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/109
    • Bump reorder-python-imports from 3.1.0 to 3.8.2 by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/124
    • Bump pre-commit from 2.14.0 to 2.20.0 by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/118
    • Bump flake8 from 4.0.1 to 5.0.4 in /.github/workflows by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/123

    Full Changelog: https://github.com/mjmeli/ha-duke-energy-gateway/compare/v0.1.1...v0.1.2

    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(May 24, 2022)

    What's Changed

    • update pydukeenergy version to 1.0.1 to fix login issue by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/101
    • various dependencies updates (#72, #73, #74, #75, #76, #77)

    Full Changelog: https://github.com/mjmeli/ha-duke-energy-gateway/compare/v0.1.0...v0.1.1

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Dec 28, 2021)

    This is a large feature update to the Duke Energy integration. This is a large refactoring of the integration required to implement a new sensor - realtime power usage!

    Highlights of this release will be:

    • Moved default meter selection logic into abstracted pyduke-energy function select_default_meter
    • Implementation of real-time power usage sensor
      • New sensor sensor.duke_energy_current_usage_w that represents the real-time power usage in watts.
      • This data is pushed from the gateway device every 1-3 seconds. NOTE: This produces a lot of data. If this update interval is too frequent for you, you can configure a throttling interval in seconds via the integration configuration.
      • Note that since this is power usage, it cannot be used as-is for the Home Assistant energy dashboard. Instead, you can use the sensor.duke_energy_usage_today_kwh sensor, or you need to feed this real-time sensor through the Riemann sum integral integration.
    • Add rounding to usage today sensor
    • Additional debug logging for investigating issues

    Full Changelog

    What's Changed

    • use the new select_default_meter client lib method to select meter by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/27
    • Implementation of real-time energy usage sensor by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/28
    • fix migration error by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/29
    • Realtime updates by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/30
    • add rounding to usage today sensor by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/31
    • Rounding by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/33
    • bump pyduke-energy to v0.0.12 by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/42
    • 0.1.0b7 - tick pyduke-energy to fix reconnect blocking, fix NoneType not callable error by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/46
    • integrate to pyduke-energy 1.0.0 by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/53
    • fix issue with multiple update listeners on entry unload/reload by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/54
    • Bump hacs/action from 21.2.2 to 21.12.0 by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/55
    • Bump hacs/action from 21.12.0 to 21.12.1 by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/56
    • Bump actions/checkout from 2.3.5 to 2.4.0 by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/34
    • Bump actions/setup-python from 2.2.2 to 2.3.1 by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/44
    • Bump pre-commit from 2.15.0 to 2.16.0 in /.github/workflows by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/45
    • Bump black from 21.9b0 to 21.12b0 in /.github/workflows by @dependabot in https://github.com/mjmeli/ha-duke-energy-gateway/pull/49
    • 0.1.0 Release by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/57

    Full Changelog: https://github.com/mjmeli/ha-duke-energy-gateway/compare/v0.0.11...v0.1.0

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0b9(Dec 18, 2021)

    What's Changed

    • integrate to pyduke-energy 1.0.0 by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/53
      • this implements a new way to make sure any connection losses to the realtime MQTT stream are retried
      • limits MQTT connection attempts to a max of 60 seconds. if no connection is achieved after 60 seconds, we will completely restart the whole connection attempt
      • in the event of an internet outage, this will attempt reconnect on an exponential backoff schema from 1 minute to a max of every 60 minutes (tl;dr- you should see the stream restore within 60 minutes max)

    Full Changelog: https://github.com/mjmeli/ha-duke-energy-gateway/compare/v0.1.0b8...v0.1.0b9

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0b8(Dec 16, 2021)

    What's Changed

    • Tick pyduke-energy version to 0.0.15 to fix an issue where the usage measurement was extremely high (fixes #50)

    Full Changelog: https://github.com/mjmeli/ha-duke-energy-gateway/compare/v0.1.0b7...v0.1.0b8

    Source code(tar.gz)
    Source code(zip)
  • v0.0.11(Dec 16, 2021)

    What's Changed

    • Tick pyduke-energy version to 0.0.15 to fix an issue where the usage measurement was extremely high (fixes #50)

    Full Changelog: https://github.com/mjmeli/ha-duke-energy-gateway/compare/0.0.10...v0.0.11

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0b7(Dec 3, 2021)

    What's Changed

    • 0.1.0b7 - tick pyduke-energy to fix reconnect blocking, fix NoneType not callable error by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/46

    Full Changelog: https://github.com/mjmeli/ha-duke-energy-gateway/compare/0.0.9...v0.1.0b7

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0b6(Nov 18, 2021)

    What's Changed

    • bump pyduke-energy to v0.0.12 by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/42

    Full Changelog: https://github.com/mjmeli/ha-duke-energy-gateway/compare/v0.1.0b5...v0.1.0b6

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0b5(Nov 1, 2021)

    What's Changed

    • README updates and update to pyduke-energy version for more logging

    Full Changelog: https://github.com/mjmeli/ha-duke-energy-gateway/compare/v0.1.0b4...v0.1.0b5

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0b4(Oct 30, 2021)

    What's Changed

    • add rounding to usage today sensor by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/31

    Full Changelog: https://github.com/mjmeli/ha-duke-energy-gateway/compare/v0.1.0b3...v0.1.0b4

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0b3(Oct 30, 2021)

    What's Changed

    • Realtime updates by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/30

    Full Changelog: https://github.com/mjmeli/ha-duke-energy-gateway/compare/v0.1.0b2...v0.1.0b3

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0b2(Oct 30, 2021)

    What's Changed

    • fix migration error by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/29

    Full Changelog: https://github.com/mjmeli/ha-duke-energy-gateway/compare/v0.1.0b1...v0.1.0b2

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0b1(Oct 29, 2021)

    What's Changed

    • Implementation of real-time energy usage sensor by @mjmeli in https://github.com/mjmeli/ha-duke-energy-gateway/pull/28

    Full Changelog: https://github.com/mjmeli/ha-duke-energy-gateway/compare/v0.1.0b0...v0.1.0b1

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0b0(Oct 25, 2021)

    Changes

    • Bumped pyduke-energy version to v0.0.8
    • Moved default meter selection logic into abstracted pyduke-energy function select_default_meter (#26)
    Source code(tar.gz)
    Source code(zip)
  • 0.0.10(Sep 21, 2021)

  • 0.0.9(Sep 8, 2021)

  • 0.0.8(Sep 1, 2021)

    Added

    • More logging when the usage API call fails

    Fixed

    • Changed the sensor state class from measurement to total_increasing as per changes in HA 2021.9 (see #11)
    Source code(tar.gz)
    Source code(zip)
  • 0.0.7(Aug 23, 2021)

    Added

    • Added some more logging into the smart meter auto-identification flow

    Fixed

    • Fixed issue with detecting smart meter when accounts have a bpNumber (fixes #10)
    Source code(tar.gz)
    Source code(zip)
  • 0.0.6(Aug 23, 2021)

  • 0.0.5(Aug 23, 2021)

  • 0.0.4(Aug 22, 2021)

  • 0.0.3(Aug 22, 2021)

  • 0.0.2(Aug 22, 2021)

  • 0.0.1(Aug 22, 2021)

    This is the initial release of the Duke Energy Gateway Home Assistant custom integration.

    • Pulls today's current energy usage into entity sensor.duke_energy_usage_today_kwh
    Source code(tar.gz)
    Source code(zip)
Owner
Michael Meli
ECE, CSC, etc.
Michael Meli
Sleep As Android integration for Home Assistant

Sleep As Android custom integration This integration will allow you to get events from your SleepAsAndroid application in a form of the sensor states

Igor 84 Dec 30, 2022
MPY tool - manage files on devices running MicroPython

mpytool MPY tool - manage files on devices running MicroPython It is an alternative to ampy Target of this project is to make more clean code, faster,

Pavel Revak 5 Aug 17, 2022
Home Assistant component to handle key atom

KeyAtome Home Assistant component to handle key atom, a Linky-compatible device made by Total/Direct-Energie. Installation Either use HACS (default),

18 Dec 21, 2022
Lenovo Legion 5 Pro 2021 Linux RGB Keyboard Light Controller

Lenovo Legion 5 Pro 2021 Linux RGB Keyboard Light Controller This util allows to drive RGB keyboard light on Lenovo Legion 5 Pro 2021 Laptop Requireme

36 Dec 16, 2022
Claussoft Personal Digital Assistant

Claussoft Personal Digital Assistant Install on Linux $ sudo apt update $ sudo apt install espeak ffmpeg libespeak1 portaudio19-dev $ pip install -r r

Christian Clauss 3 Dec 14, 2022
This is a collection of python modules that interact with the Ryze Tello drone.

This is a collection of python modules that interact with the Ryze Tello drone.

DJI-SDK 1.2k Jan 03, 2023
Modi2-firmware-updater - MODI+ Firmware Updater With Python

MODI+ Firmware Updater 실행 준비 python3(파이썬3.9 혹은 그 이상의 버전)를 컴퓨터에 설치 python3 -m pip

LUXROBO 1 Feb 04, 2022
Minimal and clean dashboard to visualize some stats of Pi-Hole with an E-Ink display attached to your Raspberry Pi

Clean Dashboard for Pi-Hole Minimal and clean dashboard to visualize some stats of Pi-Hole with an E-Ink display attached to your Raspberry Pi.

Alessio Santoru 104 Dec 14, 2022
This is an incredible led matrix simulation using the ultimate mosaik co-simulation framework.

This project uses the mosaik co-simulation framework, developed by the brilliant developers at the high-ranked Offis institue for computer science, Oldenburg, Germany, to simulate multidimensional LE

Felix 1 Jan 28, 2022
A script that publishes power usage data of iDrac enabled servers to an MQTT broker for integration into automation and power monitoring systems

iDracPowerMonitorMQTT This script publishes iDrac power draw data for iDrac 6 enabled servers to an MQTT broker. This can be used to integrate the pow

Lucas Zanchetta 10 Oct 06, 2022
3d printable macropad

Pico Mpad A 3D printable macropad for automating frequently repeated actions. Hardware To build this project you need access to a 3d printer. The mode

Dmytro Panin 94 Jan 07, 2023
The ABR Control library is a python package for the control and path planning of robotic arms in real or simulated environments.

The ABR Control library is a python package for the control and path planning of robotic arms in real or simulated environments. ABR Control provides API's for the Mujoco, CoppeliaSim (formerly known

Applied Brain Research 277 Jan 05, 2023
rPico KMK powered macropad with IPS screen

MacroPact rPico KMK powered macropad with IPS screen Idea/Desing: Sean Yin Build/Coding: kbjunky ( In case of any problems hit me up on Discord kbjunk

81 Dec 21, 2022
Pylorawan is a Micropython wrapper for lorawan devices from RAK Wireless.

pylorawan Pylorawan is a Micropython wrapper for lorawan devices from RAK Wireless. Tested on a Raspberry PI Pico with a RAK4200(H) Evaluation Board (

Peter Houghton 3 Nov 04, 2022
Custom component for MPC-HC for home-assistant

mpc_hc The current mpchc integration in homeassistant violates ADR0004, so it will be deleted from core. This is just the existing integration copied

3 Dec 15, 2022
Point Density-Aware Voxels for LiDAR 3D Object Detection (CVPR 2022)

PDV PDV is LiDAR 3D object detection method. This repository is based off [OpenPCDet]. Point Density-Aware Voxels for LiDAR 3D Object Detection Jordan

Toronto Robotics and AI Laboratory 114 Dec 21, 2022
A simple Picobot project implemented in Python

Python-Picobot A simple Picobot project implemented in Python About Explanation This is my first programming project. Picobot use rules.txt file which

Shayan Shiravani 0 Apr 03, 2022
A Raspberry Pi Pico plant sensor hub coded in Micropython

plantsensor A Raspberry Pi Pico plant sensor hub coded in Micropython I used: 1x Raspberry Pi Pico - microcontroller 1x Waveshare Pico OLED 1.3 - scre

78 Sep 20, 2022
Play a song with a 3D printer.

MIDI to GCODE Play a song with a FDM 3D printer. SLA printers don't have motors, so they cannot play music. Warning: Be ready to turn off the 3D print

Patrick 6 Apr 11, 2022
Blender Camera Switcher

Blender Camera Switcher A simple camera switcher addon for blender. Useful when use reference image for camera. This addon will automatically fix the

Corgice 1 Jan 31, 2022