**Meross MSS310**
Precio: 12€
Documentación API:\\
https://albertogeniola.github.io/MerossIot/
Github:\\
https://github.com/albertogeniola/MerossIot
**Peticiones directamente al enchufe**
Configuramos un proxy con SQUID
Ejecutamos tcpdump para capturar los paquetes con el siguiente comando:
tcpdump -i any -s 65535 -w captura.tcpdump
Abrimos el dump con wireshark
Filtramos por petción http y la ip del dispositivo, en mi caso son:
192.168.1.53
192.168.1.79
192.168.1.123
Por ejemplo el filtro:
ip.dst == 192.168.1.79 and http
{{:energia:monitorizacion:enchufes:tcpdump01.png|}}
Miramos las peticiones hasta que encontremos una que en el payload del post sale electricity:
{
"header": {
"from": "/app/724391-ce3061cb409fb325273d61db1fdc988b/subscribe",
"messageId": "0dd9808195b48a358003b7da16de6862",
"method": "GET",
"namespace": "Appliance.Control.Electricity",
"payloadVersion": 1,
"sign": "178bed152888826e92e597b3b08e62fc",
"timestamp": 1597047437,
"triggerSrc": "Android"
},
"payload": {
"electricity": {
"channel": 0
}
}
}
Si hacemos un post con esa petición a /config tenemos los datos de consumo (añadir al final |python -m json.tool para poner formato legible) :
curl -d @peticion.json 192.168.1.79/config |python -m json.tool
{
"header": {
"from": "/appliance/20051881797870251h4148e1e91c65ce/publish",
"messageId": "0dd9808195b48a358003b7da16de6862",
"method": "GETACK",
"namespace": "Appliance.Control.Electricity",
"payloadVersion": 1,
"sign": "67cd1c537334b5a6d9d8d3784f542135",
"timestamp": 1597049595,
"timestampMs": 431
},
"payload": {
"electricity": {
"channel": 0,
"config": {
"electricityRatio": 100,
"voltageRatio": 188
},
"current": 287,
"power": 41679,
"voltage": 2293
}
}
}
Faltaría jugar con los timestamp por si caduca la petición
Para sacar solo el valor de power que es el que interesa, con jq (herramienta para parsear json) lanzamos:
curl --silent -d @peticion.json 192.168.1.79/config|jq -r '.payload.electricity.power'
42976