Nouveau Plugin Dreame : recherche des testeurs

Bonjour à tous ! Je suis ravi de vous présenter mon plugin Dreame, qui est une solution pratique pour contrôler la plupart des aspirateurs robots de la marque Dreame.

Le but de ce poste est d’obtenir un maximum de testeurs pour pouvoir le passer en version beta, voire stable, rapidement. Si votre aspirateur robot Dreame fonctionne avec l’application mobile Xiaomi Home, mon plugin Dreame vous permettra de contrôler votre aspirateur robot Dreame avec une interface conviviale et intuitive.

Actuellement, les fonctionnalités suivantes sont implantées dans le plugin :

  • État de la batterie du robot
  • Statut actuel du robot
  • État du filtre
  • État de la brosse
  • Démarrer le robot
  • Arrêter le robot
  • Retour à la maison
  • Modifier la puissance d’aspiration
  • Cherche moi

J’ai conçu ce plugin pour offrir une expérience d’utilisation satisfaisante chez de nombreux utilisateurs. Cependant, je suis conscient que certaines dépendances peuvent être difficiles à installer, mais je travaille activement pour résoudre ce problème.

Si vous êtes intéressé par le plugin Dreame et que vous souhaitez participer à son développement, n’hésitez pas à me contacter en envoyant un message direct ou en me contactant sur Discord (Julien#1445) pour obtenir des informations supplémentaires.

Je suis convaincu que cette solution est un excellent choix pour les propriétaires d’aspirateurs robots Dreame qui cherchent à optimiser leur expérience de nettoyage. Merci de votre intérêt pour mon plugin Dreame, et j’ai hâte de vous aider à l’intégrer à votre installation Jeedom !

Sondage : Avez-vous de l’intérêt pour ce plugin ?

  • Non, je n’ai pas le matériel pour
  • Non, j’ai le matériel mais je ne veux pas intégrer mon robot sur Jeedom
  • Non, je préfère une solution DIY (ex avec script)
  • Oui, il m’intéresse mais quand il sera stable
  • Oui, ça m’intéresse
0 votant
2 « J'aime »

Si tu as du sponsoring par Dreame, je dis pas non pour que tu m’envois, je serais un bon testeur :smiley:
merci Julien :rofl:

En vrai je vais prendre un Dreame mais version balai dans les prochains mois, donc pas trop d’intérêt ( et pas sûr que ça soit connecté :p)

bon courage pour la suite du plugin :wink:

Mdr non je ne suis pas sponsorisé par Dreame désolé :rofl:

Hello,
Bonne nouvelle pour le plugin qui passe maintenant en beta.
Je l’ai mis directement sur le market pour plus de simplicité pour vous.

Pensez à autoriser les plugins en beta pour pouvoir y acceder.

Je vous invite à désinstaller l’apha pour passer sur la beta du market.

PS : L’installation des dépendances est maintenant fonctionnelle !

N’hésitez pas à me faire un retour au besoin !

Bonjour,
Merci pour ce plugin et voici mon premier retour :

  • Installation des dépendances très longue, plus de 16 minutes (Pourtant je tourne avec un Odroid N2+ qui d’habitude est assez réactif), mais installation des dépendances ok
  • Après recherche automatique, j’ai tous mes appareils sur Xiaomi Home qui remontent en plus de l’aspirateur (caméra, ventilateur, routeur)

Sinon les informations de l’aspirateur semblent Ok…
Je regarde un peu plus le plugin…

1 « J'aime »

Hello !
Merci pour ton retour.
En effet je n’ai pas encore filtré les aspirateurs robots uniquement. C’est dans ma todo. J’essaie de faire ça au plus vite.
Pour les dependances très longue, ça dépend vraiment des utilisateurs, tu es sous quelle version ? Des utilisateurs mettent 2 minutes d’autres 15-20…
J’essaie de trouver une solution à ce soucis, je marche sur des oeufs avec l’installation des dépendances (mini pythonn3.8, rust 1.48, beaucoup de dépendances…)

Je pense bien qu’il y aura des corrections et modifications à venir, c’est une bêta :wink: , le but, c’est que l’on remonte un maximum d’informations pour t’aider à faire évoluer au mieux ce plugin.
Voici ma configuration :

Re,
Oui c’est le but d’une beta :muscle:
Le soucis avec les ajouts d’équipements qui ne sont pas aspirateur robot est réglé.
Je t’invite à reprendre la mise a jour beta qui vient de tomber.
Il va falloir supprimer manuellement tes équipements avant de les re-decouvrir.
Merci pour le retour de ta config.

J’ai supprimé manuellement tous les composants sauf l’aspirateur, fait la mise à jour du plugin, puis lancé la recherche automatique et j’ai pas de nouveaux composants détectés, donc c’est OK. :slightly_smiling_face:
Par contre j’ai essayé de supprimer l’aspirateur pour faire comme si je démarrais pour la première fois avec le plugin, et quand je lance la recherche automatique, je n’ai plus l’aspirateur qui remonte, toujours aucun composants trouvé… :slightly_frowning_face:

Oups un D majuscule au lieu d’un d minuscule. Je viens de fixer ça. Désolé !

Correction OK, 1 aspirateur trouvé lors de la recherche automatique :+1:

1 « J'aime »

Hello,
Content que ca soit réglé.
Update ce jour : Certains utilisateurs ont des problèmes lors de la détection des appareils (retour nulle), une anomalie a été constatée et réglée. Il s’agit d’un soucis lors de l’installation d’une dépendance (cryptodome) qui dans certains cas ne marchait pas.

J’ai aussi retour d’un soucis sur l’état des brosses, je suis en train de chercher une solution, le soucis semble provenir de la lib (retour de l’état de la brosse latérale sous le nom de la brosse principale et plus de retour de la brosse latérale), je vous tiens au courant !

Bonne journée

Bonjour à vous et merci pour l’initative du plugin !! :slight_smile:
j’avais installer la plugin Dreame sur Jeedom en v4.3.15 ; j’avais réussi à remonter et detecter mon W10

j’ai du faire une reinstalle à neuf dernièrement et charger mon backup et faite toutes les mise à jour avec la dernière version de jeedom v4.3.17

cette fois je n’ai plus la main dessus, j’ai tenté reinstall ; desinstall reinstall du plugin
suppression du robot, il ne le detecte plus même en changeant les serveurs

si je change le serveur pour Germany et que je retrourne dans configuration n’est pas pris en compte et revient sur default

mon log Dreame_packages

+ echo '*******************Begin of package installation******************'
*******************Begin of package installation******************
+ touch /tmp/jeedom_install_in_progress_dreame
+ echo 1
+ echo 2
+ sudo chmod +x /var/www/html/core/class/../../plugins/dreame/resources/pre-install.sh
+ sudo /var/www/html/core/class/../../plugins/dreame/resources/pre-install.sh
Launch pre-install of dreame dependency

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Reading package lists...
Building dependency tree...
Reading state information...
Package 'rustc' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Reading package lists...
Building dependency tree...
Reading state information...
Package 'cargo' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Installing rustup
info: downloading installer
warning: it looks like you have an existing installation of Rust at:
warning: /usr/bin
warning: rustup should not be installed alongside Rust. Please uninstall your existing Rust first.
warning: Otherwise you may have confusion unless you are careful with your PATH
warning: If you are sure that you want both rustup and your already installed Rust
warning: then please reply `y' or `yes' or set RUSTUP_INIT_SKIP_PATH_CHECK to yes
warning: or pass `-y' to ignore all ignorable checks.
error: cannot install while Rust is installed
warning: continuing (because the -y flag is set and the error is ignorable)
info: profile set to 'default'
info: default host triple is armv7-unknown-linux-gnueabihf
warning: Updating existing toolchain, profile choice will be ignored
info: syncing channel updates for 'stable-armv7-unknown-linux-gnueabihf'
info: default toolchain set to 'stable-armv7-unknown-linux-gnueabihf'

  stable-armv7-unknown-linux-gnueabihf unchanged - rustc 1.68.2 (9eb3afe9e 2023-03-27)


Rust is installed now. Great!

To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH
environment variable. This has not been done automatically.

To configure your current shell, run:
source "$HOME/.cargo/env"
Updating rustup to version 1.48.0
/var/www/html/core/class/../../plugins/dreame/resources/pre-install.sh: line 29: rustup: command not found
ln: failed to create symbolic link '/usr/bin/rustc': File exists
ln: failed to create symbolic link '/usr/bin/cargo': File exists
Setting executable permissions for rustc and cargo
Installing python-miio from git master branch
Looking in links: /tmp/tmpagx1tkxd
Requirement already satisfied: setuptools in /usr/local/lib/python3.8/site-packages (67.6.1)
Requirement already satisfied: pip in /usr/local/lib/python3.8/site-packages (23.0.1)
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: pip in /usr/local/lib/python3.8/site-packages (23.0.1)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting git+https://github.com/rytilahti/python-miio.git@master
  Cloning https://github.com/rytilahti/python-miio.git (to revision master) to /tmp/pip-req-build-vfps0ifd
  Running command git clone --filter=blob:none --quiet https://github.com/rytilahti/python-miio.git /tmp/pip-req-build-vfps0ifd
  Resolved https://github.com/rytilahti/python-miio.git to commit 788df486a5d87008664570972d2f665a0a8705bb
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Requirement already satisfied: PyYAML<7,>=5 in /usr/local/lib/python3.8/site-packages (from python-miio==0.6.0.dev0) (6.0)
Requirement already satisfied: construct<3.0.0,>=2.10.56 in /usr/local/lib/python3.8/site-packages (from python-miio==0.6.0.dev0) (2.10.68)
Requirement already satisfied: pytz in /usr/local/lib/python3.8/site-packages (from python-miio==0.6.0.dev0) (2023.3)
Requirement already satisfied: pydantic in /usr/local/lib/python3.8/site-packages (from python-miio==0.6.0.dev0) (1.10.7)
Requirement already satisfied: zeroconf<1,>=0 in /usr/local/lib/python3.8/site-packages (from python-miio==0.6.0.dev0) (0.56.0)
Requirement already satisfied: tqdm<5,>=4 in /usr/local/lib/python3.8/site-packages (from python-miio==0.6.0.dev0) (4.65.0)
Requirement already satisfied: cryptography>=35 in /usr/local/lib/python3.8/site-packages (from python-miio==0.6.0.dev0) (40.0.1)
Requirement already satisfied: appdirs<2,>=1 in /usr/local/lib/python3.8/site-packages (from python-miio==0.6.0.dev0) (1.4.4)
Requirement already satisfied: defusedxml<1,>=0 in /usr/local/lib/python3.8/site-packages (from python-miio==0.6.0.dev0) (0.7.1)
Requirement already satisfied: click>=8 in /usr/local/lib/python3.8/site-packages (from python-miio==0.6.0.dev0) (8.1.3)
Requirement already satisfied: attrs in /usr/local/lib/python3.8/site-packages (from python-miio==0.6.0.dev0) (22.2.0)
Requirement already satisfied: micloud>=0.6 in /usr/local/lib/python3.8/site-packages (from python-miio==0.6.0.dev0) (0.6)
Requirement already satisfied: croniter>=1 in /usr/local/lib/python3.8/site-packages (from python-miio==0.6.0.dev0) (1.3.10)
Requirement already satisfied: python-dateutil in /usr/local/lib/python3.8/site-packages (from croniter>=1->python-miio==0.6.0.dev0) (2.8.2)
Requirement already satisfied: cffi>=1.12 in /usr/local/lib/python3.8/site-packages (from cryptography>=35->python-miio==0.6.0.dev0) (1.15.1)
Requirement already satisfied: tzlocal in /usr/local/lib/python3.8/site-packages (from micloud>=0.6->python-miio==0.6.0.dev0) (4.3)
Requirement already satisfied: pycryptodome in /usr/local/lib/python3.8/site-packages (from micloud>=0.6->python-miio==0.6.0.dev0) (3.17)
Requirement already satisfied: requests in /usr/local/lib/python3.8/site-packages (from micloud>=0.6->python-miio==0.6.0.dev0) (2.28.2)
Requirement already satisfied: ifaddr>=0.1.7 in /usr/local/lib/python3.8/site-packages (from zeroconf<1,>=0->python-miio==0.6.0.dev0) (0.2.0)
Requirement already satisfied: async-timeout>=3.0.0 in /usr/local/lib/python3.8/site-packages (from zeroconf<1,>=0->python-miio==0.6.0.dev0) (4.0.2)
Requirement already satisfied: typing-extensions>=4.2.0 in /usr/local/lib/python3.8/site-packages (from pydantic->python-miio==0.6.0.dev0) (4.5.0)
Requirement already satisfied: pycparser in /usr/local/lib/python3.8/site-packages (from cffi>=1.12->cryptography>=35->python-miio==0.6.0.dev0) (2.21)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.8/site-packages (from python-dateutil->croniter>=1->python-miio==0.6.0.dev0) (1.16.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.8/site-packages (from requests->micloud>=0.6->python-miio==0.6.0.dev0) (3.1.0)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/site-packages (from requests->micloud>=0.6->python-miio==0.6.0.dev0) (1.26.15)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/site-packages (from requests->micloud>=0.6->python-miio==0.6.0.dev0) (2022.12.7)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.8/site-packages (from requests->micloud>=0.6->python-miio==0.6.0.dev0) (3.4)
Requirement already satisfied: backports.zoneinfo in /usr/local/lib/python3.8/site-packages (from tzlocal->micloud>=0.6->python-miio==0.6.0.dev0) (0.2.1)
Requirement already satisfied: pytz-deprecation-shim in /usr/local/lib/python3.8/site-packages (from tzlocal->micloud>=0.6->python-miio==0.6.0.dev0) (0.1.0.post0)
Requirement already satisfied: tzdata in /usr/local/lib/python3.8/site-packages (from pytz-deprecation-shim->tzlocal->micloud>=0.6->python-miio==0.6.0.dev0) (2023.3)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: Skipping pycrypto as it is not installed.
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

Usage:   
  /usr/local/bin/python3.8 -m pip install [options] <requirement specifier> [package-index-options] ...
  /usr/local/bin/python3.8 -m pip install [options] -r <requirements file> [package-index-options] ...
  /usr/local/bin/python3.8 -m pip install [options] [-e] <vcs project url> ...
  /usr/local/bin/python3.8 -m pip install [options] [-e] <local project path> ...
  /usr/local/bin/python3.8 -m pip install [options] <archive url/path> ...

no such option: --yes
Found existing installation: micloud 0.6
Uninstalling micloud-0.6:
  Would remove:
    /usr/local/bin/micloud
    /usr/local/lib/python3.8/site-packages/micloud-0.6.dist-info/*
    /usr/local/lib/python3.8/site-packages/micloud/*
Proceed (Y/n)? ERROR: Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/cli/base_command.py", line 160, in exc_logging_wrapper
    status = run_func(*args)
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/commands/uninstall.py", line 105, in run
    uninstall_pathset = req.uninstall(
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/req/req_install.py", line 664, in uninstall
    uninstalled_pathset.remove(auto_confirm, verbose)
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/req/req_uninstall.py", line 367, in remove
    if auto_confirm or self._allowed_to_proceed(verbose):
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/req/req_uninstall.py", line 407, in _allowed_to_proceed
    return ask("Proceed (Y/n)? ", ("y", "n", "")) != "n"
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/utils/misc.py", line 191, in ask
    response = input(message)
EOFError: EOF when reading a line
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: micloud in /usr/local/lib/python3.8/site-packages (0.6)
Requirement already satisfied: pycryptodome in /usr/local/lib/python3.8/site-packages (from micloud) (3.17)
Requirement already satisfied: click in /usr/local/lib/python3.8/site-packages (from micloud) (8.1.3)
Requirement already satisfied: tzlocal in /usr/local/lib/python3.8/site-packages (from micloud) (4.3)
Requirement already satisfied: requests in /usr/local/lib/python3.8/site-packages (from micloud) (2.28.2)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/site-packages (from requests->micloud) (2022.12.7)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.8/site-packages (from requests->micloud) (3.4)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/site-packages (from requests->micloud) (1.26.15)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.8/site-packages (from requests->micloud) (3.1.0)
Requirement already satisfied: pytz-deprecation-shim in /usr/local/lib/python3.8/site-packages (from tzlocal->micloud) (0.1.0.post0)
Requirement already satisfied: backports.zoneinfo in /usr/local/lib/python3.8/site-packages (from tzlocal->micloud) (0.2.1)
Requirement already satisfied: tzdata in /usr/local/lib/python3.8/site-packages (from pytz-deprecation-shim->tzlocal->micloud) (2023.3)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
+ echo 3
+ sudo chmod +x /var/www/html/core/class/../../plugins/dreame/resources/post-install.sh
chmod: cannot access '/var/www/html/core/class/../../plugins/dreame/resources/post-install.sh': No such file or directory
+ sudo /var/www/html/core/class/../../plugins/dreame/resources/post-install.sh
sudo: /var/www/html/core/class/../../plugins/dreame/resources/post-install.sh: command not found
+ echo 4
+ php /var/www/html/core/class/../php/jeecli.php plugin dependancy_end dreame
+ rm /tmp/jeedom_install_in_progress_dreame
+ echo '*******************End of package installation******************'
*******************End of package installation******************

fichier « Dreame » ( en mode debug )


[2023-04-11 09:43:00][DEBUG] : ["Traceback (most recent call last):","  File \"\/usr\/local\/bin\/micloud\", line 5, in <module>","    from micloud.cli import cli","  File \"\/usr\/local\/lib\/python3.8\/site-packages\/micloud\/__init__.py\", line 1, in <module>","    from .micloud import MiCloud","  File \"\/usr\/local\/lib\/python3.8\/site-packages\/micloud\/micloud.py\", line 16, in <module>","    from micloud import miutils","  File \"\/usr\/local\/lib\/python3.8\/site-packages\/micloud\/miutils.py\", line 15, in <module>","    from Crypto.Cipher import ARC4","  File \"\/usr\/local\/lib\/python3.8\/site-packages\/Crypto\/Cipher\/ARC4.py\", line 119, in <module>","    key_size = xrange(1,256+1)","NameError: name 'xrange' is not defined"]
[2023-04-11 09:43:00][DEBUG] : ============================ DISCOVER ============================

Solution trouvée : il suffisait de modifier le xrange ligne 119 par range (suite à python 3.8) avec la clmma.de suivante : sudo nano /usr/local/lib/python3.8/site-packages/Crypto/Cipher/ARC4.py

Je maintiens des investigations pour permettre une installation automatisée pour l’ensemble des utilisateurs, n’hésitez pas à revenir vers moi (sur Discord de préférence ou ici si je pense à passer) si vous avez d’autres soucis.

Merci à @JulienB80
la solution dans

/usr/local/lib/python3.8/site-packages/Crypto/Cipher/ARC4.py

Ligne 119 modifier

key_size = xrange(1,256+1)

par

key_size = range(1,256+1)

Hello,

28 min pour moi :sweat_smile:


@JulienB80, est ce que tu sais s’il est possible d’accèder à des appareils qui seraient « partagés avec moi » ?

Hello,
J’utilise la librairie python-miio pour commander les aspirateurs robots.

Je n’ai malheureusement pas de réponse à la question mais si tu peux faire le test ça me serait grandement utile pour les autres utilisateurs !

Pour les 28 minutes oui ça m’étonne qu’à moitié, il suffit que ta machine avait quelques mises a jours lourdes a faire et le temps d’installer l’ensemble des dépendances et ça suffit pour prendre un temps monstre.
Je cherche toujours des solutions a ce sujet

A bientôt

A date la reponse est non car je n ai rien qui remonte.

La question etait plus : est ce que l api (ou autre) que tu utilises a cette option/fonction :slight_smile:

Bonjour,
Merci pour le plugin. Je l’ai installé : 32 min. J’ai retrouvé mon D10+ sans soucis avec mon identifiant et MDP Xiaomi. Cependant, il ne semble pas y avoir de communication entre le plugin et l’aspirateur. Il n’y a aucune info qui remonte et je n’arrive pas à le faire démarrer. Je suis loin d’être un expert mais comment savoir si j’ai loupé quelque chose?
Merci

Hello,
Peux tu me montrer comment remonte ton équipement dans la partie configuration en prenant soin de cacher ton token ?
Tes commandes actions marchent ou rien ne marche (marche non de ce que j’ai compris mais retour au socle ou suis je etc) ?
Peux-tu également me montrer ton équipement sur ton dashboard stp ?

J’approfondis ma réponse :
Peux tu passer tes logs du plugin Dreame en débug, tenter de rafraîchir et démarrer et me fournir les logs stp? (Attention aux données sensibles)
Merci d’avance