Electrolux Pure i9 robot vacuum integration for Home Assistant.

Overview

Home Assistant Pure i9

CircleCI hacs_badge

This repository integrates your Electrolux Pure i9 robot vacuum with the smart home platform Home Assistant. The integration communicates with your Pure i9 using the cloud.

Credits to:

  • purei9_unofficial - A python library for interacting with the Pure i9.
  • homeassistant_electrolux_purei9 - For creating a Pure i9 integration that communicates with your robot vacuum locally inside your network, and for acting as a starting point to write this integration.

Disclaimer

Me or this repository is in no way affiliated with Electrolux. This is purely a fan project.

Installation

Install using Home Assistant Community Store (HACS). Follow these steps:

  1. Add https://github.com/Ekman/home-assistant-pure-i9 as a custom repository in HACS
  2. Install Pure i9 using HACS
  3. Reboot Home Assistant

Configuration

Add this to your Home Assistant configuration:

vacuum:
  - platform: purei9
    email: [email protected]
    password: example

Versioning

This project complies with Semantic Versioning.

Changelog

For a complete list of changes, and how to migrate between major versions, see releases page.

Comments
  • Can't login on my Electrolux account

    Can't login on my Electrolux account

    I am trying to login on my Electrolux account from this integration, but I am unable to. I even removed any especial characters from my password to prevent issues with unescaped characters, but no luck. I logged in and out from the Electrolux app several times just to make sure my password is correct. This is the log message I am getting:

    Logger: purei9_unofficial.util
    Source: /usr/local/lib/python3.10/site-packages/purei9_unofficial/util.py:28
    First occurred: 23:37:58 (6 occurrences)
    Last logged: 23:49:57
    
    Giving up due to no left retries. Wrong credentials?
    

    Any suggestions on how can I dig for more information about this issue?

    opened by allan-null 8
  • Proposal for enhanced features

    Proposal for enhanced features

    Thank you for the good work creating this integration. Looking at this integration after installation and Vacuum card I couldn't make the following to work, might just be stupid me but if these are not implemented please do consider the following:

    • Cleaning area
    • Cleaning time
    • Maps/zones

    Looking at the Android Wellbeing app and this issue, the data probably is available via the API.

    discussion 
    opened by GitPetri 7
  • Switch to v2 (Wellbeing) API

    Switch to v2 (Wellbeing) API

    Since the purei app was shut down, i guess it would also a good idea for you to switch to the v2 API (which uses the API the Wellbeeing app uses). Since i don't count on the old API being available for a long time in the future, i switched my efforts to the newer one.

    I added an overview which API has which functionality implemented currently: https://github.com/Phype/purei9_unofficial/blob/master/functions.md

    The interface should be exactly the same, just using another class, but there may be some bugs. Also, the Authentication is a bit more complicated - while you can login via the same username and password to get an access token, the API doesn't like it when you do it too often, so i would propose you try to save the accesstoken and reuse it.

    enhancement priority qa 
    opened by Phype 3
  • Handle unavailable robots on boot

    Handle unavailable robots on boot

    It seems that robots which are not connected to the cloud when home assistant starts are not picked up properly.

    Today I had to restart home assistant to change the state of my robot from unavailable to docked because it wasn't connected to wifi when home assistant was started.

    I'll try to debug this and provide better information.

    bug 
    opened by Phype 2
  • Switch to v2 (Wellbeing) API

    Switch to v2 (Wellbeing) API

    See https://github.com/Ekman/home-assistant-pure-i9/issues/22 I just tested this, it seems to work, but i haven't let it run long enough to test it properly. One thing i'm unsure about is how often setup_platform() is called - When this only happens when home assistant is restarted, this should be fine, otherwise we should store client.gettoken() somewhere and pass it to the constructor.

    opened by Phype 2
  • Request an official Pure i9 API

    Request an official Pure i9 API

    Thanks to the great work of @Phype and his library purei9_unofficial, this integration is able to communicate with the Pure i9. It's highly appreciated work!

    Even though the code works great, the challenge with using an unofficial API is that the integration can stop working at any time for no reason at all. Therefore, head over to the official Pure i9 community forum and vote for an official API. If this was provided to me then this integration would be able to reliably communicate with the Pure i9, with a significantly less risk of breaking.

    help wanted 
    opened by Ekman 2
  • Local mode

    Local mode

    I just tested something: When you turn the robot around, you can set the localpw for the local connection without breaking the connection to the cloud. This means that it is pretty easy to make use of the local mode of purei9_unofficial. Users have just turn the robot around and run a command (Maybe this cloud even be included in the home assistant intergration).

    As the official app isn't using the local interface anymore anyway, i don't think it breaks anything if we set the localpw to another value as it was before.

    So i though maybe it makes sense to kind of include this in the integration. Something like supporting both modes of controlling the robot, depending on what it currently available or something.

    What do you think?

    opened by Phype 1
  • View and set eco/power mode (#7)

    View and set eco/power mode (#7)

    I copied most code from https://github.com/And3rsL/Deebot-for-Home-Assistant/blob/master/custom_components/deebot/vacuum.py since i'm not familiar with how home assistant handles it's code, but it seems to work.

    When switched power modes in the home assistant UI, it takes a while once the displayed state actually changes, not sure if that is normal. Otherwise it works :)

    opened by Phype 1
  • Version 1.0.0

    Version 1.0.0

    The focus right now is testing the code and making whatever minor adjustments needed. I want to bring the integration to version 1.0.0 as soon as possibe. I'm not personally a huge fan of software that stays in pre-release stages indefinitely. Note that I'll do whatever I can to not add any breaking changes.

    I appreciate any feedback and suggestions to new features. I'll look at them as soon as I've bumped the version to 1.0.0.

    enhancement 
    opened by Ekman 1
  • Add manual for the integration. Update dustbin states.

    Add manual for the integration. Update dustbin states.

    Add manual for the integration. Update dustbin states with new names. Keep the naming consistent with the rest of the ingration (i.e. fan speed), make it all uppercase.

    opened by Ekman 0
  • Polish to power modes

    Polish to power modes

    Set names for power modes with accordance to the app. I.e. for older Purei9s they should have "Eco" and "Power" mode available. For newer, "Quiet", "Smart" and "Power".

    opened by Ekman 0
  • Add cleaning start, end and duration attributes

    Add cleaning start, end and duration attributes

    Add attributes to the vacuum, such as last cleaning. There are some base attributes that are defined in Home Assistant core. Start with them and work from there. Search _ATTR in entity and vacuum.

    Originally suggested in https://github.com/Ekman/home-assistant-pure-i9/issues/4.

    enhancement 
    opened by Ekman 9
Releases(1.3.1)
  • 1.3.1(Dec 22, 2022)

    • Update data using a coordinator.
      • A coordinator is used to update devices that have multiple entities. Instead of each entity updating itself then the coordinator updates and distributes data to the entities.
    • Remove Electrolux from the integration name for consistency with the rest of the integration.
      • The name will only update for new installs, but it does not matter for existing installs.
    • Bugfix, reporting dustbin error messages.

    Reminder: Please read the release notes for version 1.3.0.

    Source code(tar.gz)
    Source code(zip)
  • 1.3.0(Dec 16, 2022)

    • Add the ability to configure the integration using the UI instead.
      • This is now the recommended way of configuring the integration.
      • Configuration using configuration.yml is now deprecated.

    To upgrade the way of configuration:

    1. Delete the integration from configuration.yml.
    2. Restart Home Assistant.
    3. Follow the steps as described in the configuration section in the readme.

    NOTE! Entity IDs are still generated similarly so automation will not break.


    Why are you changing the way to configure the integration? The integration only supports creating one entity per vacuum. In order to support eg. showing floor maps, then the integration needs to create multiple entities per vacuum and the correct way to do that is to create one device per vacuum. In turn, one device can contain multiple entities. This new way of configuration supports devices.
    What if I don't upgrade to the new way of configuration? Configuring using configuration.yml will still work for the foreseeable future so you don't need to worry about anything breaking. If version 2.0 of the integration is released, then the deprecated code will be cleaned up. This will not happen for a long time, possibly never.
    Source code(tar.gz)
    Source code(zip)
  • 1.2.2(Jun 25, 2022)

  • 1.2.1(Mar 22, 2022)

  • 1.2.0(Dec 4, 2021)

  • 1.1.1(Nov 29, 2021)

  • 1.1.0(Nov 28, 2021)

  • 1.0.4(Nov 25, 2021)

  • 1.0.3(Oct 25, 2021)

  • 1.0.2(Oct 17, 2021)

  • 1.0.1(Sep 2, 2021)

    • There is a delay between sending a command and then polling so the next state will appear incorrect. After sending a command, assume what the next state will be.
    • Fixes and enhancements
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Sep 1, 2021)

    The code is stable and ready to be called version 1. This initial release focuses on the commands such as being able to start, stop, pause/resume and return to base, i.e. the basic stuff needed in order to call it "working".

    Source code(tar.gz)
    Source code(zip)
  • 0.0.3(Aug 31, 2021)

    • Support Home Assistants definition of on/off
    • The robot will report sleeping when stopped or fully charged. The latter should now report a docked state and the former an idle state
    Source code(tar.gz)
    Source code(zip)
  • 0.0.2(Aug 29, 2021)

  • 0.0.1(Aug 28, 2021)

    The integration is working!

    I'm using and monitoring it in order to find potential issues and the last bit of polish. As soon as I'm happy with the results I will be bumping the version to 1.0.0.

    Source code(tar.gz)
    Source code(zip)
