Giter Site home page Giter Site logo

iec-custom-component's Introduction

Israel Electric Corporation (IEC) Custom Component

GitHub Release GitHub Activity License

Project Maintenance BuyMeCoffee

Integration to integrate with IEC API.

This integration will set up the following platforms.

Example Image

Platform Description
sensor Show info from IEC invoice and meters.

Installation

Automatic (HACS):

  1. Add this path to HACS: https://github.com/GuyKh/iec-custom-component
  2. Install through HACS

Manual:

  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 iec.
  4. Download all the files from the custom_components/iec/ 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 "IEC"

Configuration is done in the UI

Logs

To view logs in debug add this to configuration.yaml:

logger:
  default: info
  logs:
    ...
    custom_components.iec: debug
    iec_api: debug

Frequently Asked Questions

How often is the data fetched?

The component currently fetches data from IEC every hour, but IEC doesn't update the data very often and they don't really have a consistant behavior, it could arrive with 2 days delay.

Can this component be used even if I'm using a private electric company?

Yes.
However, the only difference is that in the Invoices you'll see balance = 0 since you're paying to the private company

Should I enter my configuration credentials every time?

No.
You should do it only once when configuring the component.

I have a "dumb" meter, would this component still work for me.

Yes, But....
You would only get a subset of sensors, based on your Invoice information.

Examples of usage.

You can head to usage and examples page to see examples of this components used in cards in HomeAssistant

Using Postman Collection for calling the IEC API

If you want to use Postman to get the API calls - please read the Postman Collections Guide

Contributions are welcome!

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


iec-custom-component's People

Contributors

dependabot[bot] avatar guykh avatar idoaflalo avatar imgbot[bot] avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

iec-custom-component's Issues

fail to fetch data

System Health details

System Information

version core-2024.3.3
installation_type Home Assistant Supervised
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.12.2
os_name Linux
os_version 5.15.76-v8+
arch aarch64
timezone Asia/Jerusalem
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4918
Installed Version 1.34.0
Stage running
Available Repositories 1403
Downloaded Repositories 6
Home Assistant Cloud
logged_in true
subscription_expiration June 11, 2024 at 3:00 AM
relayer_connected true
relayer_region eu-central-1
remote_enabled true
remote_connected true
alexa_enabled true
google_enabled true
remote_server eu-central-1-14.ui.nabu.casa
certificate_status ready
instance_id e46d5f58e66f4a40af3208fdacae7b38
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Debian GNU/Linux 11 (bullseye)
update_channel stable
supervisor_version supervisor-2024.03.0
agent_version 1.4.1
docker_version 20.10.21
disk_total 457.1 GB
disk_used 63.3 GB
healthy true
supported true
supervisor_api ok
version_api ok
installed_addons Studio Code Server (5.15.0), Cloudflared (4.2.6), AdGuard Home (5.0.5), Tailscale (0.16.1), Terminal & SSH (9.10.0), Mosquitto broker (6.4.0), Ring-MQTT with Video Streaming (5.6.3), Syncthing (1.19.0), AirCast (4.2.1), openWakeWord (1.10.0)
Dashboards
dashboards 1
resources 0
views 1
mode storage
Recorder
oldest_recorder_run March 23, 2024 at 5:14 PM
current_recorder_run March 27, 2024 at 11:16 PM
estimated_db_size 621.24 MiB
database_engine sqlite
database_version 3.44.2
Sonoff
version 3.6.0 (8dd8af9)
cloud_online 2 / 2
local_online 2 / 2
Xiaomi Miot Auto
component_version 0.7.17
can_reach_server ok
can_reach_spec ok
logged_accounts 1
total_devices 0

Checklist

  • I have enabled debug logging for my installation.
  • I have filled out the issue template to the best of my ability.
  • This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
  • This issue is not a duplicate issue of any previous issues..

Describe the issue

Getting "Failed setup, will retry" message.

Reproduction steps

...

Debug logs

