Meross Wlan Steckdosen - PHP-Modul?

Hi,
ich hatte mal bei Meross nachgefragt und lokal wird es wohl nie gehen.

Meine MSS620 hatte einen MT7682 eingebaut. Ich schätze das viele Geräte von Meross diesen Chip benutzen und von daher wird es mit Tasmota wohl auch nichts.

Ralf

Das Problem ist nicht das Schalten, sondern die Zusatzfunktionen der Aktoren, welche es (ohne Basteln) nur über den Meross Cloud Account gibt .

Interessant wäre die intigrierte Leistungsmessung der MSS310 -> Logging der Variablen -> Verwendung für weitere Anwendungen (Bilanzierung der Verbraucher, Waschmaschine Fertigmelder usw…).

Ich persönlich habe von den MSS310 insgesamt jetzt ca. 12Stück (±) . Das ist ja das interessante, fast Herstellerunabhängig die Daten in IP Symcon zu bündeln und ggf. einfach durch einen anderen Hersteller auszutauschen.

Ich hänge mich hier mal an. Ich hab zwar keine Steckdose aber den Garagenöffner von Meross MEROSS PRODUCT
Mit obigen Beispiel kann ich mich anmelden und bekomme auch die Geräteliste zurück. Hat jemand eine Beschreibung gefunden? Das Ding kann eigentlich nicht viel. Es wird lediglich ein Relais geschalten. Ist der Kontakt kurz geschlossen (agiert wie ein Taster), dann fährt das Tor entweder hoch oder runter. Je nach Zustand vom Tor, also das Teil tut sonst nix. Es hab aber noch einen Sensor, der Anzeigt, ob das Tor offen oder zu ist.
Man müsste also nur den Status vom Sensor abfragen und ihm den Schaltbefehl senden.
Eh ganz einfach, oder? :smiley:

Hi,

Nur zur Info.

Über den Link kann mann alle Geräte sehen die zu Tasmota geflasht werden können.
Da ist auch Meros dabei.

Ich habe vor längerer Zeit eine Meros Steckdose auf Tasmota geflasht mit hilfe eines Users hier aus dem Forum.
Weis im Moment nicht wie das geht. Es war möglich ohne Lötarbeiten mit Hilfe eines RasPis.

Mir ist schon klar, dass es hier hauptsächlich um die Steckdose gegangen ist. Ich hab aber den Garagenöffner und der ist in der Liste nicht dabei.
Ich kann ihn aber mit dem Skript soweit auslesen, als dass ich die Geräteinformationen zurückbekomme.

