Giter Club home page Giter Club logo

homeassistant-ohme's Introduction

Ohme EV Charger for Home Assistant

An unofficial integration for interacting with Ohme EV Chargers. I have no affiliation with Ohme besides owning one of their EV chargers.

This integration does not currently support accounts with multiple chargers.

If you find any bugs or would like to request a feature, please open an issue.

Tested Hardware

This integration has been tested with the following hardware:

  • Ohme Home Pro [v1.32]
  • Ohme Home [v1.32]
  • Ohme Go [v1.32]
  • Ohme ePod [v2.12]

External Software

The 'Charge Slot Active' binary sensor mimics the planned_dispatches and completed_dispatches attributes from the Octopus Energy integration, so should support external software which reads this such as predbat.

Installation

HACS

This is the recommended installation method.

  1. Add this repository to HACS as a custom repository
  2. Search for and install the Ohme addon from HACS
  3. Restart Home Assistant

Manual

  1. Download the latest release
  2. Copy the contents of custom_components into the <config directory>/custom_components directory of your Home Assistant installation
  3. Restart Home Assistant

Setup

From the Home Assistant Integrations page, search for and add the Ohme integration.

Social Logins

If you created your Ohme account through an Apple, Facebook or Google account, you will need to set a password to use this integration.

Visit the password reset page and enter the email address associated with your social account. You can then use this new password to log into the integration.

Entities

This integration exposes the following entities:

  • Binary Sensors
    • Car Connected - On when a car is plugged in
    • Car Charging - On when a car is connected and drawing power
    • Pending Approval - On when a car is connected and waiting for approval
    • Charge Slot Active - On when a charge slot is in progress according to the Ohme-generated charge plan
    • Charger Online - On if charger is online and connected to the internet
  • Sensors (Session specific) - Only available during a charge session
    • Power Draw (Watts) - Power draw of connected car
    • Current Draw (Amps) - Current draw of connected car
    • Voltage (Volts) - Voltage reading
    • Charge Slots - A comma separated list of assigned charge slots
    • Next Charge Slot Start - The next time your car will start charging according to the Ohme-generated charge plan
    • Next Charge Slot End - The next time your car will stop charging according to the Ohme-generated charge plan
  • Sensors (Other)
    • CT Reading (Amps) - Reading from attached CT clamp
    • Energy Usage (kWh) - Energy used in the current/last session. This is supported by the energy dashboard.
    • Accumulative Energy Usage (kWh) - Deprecated - Total energy used by the charger (If enabled in options)
    • Battery State of Charge (%) - If your car is API connected this is read from the car, if not it is how much charge Ohme thinks it has added
  • Switches (Settings) - Only options available to your charger model will show
    • Lock Buttons - Locks buttons on charger
    • Require Approval - Require approval to start a charge
    • Sleep When Inactive - Charger screen & lights will automatically turn off
  • Switches (Charge state) - These are only functional when a car is connected
    • Max Charge - Forces the connected car to charge regardless of set schedule
    • Pause Charge - Pauses an ongoing charge
    • Enable Price Cap - Whether price cap is applied
  • Inputs - If in a charge session, these change the active charge. If disconnected, they change your first schedule.
    • Number
      • Target Percentage - Change the target battery percentage
      • Preconditioning - Change pre-conditioning time. 0 is off
      • Price Cap - Maximum charge price
    • Time
      • Target Time - Change the target time
  • Buttons
    • Approve Charge - Approves a charge when 'Pending Approval' is on

Options

Some options can be set from the 'Configure' menu in Home Assistant:

  • Never update an ongoing session - Override the default behaviour of the target time, percentage and preconditioning inputs and only ever update the schedule, not the current session. This was added as changing the current session can cause issues for customers on Intelligent Octopus Go.
  • Enable accumulative energy usage sensor - Enable the sensor showing an all-time incrementing energy usage counter. This causes issues with some accounts.

Coordinators

Updates are made to entity states by polling the Ohme API. This is handled by 'coordinators' defined to Home Assistant, which refresh at a set interval or when externally triggered.

The coordinators are listed with their refresh intervals below. Relevant coordinators are also refreshed when using switches and buttons.

  • OhmeChargeSessionsCoordinator (30s refresh)
    • Binary Sensors: Car connected, car charging, pending approval and charge slot active
    • Buttons: Approve Charge
    • Sensors: Power, current, voltage, session energy usage, charge slots, and next slot (start & end)
    • Switches: Max charge, pause charge
    • Inputs: Target time, target percentage and preconditioning (If car connected)
  • OhmeAccountInfoCoordinator (1m refresh)
    • Switches: Lock buttons, require approval, sleep when inactive and enable price cap
    • Inputs: Price cap
  • OhmeAdvancedSettingsCoordinator (1m refresh)
    • Sensors: CT reading sensor
    • Binary Sensors: Charger online
  • OhmeStatisticsCoordinator (30m refresh)
    • Sensors: Accumulative energy usage
  • OhmeChargeSchedulesCoordinator (10m refresh)
    • Inputs: Target time, target percentage and preconditioning (If car disconnected)

homeassistant-ohme's People

Contributors

dan-r 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

homeassistant-ohme's Issues

Expose charger voltage as sensor

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

Describe the solution you'd like
3 additional sensors
Charger voltage
Charger current
CT clamp current reading

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Failed setup in Home Assistant with original Ohme charger

          Hello - I'm getting a failed setup in Home Assistant with a (quite old) Ohme original charger identifying in the Ohme app as a an Ohme Home/Go. Firmware version v.1.32_202307131.

Debug log below:

2024-01-01 13:42:06.641 DEBUG (MainThread) [custom_components.ohme.coordinator] Finished fetching Ohme Charge Sessions data in 0.039 seconds (success: True)
2024-01-01 13:42:06.672 DEBUG (MainThread) [custom_components.ohme.coordinator] Finished fetching Ohme Account Info data in 0.031 seconds (success: True)
2024-01-01 13:42:06.937 DEBUG (MainThread) [custom_components.ohme.coordinator] Finished fetching Ohme Charger Statistics data in 0.265 seconds (success: True)
2024-01-01 13:42:07.313 DEBUG (MainThread) [custom_components.ohme.coordinator] Finished fetching Ohme Advanced Settings data in 0.376 seconds (success: False)

Originally posted by @jon798 in #16 (comment)

Charger online/offline status

Is your feature request related to a problem? Please describe.
Ability to create an alert if charger goes offline

Describe the solution you'd like
Binary sensor for online/offline status

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

charger charging when not wanted

Hey All, i don't believe this is a bug....but wanted to share to see if someone has ideas on how to handle..

When i arrive at home, and plug in the car following happens in an automation:

  • when at home, when electricity tariff is normal....put on pauze.
  • when tariff changes to low, resume (always around 21:00 hours except in weekends)
  • when tariff changes to normal, pause charging (always around 07:00h on weekdays), except when i'm not working home today (other helper) then continue charging...