See the following in the log:
2024-03-27 23:22:48.773 ERROR (MainThread) [custom_components.iec.coordinator] Unexpected error fetching Iec data: (Code 400): Bad Request
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 318, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/iec/coordinator.py", line 150, in _async_update_data
    await self.api.load_jwt_token(JWT.from_dict(self._entry_data[CONF_API_TOKEN]))
  File "/usr/local/lib/python3.12/site-packages/iec_api/iec_client.py", line 380, in load_jwt_token
    if await self.check_token():
       ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/iec_api/iec_client.py", line 413, in check_token
    await self.refresh_token()
  File "/usr/local/lib/python3.12/site-packages/iec_api/iec_client.py", line 421, in refresh_token
    self._token = await login.refresh_token(self._session, self._token)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/iec_api/login.py", line 205, in refresh_token
    response = await commons.send_post_request(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/iec_api/commons.py", line 181, in send_post_request
    parse_error_response(resp, json_resp)
  File "/usr/local/lib/python3.12/site-packages/iec_api/commons.py", line 89, in parse_error_response
    raise IECError(resp.status, resp.reason)
iec_api.models.exceptions.IECError: (Code 400): Bad Request

Diagnostics dump

No response

Error doing job: Task exception was never retrieved

System Health details

Error doing job: Task exception was never retrieved

Checklist

  • I have enabled debug logging for my installation.
  • I have filled out the issue template to the best of my ability.
  • This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
  • This issue is not a duplicate issue of any previous issues..

Describe the issue

Logger: homeassistant
Source: custom_components/iec/coordinator.py:413
integration: Israel Electric Corporation (IEC) (documentation, issues)
First occurred: April 25, 2024 at 19:08:33 (7 occurrences)
Last logged: 01:09:53

Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/config/custom_components/iec/coordinator.py", line 413, in _insert_statistics
if key <= TIMEZONE.localize(last_stat_req_hour):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/pytz/tzinfo.py", line 321, in localize
raise ValueError('Not naive datetime (tzinfo is already set)')
ValueError: Not naive datetime (tzinfo is already set)

Reproduction steps

Just wait till refresh

Debug logs

2024-04-25 22:37:19.812 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/config/custom_components/iec/coordinator.py", line 413, in _insert_statistics
if key <= TIMEZONE.localize(last_stat_req_hour):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/pytz/tzinfo.py", line 321, in localize
raise ValueError('Not naive datetime (tzinfo is already set)')
ValueError: Not naive datetime (tzinfo is already set)
2024-04-25 22:37:20.802 DEBUG (MainThread) [iec_api.commons] HTTP POST Response: {'status': 0, 'futureConsumptionInfo': {'lastInvoiceDate': None, 'currentDate': '2024-04-25', 'futureConsumption': 6.346, 'totalImport': 6839.079, 'totalImportDate': '2024-04-25'}, 'fromDate': '2024-04-25', 'toDate': '2024-04-25', 'totalConsumptionForPeriod': 6.346, 'totalImportDateForPeriod': '2024-04-25', 'meterStartDate': '2023-10-24', 'totalImport': 6839.079, 'data': [{'status': 0, 'date': '2024-04-25T00:00:00.000000', 'value': 0.423}, {'status': 0, 'date': '2024-04-25T00:15:00.000000', 'value': 0.487}, {'status': 0, 'date': '2024-04-25T00:30:00.000000', 'value': 0.44}, {'status': 0, 'date': '2024-04-25T00:45:00.000000', 'value': 0.238}, {'status': 0, 'date': '2024-04-25T01:00:00.000000', 'value': 0.322}, {'status': 0, 'date': '2024-04-25T01:15:00.000000', 'value': 0.345}, {'status': 0, 'date': '2024-04-25T01:30:00.000000', 'value': 0.329}, {'status': 0, 'date': '2024-04-25T01:45:00.000000', 'value': 0.318}, {'status': 0, 'date': '2024-04-25T02:00:00.000000', 'value': 0.284}, {'status': 0, 'date': '2024-04-25T02:15:00.000000', 'value': 0.267}, {'status': 0, 'date': '2024-04-25T02:30:00.000000', 'value': 0.265}, {'status': 0, 'date': '2024-04-25T02:45:00.000000', 'value': 0.288}, {'status': 0, 'date': '2024-04-25T03:00:00.000000', 'value': 0.272}, {'status': 0, 'date': '2024-04-25T03:15:00.000000', 'value': 0.262}, {'status': 0, 'date': '2024-04-25T03:30:00.000000', 'value': 0.303}, {'status': 0, 'date': '2024-04-25T03:45:00.000000', 'value': 0.242}, {'status': 0, 'date': '2024-04-25T04:00:00.000000', 'value': 0.241}, {'status': 0, 'date': '2024-04-25T04:15:00.000000', 'value': 0.278}, {'status': 0, 'date': '2024-04-25T04:30:00.000000', 'value': 0.234}, {'status': 0, 'date': '2024-04-25T04:45:00.000000', 'value': 0.251}, {'status': 0, 'date': '2024-04-25T05:00:00.000000', 'value': 0.257}]}

Formatted JSON

{
  "status": 0,
  "futureConsumptionInfo": {
    "lastInvoiceDate": None,
    "currentDate": "2024-04-25",
    "futureConsumption": 6.346,
    "totalImport": 6839.079,
    "totalImportDate": "2024-04-25"
  },
  "fromDate": "2024-04-25",
  "toDate": "2024-04-25",
  "totalConsumptionForPeriod": 6.346,
  "totalImportDateForPeriod": "2024-04-25",
  "meterStartDate": "2023-10-24",
  "totalImport": 6839.079,
  "data": [{
    "status": 0,
    "date": "2024-04-25T00:00:00.000000",
    "value": 0.423
  }, {
    "status": 0,
    "date": "2024-04-25T00:15:00.000000",
    "value": 0.487
  }, {
    "status": 0,
    "date": "2024-04-25T00:30:00.000000",
    "value": 0.44
  }, {
    "status": 0,
    "date": "2024-04-25T00:45:00.000000",
    "value": 0.238
  }, {
    "status": 0,
    "date": "2024-04-25T01:00:00.000000",
    "value": 0.322
  }, {
    "status": 0,
    "date": "2024-04-25T01:15:00.000000",
    "value": 0.345
  }, {
    "status": 0,
    "date": "2024-04-25T01:30:00.000000",
    "value": 0.329
  }, {
    "status": 0,
    "date": "2024-04-25T01:45:00.000000",
    "value": 0.318
  }, {
    "status": 0,
    "date": "2024-04-25T02:00:00.000000",
    "value": 0.284
  }, {
    "status": 0,
    "date": "2024-04-25T02:15:00.000000",
    "value": 0.267
  }, {
    "status": 0,
    "date": "2024-04-25T02:30:00.000000",
    "value": 0.265
  }, {
    "status": 0,
    "date": "2024-04-25T02:45:00.000000",
    "value": 0.288
  }, {
    "status": 0,
    "date": "2024-04-25T03:00:00.000000",
    "value": 0.272
  }, {
    "status": 0,
    "date": "2024-04-25T03:15:00.000000",
    "value": 0.262
  }, {
    "status": 0,
    "date": "2024-04-25T03:30:00.000000",
    "value": 0.303
  }, {
    "status": 0,
    "date": "2024-04-25T03:45:00.000000",
    "value": 0.242
  }, {
    "status": 0,
    "date": "2024-04-25T04:00:00.000000",
    "value": 0.241
  }, {
    "status": 0,
    "date": "2024-04-25T04:15:00.000000",
    "value": 0.278
  }, {
    "status": 0,
    "date": "2024-04-25T04:30:00.000000",
    "value": 0.234
  }, {
    "status": 0,
    "date": "2024-04-25T04:45:00.000000",
    "value": 0.251
  }, {
    "status": 0,
    "date": "2024-04-25T05:00:00.000000",
    "value": 0.257
  }]
}

Diagnostics dump

No response

support solar production

Checklist

  • I have filled out the template to the best of my ability.
  • This only contains 1 feature request (if you have multiple feature requests, open one feature request for each feature request).
  • This issue is not a duplicate feature request of previous feature requests.

Is your feature request related to a problem? Please describe.

I have a solar system connected to the smart meter

Describe the solution you'd like

it would be nice if we can show usage and production for the similar time frames. thank you :)

