[Résolu] Pilotage de prise Meross

Discussion sur la box eedomus

[Résolu] Pilotage de prise Meross

Messagepar nilujeperchut » 27 Jan 2022 15:10

(re)Bonjour à tous,

Cela fait longtemps que je ne suis pas passé ici.
Je reviens une jolie question. J'ai cherche ici et ailleurs sans pour autant trouver de réponse. Je vais essayer d'être concis.

J'ai une multiprise Meross que je n'arrive pas à piloter via eedomus car non compatible à priori. Ok pas de pb, je la pilote à la voix avec ma google home.

J'aimerai cependant pouvoir y avoir accéder autrement via eedomus, donc je cherche des alternatives (que je n'ai pas trouvé encore). En connaissez-vous ?

La vraie question étant : est-il possible de lancer une commande sur la google home via eedomus (par exemple via une télécommande lancer l'équivalent d'une commande Ok Google fais ci.

La finalité : piloter la multiprise et les éléments du bureau en même temps via un interrupteur.

Portez-vous bien, tenez vous mal.
Patrick
Dernière édition par nilujeperchut le 13 Fév 2022 22:34, édité 1 fois.
1 eedomus+ | 1 Freebox Delta/Pop| 1 NAS Synology | et quelques périphériques ... python addict
nilujeperchut
 
Messages : 25
Inscription : 23 Août 2015
Localisation : Colombes

Re: Pilotage de prise Meross

Messagepar ARTNOW » 27 Jan 2022 22:53

Portez-vous bien, tenez vous mal.
Patrick

:shock: :shock: :shock: :shock: :shock:
Etrange comme formule ??????
EEDOMUS + -RFP1000-IPX 800 V4-IPX 800 V5 - FIBARO -GOOGLE(Home-Nest & mini)
ARDUINO-RASPBERRY PRUSA MK3S
Domotisation de :1xPiscine/9xClimatisations réversibles/2xVolets somfy/1xAlarme/1xChauffe-Eau thermodynamique/3xPortes Garage et 1xportail
ARTNOW
 
Messages : 1280
Inscription : 22 Avr 2018
Localisation : LOIRE ATLANTIQUE

Re: Pilotage de prise Meross

Messagepar nilujeperchut » 28 Jan 2022 13:09

Si il n'y a que cette partie qui vous a intéressé dans mon message, autant clore le thread ou s'abstenir de répondre. Donc on va se recentrer sur le sujet principal. Merci.

Mais sinon en tant qu'utilisateur eedomus+ et de google home(home nest & mini) ce genre de cas ne ne vous est pas arrivé ?

Patrick
1 eedomus+ | 1 Freebox Delta/Pop| 1 NAS Synology | et quelques périphériques ... python addict
nilujeperchut
 
Messages : 25
Inscription : 23 Août 2015
Localisation : Colombes

Re: Pilotage de prise Meross

Messagepar philippek » 09 Fév 2022 10:50

Bonjour,

Je contrôle mes prises Meross via IFTTT et j'ai créé dans eedomus un actionneur Webhooks IFTTT.
Ca fonctionne mais on ne reçoit pas le retour (l'état actualisé) de la prise/mutliprise si on change son état en direct par l'app Meross ou Google Home.

Bien à vous,
Philippe
Eedomus+/RFXCOM/Netatmo Thermostat+cam Welcome+cam Ext. Intelligente/ Sonos/21 modules Zwave (Aeotec/Coolcam)/25 modules RF (Chacon/Oregon)
philippek
 
Messages : 5
Inscription : 05 Avr 2019

Re: Pilotage de prise Meross

Messagepar nilujeperchut » 13 Fév 2022 18:58

Merci pour votre retour.
IFTTT(TTTT) j'avais essayé au tout début, mais ça m'ennuie d'utiliser un service tiers. Mais si ca marche pourquoi s'en priver. Je crois que c'est limité maintenant en utilisation gratuite ?

Sinon je viens de tester un script python sur github : https://github.com/albertogeniola/MerossIot
Mais on arrive sur une limitation eedomus sur le sujet : l'execution de script python.

A moins de faire un solution (déjà éprouvée de mon côté à remettre en place sur mon nouveau chez moi)
1 - Stockage du script python sur mon NAS sur un répertoire partagé
2 - Lancement d'un actionneur sur le serveur web du NAS ou le RPI qui va exécuter un script php qui va lancer le script python (réflexion à voix haute ... en passant avec Flask je dois pouvoir faire une solution 100% python)
1 eedomus+ | 1 Freebox Delta/Pop| 1 NAS Synology | et quelques périphériques ... python addict
nilujeperchut
 
Messages : 25
Inscription : 23 Août 2015
Localisation : Colombes

Re: Pilotage de prise Meross - Ma solution

Messagepar nilujeperchut » 13 Fév 2022 22:32

Et hop un script qui fonctionne avec un actionneur sur eedomus et ca passe crème.

edit : après quelques jours d'utilisations, et une petite config sur apache car Flask a ses limites, ca marche nickel

flask.py
Code : Tout sélectionner
from meross_iot.http_api import MerossHttpClient
from meross_iot.manager import MerossManager

from prise_meross import *

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello():
    return 'Hello, World!'


@app.route('/meross/on')
def merosson():
    try:
        prise_on = on()
        return '<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><SCRIPT><RETOUR>OK</RETOUR></SCRIPT>'
    except Exception as ex:
        return '<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><SCRIPT><RETOUR>' + str(ex)  +'</RETOUR></SCRIPT>'

@app.route('/meross/off')
def merossoff():
    try:
        prise_on = on()
        return '<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><SCRIPT><RETOUR>OK</RETOUR></SCRIPT>'
    except Exception as ex:
        return '<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><SCRIPT><RETOUR>' + str(ex)  +'</RETOUR></SCRIPT>'


if __name__ == '__main__':
    app.run(debug=True, host='192.168.1.90', port=1234)


Code : Tout sélectionner
import asyncio
import os

"https://github.com/albertogeniola/MerossIot"

from meross_iot.http_api import MerossHttpClient
from meross_iot.manager import MerossManager

EMAIL = os.environ.get('MEROSS_EMAIL') or "plop"
PASSWORD = os.environ.get('MEROSS_PASSWORD') or "plop"

prise_meross.py
class on():
    def __init__(self):
        if os.name == 'nt':
            asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
        # loop = asyncio.get_event_loop()
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)
        loop.run_until_complete(self.main())
        loop.close()

    async def main(self):
        # Setup the HTTP client API from user-password
        http_api_client = await MerossHttpClient.async_from_user_password(email=EMAIL, password=PASSWORD)

        # Setup and start the device manager
        manager = MerossManager(http_client=http_api_client)
        await manager.async_init()

        # Retrieve all the MSS310 devices that are registered on this account
        await manager.async_device_discovery()
        plugs = manager.find_devices(device_type="mss425e")

        if len(plugs) < 1:
            print("No mss425e plugs found...")
        else:
            # Turn it on channel 0
            # Note that channel argument is optional for MSS310 as they only have one channel
            dev = plugs[0]

            # Update device status: this is needed only the very first time we play with this device (or if the
            #  connection goes down)
            await dev.async_update()

            print(f"Turning on {dev.name}...")
            await dev.async_turn_on(channel=0)
            # print("Waiting a bit before turing it off")
            # await asyncio.sleep(5)
            # print(f"Turing off {dev.name}")
            # await dev.async_turn_off(channel=0)

        # Close the manager and logout from http_api
        manager.close()
        await http_api_client.async_logout()

class off():
    def __init__(self):
        if os.name == 'nt':
            asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
        # loop = asyncio.get_event_loop()
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)
        loop.run_until_complete(self.main())
        loop.close()

    async def main(self):
        # Setup the HTTP client API from user-password
        http_api_client = await MerossHttpClient.async_from_user_password(email=EMAIL, password=PASSWORD)

        # Setup and start the device manager
        manager = MerossManager(http_client=http_api_client)
        await manager.async_init()

        # Retrieve all the MSS310 devices that are registered on this account
        await manager.async_device_discovery()
        plugs = manager.find_devices(device_type="mss425e")

        if len(plugs) < 1:
            print("No mss425e plugs found...")
        else:
            # Turn it on channel 0
            # Note that channel argument is optional for MSS310 as they only have one channel
            dev = plugs[0]

            # Update device status: this is needed only the very first time we play with this device (or if the
            #  connection goes down)
            await dev.async_update()

            # print(f"Turning on {dev.name}...")
            # await dev.async_turn_on(channel=0)
            # print("Waiting a bit before turing it off")
            # await asyncio.sleep(5)
            print(f"Turing off {dev.name}")
            await dev.async_turn_off(channel=0)

        # Close the manager and logout from http_api
        manager.close()
        await http_api_client.async_logout()
