Controle d'un bureau Ikea Idasen via ESPHome

Salut à tous,

J’ai acheté récemment un bureau Ikea IDÅSEN motorisé assis/debout qui peut se contrôler grâce à une application connectée en bluetooth.

Afin de l’intégrer à Home Assistant, je me suis inspiré de projets Github existant ayant reverse engineered l’application et j’ai créé un custom component ESPHome :

Matériel :

  • Un ESP32

Installation :

  • Copier le dossier idasen_desk_controller/ dans le dossier custom_components/ d’ESPHome (à créer si ce n’est pas déjà fait).

  • Configuration à ajouter en renseignant l’adresse mac bluetooth du bureau :

idasen_desk_controller:
    # Renseigner l'adresse mac du bureau
    mac_address: "00:00:00:00:00:00"

# Configuration d'un composant cover permettant de monter / baisser / définir la position
cover:
  - platform: idasen_desk_controller
    name: "Bureau"

sensor:
  - platform: idasen_desk_controller
    desk_height:
      # Hauteur du bureau en cm (0 à 65cm)
      name: "Bureau hauteur"

binary_sensor:
  # Statut de la connexion bluetooth entre l'ESP32 et le bureau
  - platform: idasen_desk_controller
    name: "Bureau connexion bluetooth"
    type: CONNECTION
  # Indicateur permettant de savoir si le bureau est en mouvement
  - platform: idasen_desk_controller
    name: "Bureau en mouvement"
    type: MOVING
  • Lors de la première connexion, il faut presser le bouton d’association du bureau

Home Assistant

Le composant va ajouter à Home Assistant :

  • Une intégration cover permettant de monter / baisser le bureau, stopper le déplacement et définir une position
  • Le statut de la connexion bluetooth
  • La hauteur du bureau en cm (entre 0 et 65cm)
  • Le statut de mouvement du bureau

ha-desk-controller

Bonus

Ajout d’un switch permettant d’alterner entre une position assis / debout :

idasen_desk_controller:
  mac_address: "00:00:00:00:00:00" # À définir

cover:
  - platform: idasen_desk_controller
    id: desk_cover
    name: "Bureau"

sensor:
  - platform: idasen_desk_controller
    desk_height:
      id: desk_height
      name: "Bureau hauteur"

switch:
  - platform: template
    name: "Bureau debout"
    id: desk_stand
    lambda: |-
      return id(desk_height).state > 20;
    turn_on_action:
      - cover.control:
          id: desk_cover
          position: 90% # Position debout à définir
    turn_off_action:
      - cover.control:
          id: desk_cover
          position: 20% # Position assise à définir

Perte de connexion wifi

J’ai eu quelques problèmes de perte de connexion de l’ESP32 au wifi que je semble avoir corriger en activant l’option fast_connect dans la configuration wifi :

wifi:
  ssid: ...
  password: ...
  fast_connect: true

En conclusion

J’utilise ce composant depuis une semaine et, avec ma configuration et mon usage, je n’ai pas rencontré de gros problème. Il se peut que lors d’un déplacement le bureau s’arrête en plein milieu, je pense que c’est lié à une sécurité permettant de stopper le mouvement si un obstacle est rencontré.

Je n’ai pas l’habitude d’écrire du C++ ou du Python donc je suis preneur de tous vos retours.

2 « J'aime »

Merci pour le partage.

1 « J'aime »

Super boulot :heart_eyes:

Merci pour le partage :+1:

1 « J'aime »

Bonsoir,

Désolé de reprendre un vieux poste mais je viens de m’offrir aussi un bureau Idasen.

Je suis allé sur le githup et copier / adapter le code pour l’intégration.

Cependant je n’arrive pas à bien comprendre ou je dois mettre exactement la copie du répertoire idasen_desk_controller

Je suis sur esphome en docker.

Dois-je copier ce répertoire dans le volume monté du container ou dans le projet lui-même?

Merci beaucoup pour votre aide

Ben

Bonjour,

Je reviens poster un message pour dire que j’ai trouvé le moyen que cela fonctionne en lisant simplement la doc du GitHub de ce projet.

Merci pour tout ce travail

Ben