Describe alternatives you've considered

na

Additional context

na

unsupported operand type(s) for *: 'float' and 'decimal.Decimal'

System Health details

N/A

Checklist

  • I have enabled debug logging for my installation.
  • I have filled out the issue template to the best of my ability.
  • This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
  • This issue is not a duplicate issue of any previous issues..

Describe the issue

TypeError: unsupported operand type(s) for *: 'float' and 'decimal.Decimal'

Reproduction steps

Start HA

Debug logs

-05-01 11:24:18.698 ERROR (MainThread) [homeassistant.components.sensor] Error adding entity sensor.next_bill_electric_forecasted_cost for domain sensor with platform iec
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 580, in _async_add_entities
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 890, in _async_add_entity
    await entity.add_to_platform_finish()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1334, in add_to_platform_finish
    self.async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 998, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1119, in _async_write_ha_state
    state, attr, capabilities, shadowed_attr = self.__async_calculate_state()
                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1056, in __async_calculate_state
    state = self._stringify_state(available)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1004, in _stringify_state
    if (state := self.state) is None:
                 ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 548, in state
    value = self.native_value
            ^^^^^^^^^^^^^^^^^
  File "/config/custom_components/iec/sensor.py", line 297, in native_value
    return self.entity_description.value_fn(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/iec/sensor.py", line 89, in <lambda>
    data[FUTURE_CONSUMPTIONS_DICT_NAME][data[ATTRIBUTES_DICT_NAME][METER_ID_ATTR_NAME]].future_consumption] or 0)
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: unsupported operand type(s) for *: 'float' and 'decimal.Decimal'

Diagnostics dump

No response

Missing Icon on integrations page

System Health details

System Information

version core-2024.3.0
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.12.2
os_name Linux
os_version 6.6.16-haos
arch x86_64
timezone Asia/Jerusalem
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4882
Installed Version 1.34.0
Stage running
Available Repositories 1403
Downloaded Repositories 17
Home Assistant Cloud
logged_in true
subscription_expiration April 22, 2024 at 03:00
relayer_connected true
relayer_region eu-central-1
remote_enabled true
remote_connected true
alexa_enabled false
google_enabled false
remote_server ui.nabu.casa
certificate_status ready
instance_id *******************
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 12.0
update_channel stable
supervisor_version supervisor-2024.02.1
agent_version 1.6.0
docker_version 24.0.7
disk_total 62.3 GB
disk_used 49.0 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons Terminal & SSH (9.10.0), File editor (5.8.0), Studio Code Server (5.15.0), ESPHome (2024.2.2), Samba share (12.3.1), Home Assistant Google Drive Backup (0.112.1), HyperHDR (19.0.0.0), Mosquitto broker (6.4.0), MariaDB (2.6.1), MQTT Explorer (browser-1.0.1), Zigbee2MQTT (1.36.0-1), AC MQTT proxy for home assistant (0.6.2)
Dashboards
dashboards 4
resources 7
views 7
mode storage
Recorder
oldest_recorder_run September 13, 2023 at 06:38
current_recorder_run March 12, 2024 at 16:03
estimated_db_size 9636.97 MiB
database_engine mysql
database_version 10.6.12

Checklist

  • I have enabled debug logging for my installation.
  • I have filled out the issue template to the best of my ability.
  • This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
  • This issue is not a duplicate issue of any previous issues..

Describe the issue

Nothing major, just the icon missing on the integrations page
image

tested on 2 local PCs and 2 phones

Reproduction steps

  1. install
  2. view integrations page

Debug logs

none needed really.

Diagnostics dump

No response

Using EFS messages - send a HomeAssistant notification based on new events

Checklist

  • I have filled out the template to the best of my ability.
  • This only contains 1 feature request (if you have multiple feature requests, open one feature request for each feature request).
  • This issue is not a duplicate feature request of previous feature requests.