Hallo,
ich habe mich heute auch einige Zeit damit beschäftigt. Es gibt ein Python Programm, welches folgende Daten an die Steckdose (in meinem Fall MSS210) sendet. Dabei MUSS der anschließend verwendete mqtt Server ssl unterstützen (also ggf. eine 2. Instanz mit SSL in Symcon aktivieren).


 return request.post({
            url: `http://${this.host}/config`,
            headers: {
                'Content-Type': 'application/json'
            },
            json: payload

Setting up device with IP 10.10.10.1
Setting MQTT servers [ { host: '192.168.102.6', port: '1025' } ]
sending payload { header:
   { method: 'SET',
     namespace: 'Appliance.Config.Key',
     messageId: '43f912a3efa0c7b366850ecbba72b5f0',
     timestamp: 1608323115,
     sign: '1033fc35f729ba4cb32b545b128ef5dd' },
  payload:
   { key:
      { gateway: { host: '192.168.102.6', port: '1025' },
        key: '',
        userId: '' } } }
sending payload { header:
   { method: 'SET',
     namespace: 'Appliance.Config.Wifi',
     messageId: '24e5321a735a25d739e2328fb3415c7d',
     timestamp: 1608323115,
     sign: '31955b65d3c4214fc916aebf40030e34' },
  payload:
   { wifi: { ssid: 'base64SSID', password: 'base64pwd' } } }
Got response: { header:
   { messageId: '24e5321a735a25d739e2328fb3415c7d',
     namespace: 'Appliance.Config.Wifi',
     method: 'SETACK',
     payloadVersion: 1,
     from: '/appliance/1907186973974025184948e1e9014e52/publish',
     timestamp: 863,
     timestampMs: 937,
     sign: '1fadb10a44f8d418be77e293d8833d4c' },
  payload: {} }

Meross/bin/src at master · bytespider/Meross · GitHub

Es kommen Daten per MQTT an, die sehen z.B. so aus:

{

    "header":{
        "messageId":"3d573703ad22ffe3e96dc3eec65f9f52",
        "namespace":"Appliance.System.Report",
        "method":"PUSH",
        "payloadVersion":1,
        "from":"/appliance/1907186973974025184948e1e9014e52/publish",
        "timestamp":1608342572,
        "timestampMs":988,
        "sign":"16818ec6397d10f217d143e7849b1c8f"
    },
    "payload":{
        "report":[
            {
                "type":"1",
                "value":"0",
                "timestamp":1608342572
            }
        ]
    }

Oder beim Schalten der Dose lokal am Gerät:

{

    "header":{
        "messageId":"517b702e59a9abb4f61422b72e0ccdaf",
        "namespace":"Appliance.Control.ToggleX",
        "method":"PUSH",
        "payloadVersion":1,
        "from":"/appliance/1907186973974025184948e1e9014e52/publish",
        "timestamp":1608344143,
        "timestampMs":180,
        "sign":"3fce399b0b2132e6cdcaf861cb7ff2b7"
    },
    "payload":{
        "togglex":[
            {
                "channel":0,
                "onoff":1,
                "lmTime":1608344142
            }
        ]
    }

Update: Folgender Code schaltet entsprechend die Steckdose, jenachdem ob onoff auf 0 (aus) oder 1 (ein) steht.

{
    "header":{
        "messageId":"cce65df4cd510c03e724f755bea01635",
        "namespace":"Appliance.Control.ToggleX",
        "method":"SET",
        "payloadVersion":1,
        "from":"/appliance/1907186973974025184948e1e9014e52/subscribe",
        "timestamp":1608379343,
        "sign":"a76c960ab1cf55497c257b7f8434ed6a"
    },
    "payload":{
        "togglex":{
            "channel":0,
            "onoff":1
        }
    }

}

Folgende Lektüre kann ich anbieten:

Interaktion mit der Meross Cloud (für uns vmtl nicht so spannend, nur der Vollständigkeit halber)
GitHub - albertogeniola/MerossIot at 49a73e3c631ad6f5851c5933b00c40b1598f2ebb

Node-Red Implementierung, vmtl auch für lokalen mqtt Server, u.a. wird dort vmtl der selbe json Code zum erstmaligen Umbiegen ins Lokale Netz generiert, wie durch das ganz oben verlinkte Python script.
Meross-Node-Red-Comm/flows.json at V-3.00 · shodge12/Meross-Node-Red-Comm · GitHub

Programmcode, welcher relativ leicht verständlich ist und mit der Cloud kommuniziert. Hier habe ich den von mir generierten Payload hergeleitet:
meross-cloud/index.js at master · Apollon77/meross-cloud · GitHub

Thema Key, aus dem die Signatur berechnet wird, dieser wird durch das Python-Script in der Dose auf ‚leerstring‘ initialisiert. Und ist daher in der weiteren Berechnung nicht relevant.

Erste Versuche in Symcon:


<?php
function generateRandomString($length) {
    $chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
    $len = strlen($chars)-1;
    $nonce = '';
    for($i=0;$i<$length;$i++){
        $nonce .= $chars[rand(0,$len)];
    }
    return $nonce;
}

function generate_message($payload, $uid){
        $messageId = md5(generateRandomString(16));
        $timestamp = time();
        $key = '';
        $signature = md5($messageId . $key . $timestamp);

        $header = array("header" => array(
                "messageId" => $messageId,
                "namespace" => "Appliance.Control.ToggleX",  /*ToggleX*/
                "method" => "SET",
                "payloadVersion" => 1,
                "from" => "/appliance/".$uid."/subscribe", 
                "timestamp" => $timestamp,
                "sign" => $signature
        ),
            "payload" => $payload
        );


    $data = json_encode($header);
    $data = str_replace("\\/", "/", $data);
    $data = str_replace('\"', '"', $data);
    return  $data;
}

function setOnOff($type, $uid, $socket  = 16957){
    $onoff = ($type)  ? 1 : 0;
    $message = generate_message(array(
                "togglex" => array(
                    "channel"   => 0,
                    "onoff"     => $onoff
                )), $uid);

    RequestAction($socket, $message);
}
$uid = "1907186973974025184948e1e9014e52";
setOnOff(true, $uid);

Vielleicht hilft das schonmal jemandem.

Update: Ich habe in der Zwischenzeit ein PHP Modul erstellt, welches sich sowohl um die Ersteinrichtung, als auch um den laufenden MQTT Traffic kümmert. Bei Bedarf werde ich es gerne veröffentlichen. Wenn der allerdings fehlt, spare ich mir die ganze Arbeit mit GIT Repository und Doku.

Wenn da ein MQTT Server aktiv ist, kann man da nicht den in IPS integrierten MQTT Client verwenen? Wenn ich den Server iot.meross.com am Port 2001 eingebe, kommt zumindest keine Fehlermeldung. Aber wirklich weiter komme ich dann nicht. Hat das schon jemand gemacht, oder geht das gar nicht.

Man muss sich an dem Server „registrieren“, damit man auch Änderungen erhält. Zudem muss in die Pakete eine „UserID“ mitgesendet werden. Wie das genau geht, habe ich doch sogar verlinkt vor einigen Beiträgen. Ich persönlich möchte aber auf die Cloud verzichten und habe mich daher nicht genauer damit beschäftigt und stattdessen meine Steckdosen auf den lokalen mqtt Server umgebogen.

Hast du diese Einstellungen auf den Dosen direkt gemacht oder die DNS Abfrage „umgebogen“. Das hätte ich nämlich versucht. Auf beiden PiHoles die Adresse iot.meross.com auf den IPS Server umgeleitet. Was auch funktioniert hat. Bei IPS ist auch was angekommen - hab den integrierten MQTT Server konfiguriert - aber das wars dann aber auch schon. Geräte wurden in der Instanz keine angezeigt.

Meross kann nur ssl. Also benötigst du beim DNS umbiegen mindestens einen SSL Server Socket mit eigenem MQTT Server.
Ich habe aber die Adressen des zu verwendeten MQTT Servers in der Steckdose selber umgebogen. Hast du meine anderen Beiträge von vor ca. 1 1/2 Wochen überhaupt gelesen?

Ok danke.

Teilweise, ja. Vielleicht schau ich noch mal drüber :wink:

Konnte man nicht die Meross Steckdosen wie die Gosund nicht auch mit tuya-convert auf Tasmota umflashen?
Dafür ist ja Dank Kai schon alles da

Es gibt genau eine dreifach Steckdose von Meross bei der das geht. Die anderen Geräte basieren auf anderer Hardware.

Hallo,
ich habe hier auch noch so eine MSS425E liegen.
Habe die heute mal auf gemacht und gesehen, dass die einen MT7682 Chip drin hat.
Tasmota flashen fällt somit wohl aus.
Dann kam mir die Idee evtl. den Chip einfach aus zu tauschen gegen einen ESP oder evtl. sogar direkt einen Wemos D1 rein zu löten. Platz hat es ja genug. Theoretisch braucht man doch nur die GPIO Pins und Spannungsversorgung ± und evtl. noch die LED.
Frage an die Elektroniker im Forum ist das machbar oder habe ich einen grundlegenden Denkfehler in meiner Idee?
Nachfolgend ein paar Fotos vom Chip und den Pins.

Frage an die Elektroniker im Forum ist das machbar oder habe ich einen grundlegenden Denkfehler in meiner Idee?

Wenn du die Belegung der Pin’s hast, ist das machbar.
Denke,ich würde da einen WemosD1 mini einlöten.

Danke für die Antwort,
ich Versuche die PINS über Datenblatt des MT7682 und Multimeter heraus zu bekommen.
Vom Chip wurden 11 Pins an die Hauptplatine verbunden bzw. verwendet.
Nach meiner Ansicht müssten dies

[ul]
[li]2 Pins Spannungsversorgung ±[/li][li]4 Pins Relais 3xSteckdosen + 1xUSB[/li][li]4 Pins LED Rückmeldungen 3xRelais + 1xUSB[/li][li]1 Pin Taster[/li][/ul]
sein. Wenn ich da weiter komme werde ich berichten.

Wenn die Platine mit 3.3V versorgt wird, könntest du auch ein ESP12E Modul nehmen.

Ich weiß nicht, ob es so sinnvoll ist darin noch rumzulöten. Wenn es in diesem Zustand abbrennt, liegt es am Hersteller. Wenn du dran rumlötest „an dir“. Hast du versucht es direkt in Symcon einzubinden?

@drdigital,
habe geraden einen ESP aus einer Steckdose ausgelötet, da man nicht an RX-TX dran kommt. Von dem Anluß sieht das genauso aus, wir in deiner Leiste, Das schöne hier, alle Pind auf der Platine sind beschriftet, werde das mal festhalten.