1 eedomus+ | 1 Freebox Delta/Pop| 1 NAS Synology | et quelques périphériques ... python addict
nilujeperchut
 
Messages : 25
Inscription : 23 Août 2015
Localisation : Colombes

Re: [Résolu] Pilotage de prise Meross

Messagepar jluc2808 » 06 Juin 2022 07:02

bonjour @nilujeperchut, j'ai comme toi une prise meross que je voudrais ajouter
comment tu installes tes scripts sur NAS ?
tu ajoutes la partie github dans un répertoire web du NAS ?
tu installes tes 2 scripts ou ? avec quels noms ? l'adresse IP est à changer ? (laquelle celle de eedomus, du NAS, de la prise ?)
ensuite tu intègres la prise dans eedomus comment ?
merci de tes réponses et infos pour le faire
jluc2808
 
Messages : 489
Inscription : 30 Jan 2021

Re: [Résolu] Pilotage de prise Meross

Messagepar nilujeperchut » 06 Juin 2022 09:00

Salut @jluc2808

Alors au final pour répondre à tes questions, j'ai mis les scripts sur un raspberry qui sont lancés via le framework Flask, ou j'ai créé deux routes (meross/on et meross/off)

J'ai rappatrié le repo github (1 script) sur le rpi aussi que j'ai adapté pour faire des classes (c'est plus joli). Il faut quand même le configurer avec les ID du compte Meross et le nom du periph.

Donc via eedomus (via un actionneur HTTP) j'appelle donc l'adresse ip du rpi et la route choisie.
http://adr.ip.du.rpi:1234/meross/on
http://adr.ip.du.rpi:1234/meross/on

Et derrière c'est le script python qui va instancier et appeler les classes à utiliser.

Au niveau eedomus ou même de meross, c'est tout ou rien. On ne peut dissocier les prises les unes des autres. Il n'y a que via HomeKit en les plaçant dans des pièces différences que l'on peut faire un appel sélectif (pilotable via Google Home ou Alexa).

Dans un moment de folie j'ai même trouvé un script pour lancer mon NAS en Wake on Lan (qui n'est pas allumé en permanence)
1 eedomus+ | 1 Freebox Delta/Pop| 1 NAS Synology | et quelques périphériques ... python addict
nilujeperchut
 
Messages : 25
Inscription : 23 Août 2015
Localisation : Colombes

Re: [Résolu] Pilotage de prise Meross

Messagepar jluc2808 » 06 Juin 2022 10:02

merci de ces explications
j'ai rapatrié le repo github (lastest version 0.4.4.6) dedans je trouve plein de truc, donc quand tu dis 1 script :roll: ?
je suppose que c'est dans le répertoire meross_iot/ mais là j'ai 3 directory et plein de .py donc je suis perdu.

j'ai un NAS synology avec un serveur web dispo, tu penses que c'est possible de lancer les script .py à partir de là ? (la encore je suis un peu perdu :lol: ) ça m'embête d'avoir à ajouter un RPI juste pour ça !

pour l'instant je n'ai qu'une prise à piloter donc c'est bon, par contre tu as le retour d'état si elle est démarrée/arrêtée par ailleurs ?
jluc2808
 
Messages : 489
Inscription : 30 Jan 2021


Retour vers Box eedomus

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 17 invité(s)