Is your feature request related to a problem? Please describe.

No, just enhancement

Describe the solution you'd like

Via API https://iecapi.iec.co.il//api/customer/efs - you can fetch "User Messages", e.g. - "Planned Outage":

        {
            "serviceDescription": "ื”ื•ื“ืขื” ืขืœ ื”ืคืกืงื” ืžืชื•ื›ื ื ืช",
            "partner": "01123456",
            "contractNumber": "00032323232",
            "service": "EFS004",
            "subscribeDate": "2023-06-30T00:00:00",
            "subscribeTime": "0001-01-01T13:00:01",
            "isActive": true,
            "bpSubscription": false,
            "isSms": false,
            "communicationMethod": 1,
            "email": "",
            "sms": "055555555",
            "fax": "0000000000",
            "unsubscribeDate": "0001-01-01T00:00:00",
            "registrationStatus": 0
        },

Periodically fetch these messages and if there's a new one (or an upcoming date) - pop it as a notification to HomeAssistant

E.g.

self.hass.components.persistent_notification.create(
                        title="URGENT!", message="**Check the HACS panel!**"
                    )

Describe alternatives you've considered

None

Additional context

in iec-api I've already implemented this API

Add support for 'Last Payment Date'

Checklist

  • I have filled out the template to the best of my ability.
  • This only contains 1 feature request (if you have multiple feature requests, open one feature request for each feature request).
  • This issue is not a duplicate feature request of previous feature requests.

Is your feature request related to a problem? Please describe.

Not a problem

Describe the solution you'd like

Adding support for showing 'Last Payment Date' would be great

image

Describe alternatives you've considered

Not a problem

Additional context

Not a problem

Expose device instead of a list of entities

Checklist

  • I have filled out the template to the best of my ability.
  • This only contains 1 feature request (if you have multiple feature requests, open one feature request for each feature request).
  • This issue is not a duplicate feature request of previous feature requests.

Is your feature request related to a problem? Please describe.

When adding the entities to a dashboard, we have to add them one by one.

Describe the solution you'd like

Exposing as a device will allow to add them all with a single click:
image
as well as see all scripts/scenes/automations they take part in.

Describe alternatives you've considered

