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
Technical Answers to Real-World Problems. Evolution of Watering Manually to Watering Automatically.

Automatic Watering System using Soil Moisture Sensor and RTC Timer with Arduino Technical Answers to Real-World Problems Know the plant, Grow the plan

NelakurthiSudheer 3 Jan 03, 2022
Simple Microservice to control 433Mhz wireless sockets over HTTP, e.g. on a RaspberryPi

REST-light is a simple microservice to control 433Mhz wireless sockets over HTTP, e.g. on a RaspberryPi. The main usage is an easy integration of 433M

Pascal Höhnel 1 Jan 09, 2022
Control DJI Tello with Raspberry Pi and PS4 Controller

Control-DJI-Tello-with-Raspberry-Pi-and-PS4-Controller Demo of this project see

MohammadReza Sharifi 24 Aug 11, 2022
Authentication provider using Synology DSM users for Home Assistant

Authentication provider using Synology DSM users for Home Assistant The Synology authentication provider lets you authenticate using the users in your

Sam Debruyn 5 Oct 06, 2022
A python file which I wrote to allow the Dorna Robots API to draw an Image on a 3D plane

Dorna-Robotics-Internship Code In the directory "Code" is a python file which I wrote to allow the Dorna Robots API to draw an Image on a 3D plane. I

Stephen Otto 2 Dec 06, 2021
3d printable macropad

Pico Mpad A 3D printable macropad for automating frequently repeated actions. Hardware To build this project you need access to a 3d printer. The mode

Dmytro Panin 94 Jan 07, 2023
Transform a Raspberry Pi into a network diagnostic machine.

EtherView Last updated jan 30, 2022. Welcome to the EtherView project! This is a project to transform a RaspberryPi into a portable network diagnostic

1 Jan 30, 2022
Open-Source board for converting RaspberryPI to Brain-computer interface

The easiest way to the neuroscience world with the shield for RaspberryPi - PIEEG (website). Open-source. Crowdsupply This project is the result of se

Ildaron 436 Jan 01, 2023
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
hardware design of the 250mm drone

hardware design of the 250mm drone

ZJU FAST Lab 645 Dec 25, 2022
A Python script to monitor the latest block on an LCD.

PiHole-Monitoring A Python script to monitor the latest block on a lcd display. The first number represents the dns queries from the last 24h, the sec

Maxi 4 Dec 05, 2022
This OctoPrint plugin will make the initial connection to 3D Hub a breeze

3D Hub Connector This OctoPrint plugin will make the initial connection to 3D Hub a breeze. In future it will help in setting up a tunnel connection a

3D Hub 2 Aug 03, 2022
Easyeda2kicad.py - Convert any LCSC components (including EasyEDA) to KiCad library

easyeda2kicad.py A Python script that convert any electronic components from LCSC or EasyEDA to a Kicad library Installation git clone https://github.

uPesy Electronics 150 Jan 06, 2023
DIY split-flap display

The goal is to make a low-cost display that's easy to fabricate at home in small/single quantities (e.g. custom materials can be ordered from Ponoko or similar, and other hardware is generally availa

Scott Bezek 2.5k Jan 05, 2023
This Home Assistant custom component adding support for controlling Midea dehumidifiers on local network.

This custom component for Home assistant adds support for Midea dehumidifier appliances via the local area network. homeassistant-midea-dehumidifier-l

Nenad Bogojevic 91 Dec 28, 2022
Controlling fireworks with micropython

Controlling-fireworks-with-micropython How the code works line 1-4 from machine

Montso Mokake 1 Jan 08, 2022
Workshop for student hackathons focused on IoT dev

Scenario: The Mutt Matcher (IoT version) According to the World Health Organization there are more than 200 million stray dogs worldwide. The American

Microsoft 15 Aug 10, 2022
Activate Numpad inside the touchpad with top right corner switch or F8 key

This is a python service which enables switching between numpad and touchpad for the Asus UX433. It may work for other models.

Mohamed Badaoui 230 Jan 08, 2023
Designed a system that can efficiently sort recyclables and transfer them to corresponding bins using Python, a Raspberry Pi, and Quanser Labs.

System for Sorting and Recycling Containers - Project 3 Table of contents Overview The challenge Screenshot My process Built with Code snippets What I

Mit Patel 2 Dec 02, 2022
♟️ QR Code display for P4wnP1 (SSH, VNC, any text / URL)

♟️ Display QR Codes on P4wnP1 (p4wnsolo-qr) 🟢 QR Code display for P4wnP1 w/OLED (SSH, VNC, P4wnP1 WebGUI, any text / URL / exfiltrated data) Note: Th

PawnSolo 4 Dec 19, 2022