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
iot-dashboard: Fully integrated architecture platform with a dashboard for Logistics Monitoring, Internet of Things.

Fully integrated architecture platform with a dashboard for Logistics Monitoring, Internet of Things. Written in Python. Flask applicati

2 Jul 29, 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
Python script for printing to the Hanshow price-tag

This repository contains Python code for talking to the ATC_TLSR_Paper open-source firmware for the Hanshow e-paper pricetag. Installation # Clone the

12 Oct 06, 2022
Final-project-robokeeper created by GitHub Classroom

RoboKeeper! Jonny Bosnich, Joshua Cho, Lio Liang, Marco Morales, Cody Nichoson Demonstration Videos Grabbing the paddle: https://youtu.be/N0HPvFNHrTw

Cody Nichoson 1 Dec 12, 2021
Open source home automation that puts local control and privacy first.

Home Assistant Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiast

Home Assistant 57k Jan 01, 2023
A raspberrypi tools for python

raspberrypi-tools how to install: first clone this project: git clone https://github.com/Ardumine/rpi-tools.git then go to the folder cd rpi-tools and

1 Jan 04, 2022
Designed and coded a password manager in Python with Arduino integration

Designed and coded a password manager in Python with Arduino integration. The Program uses a master user to login, and stores account data such as usernames and passwords to the master user. While lo

Noah Colbourne 1 Jan 16, 2022
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
This application works with serial communication. Use a simple gui to send and receive serial data from arduino and control leds and motor direction

This application works with serial communication. Use a simple gui to send and receive serial data from arduino and control leds and motor direction

ThyagoKZKR 2 Jul 18, 2022
从零开始打造一个智能家居系统

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

金榜 5 May 01, 2022
ESP32 recording button presses, and serving webpage that graphs the numbers over time.

ESP32-IoT-button-graph-test ESP32 recording button presses, and serving webpage via webSockets in order to graph the responses. The objective was to t

f-caro 1 Nov 30, 2021
Micropython-wifimanager-esp8266 - Simple Wifi Manager for ESP8266 using MicroPython

micropython-wifimanager-esp8266 Simple Wifi Manager for ESP8266 using MicroPytho

Abhinuv Nitin Pitale 1 Jan 04, 2022
智能无人机路径规划仿真系统是一个具有操作控制精细、平台整合性强、全方向模型建立与应用自动化特点的软件

Drone智能无人机路径规划仿真系统是一个具有操作控制精细、平台整合性强、全方向模型建立与应用自动化特点的软件。它以A、B两国在C区开展无人机战争为背景,该系统的核心功能是通过仿真平台规划无人机航线,并进行验证输出,数据可导入真实无人机,使其按照规定路线精准抵达战场任一位置,支持多人多设备编队联合行动。

wwy 349 Jan 03, 2023
Port of Uxn to digital hardware in the Logisim simulator

Uxn-Logisim Implements the Uxn instruction set in digital hardware. Very WIP. Contents cpu.circ - The Logisim file microcode.mc - Microcode source fil

DeltaF1 11 Mar 27, 2022
SPI driven CircuitPython driver for PCA9745B constant current LED driver.

Introduction THIS IS VERY MUCH ALPHA AND IN ACTIVE DEVELOPMENT. THINGS WILL BREAK! THIS MAY ALSO BREAK YOUR THINGS! SPI driven CircuitPython driver fo

Andrew Ferguson 1 Jan 14, 2022
A rubiks cube timer using a distance sensor and a raspberry pi 4, and possibly the pi pico to reduce size and cost.

distance sensor cube timer A rubiks cube timer using a distance sensor and a raspberry pi 4, and possibly the pi pico to reduce size and cost. How to

3 Feb 21, 2022
Christmasvillage-rpi - Raspberry Pi relay controller for ChristmasVillage.io

ChristmasVillage.io Relay Controller Links ChristmasVillage.io - Live Stream & Controls Youtube Instagram About This repository controls the light rel

Grant Windes 2 Feb 15, 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
Examples to accompany the

Examples to accompany the "Raspberry Pi Pico Python SDK" book published by Raspberry Pi Trading, which forms part of the technical documentation in support of Raspberry Pi Pico and the MicroPython po

Raspberry Pi 589 Jan 08, 2023
Python script: Enphase Envoy mqtt json for Home Assistant

A Python script that takes a real time stream from Enphase Envoy and publishes to a mqtt broker. This can then be used within Home Assistant or for other applications. The data updates at least once

29 Dec 27, 2022