adding them one by one :(

Additional context

.

Very long Entity names with Device Name prefixes

System Health details

N/A

Checklist

  • I have enabled debug logging for my installation.
  • I have filled out the issue template to the best of my ability.
  • This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
  • This issue is not a duplicate issue of any previous issues..

Describe the issue

As described here - when an entity "belongs" to a Device - it'll affect the entity name (friendly_name = f"{device.name} {entity.name}")
https://developers.home-assistant.io/docs/core/entity/#has_entity_name-true-mandatory-for-new-integrations

So now, you'll see things like: IEC Contract 12345 - Meter 23456 Last IEC bill date instead of Last IEC bill date

Reproduction steps

Add Devices.

Debug logs

N/A

Diagnostics dump

No response

Missing hourly values; resolution is daily

System Health details

System Information

version core-2024.4.4
installation_type Home Assistant Container
dev false
hassio false
docker true
user root
virtualenv false
python_version 3.12.2
os_name Linux
os_version 6.1.0-20-amd64
arch x86_64
timezone Asia/Jerusalem
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4995
Installed Version 1.34.0
Stage running
Available Repositories 1416
Downloaded Repositories 25
AccuWeather
can_reach_server ok
remaining_requests 14
Dashboards
dashboards 2
resources 14
views 14
mode storage
Recorder
oldest_recorder_run April 27, 2024 at 9:26 PM
current_recorder_run April 28, 2024 at 3:59 PM
estimated_db_size 641.55 MiB
database_engine mysql
database_version 10.11.7

Checklist

  • I have enabled debug logging for my installation.
  • I have filled out the issue template to the best of my ability.
  • This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
  • This issue is not a duplicate issue of any previous issues..

Describe the issue

Based on #68 , I was expecting to get hourly data, but seems like I'm only getting daily logs.

Screenshot 2024-04-29 at 22 00 09

I have a smart meter, and from the IEC site, I can request the CSV by mail with the 15 minute resolution (though I understand that this is not so reliable from the API, from #68).

Reproduction steps

  1. Add the integration
  2. Wait
  3. Graph the meter readings

Debug logs

(just custom_components.iec and iec_api): https://termbin.com/lrc7

Diagnostics dump

No response

Fetching data on the first of the month fails with an exception

System Health details

sorry, can't be bothered now :-)

Checklist

  • I have enabled debug logging for my installation.
  • I have filled out the issue template to the best of my ability.
  • This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
  • This issue is not a duplicate issue of any previous issues..

Describe the issue

Running the integration this morning gave this error:

2024-05-01 09:46:39.156 ERROR (MainThread) [custom_components.iec.coordinator] Unexpected error fetching Iec data: unhashable type: 'RemoteReading'
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 315, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/iec/coordinator.py", line 252, in _async_update_data
    list(dict.fromkeys(daily_readings[device.device_number])))
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: unhashable type: 'RemoteReading'

I worked around it by monkeypatching the RemoteReading class directly in the coordinator.py file, right before this line:

RemoteReading.__hash__ = lambda self: hash((self.status, self.date, self.value))

But the proper fix is to add a __hash__ function to https://github.com/GuyKh/py-iec-api/blob/main/iec_api/models/remote_reading.py#L72 . I think my implementation (hash((self.status, self.date, self.value))) should be sufficient.

Reproduction steps

  1. Wait until the first day of the month
  2. Expect data to be fetched
    ...

Debug logs

See above

Diagnostics dump

No response

TypeError: 'RemoteReadingResponse' object is not subscriptable

System Health details

Version core-2024.3.3
Installation Type Home Assistant Supervised
Development false
Supervisor true
Docker true
User root
Virtual Environment false
Python Version 3.12.2
Operating System Family Linux
Operating System Version 6.1.21-v8+
CPU Architecture aarch64
Timezone Asia/Jerusalem
Configuration Directory /config

Checklist

  • I have enabled debug logging for my installation.
  • I have filled out the issue template to the best of my ability.
  • This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
  • This issue is not a duplicate issue of any previous issues..

Describe the issue

2024-04-01 10:54:03.008 ERROR (MainThread) [custom_components.iec.coordinator] Unexpected error fetching Iec data: 'RemoteReadingResponse' object is not subscriptable
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 318, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/iec/coordinator.py", line 240, in _async_update_data
if remote_reading[device.device_number]:
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'RemoteReadingResponse' object is not subscriptable

Reproduction steps

  1. I've noticed that since midnight the intergration fails to load
  2. I've changed my power supplier at midnight today

...

Debug logs

2024-04-01 10:54:03.008 ERROR (MainThread) [custom_components.iec.coordinator] Unexpected error fetching Iec data: 'RemoteReadingResponse' object is not subscriptable
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 318, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/iec/coordinator.py", line 240, in _async_update_data
    if remote_reading[device.device_number]:
       ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'RemoteReadingResponse' object is not subscriptable

Diagnostics dump

No response

Get Usage per Day / Week / Quarter of Hours

Checklist

  • I have filled out the template to the best of my ability.
  • This only contains 1 feature request (if you have multiple feature requests, open one feature request for each feature request).
  • This issue is not a duplicate feature request of previous feature requests.

Is your feature request related to a problem? Please describe.

N/A

Describe the solution you'd like

Based on the resolution (1/2/3) in the API we could get the usage - and this could be handled over to a nice graph to show usage + price per day (week or hours or month)

Describe alternatives you've considered

From the https://iecapi.iec.co.il/api/Consumption/RemoteReadingRange/
"fromDate": "2024-01-01",
"resolution": 3 / 2 / 1

Additional context

N/A

Negative consumption (Allegedly as returned)

System Health details

System Information

version core-2024.3.0
installation_type Home Assistant Container
dev false
hassio false
docker true
user root
virtualenv false
python_version 3.12.2
os_name Linux
os_version 6.5.11-7-pve
arch x86_64
timezone Asia/Jerusalem
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 5000
Installed Version 1.34.0
Stage running
Available Repositories 1402
Downloaded Repositories 15
AccuWeather
can_reach_server ok
remaining_requests 37
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Dashboards
dashboards 4
resources 8
views 17
mode storage
Recorder
oldest_recorder_run March 7, 2024 at 09:47
current_recorder_run March 13, 2024 at 23:38
estimated_db_size 253.78 MiB
database_engine sqlite
database_version 3.44.2

Checklist

  • I have enabled debug logging for my installation.
  • I have filled out the issue template to the best of my ability.
  • This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
  • This issue is not a duplicate issue of any previous issues..

Describe the issue

Once a day, I see negative value
image

Not sure what it means, but during the negative value, I see one time status = 1024

{
'status': 1024,
'date': '2024-03-13T06:45:00.000000',
'value': 0.945
}

Reproduction steps

view in energy tab

Debug logs

Latest reading

2024-03-15 22:54:12.072 | DEBUG    | iec_api.commons:send_post_request:176 - HTTP POST Response: {'status': 0, 'futureConsumptionInfo': {'lastInvoiceDate': None, 'currentDate': '2024-03-14', 'futureConsumption': 77.867, 'totalImport': 10137.364, 'totalImportDate': '2024-03-14'}, 'fromDate': '2024-03-13', 'toDate': '2024-03-13', 'totalConsumptionForPeriod': 41.921, 'totalImportDateForPeriod': '2024-03-13', 'meterStartDate': '2023-09-21', 'totalImport': 10095.443, 'data': [{'status': 0, 'date': '2024-03-13T00:00:00.000000', 'value': 0.359}, {'status': 0, 'date': '2024-03-13T00:15:00.000000', 'value': 0.354}, {'status': 0, 'date': '2024-03-13T00:30:00.000000', 'value': 0.463}, {'status': 0, 'date': '2024-03-13T00:45:00.000000', 'value': 0.334}, {'status': 0, 'date': '2024-03-13T01:00:00.000000', 'value': 0.364}, {'status': 0, 'date': '2024-03-13T01:15:00.000000', 'value': 0.433}, {'status': 0, 'date': '2024-03-13T01:30:00.000000', 'value': 0.331}, {'status': 0, 'date': '2024-03-13T01:45:00.000000', 'value': 0.388}, {'status': 0, 'date': '2024-03-13T02:00:00.000000', 'value': 0.407}, {'status': 0, 'date': '2024-03-13T02:15:00.000000', 'value': 0.352}, {'status': 0, 'date': '2024-03-13T02:30:00.000000', 'value': 0.397}, {'status': 0, 'date': '2024-03-13T02:45:00.000000', 'value': 0.391}, {'status': 0, 'date': '2024-03-13T03:00:00.000000', 'value': 0.369}, {'status': 0, 'date': '2024-03-13T03:15:00.000000', 'value': 0.427}, {'status': 0, 'date': '2024-03-13T03:30:00.000000', 'value': 0.359}, {'status': 0, 'date': '2024-03-13T03:45:00.000000', 'value': 0.353}, {'status': 0, 'date': '2024-03-13T04:00:00.000000', 'value': 0.948}, {'status': 0, 'date': '2024-03-13T04:15:00.000000', 'value': 0.987}, {'status': 0, 'date': '2024-03-13T04:30:00.000000', 'value': 0.848}, {'status': 0, 'date': '2024-03-13T04:45:00.000000', 'value': 1.008}, {'status': 0, 'date': '2024-03-13T05:00:00.000000', 'value': 0.836}, {'status': 0, 'date': '2024-03-13T05:15:00.000000', 'value': 0.877}, {'status': 0, 'date': '2024-03-13T05:30:00.000000', 'value': 0.971}, {'status': 0, 'date': '2024-03-13T05:45:00.000000', 'value': 0.412}, {'status': 0, 'date': '2024-03-13T06:00:00.000000', 'value': 0.463}, {'status': 0, 'date': '2024-03-13T06:15:00.000000', 'value': 0.357}, {'status': 0, 'date': '2024-03-13T06:30:00.000000', 'value': 0.969}, {'status': 1024, 'date': '2024-03-13T06:45:00.000000', 'value': 0.945}, {'status': 0, 'date': '2024-03-13T07:00:00.000000', 'value': 0.833}, {'status': 0, 'date': '2024-03-13T07:15:00.000000', 'value': 0.909}, {'status': 0, 'date': '2024-03-13T07:30:00.000000', 'value': 0.844}, {'status': 0, 'date': '2024-03-13T07:45:00.000000', 'value': 0.732}, {'status': 0, 'date': '2024-03-13T08:00:00.000000', 'value': 0.355}, {'status': 0, 'date': '2024-03-13T08:15:00.000000', 'value': 0.319}, {'status': 0, 'date': '2024-03-13T08:30:00.000000', 'value': 0.343}, {'status': 0, 'date': '2024-03-13T08:45:00.000000', 'value': 0.308}, {'status': 0, 'date': '2024-03-13T09:00:00.000000', 'value': 0.326}, {'status': 0, 'date': '2024-03-13T09:15:00.000000', 'value': 0.315}, {'status': 0, 'date': '2024-03-13T09:30:00.000000', 'value': 0.309}, {'status': 0, 'date': '2024-03-13T09:45:00.000000', 'value': 0.26}, {'status': 0, 'date': '2024-03-13T10:00:00.000000', 'value': 0.178}, {'status': 0, 'date': '2024-03-13T10:15:00.000000', 'value': 0.196}, {'status': 0, 'date': '2024-03-13T10:30:00.000000', 'value': 0.176}, {'status': 0, 'date': '2024-03-13T10:45:00.000000', 'value': 0.175}, {'status': 0, 'date': '2024-03-13T11:00:00.000000', 'value': 0.193}, {'status': 0, 'date': '2024-03-13T11:15:00.000000', 'value': 0.175}, {'status': 0, 'date': '2024-03-13T11:30:00.000000', 'value': 0.217}, {'status': 0, 'date': '2024-03-13T11:45:00.000000', 'value': 0.234}, {'status': 0, 'date': '2024-03-13T12:00:00.000000', 'value': 0.218}, {'status': 0, 'date': '2024-03-13T12:15:00.000000', 'value': 0.213}, {'status': 0, 'date': '2024-03-13T12:30:00.000000', 'value': 0.264}, {'status': 0, 'date': '2024-03-13T12:45:00.000000', 'value': 0.212}, {'status': 0, 'date': '2024-03-13T13:00:00.000000', 'value': 0.211}, {'status': 0, 'date': '2024-03-13T13:15:00.000000', 'value': 0.211}, {'status': 0, 'date': '2024-03-13T13:30:00.000000', 'value': 0.183}, {'status': 0, 'date': '2024-03-13T13:45:00.000000', 'value': 0.2}, {'status': 0, 'date': '2024-03-13T14:00:00.000000', 'value': 0.198}, {'status': 0, 'date': '2024-03-13T14:15:00.000000', 'value': 0.183}, {'status': 0, 'date': '2024-03-13T14:30:00.000000', 'value': 0.225}, {'status': 0, 'date': '2024-03-13T14:45:00.000000', 'value': 0.221}, {'status': 0, 'date': '2024-03-13T15:00:00.000000', 'value': 0.206}, {'status': 0, 'date': '2024-03-13T15:15:00.000000', 'value': 0.214}, {'status': 0, 'date': '2024-03-13T15:30:00.000000', 'value': 0.189}, {'status': 0, 'date': '2024-03-13T15:45:00.000000', 'value': 0.192}, {'status': 0, 'date': '2024-03-13T16:00:00.000000', 'value': 0.177}, {'status': 0, 'date': '2024-03-13T16:15:00.000000', 'value': 0.233}, {'status': 0, 'date': '2024-03-13T16:30:00.000000', 'value': 0.25}, {'status': 0, 'date': '2024-03-13T16:45:00.000000', 'value': 0.705}, {'status': 0, 'date': '2024-03-13T17:00:00.000000', 'value': 0.535}, {'status': 0, 'date': '2024-03-13T17:15:00.000000', 'value': 0.407}, {'status': 0, 'date': '2024-03-13T17:30:00.000000', 'value': 0.751}, {'status': 0, 'date': '2024-03-13T17:45:00.000000', 'value': 0.711}, {'status': 0, 'date': '2024-03-13T18:00:00.000000', 'value': 0.537}, {'status': 0, 'date': '2024-03-13T18:15:00.000000', 'value': 0.815}, {'status': 0, 'date': '2024-03-13T18:30:00.000000', 'value': 1.01}, {'status': 0, 'date': '2024-03-13T18:45:00.000000', 'value': 0.523}, {'status': 0, 'date': '2024-03-13T19:00:00.000000', 'value': 0.318}, {'status': 0, 'date': '2024-03-13T19:15:00.000000', 'value': 0.269}, {'status': 0, 'date': '2024-03-13T19:30:00.000000', 'value': 0.26}, {'status': 0, 'date': '2024-03-13T19:45:00.000000', 'value': 0.255}, {'status': 0, 'date': '2024-03-13T20:00:00.000000', 'value': 0.261}, {'status': 0, 'date': '2024-03-13T20:15:00.000000', 'value': 0.232}, {'status': 0, 'date': '2024-03-13T20:30:00.000000', 'value': 0.236}, {'status': 0, 'date': '2024-03-13T20:45:00.000000', 'value': 0.232}, {'status': 0, 'date': '2024-03-13T21:00:00.000000', 'value': 0.33}, {'status': 0, 'date': '2024-03-13T21:15:00.000000', 'value': 0.284}, {'status': 0, 'date': '2024-03-13T21:30:00.000000', 'value': 0.306}, {'status': 0, 'date': '2024-03-13T21:45:00.000000', 'value': 0.296}, {'status': 0, 'date': '2024-03-13T22:00:00.000000', 'value': 0.59}, {'status': 0, 'date': '2024-03-13T22:15:00.000000', 'value': 1.148}, {'status': 0, 'date': '2024-03-13T22:30:00.000000', 'value': 0.853}, {'status': 0, 'date': '2024-03-13T22:45:00.000000', 'value': 0.773}, {'status': 0, 'date': '2024-03-13T23:00:00.000000', 'value': 0.639}, {'status': 0, 'date': '2024-03-13T23:15:00.000000', 'value': 0.585}, {'status': 0, 'date': '2024-03-13T23:30:00.000000', 'value': 0.525}, {'status': 0, 'date': '2024-03-13T23:45:00.000000', 'value': 0.436}]}

Diagnostics dump

No response

No invoices found error - Initialization fails

System Health details

System Information

version core-2024.3.0
installation_type Home Assistant Container
dev false
hassio false
docker true
user root
virtualenv false
python_version 3.12.2
os_name Linux
os_version 4.4.180+
arch x86_64
timezone Asia/Jerusalem
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4829
Installed Version 1.34.0
Stage running
Available Repositories 1400
Downloaded Repositories 27
Home Assistant Cloud
logged_in true
subscription_expiration August 26, 2024 at 03:00
relayer_connected true
relayer_region eu-central-1
remote_enabled false
remote_connected false
alexa_enabled true
google_enabled false
remote_server eu-central-1-3.ui.nabu.casa
certificate_status ready
instance_id d7bb6698d43840488fca42c7de381b58
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Dashboards
dashboards 1
resources 18
views 4
mode yaml
Recorder
oldest_recorder_run January 13, 2024 at 11:56
current_recorder_run March 12, 2024 at 17:28
estimated_db_size 4021.73 MiB
database_engine mysql
database_version 10.6.11

Checklist

  • I have enabled debug logging for my installation.
  • I have filled out the issue template to the best of my ability.
  • This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
  • This issue is not a duplicate issue of any previous issues..

Describe the issue

Component initialization fails

Reproduction steps

  1. Login to the IEC component using the OTP code for a user that is paying through Cellcom or another provider that's not IEC.
  2. The issue should be reproduced due to the fact that IEC doesn't issue any invoices to these users.

Debug logs

2024-03-12 17:43:52.745 ERROR (MainThread) [custom_components.iec.coordinator] Unexpected error fetching Iec data: Field "data" of type GetInvoicesBody in ResponseWithDescriptor has invalid value None
Traceback (most recent call last):
  File "<string>", line 7, in __mashumaro_from_dict_1d2cb13ddbf239913f0f50f5018a33ba__
  File "<string>", line 19, in __mashumaro_from_dict__
ValueError: Argument for iec_api.models.invoice.GetInvoicesBody.__mashumaro_from_dict__ method should be a dict instance

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 318, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/iec/coordinator.py", line 149, in _async_update_data
    billing_invoices = await self.api.get_billing_invoices(self._bp_number, contract_id)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/iec_api/iec_client.py", line 324, in get_billing_invoices
    return await data.get_billing_invoices(self._session, self._token, bp_number, contract_id)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/iec_api/data.py", line 181, in get_billing_invoices
    return await _get_response_with_descriptor(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/ie

Diagnostics dump

No response

Get the Current unpaid electricity bill

Checklist

  • I have filled out the template to the best of my ability.
  • This only contains 1 feature request (if you have multiple feature requests, open one feature request for each feature request).
  • This issue is not a duplicate feature request of previous feature requests.

Is your feature request related to a problem? Please describe.

Not a problem

Describe the solution you'd like

Adding support the
(currentKWHReading - lastPaidKWH) * tariff
In order to see what is the current bill status

Describe alternatives you've considered

N/A

Additional context

N/A

Specify custom discount rates per hour

Checklist

  • I have filled out the template to the best of my ability.
  • This only contains 1 feature request (if you have multiple feature requests, open one feature request for each feature request).
  • This issue is not a duplicate feature request of previous feature requests.

Is your feature request related to a problem? Please describe.

No.

Describe the solution you'd like

With private electric providers, many offer a discount per hours - e.g. 15% off on weekdays between 08:00-17:00.
Need to think about how to model, and use it within the component to get a more clear estimation of the cost.

I've thought about a json with hour ranges describing the discount from the full tariff, but that's a longshot.

e.g.

{
    // Sunday
    "0": { 
        "from": "08:00",
        "to": "17:00",
        "price": 0.50
    },
    "1": { 
        "from": "20:00",
        "to": "23:59",
        "discountPercent": 15
    },
    "2": { 
        "from": "00:00",
        "to": "08:08",
        "discountPercent": 15
    }
    // ...
}

Downside is that it's not very intuitive, and hard to maintain.

Support multiple contracts/meters

Checklist

  • I have filled out the template to the best of my ability.
  • This only contains 1 feature request (if you have multiple feature requests, open one feature request for each feature request).
  • This issue is not a duplicate feature request of previous feature requests.

Is your feature request related to a problem? Please describe.

What to do when I have two meters or contracts etc.

Describe the solution you'd like

Select which contract to use on the integration config-flow.

Describe alternatives you've considered

Importing all (active) meters together

Additional context

.

LongTerm History ends with a drop

System Health details

System Information

version core-2024.3.1
installation_type Home Assistant Container
dev false
hassio false
docker true
user root
virtualenv false
python_version 3.12.2
os_name Linux
os_version 6.5.0-25-generic
arch x86_64
timezone Asia/Jerusalem
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4997
Installed Version 1.34.0
Stage running
Available Repositories 1401
Downloaded Repositories 2
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Dashboards
dashboards 1
resources 2
views 1
mode storage
Recorder
oldest_recorder_run March 13, 2024 at 10:42 AM
current_recorder_run March 14, 2024 at 8:32 PM
estimated_db_size 4.97 MiB
database_engine mysql
database_version 10.11.6

Checklist

  • I have enabled debug logging for my installation.
  • I have filled out the issue template to the best of my ability.
  • This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
  • This issue is not a duplicate issue of any previous issues..

Describe the issue

image

Often, the last hour of LTS has a negative value.

Reproduction steps

.... Just wait?

Debug logs

2024-03-15 00:33:39.710 DEBUG (MainThread) [custom_components.iec.coordinator] All Contract Ids: [1234567]
2024-03-15 00:33:39.711 DEBUG (MainThread) [custom_components.iec.coordinator] Processing 1234567
2024-03-15 00:33:39.711 DEBUG (MainThread) [custom_components.iec.coordinator] Updating statistics for IEC Contract 1234567
2024-03-15 00:33:41.119 DEBUG (MainThread) [custom_components.iec.coordinator] Last statistics are from 2024-03-13 00:00:00
2024-03-15 00:33:41.119 DEBUG (MainThread) [custom_components.iec.coordinator] Calculated from_date = 2024-03-13 00:00:00
2024-03-15 00:33:41.119 DEBUG (MainThread) [custom_components.iec.coordinator] Fetching consumption from 2024-03-13 00:00:00
2024-03-15 00:33:42.642 DEBUG (MainThread) [custom_components.iec.coordinator] Last Consumption Sum for 1234567: 802.8590000000003
2024-03-15 00:33:42.643 DEBUG (MainThread) [custom_components.iec.coordinator] Last Estimated Cost Sum for 1234567: 493.35685549999977
2024-03-15 00:33:42.649 DEBUG (MainThread) [custom_components.iec.coordinator] Last hour fetched for 1234567: 2024-03-13 23:00:00+02:00
2024-03-15 00:33:42.649 DEBUG (MainThread) [custom_components.iec.coordinator] New Consumption Sum for 1234567: 828.3460000000003
2024-03-15 00:33:42.649 DEBUG (MainThread) [custom_components.iec.coordinator] New Estimated Cost Sum for 1234567: 509.0186169999998
2024-03-15 00:33:49.404 DEBUG (MainThread) [custom_components.iec.coordinator] Daily reading for date: 2024-03-14 is present: 5.171
2024-03-15 00:33:53.010 DEBUG (MainThread) [custom_components.iec.coordinator] Daily reading for date: 2024-03-15 is missing, calculating manually

Diagnostics dump

No response

Enhance Sensors with metadata

Enhance sensors with data, e.g. meter_number or meter_code, contract_number, etc.
Set extra_state_attributes of sensor, but need to figure out how to do it dynamically with different configuration per sensor.

Recommend Projects

  • React photo React

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

  • Vue.js photo Vue.js

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

  • Typescript photo Typescript

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

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

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

  • web

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

  • server

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

  • Machine learning

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

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

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

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.