Owner
Niklas Ekman
Niklas Ekman
Raspberry Pi Pico and LoRaWAN from CircuitPython

Raspberry Pi Pico and LoRaWAN from CircuitPython Enable LoRaWAN communications on your Raspberry Pi Pico or any RP2040-based board using CircuitPython

Alasdair Allan 15 Oct 08, 2022
A versatile program that uses the raspberry pi camera and provides it as a service

PiCameleon Is a daemon program meant to provide the RaspberryPi Camera as a service while running according to a configuration.

André Esser 52 Oct 16, 2022
Brogrammer-keyboard - FIrmware for the Brogrammer Keyboard v1.0

Brogrammer Keyboard Firmware The package contains the firmware that runs on the Brogrammer Keyboard v1.0 See https://imgur.com/a/oY5QZ14 This keyboard

Devin Hartleben 1 Apr 21, 2022
Интеграция Home Assistant с ЛК "Интер РАО"

ЕЛК ЖКХ «Интер РАО» для Home Assistant Предоставление информации о текущем состоянии ваших аккаунтов в ЕЛК ЖКХ. Введение @ TODO @ Установка Посредство

Alexander Ryazanov 27 Nov 05, 2022
Raspberry Pi Power Button - Wake/Power Off/Restart(Double Press)

Control Raspberry pi with physically attached button. Wake, Power Off, and Restart (Double Press) . Python3 script runs as a service with easy installation.

