Meross via MQTT local

Bonjour à tous,

Cela fait plusieurs que j’ai des problèmes avec mes prises Meross, mais surtout une multiprise que j’ai achetée. En effet, avec le plugin Meross HomeAssistant que vous trouverez sur HACS, celui-ci passe par le cloud pour commander les prises. Hors, il y a quelques soucis, car pour ma multiprise, lorsque j’envoie un signal d’allumer une ou plusieurs prises, cela se fait bien, mais 10 secondes plus tard, elle s’éteint toute seule.

C’est pour cela que je me suis lancé, et que je voudrais vous partager la gestion des prises Meross via un MQTT local avec 2 avantages : Plus de dépendances à internet, et plus de dépendances au Cloud Meross.

Je vous raconte comme j’ai fait, sans dire que c’est la meilleure des solutions, mais elle m’a permis d’arriver à mes fins, même si cela n’a pas été simple :

1. Prérequis

Configuration actuelle : PC sous Linux et Home Assistant et Mosquitto sous Docker. Le poste en Windows 10 n’est utile que pour la préparation.

Sur un poste en Windows 10, installer Debian via WLS (voir sur le net beaucoup de tuto parle de ça). En effet, tout le monde n’a pas un linux, et surtout que je suis plus à l’aise sous Linux pour des choses comme ça :

Une fois sur la Debian il faut installer les paquets nécessaires :

apt install -y nodejs npm unzip
npm install commander

Puis récupérer les sources pour l’utilisation d’un MQTT local sur la machine en Debian

wget https://github.com/bytespider/Meross/archive/refs/heads/master.zip
unzip master.zip
cd Meross-master/bin/

Ensuite, il vous faut réinitialiser votre prise par un appui long sur le bouton ON/OFF jusqu’à ce que la LED clignote en vert/orange.
Vous vous connecter maintenant via wifi au réseau Meross de votre prise.

Puis retourner sous votre Debian et lancer la commande :

./meross info

Ou vous devriez avoir un résultat comme cela

image

Cela indique que la prise est visible et remonte les informations.

2. Broker MQTT

Pour ma part, ayant déjà un MQTT (sans chiffrement avec authentification) et que Home Assistant n’accepte qu’un Broker, sachant que les prises necessite l’inverse (chiffré sans authentification - à priori l’authentification devrait fonctionné, mais je n’ai pas réussi), voici la configuration de mon docker Mosquitto :

log_dest file /mosquitto/log/mosquitto.log
log_type error
log_timestamp_format %Y-%m-%dT%H:%M:%S

per_listener_settings true
port 1883
allow_anonymous false
password_file /mosquitto/config/mosquitto.passwd

listener 8883
require_certificate false
allow_anonymous true
cafile /mosquitto/config/ssl/ca.crt
certfile /mosquitto/config/ssl/server.crt
keyfile /mosquitto/config/ssl/server.key

Puis nous allons passer à la création des certificats (bien faire les lignes et les après les autres, car vous allez devoir renseigner des informations sur au moment du FQDN, où il faut donner soit l’IP utilisé du broker ou son nom DNS) :

openssl genrsa -des3 -out ca.key 2048
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
openssl genrsa -out server.key 2048
openssl req -new -out server.csr -key server.key
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -out server.crt -days 3650

3. Association et Home assistant

Maintenant, vous devriez pouvoir intégrer votre prise à votre MQTT, mais avant cela, il faut installer le plugin présent dans HACS « Meross LAN » en pointant sur votre broker MQTT.

Une fois cela fait lancer la commande suivante pour intégrer votre prise

./meross setup --gateway 10.10.10.1 --wifi-ssid SSID --wifi-pass password --mqtt mqtts://x.x.x.x:8883

image

Si tout se passe bien, votre prise redémarrer, clignote vert et devient fixe (association OK avec wifi et MQTT), et si vous devriez avoir une proposition d’ajout d’un device sous Home Assistant.

Je pense avoir était le plus complet possible.

4 « J'aime »

Salut.
Bonne solution pour se passer du cloud.
Si j’ai besoin un jour de mettre en place cette mécanique (j’ai pas de prise meross), je pense que passerai par un broker MQTT qui fonctionne à coté de HA (container/docker port 1884) configuré pour faire du mode bridge sur le broker classique HA port 1883.
Comme ça ça libère une machine

C’est bien ce que j’ai aussi, je n’ai pas mis la configuration du docker, mais c’est du standard pour le coup.

OK, j’avais pas compris ça comme ça.
En lisant ça

J’avais conclu que tu avais mis en place un nouveau bout d’infra. (donc une machine différente de HA)