This works fine, so when working at home one day, charging stops around 07:00 (as i normally don't need the car that day).

But then somewhere during the day the pause state changes, and app tells me session ended...
also then sometime later, it starts charging again...
These last 2 actions have nothing to do with automations, but i presume that you can only set ohme to pause for x time....and that depending on the departure time it starts charging again (i already tried different departure times etc....but has no results).

Can this departure time be removed, so it does not start charging when i don't want.
Ideal scenario would be that the day i'm working home....when tariff changes to low it simply continue to charge...

If anyone has some ideas why it starts charging on its own....please share...

Slot Active sensor incorrect state

What happened?
'binary_sensor.ohme_slot_active' keeps 'ON' despite car charging stopped.

I have 2 x EVs (none of them using APIs), Octopus IOG integrated via Ohme Home Pro EVSE, GivEnergy inverter and battery. I use Predbat HA integration to manage all these. Whenever I use either of EVs I seem to have false info re active slots (despite slot times being visible in Ohme integration correctly). Below is an example from yesterday. Car plugged in around 19:00, given slots by IOG, finished active charging at 21:49, but 'ohme_slot_active' still active until 22:45 when I physically disconnected the car from EVSE (see screenshots). This causes the Predbat integration to work incorrectly as 'ohme_slot_active' sensor is a source of various automations like charging/discharging home battery.

Screenshots:
Ohme app IOG slots notification:
image

Relevant Ohme integration indications after IOG slots received:
image

Ohme integration idications more than 30 minutes after car finished charging (NB. Charge Slot Active still ON):
image

'binary_sensor.ohme_slot_active' history for 08/05/24 (NB. active state changed to OFF almost 1 hr after car stopped charging only becasue I unplugged the car):
image

'binary_sensor.ohme_car_charging' shows correctly when car finished active charging:
image

Expected behavior
Slot Active sensor sets to 'OFF' when car charging stops and 30-minutes slots (i.e. XX:00 or XX:30) finishes.

Log Output
Any relevant logs from Home Assistant.

Home Assistant Version
Core 2024.5.2, OS 12.3

Integration Version
Ohme integration v0.8.2
HACS 1.34.0

Additional context
Ohme Home Pro FW 2.62 (it was th same with 1.22 I had before)

Upgrade to HA Core 2024.7.0 gives "Detected code that calls async_forward_entry_setup for integration ohme with title"

What happened?
Upgraded HA core from 2024.6.4, after reboot got the early warning error message in the system log

To Reproduce
Upgrade to HA Core 2024.7.0

Expected behavior
Message is an early warning that as of 2025.1 the function will not be acceptable

Log Output
Logger: homeassistant.helpers.frame
Source: helpers/frame.py:151
First occurred: 21:34:40 (6 occurrences)
Last logged: 21:34:42

Detected code that calls async_forward_entry_setup for integration ohme with title: Ohme Charger and entry_id: 2a816906d41f774edfeae2d72bc9dc06, during setup without awaiting async_forward_entry_setup, which can cause the setup lock to be released before the setup is done. This will stop working in Home Assistant 2025.1. Please report this issue.

Home Assistant Version
Find this in Settings > About.

Integration Version
Core - 2024.7.0
Supervisor - 2024.06.2
Operating System - 12.4
Frontend - 20240703.0

Additional context
Early warning only, the integration is still working.

OhmeStatisticsCoordinator setup failure & NumberFormatException: For input string: \"None\"

What happened?
Using Ohme Home Pro (FW 1.22); Nissan Ariya; Octopus Intelligent Go.

  • Ohme integration logs four errors on start-up then an error every 30s.
  • Accumulative Energy Usage is always marked as unavailable

Perhaps startTS is not being passed properly to chargeSessions/summary?

To Reproduce
Always happens

Expected behavior
No errors and all data available in HA

Log Output

On startup:

2024-02-13 08:19:04.853 ERROR (MainThread) [custom_components.ohme.api_client] 
Ohme API response error: /v1/chargeSessions/summary/users/[Removed in case it is sensitive]?
&startTs=None&endTs=1709251199000&granularity=MONTH, 400; 
{"timestamp":1707812344473,"status":400,"error":"Bad Request","message":
"Failed to convert value of type 'java.lang.String' to required type 'long'; 
nested exception is java.lang.NumberFormatException: For input string: 
\"None\"","path":"/v1/chargeSessions/summary/users/[Removed in case it is sensitive]"}

2024-02-13 08:19:04.853 ERROR (MainThread) [custom_components.ohme] 
OhmeStatisticsCoordinator failed to setup. 
This coordinator is optional so the integration will still function, 
but please raise an issue if this persists.

2024-02-13 08:19:05.407 ERROR (MainThread) [homeassistant.components.sensor] ohme: Error on device update!
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/entity_platform.py", line 599, in _async_add_entity
    await entity.async_device_update(warning=False)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/entity.py", line 1259, in async_device_update
    await self.async_update()
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/update_coordinator.py", line 530, in async_update
    await self.coordinator.async_request_refresh()
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/update_coordinator.py", line 263, in async_request_refresh
    await self._debounced_refresh.async_call()
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/debounce.py", line 93, in async_call
    await task
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/update_coordinator.py", line 289, in async_refresh
    await self._async_refresh(log_failures=True)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/update_coordinator.py", line 412, in _async_refresh
    self.async_update_listeners()
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/update_coordinator.py", line 183, in async_update_listeners
    update_callback()
  File "/home/homeassistant/.homeassistant/custom_components/ohme/sensor.py", line 296, in _handle_coordinator_update
    if new_state <= 0:
       ^^^^^^^^^^^^^^
TypeError: '<=' not supported between instances of 'NoneType' and 'int'

2024-02-13 08:19:15.456 ERROR (MainThread) [custom_components.ohme.coordinator] Unexpected exception from <bound method DataUpdateCoordinator.async_refresh of <custom_components.ohme.coordinator.OhmeChargeSessionsCoordinator object at 0x7f2b11072330>>
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/debounce.py", line 114, in _handle_timer_finish
    await task
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/update_coordinator.py", line 289, in async_refresh
    await self._async_refresh(log_failures=True)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/update_coordinator.py", line 412, in _async_refresh
    self.async_update_listeners()
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/update_coordinator.py", line 183, in async_update_listeners
    update_callback()
  File "/home/homeassistant/.homeassistant/custom_components/ohme/sensor.py", line 296, in _handle_coordinator_update
    if new_state <= 0:
       ^^^^^^^^^^^^^^

Every 30s:

2024-02-13 08:19:45.162 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/update_coordinator.py", line 256, in _handle_refresh_interval
    await self._async_refresh(log_failures=True, scheduled=True)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/update_coordinator.py", line 412, in _async_refresh
    self.async_update_listeners()
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/helpers/update_coordinator.py", line 183, in async_update_listeners
    update_callback()
  File "/home/homeassistant/.homeassistant/custom_components/ohme/sensor.py", line 296, in _handle_coordinator_update
    if new_state <= 0:
       ^^^^^^^^^^^^^^
TypeError: '<=' not supported between instances of 'NoneType' and 'int'

Home Assistant Version
Home Assistant Core 2024.2.1 running on Ubuntu VM in Python 3.12 venv

Integration Version
0.6.1

Additional context
Installed for the first time a couple of days ago; seems to have always been a problem since installation.

Many thanks for developing this integration; much better than having to parse Ohme Android notifications!

Device testing

Please comment below with working devices, or open an issue if you have any issues!

Thanks in advance

Schedule integration plans

Thanka for this. Just wondering, is schedule integration just not possible with Ohme's API or are they on the roadmap to be added? In particular setting departure time and days and setting added range percentage?

Incorrect values in some sensors

Car is unlugged (my wife has taken it to work at 7.40am - time now 12.02pm) some sensors show incorrect values e.g.

Power Draw 2,000W
Current Draw 8.1A
Car connected Plugged in

Expected behavior
Sensors should be zero or correct value

Screenshots
Screenshot 2024-01-04 113354

Home Assistant Version
Core
2024.1.0
Supervisor
2023.12.0
Operating System
11.2
Frontend
20240103.3

Integration Version
v0.3.1

Additional context
Using Chrome on Windows 11 - Refresh, shift Refresh or closing HA tab and reopening a new HA tab does not change the values

Ability to control pre-condition options

The only feature I would love to be able to control and currently can't in the precondition option. It would be ace if I could automate that based on weather.

A switch entity for pre-conditioning and a number entity for the minutes of preconditioning would be great if they can be accessed in the API.

Accumulative Energy Usage Unavailable, Errors In Logs

What happened?
The Accumulative Energy Usage sensor is marked as unavailable in HA and has no data:

IMG_1798

The usage data is available in the Ohme app:

IMG_1800

Expected behavior
The energy usage to match the data available in the Ohme app.

Log Output
Please note I have replaced what looks like a user token with a “USERID” string below:

Logger: custom_components.ohme.api_client
Source: custom_components/ohme/api_client.py:108
Integration: Ohme (documentation, issues)
First occurred: February 3, 2024 at 10:34:58 PM (25 occurrences)
Last logged: 10:05:24 AM

Ohme API response error: /v1/chargeSessions/summary/users/USERID?&startTs=1546300800000&endTs=1709251199000&granularity=MONTH, 500; {"timestamp":1707033920882,"status":500,"error":"Internal Server Error","message":"Mapped Measurements were empty! Likely because wh was null. ","path":"/v1/chargeSessions/summary/users/USERID"}

Home Assistant Version
2024.1.5

Integration Version
0.5.1

Additional context
Other sensors work fine. Charger is an Ohme Home Pro. Happy to help fix/debug.

Where to?

Not a feature request more an enquiry - how far do you want to go with this?
There are some things which CAN be done but the merits vs time spent are dubious (ultimately in the back of my mind I'm acutely aware that Ohme have a new app on the way and as such have a nice opportunity to do things that will stop this integration functioning.
Equally this may have slipped under the radar for now over the holidays so they could rug pull sooner or later should they wish)

Basically, a few things I've done personally with it that may/may not be of interest are:

Switching vehicles - This gets messy as you then need to keep track of all the possible vehicles but is Doable

GET.../v1/carBrands
GET...v1/carModels?carBrand=SOLAR (Example Solar Charge Brand)
POST.../v1/cars

Use case is probably only of use to those with multicar households & those with non solar matching chargers (i.e Ohme Go) to either toggle between 2 different cars being charged or to auto switch to pseudo solar matching charging 6A/10A/16A etc...
Octopus Exports at 15p may negate the value of solar charging - it is often worth more to export & buy back overnight.

Changing charge current
Now this is incredibly inelegant on the Ohme Go (newer Pro's may be different, especially if you can change max charge rate from say the installer menu via API - I do not have this to test)
Currently you can switch vehicles to adjust charge rate (I used to have to rummage around looking for different vehicles such as an early Leaf - 3.3kW and so on) but now you can just use the solar group to ramp up and down BUT there is a catch:

Each vehicle change is not handled on the fly, it stops the charge and then restart. Once in a while this isn't so bad, but solar matching makes this really hard on the cars contactors as it stops & starts charging constantly.
However, you can move gracefully from 32A to 6A by using "Trickle" cars (Sorry, again MG ZS quirks...) so you can drop down to 6A uninterrupted. You can't however go back up.
Ohme/IOG does however manipulate the charge rate overnight without halting current charge, however I am unsure how this is achieved but can be explored.

A 3rd option is the "create your own car" portion of the app, although I've not yet seen if they move gracefully through charge rates or not.

Preconditioning
Probably of little merit but I guess some people might want the option to toggle Precondition on/off via HA over summer or something.

I'm sure there are features of later Ohme devices I'm unaware of (You/AndyV have a better handle on that) but as you've probably discovered they are relatively trivial to work back!

Some sensors don't update on my Ohme Go (Commando)

Describe the bug
The Ohme is charging the car (according to it, to the car, the Ohme app, and the CT clamp I have on it). But, the sensor "Car Charging" does not update. The "Current Draw" remains at 0.1 A despite the charger drawing considerably more. "Power Draw" remains at 0 W and "Voltage" at 2 V.

The Charge Slot sensors update as expected.

To Reproduce
Have an Ohme Go cable, install the integration with default settings, add the card to the dashboard, charge the car, observe sensors.

Expected behavior
I would expect the sensors either to update, or to not exist.

Screenshots
From the Ohme integration:
image

Simultaneously from my own instrumentation:
image

Home Assistant Version
Core 2024.1.3

Integration Version
v0.3.1

Additional context
My charger is one of the older Ohme cables as opposed to a Home Pro or ePod. Its firmware version is v1.27_202208221. In the Ohme app, the Max Charge Current, CT Clamp Reading, Load Balancing Active, and Load Limit always show blank values.

The Controls section appears to work - Approve Charge, Pause Charge, Max Charge etc all function as expected, as do the target percentage and time.

Charger shows connected after unpluged

What happened?
If I have to remove the charger mid way through a charge it sometimes shows the car as still plugged in. I need to reboot home assistant to bring it back. Even then the ohme software does not always start automatically (screen shot attached)

To Reproduce
Remove power cable mid charge

Expected behavior
Car should show as disconnected

Log Output
Any relevant logs from Home Assistant.

**Home Assista
Find this in Settings > About. 2024.2.1

Integration Version
0.6.1
Screenshot_20240213-082553
Screenshot_20240213-082541

Additional context
Add any other context about the problem here.

Energy usage difference between app and sensor

What happened?
The energy sensor in Home Assistant is reporting a lower value compared to what's in the app - looks to be about 9.2% lower in both cases.

9th April
image

image

13th April
image

image

image

To Reproduce
Multiple charging sessions in the past week

Expected behavior
I would expect the two energy values to align between the app and Home Assistant

Log Output
Haven't seen any log entries for errors or warnings.

Home Assistant Version
image

Integration Version
v0.8.2

Cannot login to integration when adding

Unable to login adding integration

Added integartion to HACS then go to Devices and services and add Ohme integration. Dialogue box pop up appears and I enter my Google account details, error message is "Invalid credentials provided."

I should be able to login with this Google account. I have logged in on the Ohme app, and Google (by logging out and logging back in again)

Screenshot 2024-01-02 105054

Home Assistant Version
Core
2023.12.4
Supervisor
2023.12.0
Operating System
11.2
Frontend
20231208.2

Integration Version
v0.2.6

integration stops wroking

The integration works fine, but after a while it no longer gets any data. It shows an error in the integration page. When trying to reconfigure it shows 'unknown error'.
What solves it is delete the integration, restart and add & configure the integration .
Has happened already a couple of time
I think the issues started after upgrading HomeAssistant

home-assistant_ohme_2024-04-09T08-31-10.381Z.log

Ability to capture smart schedule

Is your feature request related to a problem? Please describe.
Ohme sends a smart schedule for time slots. Some of these time slots are outside of peak hours.

Describe the solution you'd like
Ability read these slots.

Describe alternatives you've considered
Ohme sends these as push notifications, is it possible to receive notification in HA integration and parse them

Additional context
knowing additional smart slots would help in automating to disable PV battery outside of Off peak hours.

Price cap enable/disable?

What happened?
Price cap field shows a value and I have price cap turned off. Is there a switch for price cap enable/disable?

To Reproduce
Steps to reproduce the behavior.

Expected behavior
A clear and concise description of what you expected to happen.

Log Output
Any relevant logs from Home Assistant.

Home Assistant Version
Find this in Settings > About.

Integration Version
Find this from HACS.

Additional context
Add any other context about the problem here.

Target Percentage changes not updating in the app

What happened?
When using v1 of the ohme app, I was able to adjust the charge percentage of a single schedule by changing the target Percentage in home assistant. Now changes are not related

Expected behavior
When the target charge % is adjusted in home assistant I was expecting it to change in one of the schedules in the ohme V2 app. The only change currently is to update what the % is set to in the app, which is reflected in hass

Home Assistant Version
2024.7.0
Integration Version
1.0.0

Mimic ‘planned_dispatches’

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

As I play around with Predbat I’m realising that it wants to use the Octopus Energy sensors for Intelligent Octopus and it does this because it can plan charges of the home battery during charge slots. It would be good to be able to mimic that functionality within the Ohme integration.

Describe the solution you'd like

Maybe the slots could be displayed as an attribute of array called planned_dispatches under the Charge Slot Active sensor (which I believe is like the Intelligent Dispatching sensor). We have the Charge Slots sensor but this wouldn’t work as Predbat wants it in the same format as it’s provided by the Octopus Energy integration.

I’m aware I’m asking to mirror some of the OE functionality here but it could help out other users with Ohme and IO using Predbat.

Describe alternatives you've considered

I haven’t yet!

Additional context

https://bottlecapdave.github.io/HomeAssistant-OctopusEnergy/entities/intelligent/

Would it be possible to inform Ohme of car charge level via this integration?

Loving this integration so far, but I have a request if at all possible!

Is your feature request related to a problem? Please describe.
I'm one of the many currently affected by Jaguar nerfing their API for 3rd parties, such that the Ohme charger can't directly query the car for charge level. This completely screws up the smart charging capability and means in order to have a "charge to 80%" kind of behaviour, I have to use Home Assistant (which can still talk to the jag) to work out the charge % required whenever the car is plugged in, then configure the charger via your integration.

Describe the solution you'd like
Ideally, I could just directly push the car's current charge level to the charger whenever it changes.

Additional context
I'm half certain this isn't possible, alas... Ohme were getting that info from pestering Jaguar's API, not the other way around, so I guess their API may not offer this capability? Thought I'd ask just in case!

Number/time controls don't work

What happened?

Changing the Target Percentage, Target Time, or Preconditioning results in this TypeError

To Reproduce

Drag the Target Percentage range input:

Error message:

Log Output

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 239, in handle_call_service
    response = await hass.services.async_call(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2543, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2580, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 971, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1043, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/number/__init__.py", line 112, in async_set_value
    await entity.async_set_native_value(native_value)
  File "/config/custom_components/ohme/number.py", line 76, in async_set_native_value
    await self._client.async_apply_session_rule(target_percent=int(value))
  File "/config/custom_components/ohme/api_client.py", line 203, in async_apply_session_rule
    max_price = self._last_rule['settings'][0]['enabled'] if 'settings' in self._last_rule and len(
                                                                                               ^^^^
TypeError: object of type 'NoneType' has no len()

Home Assistant Version

Core 2024.4.3
Supervisor 2024.04.0
Operating System 12.2
Frontend 20240404.2

Integration Version

0.8.2

Added the intergration and OHME log in details which succeeded but no device found

Describe the bug
As title

To Reproduce
Added via hacs

Expected behavior
A clear and concise description of what you expected to happen.
To see a state, charging or kw etc

Screenshots
If applicable, add screenshots to help explain your problem.

Home Assistant Version
Find this in Settings > About.

Home Assistant Core 2024.1.2

Integration Version
Find this from HACS.
No info given by the intergration

Additional context
Install via custom repository went as expected without error. Restarted HA and OHME now showing . Opened to be asked for OHME email and password which entered and succeeded message. No device or entity listed

Up to 5 minute lag on binary_sensor.ohme_car_charging

Describe the bug
The binary sensor has in some instances a lag of over 5 minutes from when the car stops charging to when it changes state to off

To Reproduce
Observe during an active charge session where Ohme are using multiple 15 minute charge slots. Car stops charging on the 15 minute boundary, binary sensor can take over 5 minutes before it changes state to reflect this

Expected behavior
Binary sensor to update within a minute

Screenshots
Screenshot_2023-12-29-09-43-06-302_io homeassistant companion android

Home Assistant Version
Core 2023.12.4
Supervisor 2023.12.0
OS 11.2
Frontend 20231308.2

Integration Version
0.1.8

Additional context

Strange behavior - charger getting enabled without trigger

What happened?
The charger is turning on without it's receiving a trigger. this could however be related to the way my automation is setup. It turned on at 1am in the night without the automation being fired.

Expected behavior
The average solar excess should trigger the start of the charge. When the excess goes below 2, it should turn it off.

automation

alias: Charger Control Based on Solar Surplus
description: Control Ohme charger based on solar surplus
trigger:
  - platform: state
    entity_id: binary_sensor.ohme_car_connected
    to: "on"
  - platform: state
    entity_id: binary_sensor.ohme_car_connected
    to: "off"
  - platform: numeric_state
    entity_id:
      - sensor.AverageSolarExcess
    above: 2.2
    id: PV++
  - platform: numeric_state
    entity_id:
      - sensor.AverageSolarExcess
    below: 2
    id: PV--
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.ohme_car_connected
            state: "off"
        sequence:
          - service: switch.turn_on
            entity_id: switch.ohme_pause_charge
        alias: Pause charging on plug out
      - conditions:
          - condition: trigger
            id:
              - PV--
          - condition: state
            entity_id: binary_sensor.ohme_car_connected
            state: "on"
        sequence:
          - service: switch.turn_on
            entity_id: switch.ohme_pause_charge
        alias: Pause charging if solar surplus is low
      - conditions:
          - condition: trigger
            id:
              - PV++
        sequence:
          - service: switch.turn_off
            entity_id: switch.ohme_pause_charge
          - service: switch.turn_on
            entity_id: switch.ohme_max_charge
        alias: Resume charging if enough PV surplus
    default:
      - service: switch.turn_on
        entity_id: switch.ohme_pause_charge

Log Output
Schermafbeelding 2024-07-08 om 20 55 07

Home Assistant Version
2024.5.5

Integration Version
V0.8.3.

Incorrect Next Charge Slot End value

After I plugged my car in yesterday I received the following charge slots

00:00-00:30
01:15-02:00
02:30-05:57

During the charging periods the Start and End slot gave the following figures

Next Charge Slot Start
Value Valid from Valid to
00:00 23:51:07 00:00:07
01:15 00:00:07 01:15:07
02:30 01:35:37 02:30:07
Unknown 02:30:07

Next Charge Slot End
Value Valid from Valid to
00:30 23:51:07 00:30:07
02:00 00:30:07 02:00:07
05:57 02:00:07 05:20:07
08:37 05:20:07 07:05:07
10:33 07:05:07 08:50:07
12:29 08:50:07 10:35:07
14:25 10:35:07 12:20:07
16:21 12:20:07 12:59:37
Unknown 12:59:37

As you can see the Start slot correctly changed to unknown at 2:30 due to no other slot being offered by Octopus.

However the End Slot should have changed to unknown after 05:57, but it didn't change until I unplugged my car at 12:59:37

I am sure this has worked in the past, but I don't charge my car up every day so can be sure when/if this has stopped working correctly

Ohme ePod [v2.12]
Ohme V0.5.1

Battery SoC and Energy sensor values incorrect values

Firstly, congratulations on this integration - this is great work and really useful!

Issues below are minor for my use case but wanted to share in aid of future improvements

I have an Ohme Home Pro FW v2.5, and a Tesla Model Y
using Octopus Intelligent, controlling the Ohme Home Pro

The sensor.ohme_battery_soc is constantly at 100% value in Home Assistant, whether car is connected or not.
In the Ohme app it is reporting the battery SoC correctly (same as the car)

The sensor.ohme_session_energy also appears to have the wrong value, on first charge session it was 77kWh and second charge session shows 60kWh (but charge is from 60%-80%)

Home Assistant Version
Core: 2024.4.2
Operating System: 11.5

Integration Version
v0.82

Thanks!

Failed startup due to corrupted datapoint

Describe the bug
The integration didn't start up, because one of the calls failed:

/v1/chargeSessions/summary/users/****?&startTs=1546300800000&endTs=1706745599000&granularity=MONTH
with an error {"timestamp":1704291796131,"status":500,"error":"Internal Server Error","message":"Mapped Measurements were empty! Likely because wh was null. ","path":"/v1/chargeSessions/summary/users/****"}

I think it is related to an error on the back-end of ohme, in the app the charge sessions graph doesn't load correctly for some months, which leads me to think there is some error on their back-end somewhere, because of corrupted data.

I managed to fix it myself by setting the startTs to a more recent value, 1704236400000, which caused the call to succeed.

To Reproduce
I think the error is in their back-end, not something that can be reproduced locally.

Expected behavior
Maybe a better error handling can help resolve this?
Something else I was thinking about was updating the summary to always retrieve the current day and use the "utility meter" type in home-assistant, to not have a potentially intensive query to ohme every time the call is done?

Screenshots

2024-01-03 14:23:15.559 DEBUG (MainThread) [custom_components.ohme.api_client] GET request to /v1/users/me/account, status code 200
2024-01-03 14:23:15.602 DEBUG (MainThread) [custom_components.ohme.api_client] GET request to /v1/chargeSessions, status code 200
2024-01-03 14:23:15.603 DEBUG (MainThread) [custom_components.ohme.coordinator] Finished fetching Ohme Charge Sessions data in 0.042 seconds (success: True)
2024-01-03 14:23:15.642 DEBUG (MainThread) [custom_components.ohme.api_client] GET request to /v1/users/me/account, status code 200
2024-01-03 14:23:15.643 DEBUG (MainThread) [custom_components.ohme.coordinator] Finished fetching Ohme Account Info data in 0.040 seconds (success: True)
2024-01-03 14:23:16.140 DEBUG (MainThread) [custom_components.ohme.api_client] GET request to /v1/chargeSessions/summary/users/dSy8z3nNJuVyTOVOCZKQUjO3Vii2?&startTs=1546300800000&endTs=1706745599000&granularity=MONTH, status code 500
2024-01-03 14:23:16.140 ERROR (MainThread) [custom_components.ohme.api_client] Ohme API response error: /v1/chargeSessions/summary/users/dSy8z3nNJuVyTOVOCZKQUjO3Vii2?&startTs=1546300800000&endTs=1706745599000&granularity=MONTH, 500; {"timestamp":1704291796131,"status":500,"error":"Internal Server Error","message":"Mapped Measurements were empty! Likely because wh was null. ","path":"/v1/chargeSessions/summary/users/****"}
2024-01-03 14:23:16.141 DEBUG (MainThread) [custom_components.ohme.coordinator] Finished fetching Ohme Charger Statistics data in 0.498 seconds (success: False)
2024-01-03 14:23:21.771 DEBUG (MainThread) [custom_components.ohme.api_client] GET request to /v1/users/me/account, status code 200
2024-01-03 14:23:21.817 DEBUG (MainThread) [custom_components.ohme.api_client] GET request to /v1/chargeSessions, status code 200
2024-01-03 14:23:21.818 DEBUG (MainThread) [custom_components.ohme.coordinator] Finished fetching Ohme Charge Sessions data in 0.045 seconds (success: True)
2024-01-03 14:23:21.860 DEBUG (MainThread) [custom_components.ohme.api_client] GET request to /v1/users/me/account, status code 200
2024-01-03 14:23:21.862 DEBUG (MainThread) [custom_components.ohme.coordinator] Finished fetching Ohme Account Info data in 0.043 seconds (success: True)
2024-01-03 14:23:22.370 DEBUG (MainThread) [custom_components.ohme.api_client] GET request to /v1/chargeSessions/summary/users/****?&startTs=1546300800000&endTs=1706745599000&granularity=MONTH, status code 500
2024-01-03 14:23:22.370 ERROR (MainThread) [custom_components.ohme.api_client] Ohme API response error: /v1/chargeSessions/summary/users/****?&startTs=1546300800000&endTs=1706745599000&granularity=MONTH, 500; {"timestamp":1704291802360,"status":500,"error":"Internal Server Error","message":"Mapped Measurements were empty! Likely because wh was null. ","path":"/v1/chargeSessions/summary/users/****"}
2024-01-03 14:23:22.371 DEBUG (MainThread) [custom_components.ohme.coordinator] Finished fetching Ohme Charger Statistics data in 0.509 seconds (success: False)

Home Assistant Version
2023.12.1

Integration Version
3.0.0

ohme Go (the stick one, in the middle of the cable

Additional context
If i have some time this weekend I might take a look myself and create a pull request

Setting target time generates error

What happened?
Change target time generates an onscreen error which appears very briefly bottom right see screenshot
Screenshot 2024-02-15 192216

To Reproduce
type any value in box nand move away

Expected behavior
A clear and concise description of what you expected to happen.

Log Output
Logger: homeassistant.components.websocket_api.http.connection
Source: components/websocket_api/commands.py:240
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 14 February 2024 at 20:55:26 (9 occurrences)
Last logged: 19:14:55

[139865960401728] name 'current' is not defined
[139866127864256] name 'current' is not defined
[139866369697088] name 'current' is not defined
[139865774974656] name 'current' is not defined
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 240, in handle_call_service
response = await hass.services.async_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2279, in async_call
response_data = await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2316, in _execute_service
return await target(service_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 892, in entity_service_call
single_response = await _handle_entity_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 962, in _handle_entity_call
result = await task
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/time/init.py", line 41, in _async_set_value
return await entity.async_set_value(service_call.data[ATTR_TIME])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/ohme/time.py", line 72, in async_set_value
await self._client.async_apply_session_rule(target_time=(int(value.hour), int(value.minute)))
File "/config/custom_components/ohme/api_client.py", line 222, in async_apply_session_rule
target_ts = int(time_next_occurs(
^^^^^^^^^^^^^^^^^
File "/config/custom_components/ohme/utils.py", line 177, in time_next_occurs
target = current.replace(hour=hour, minute=minute, second=0, microsecond=0)
^^^^^^^
NameError: name 'current' is not defined

Home Assistant Version
Core
2024.2.1
Supervisor
2024.01.1
Operating System
11.5
Frontend
20240207.1

Integration Version
0.7.0

Additional context
Add any other context about the problem here.

Connected car details

This integration is great and it's made it easy for me to stop by house battery from discharging when the car is charging. (I'm also using your Nissan Leaf integration which is equally good).

I have 2 different EVs and need to charge one of them most days. This means that I frequently need to change the car details and charge schedule in the Ohme app before plugging in. It would be helpful to me if it was possible to do this via the integration as I could then save the details of each car and a default schedule for each in Home Assistant and then automate changing the car and schedule.

I'm not sure if this is possible or of interest to enough people, but I thought it was worth asking.

Andy

Question regarding the "Charge Slot Active" sensor, although could be a bug

I have just had a new Ohme ePod installed.

All the sensors seem to be working, however last night the "Charge Slot Active" sensor didn't seem to behaved how I thought it should, but I maybe wrong.

In the Ohme app I have set up a schedule which states add 80% by 06:00 everyday

I plugged the car in at 18:40 yesterday and the Ohme app gave me a slot from 21:15 until 5:57 the next morning, so I would expect the "Charge Slot Active" to change to "On" at 21:15 and "Off" at 5:57 however as you can see below the sensor seemed to flip flop quite a bit, (mainly staying on) until I unplugged the car at 14:16

Charge Slot Active Sensor
8 January 2024
Turned off
14:16:28 - 4 hours ago
Turned on
14:00:28 - 4 hours ago
Turned on
08:19:29 - 10 hours ago
Turned off
08:18:59 - 10 hours ago
Turned on
02:08:29 - 16 hours ago
Turned off
02:07:59 - 16 hours ago
Turned on
01:50:59 - 16 hours ago
Turned off
01:50:29 - 16 hours ago
Turned on
01:45:59 - 16 hours ago
Turned off
01:45:29 - 16 hours ago
7 January 2024
Turned on
21:15:29 - 21 hours ago

Home Assistant Version
Core 2024.1.2
Supervisor 2023.12.0
Operating System 11.3
Frontend 20240104.0
HACS 1.33.0

Ohme ePod Firmware: v2.12

I am willing to do any testing required if you want to use me as a guinea pig

Fail to load after reboot

What happened?
After a reboot the ohme addon does not load

To Reproduce
Restart server

Expected behavior
Addon automatically loads

Log Output
Logger: homeassistant.config_entries
Source: config_entries.py:444
First occurred: 09:11:51 (1 occurrences)
Last logged: 09:11:51

Error setting up entry Ohme Charger for ohme
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 444, in async_setup
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/ohme/init.py", line 38, in async_setup_entry
await async_setup_dependencies(hass, entry)
File "/config/custom_components/ohme/init.py", line 23, in async_setup_dependencies
await client.async_create_session()
File "/config/custom_components/ohme/api_client.py", line 54, in async_create_session
async with self._auth_session.post(
File "/usr/local/lib/python3.12/site-packages/aiohttp/client.py", line 1194, in aenter
self._resp = await self._coro
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/aiohttp/client.py", line 504, in _request
with timer:
File "/usr/local/lib/python3.12/site-packages/aiohttp/helpers.py", line 735, in exit
raise asyncio.TimeoutError from None
TimeoutError

Home Assistant Version
Beta 6.2

Integration Version
Find this from HACS.

Additional context
Add any other context about the problem here.

Price cap doesn't support setting price cap limits under 1p (such as 0.1, or -3)

What happened?
When trying to set the price cap to under 1p, (such as 0.1p, 0p, or -3p) the value is rejected as being out of range:

Failed to call service number/set_value. Value 0.1 for number.ohme_price_cap is outside valid range 1 - 100

To Reproduce
In the Price Cap field, try to enter any value less than 1

Expected behavior
Tiny and/or negative values should be accepted (matching the behaviour of the Ohme app, which is perfectly happy with this)

Home Assistant Version
Core
2024.4.1
Supervisor
2024.04.0
Operating System
12.1
Frontend
20240404.1

Integration Version
v0.8.0

Additional context
Such small and/or negative price cap values are very useful for the Octopus Agile tariff (enables charging only at free/nearly-free times or times when you will be paid).

Worth noting the integration does seem to support reading values <1 from the Ohme charger if set in the official Ohme app (if you set 0.1p or -1p via the Ohme app, for instance, it will show up correctly in the integration shortly after).

Toggles not updated in Home Assistant when changed in Ohme App

Describe the bug

When you set or unset a toggle option like 'Sleep when inactive' or 'Lock charger buttons' in the Ohme App it is not reflected on the toggles in Home Assistant. Works fine when you set in Home Assistant first and if you then view the Ohme App.

To Reproduce

Edit a toggle in Ohme App and see if the Home Assistant toggles get updated.

Expected behavior

I would expect the toggles in both Home Assistant and Ohme to match each other regardless as to whether set in Home Assistant or Ohme App first.

Screenshots

20231229_175314-COLLAGE

Home Assistant Version

Core 2023.12.4
Supervisor 2023.12.0
Operating System 11.2
Frontend 20231208.2

Integration Version

V.0.2.0

Additional context

Device info
ePod
by Ohme
Firmware: v2.12

Additional sensors for Predbat support

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

I'm dabbling with Predbat (an automation tool that can control your home battery) and there are a few sensors which would be really useful but I'm not sure if it's easily accessible via the API or not so I thought I'd raise this request to see.

Describe the solution you'd like

  • An incrementing sensor which measures the charge added to your car (on the app you can see how many miles are added, is it possible to see that in kWh (for Wallbox and Zappi the sensors are sensor.myenergi_zappi_[0-9a-z]+_charge_added_session and sensor.wallbox_portal_added_energy)
  • SOC % of the car (obviously not all cars are supported but those which are connected might be known to the API)

Describe alternatives you've considered

N/A

Additional context

Here's Predbat if you're wondering what it is! https://github.com/springfall2008/batpred

Improve resume from a max charge

Is your feature request related to a problem? Please describe.
Currently, schedule details are lost when disabling max charge. The resumed charge should have the same schedule as before being paused.

Failed to turn on - session not found in database

When trying to turn on the charger from the switch in the card on the dashboard in HA, the error below is presented and it fails to turn on:

Failed to call service homeassistant/turn_on. Ohme API response error: /v1/chargeSessions/ohmeapaaaaaa/stop, 404; {"timestamp":1704524149903,"status":404,"error":"Not Found","message":"Session with ID ohmeapaaaaaa not found in DB. Ended meanwhile?","path":"/v1/chargeSessions/ohmeapaaaaaa/stop"}

Note that this is when there is no car connected, I was just trying to experiment with changing settings from HA vs in the Ohme app. Also may be relevant that we have been without a car for a while as the old one went back and the new one is yet to arrive. The last charge session available in the Ohme app was 10th December.

(I have changed the last 6 letters of the device ID to aaaaaa just in case).

Thanks,

Jon.

Custom tariff support

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

Ohme doesn't support Octopus Tracker, only their other tariffs, which means that I can't use the price cap feature.

Describe the solution you'd like

The Octopus integration already provides the current rate (octopus_energy_electricity_***_***_current_rate). Would it be possible to have the Ohme integration pull these values at midnight and update the £/kWh value in a custom tariff?

Describe alternatives you've considered

I have tried asking Ohme to add Octopus Tracker to their list of tariffs and they refused.

Octopus cheap rate 30 minute binary sensor

Hi, thanks for this excellent integration. I use the Ohme pro with Intelligent Octopus Go.

What I would like to see is a seperate binary sensor for "if within half hour Octopus intelligent charging slot".

The slots that come through from octopus via ohme start and end on 15 minute boundaries.

However, Octopus bill based on half hour/30 min slots. I.e the MINIMUM slot is 30 minutes and i would like to trigger charging of home batteries for the full half hour not just the 15 min EV charging slot because the 30 minutes is all at cheap rate.

Therefore, I would like a sensor so that if we have a ohme EV slot scheduled between say 19:00 and 19:15 that that "octopus_in_cheap_slot" sensor is true for the full half hour. I.e. 19:00 to 19:30.

Krs

Mark

Slots didn’t update

What happened?
It looks like Ohme wanted to charge my car later on but the slots weren’t refreshed. The slots given were 23:30 to 5:30 but the car charged until 7:27.

IMG_1518
IMG_1517
IMG_1516
IMG_1519

To Reproduce

Plug in as normal

Expected behavior

Slots should update if they change

Log Output

N/A

Home Assistant Version

2024.1.5

Integration Version

0.6.1

Additional context

Energy Page Integration

Great app and like others have mentioned it’s a great way to stop your house battery dumping into the car.

One thing I’m struggling to get set up and not sure if it’s possible is how to show the Ohme charger on the Home Assistant Energy tab. I feel like the components are all there but the only option I see is for the session amount. As I don’t charge everyday that doesn’t work for me.

Is there a solution I’m missing here please?

Thanks!

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.