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
Robo Arm :: Rigging is a rigging addon for Blender that helps animating industrial robotic arms.

Robo Arm :: Rigging Robo Arm :: Rigging is a rigging addon for Blender that helps animating industrial robotic arms. It construct serial links(a kind

2 Nov 18, 2021
3D-printable hexagonal mirror array capable of reflecting sunlight into arbitrary patterns

3D-printable hexagonal mirror array capable of reflecting sunlight into arbitrary patterns

Ben Bartlett 2.3k Dec 30, 2022
Volta: A Virtual Assistant which increases your productivity with time as you use it…

Volta Official Documentation Overview & Purpose Volta: A Virtual Assistant which increases your productivity with time as you use it… Volta, developed

Abeer Joshi 1 Jan 14, 2022
The ABR Control library is a python package for the control and path planning of robotic arms in real or simulated environments.

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

Applied Brain Research 277 Jan 05, 2023
DNP3 Stalker is a project to analyze and interact with DNP3 devices

DNP3 Stalker Purpose DNP3 Stalker is a project to analyze and interact with DNP3

Cutaway Security, LLC. 2 Feb 10, 2022
A simple Python script for toggling Philips Hue Lights by clapping

LightsClap A simple Python script for toggling Philips Hue Lights by clapping Usage pip3 install -r requirements.txt python3 main.py and press the Ent

Flux Industries 2 Nov 16, 2021
Zev es un Bot/Juego RPG de Discord creado en y para aprender Python.

Zev es un Bot/Juego RPG de Discord creado en y para aprender Python.

Julen Smith 3 Jan 12, 2022
This Home Assistant custom component adding support for controlling Midea dehumidifiers on local network.

This custom component for Home Assistant adds support for Midea air conditioner and dehumidifier appliances via the local area network. homeassistant-

Nenad Bogojevic 92 Dec 31, 2022
从零开始打造一个智能家居系统

SweetHome 从零开始打造智能家居系统的尝试,主要的实现有 可以扫码添加设备并控制设备的Android App 可以控制亮灭的灯,并可以设置在Android App连接到指定Wifi后自动亮起 可以控制开关的窗帘,机械结构部分自己设计并3D打印出来 树莓派主控,实现Http请求接口和ZigBe

金榜 5 May 01, 2022
PyTorch implementation of paper "MT-ORL: Multi-Task Occlusion Relationship Learning" (ICCV 2021)

MT-ORL: Multi-Task Occlusion Relationship Learning Official implementation of paper "MT-ORL: Multi-Task Occlusion Relationship Learning" (ICCV 2021) P

Panhe Feng 12 Oct 11, 2022
A set of postprocessing scripts and macro to accelerate the gyroid infill print speed with Klipper

A set of postprocessing scripts and macro to accelerate the gyroid infill print speed with Klipper

Jérôme W. 75 Jan 07, 2023
Iec62056-21-mqtt - Publish DSMR P1 telegrams acquired over IEC62056-21 to MQTT

IEC 62056-21 Publish DSMR P1 telegrams acquired over IEC62056-21 to MQTT. -21 is

Marijn Suijten 1 Jun 05, 2022
Python code written to utilize the Korlan usb2can hardware to send and receive data over the can-bus on a 2008 Nissan 350z

nissan_ecu_hacking Python code written to utilize the Korlan usb2can hardware to send and receive data over the can-bus on a 2008 Nissan 350z My goal

Liam Goss 11 Sep 24, 2022
A DiY holiday project to demonstrate how you can send data from adafruitIO cloud to a balena edge device

holiday-star balena ❤️ adafruitIO Introduction A DiY holiday project to demonstrate how you can send data from adafruitIO cloud to a balena edge devic

Ayan Pahwa 3 Dec 20, 2021
Poupool is an overflow swimming pool control software

Poupool - The swimming pool controller Poupool is a swimming pool control software. It is based on Transitions, Pykka and Paho MQTT. The user interfac

Cyril Jaquier 8 Jul 18, 2022
Yet another automation project because a smart light is more than just on or off.

Automate home Yet another home automation project because a smart light is more than just on or off. Overview When talking about home automation there

Maja Massarini 62 Oct 10, 2022
Add filters (background blur, etc) to your webcam on Linux.

webcam-filters Add filters (background blur, etc) to your webcam on Linux. Video conferencing applications tend to either lack video effects altogethe

Jashandeep Sohi 480 Dec 14, 2022
Turns a compatible Raspberry Pi device into a smart USB drive for PS4/PS5.

PSBerry A WIP project for Raspberry Pi, which turns a compatible RPI device into a smart USB drive for PS4/PS5. Allows for save management of PS4 game

Filip Tomaszewski 2 Jan 15, 2022
ENC28J60 Ethernet chip driver for MicroPython (RP2)

micropy-ENC28J60 ENC28J60 Ethernet chip driver for MicroPython v1.17 (RP2) Rationale ENC28J60 is a popular and cheap module for DIY projects. At the m

11 Nov 16, 2022
Modeling and Simulation of Satellite Servicing Manipulators

Modeling and Simulation of Satellite Servicing Manipulators Final Project for the course ENPM662: Introduction to Robot Modeling (Fall 2021). This pro

Adarsh M 1 Jan 24, 2022