Ou alors j’ai pas tout compris (encore^^)

Merci de la remarque, je viens d’apporter une modification :

1 « J'aime »

Bonjour @weado,

Tout d’abord merci pour ton tuto.
Je voudrais faire la même chose que toi mais je bute sur la création de ton 2ème broker MQTT.
Peux tu détailler STP ton installation ? Tu l’as installé en parallèle de l’addon ?

Merci

Hello,
Attention, je ne crée pas un second broker, car HA n’accepte qu’un seul, par contre, j’ai autorisé mon broker MQTT à accepter 2 type de flux : MQTT sur SSL sur le port 8883 (pour les prises MEROSS) et non sécurisé sur le 1883, mais avec mot de passe.
Mon Broker est installé en via Docker et non via l’addon, même si je pense que la configuration est la même.

OK je vois, merci.
Je vais voir si je peux faire pareil avec l’addon (j’essaye de rester le plus possible avec le système d’addon) ou si je trouve des pistes sur le forum US.

Salut,
Ce sujet m’interesse fortement, mais j’avoue que j’ai plein d’interrogations car des choses m’échappent.
J’espere ne pas me faire crier… :flushed::roll_eyes:

D’abord voici mon environnement.

  • Mon poste informatique est un MacbookPro

  • Nas Synology sur lequel est installé dans un Docker HomeAssistant (homeassistant/home-assistant:latest), dans un autre Docker mon serveur MQTT (eclipse-mosquitto:openssl).

Config du serveur MQTT

persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log
password_file /mosquitto/config/pwfile
allow_anonymous true
listener 1883 192.168.XX.XX

Première question, est il nécessaire d’installer un MQTT comme indiqué pour une machine sous Debian ?
Si oui les commandes sont elles les mêmes sur Mac OS ?

Dans votre fichier de configuration du serveur MQTT, il y a des références à

cafile /mosquitto/config/ssl/ca.crt
certfile /mosquitto/config/ssl/server.crt
keyfile /mosquitto/config/ssl/server.key

Je vois qu’il y a les commandes pour générer ces fichiers en dessous. Mais concernant l’IP à indiquer, s’agit elle de l’adresse IP locale simple (192.168.XX.XX) ou avec authentification (user:password@192.168.XX.XX), avec le port (192.168.XX.XX:1883) ? Et qu’est ce que le nom DNS ?

Maintenant, vous devriez pouvoir intégrer votre prise à votre MQTT, mais avant cela, il faut installer le plugin présent dans HACS « Meross LAN » en boitant sur votre broker MQTT.
Boitant ? :thinking:

J’ai pour le moment installer l’intégration Meross LAN et supprimer celle utilisant le cloud. Pour le moment la communication avec mes MSG100 fonctionnent en http. Et je souhaite vraiment les basculer en MQTT.

Merci :wink:

Hello,
Mon installation Docker s’appuie sur une Debian, mais le docker a son propre système, surtout si on s’appuie sur le docker « officiel » Mosquitto.
Concernant la création des certificats, j’ai fournir mon IP simple, sans le port. Tu peux mettre le nom DNS, si tu utilises celui-ci en interne chez toi.
Enfin, je viens de corriger mon erreur :wink: (Boitant → Poitant)

Salut merci beaucoup pour ce sujet très intéressant
Je suis également en possession d’un MSS310 et actuellement je passe par l’application cloud, mon idée serait de faire tout en local comme tu le décris et de stocker les valeurs dans Influxdb pour exploiter tout ça dans Grafana après.

Ce que tu ne précises pas, et je suppose qu’il faut avoir un pc en Wifi connecté a la prise pour lancer le meros info ?

Hello,
Oui je te confirme.

1 « J'aime »

Bonjour,
Tout d’abord merci pour ton tuto qui m’a bien servi pour connecter ma prise MS310.
Je te confirme que cela fonctionne avec chiffrement et authentification. Pour cela il est nécessaire d’utiliser un backend de type base de donnée (sqlite, mysql, postgres) pour l’authentification. Si tu stocke tes users en mode fichier, tu vas rencontrer un conflit avec les ‹ : › qui servent de séparateur entre username et password. Or ceux si sont aussi utilisés dans le username de ta prise. Tu n’as cette contrainte avec une BDD.
Cordialement.

[EDIT] Bonjour à tous,

Merci pour ce super poste ! J’ai aussi des prises Meross avec le même symptômes de prises qui sont régulièrement non accessible.

Lorsque je suit le tuto à l’étape pour récupérer les infos de ma prise ça fonctionne maintenant!
J’ai encore des étapes choses a comprendre sur comment faire le setup mais c’est en bonne voie.