Tuto - Obtenir les Credentials Meross avec Jeedom

Bonjour,

Pour ceux qui on besoin pour utiliser leurs appareils Meross (ceux compatible) dans le super plugin WifilightV2 et qui n’ont pas IOS pour récupérer les Credentials Meross comme dans la doc, voici comment faire dans Jeedom avec un script.

Méthode

Il faut avec le plugin Script, créer un nouveau script et ajouter une commande script

  • Donner un nom à la commande: Info
  • Passer le type en autre
  • Cliquer sur l’icône image pour créer un nouveau fichier script
  • Nommer le fichier script: Meross.py

ça devrait donner ça:

Cliquer ensuite sur image pour éditer le fichier script et faire un copier / coller de ceci:

import base64
import hashlib
import string
import random
import requests
import time

def rand_gen(size, chars=string.ascii_lowercase + string.digits):
    return str(''.join(random.choice(chars) for _ in range(size)))

def msg_id(unix_time):
    concat_string = '{}{}'.format(rand_gen(16), unix_time)
    final_md5 = hashlib.md5(concat_string.encode('utf-8')).hexdigest()
    return str(final_md5)

def get_unix_time():
    current_time = int(time.time())
    return current_time

def get_key(username, password, uts):

    nonce = rand_gen
    unix_time = uts

    param = '{{"email":"{}","password":"{}"}}'.format(username, password)
    encoded_param = base64.standard_b64encode(param.encode('utf8'))

    concat_sign = '{}{}{}{}'.format('23x17ahWarFH6w29', unix_time, nonce, encoded_param.decode("utf-8"))
    sign = hashlib.md5(concat_sign.encode('utf-8')).hexdigest()

    headers = {
    'content-type': 'application/x-www-form-urlencoded',
    }
    data = {
    'params': encoded_param,
    'sign': sign,
    'timestamp': unix_time,
    'nonce': nonce
    }
    response = requests.post('https://iot.meross.com/v1/Auth/login', headers=headers, data=data)
    key = response.json()['data']['key']
    userid = response.json()['data']['userid']
    token = response.json()['data']['token']
    return str(key), str(userid), str(token)

def signing_key(message_id, key, uts):
    concat_string = '{}{}{}'.format(message_id, key, uts)
    final_md5 = hashlib.md5(concat_string.encode('utf-8')).hexdigest()
    return str(final_md5)


def login(username, password):
    current = get_unix_time()
    message_id = msg_id(current)

    key, userid, token = get_key(username, password, current)
    sign = signing_key(message_id,key, current)

    #print("{} {}".format("userId:", userid))
    #print("{} {}".format("key:", key))
    #print("{} {}".format("token:", token))
    print("{} {}".format("Jeton:", sign))
    print("{} {}".format("Identifiant:", message_id))
    print("{} {}".format("timestamp:", current))


#ONLY MODIFY THIS

login("Mail", "Mot_de_passe")

Tout à la fin du code du script, remplacer Mail et Mot_de_passe par l’adresse mail et le mot de passe du compte Meross.

Attention à bien conserver les " " et sauvegarder le fichier.
Passer le script en Actif et faire Sauvegarder.

Si le copier/coller du code et le remplacement de l’adresse mail et le mot de passe sont correct, il ne devrait pas il y avoir d’erreur à la sauvegarde du script.

Maintenant cliquer sur image pour obtenir les informations.

Recopier les informations dans le plugin WifilightV2 et ça devrait être bon :wink:

4 « J'aime »

Super !
Je peux copier dans le fil consacré aux meross credential ?

Bien sûr :wink:

D’ailleurs j’ai un souci avec mes prises MSS310, mais j’ai posé la question dans un autre post…

1 « J'aime »

j’ai répondu aussi
ps le temps ce soir, je regarde demain

Ok, c’est pas urgent.

Bon jour, c’est ce que j’obtiens quand je lance le script:

Erreur sur python /var/www/html/plugins/script/data/Meross.py 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File « /var/www/html/plugins/script/data/Meross.py », line 5, in import requests ImportError: No module named requests
Merci