Stas Yakobov 16 Oct 22, 2022
Beam designs for infinite Z 3D printers

A 3D printed beam that is as stiff as steel A while ago Naomi Wu 机械妖姬 very kindly sent us one of Creality's infinite-Z belt printers. Lots of people h

RepRap Ltd 105 Oct 22, 2022
Sticklog2heatmap - Draw a heatmap of RC sticks from OpenTX logs or USB HID device

sticklog2heatmap Draw a heatmap of RC sticks from OpenTX logs or USB HID device

2 Feb 02, 2022
EuroPi: A reprogrammable Eurorack project based on the Raspberry Pi Pico

EuroPi The EuroPi is a fully user reprogrammable module based on the Raspberry Pi Pico, which allows users to process inputs and controls to produce o

Allen Synthesis 218 Jan 01, 2023
Volkswagen ID component for Home Assistant

Volkswagen ID component for Home Assistant This folder contains both a generic Python 3 library for the Volkswagen ID API and a component for Home Ass

55 Jan 07, 2023
Get the AltAz coordinates for a given object using astropy and output on a OLED screen.

Star Coordinates Get the AltAz coordinates for a given object using astropy and output on a OLED screen. As a very very newcomer to the astronomy scen

Craig Cmehil 1 Jan 31, 2022
Nordpool_diff custom integration for Home Assistant

nordpool_diff custom integration for Home Assistant Requires https://github.com/custom-components/nordpool Applies non-causal FIR differentiator1 to N

Joonas Pulakka 45 Dec 23, 2022
Home Assistant custom integration for e-distribución

e-Distribución is an energy distribution company that covers most of South Spain area. If you live in this area, you probably are able to register into their website to get some information about you

VMG 17 Sep 07, 2022
Python application, displaying currently played track from Spotify on OLED display connected via I2C

RaspberryPi Spotify OLED Display This application will display currently played track on SSD1306 OLED display connected to RaspberryPi. Displayed stuf

Wojciech Olech 2 Dec 30, 2021
Windhager myComfort custom component for Home Assistant

Windhager myComfort custom component for Home Assistant

5 Apr 27, 2022
How to configure IOMMU device for nested Proxmox hypervisor (PVE) VM - PCIe Passthrough

Configuring PCIe Passthrough for Nested Virtualization on Proxmox Summary: If you are running bare-metal L0 (level 0) Proxmox (PVE) hypervisor with ne

Travis Johnson 6 Aug 30, 2022
A Home Assistant integration for Solaredge inverters

A Home Assistant integration for Solaredge inverters. Supports multiple inverters chained through RS485.

Seth 50 Dec 23, 2022
A script and GUI for controlling stepper motors from an arduino

A script and GUI for controlling stepper motors from an arduino (nema 23 in my case but should work for others in general)

Pip 2 Aug 01, 2022
Home Assistant custom components MPK-Lodz

MPK Łódź sensor This sensor uses unofficial API provided by MPK Łódź. Configuration options Key Type Required Default Description name string False MP

Piotr Machowski 3 Nov 01, 2022
uOTA - OTA updater for MicroPython

Update your device firmware written in MicroPython over the air. Suitable for private and/or larger projects with many files.

Martin Komon 25 Dec 19, 2022
This is a Virtual Keyboard which is simple yet effective to use.

Virtual-Keyboard This is a Virtual KeyBoard which can track finger movements and lets you type anywhere ranging from notepad to even web browsers. It

Jehan Patel 3 Oct 01, 2021