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
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
The main aim of this project is to avoid the accidents in shredding ( Waste Recycling Industry )

shredder-Machine-Hand-Safety The main aim of this project is to avoid the accidents in shredding ( Waste Recycling Industry ) . The Basic function of

Shubham Chaudhari 1 Nov 15, 2021
Tools and documentation to aid in modifying the ADI ADALM Pluto firmware

Pluto firmware modifications This repository contains tools and documentation to aid in modifying the ADI ADALM Pluto firmware. Extraction of the Plut

Daniel Estévez 28 Dec 21, 2022
Alternative firmware for ESP8266 with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at

Alternative firmware for ESP8266/ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability

Theo Arends 59 Dec 26, 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
Home Assistant component to handle key atom

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

18 Dec 21, 2022
A circle of LEDs

This repository contains all the design files, production files and example code for a simple circular LED display.

Pim de Groot 15 Aug 21, 2022
Python para microcontroladores com MicroPyhton

MicroPython - PyBR2021 Python para microcontroladores com MicroPyhton Repositório de exemplos para tutorial "Python para microcontroladores com MicroP

gabriel aragão 1 Oct 18, 2021
Alarm Control Panel component for Zigbee Keypads using action_transaction field

hass_transaction_alarm_panel Alarm Control Panel component for Zigbee Keypads using action_transaction field. Works together with zigbee2mqtt Supporte

Konstantin 4 Jun 09, 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
Real-time Coastal Monitoring at the University of Hawaii at Manoa

Coastal Monitoring at the University of Manoa Source code for Beaglebone/RPi-based data loggers, shore internet gateways, and web server. Software dev

Stanley Lio 7 Dec 07, 2021
FHEM Connector for FHT Heating devices

home-assistant-fht from: https://github.com/Rsclub22 FHEM Connector for FHT Heating devices (connected via FHEM) Requires FHEM to work You can find FH

5 Dec 01, 2022
🐱 Petkit feeder components for HomeAssistant

Petkit for HomeAssistant Installing Download and copy custom_components/xiaomi_miot folder to custom_components folder in your HomeAssistant config fo

62 Dec 29, 2022
The goal of this project is for anyone with an old printer to be able to double-sided printing.

Welcome to PDF-double-side! Hi! I'm 15. I have a old printer so I can't print double-sided outs. The goal of this project is for anyone with an old pr

DejaVu 4 Dec 28, 2021
Count the number of people around you 👨‍👨‍👦 by monitoring wifi signals 📡 .

howmanypeoplearearound Count the number of people around you 👨‍👨‍👦 by monitoring wifi signals 📡 . howmanypeoplearearound calculates the number of

Zack 6.7k Jan 07, 2023
Hook and simulate global mouse events in pure Python

mouse Take full control of your mouse with this small Python library. Hook global events, register hotkeys, simulate mouse movement and clicks, and mu

BoppreH 722 Dec 31, 2022
This repository hosts the code for Stanford Pupper and Stanford Woofer, Raspberry Pi-based quadruped robots that can trot, walk, and jump.

This repository hosts the code for Stanford Pupper and Stanford Woofer, Raspberry Pi-based quadruped robots that can trot, walk, and jump.

Stanford Student Robotics 1.2k Dec 25, 2022
View your medication from Medisafe Cloud in Home Assistant

Medisafe View your medication from Medisafe Cloud in Home Assistant. This integration adds sensors for today's upcoming, taken, skipped, and missed do

Sam Steele 12 Dec 27, 2022
AERO 421: Spacecraft Attitude, Dynamics, and Control Final Project.

AERO - 421 Final Project Redevelopment Spacecraft Attitude, Dynamics, and Control: Simulation to determine and control a satellite's attitude in LEO.

Gagandeep Thapar 3 Dec 16, 2022
LedFx is a network based LED effect controller with support for advanced real-time audio effects

Welcome to LedFx ✨ -Making music come alive! LedFx website: https://ledfx.app/ What is LedFx? What LedFx offers is the ability to take audio input, an

786 Jan 02, 2023