google :
ajouter module python requests

Super Merci beaucoup

Top, merci !

Même problème et je ne sais pas comment résoudre cette erreur …

Une recherche Google ok, mais ensuite ??

Merci pour votre aide !

Bonjour @Benbboy,

Il est difficile de te guider davantage ne connaissant pas ta configuration. Te donner une commande à exécuter sans connaitre le système pourrait « tout casser ».

Mais dans les grandes lignes il faudra que tu installes le module requests via la console de ton système.

Bonne installation

Bonjour et merci pour ce tuto.
J’ai créé le script et lancé « tester ».

Où tombent les traces dans event.log ?
@olivr2s tu dis « Recopier les informations dans le plugin WifilightV2 et ça devrait être bon :wink: »
Les infos sont ??? où ?? désolé je suis vraiment nase…

Par ailleurs comment faire le lien entre les credentials et la prise meross ?
J’ai 4 prises pour l’instant, je leur ai chacune affecté une adresse IP fixe, mais quand les credentials tombent, comment sait on à qui ils correspondent ? ils ne contiennet pas de lien avec l’adresse mac ou autre qui aurait pu m’aider.

Merci par avance pour votre aide.

A++

Salut @PyToon,

Lorsque tu sauvegardes ton script et que tu fais Tester, le résultat s’affiche dans le cadre vert en haut du menu comme sur la capture d’écran de mon tuto.

Pour faire la différence entre les différentes prises que tu possèdes, c’est l’adresse IP de la prise qui le fera.

Le jeton et l’identifiant est identique pour toutes tes prises, seul l’adresse IP change dans la page de configuration.

OK merci,
c’est ce que je me suis dis après coup,
que les credentials étaient uniques pour l’ensemble des modules wifi,
associés à un compte.
Merci pour ta réactivité.
Je continue l’instal pour l’instant c’est pas très concluant.
A++


La version Beta du plugin améliore l’accès aux périphériques Meross de 3 façons :

  • les prises sans consommations ont leur retour d’état maintenant correct
  • un nouveau type : Meross V2 permet de se passer des credentials en allant les chercher sur le compte Meross (via login/mdp) ( merci à @olivr2s pour son script ci-dessus intégré maintenant au plugin )
  • fonctionne avec le nouveau firmware 2.2.2

Cette beta est 100% fonctionnelle sauf pour Meross V2 qui est à tester (3 types de prise ont été testés) et les prises myStrom qui ont été ajoutées.

Vous pouvez donc tester sans souci et me faire un retour.

Merci pour ce script qui a fonctionné avec mon MSR100 encore en firmware 2.1.2.
Je l’ai utilisé dans wifilight v2, nickel !
Je vais pouvoir continuer à acheter d’autres interrupteurs Meross

Bonjour
j’ai fait la dernière mis a jour de jeedom core en 4.2.8 , du coup l’affichage du résultat n’est plus sur le haut de la page, je le trouve ou ? (L’affichage a changé, en cliquant sur tester)
Merci d’avance

ça a changé depuis janvier : paramètres meross dans la config du plugin et la clé est renseignée quand on clique sur getkeyget, il faut être patient. Les messages en J 4.2 sont maintenant en bas

Bonjour,
J’ai des interrupteurs de volet roulant MRS100 qui étaient en firmware v 2.1.2 et qui fonctionnaient très bien avec wifilightV2 avec la configuration MEROSS pas la V2. Depuis hier, il y a eu la mise à jour du firmware en v 2.1.4 et ils ne fonctionnent plus. J’ai essayer de les reconfigurer avec MEROSS et MEROSS V2, mais aucun effet.
Voici ce que j’ai dans les logs :
method: GET - Exception:cURL error 52: Empty reply from server (see libcurl - Error Codes) - No Meross device @http://xxx.xxx.xxx.xxx/config
Vous avez une idée du problème ? le nouveau firmware ?
Merci d’avance

Ne jamais changer de firmware
et dans ce cas il faudra attendre que quelqu’un décode le nouveau protocole.