Hi, I am using “meross2mqttv2”, use it successfully in terminal, but when I create a service for it, it failed to start. Is anyone successfully created service for it?
Eric
Hi, I am using “meross2mqttv2”, use it successfully in terminal, but when I create a service for it, it failed to start. Is anyone successfully created service for it?
Eric
Hi Denis,
thank you so much, I’m using your amended Phython 3.9 script with my Openhab 3.0 Raspberry Pi system. It works perfectly! I’m using it with my Meross MSS550X wallswitches.
so following is needed:
for those who need to configure the MS550X Openhab 3.0 channel should also work with Openhab 2.5:
Meross outgoing value transformation .js:
setMerossState.js.txt (119 Bytes)
Hi supoeric,
this is my service unit configuration, I copied Denis script into my openhab folder at /etc/openhab/scripts
[Unit]
Description=meross2mqttV2
After=mosquitto.service[Service]
Type=simple
ExecStart=/usr/bin/python3 /etc/openhab/scripts/meross2mqttV2.py --mqtt-server 127.0.0.1 --mqtt_usr openhab --mqtt_pswd <‘your mqtt pwd’> -e <‘your meross mail’> -p <‘your meross pwd’> -l var/log/meross2mqtt/meross.log
Restart=always
User=openhab
Group=openhab
Environment=PATH=/usr/bin:/usr/sbin:/etc/openhab/scripts
Environment=NODE_ENV=production
WorkingDirectory=/etc/openhab/scripts[Install]
WantedBy=multi-user.target
Status of my service - it works with the above config despite the last column it’s not Gone or Offline.
No clue what this means, but the service is running at I can control my switches via openhab.
Thanks Betahydri,
I will try it tonight.
Eric
@Denis_Lambert and @betahydri thanks a lot for your effort. I finally came around to update to oh3 and try the new version for merossIot.
Running the script from “meross2mqtt v2” I encountered a TimeOutError. I “fixed” it putting a try - except around line 204. Not proper, but works when I run it from the command line. I am still having troubles when using the service though.
Edit: Okay, I had a few errors in my service file. It is working!
I am still getting this error, as mentioned before:
Mar 23 09:57:12 openHABianPi python3.9[1922]: File "/usr/local/lib/python3.9/asyncio/base_events.py", line 596, in run_forever
Mar 23 09:57:12 openHABianPi python3.9[1922]: self._run_once()
Mar 23 09:57:12 openHABianPi python3.9[1922]: File "/usr/local/lib/python3.9/asyncio/base_events.py", line 1890, in _run_once
Mar 23 09:57:12 openHABianPi python3.9[1922]: handle._run()
Mar 23 09:57:12 openHABianPi python3.9[1922]: File "/usr/local/lib/python3.9/asyncio/events.py", line 80, in _run
Mar 23 09:57:12 openHABianPi python3.9[1922]: self._context.run(self._callback, *self._args)
Mar 23 09:57:12 openHABianPi python3.9[1922]: File "/etc/openhab/scripts/meross02.py", line 79, in start
Mar 23 09:57:12 openHABianPi python3.9[1922]: self.log.info("Setting Last will message=", lwm, "topic is", self.args.mqtt_ident)
Mar 23 09:57:12 openHABianPi python3.9[1922]: Message: 'Setting Last will message='
Mar 23 09:57:12 openHABianPi python3.9[1922]: Arguments: ('Meross Gone Offline', 'topic is', 'meross')
Is this normal?
Hello @daJoe ,
The error you got was simply caused by old formatting code. It was not harmful and offending line could have been commented out but it is now corrected in the latest version of this code. Also added the try … except in case the asyn_update takes more time than expected (5 sec)
Youre right. Measuring the power, voltage and current is not published by the device itself. You have to make a request to get the data.
Im new to openhab. But i think its easy to adapt the python scripts here to do an active polling
Hi
I’m running OH 3.1.0
Python3 --version 3.8.10
Meross_iot 0.4.2.3
Sorry for all the text, but I can’t get my Meross switch to work with my local MQTT / openhab
I use Albertogeniola Merosslot example script regarding to this link and my mss710 turns on and off.
I look at daJoe Johannes R:s script, regarding to this link
If I’m running daJoe Johannes R “old” script meross2mqtt.py with meross_iot==0.3.1.5 and tested with meross_iot==0.4.2.3
I got error on line 3, (I can’t import MerossEvent)
error
No module named meross_iot.meross.event
Where can I found this module?
Next step
Then I followed Opus Terra this link
My “new” meross2mqttV2.py file and I changed following
parser.add_argument(’–mqtt-server’, dest=‘192.168.1.174’,
parser.add_argument (’-e’, ‘–email’, dest=‘my real email@hotmail.com’,
It says in the script that meross password can be set later
When I run
'sudo python3 meross2mqttV2.py
I get this error
meross2mqttV2.py: error: the following arguments are required: -e/–email
Why this error?
Then I add my password in meross2mqttV2.py file
parser.add_argument (’-p’, ‘–password’, dest=‘my real meross password’
I get this error
File “Meross2mqttV2.py”, line 63
self.loop = loop:
^
SyntaxError: invalid syntax
When I’m running meross-bridge manual with meross_iot 0.4.0.0rc9
regarding to this link meross bridge
I installed meross bridge via suggestion 2 and ssh
Then run
sudo meross-bridge --mqtt-server 192.168.1.174 -e myemail@hotmail.com -p my merosspassword
I get this error
INFO:Initializing the MQTT connection…
INFO:Discovery found a new Meross device Fönstret (18072498697172251axxxxxxxxx).
ERROR:Timeout occurred while waiting a response for message b’{“header”: {“from”: “/app/68xxx-4aa4594b7e208d39xxxxxxxxx/subscribe”, “messageId”: “d2134e453b1170xxxxxxxxxx”, “method”: “GET”, “namespace”: “Appliance.System.Ability”, “payloadVersion”: 1, “sign”: “0775fc51a3080b4a687d43afexxxxxxxxx”, “timestamp”: 1632xxxxxx}, “payload”: {}}’ sent to device uuid 18072498697172251xxxxxxxxx. Timeout was: 5.0 seconds
ERROR:Failed to retrieve abilities for device Fönstret (1807249869717225xxxxxxxxxx). This device won’t be enrolled.
INFO:Starting consumer for OpenHAB MQTT messgaes …
If I keep following the meross bridge guide.
I add/made a file in /etc/default/meross-bridge with my email and meross password
chmod 0600
Then I looked for a meross-bridge.service file in /etc/systemd/, but I don’t have anyone so I can’t enable/start meross-bridge.service
My Meross info
My meross switch info
INFO:The following devices are new to me: [{“uuid”: “18072498697172251axxxxxxx”, “online_status”: “ONLINE”, “dev_name”: “F\u00f6nstret”, “dev_icon_id”: “device027_un”, “bind_time”: “2021-05-07T20:25:04”, “device_type”: “mss710”, “sub_type”: “un”, “channels”: [{}], “region”: “eu”, “fmware_version”: “2.1.4”, “hdware_version”: “2.0.0”, “user_dev_icon”: “”, “icon_type”: 1, “skill_number”: “”, “domain”: “mqtt-eu-2.meross.com”, “reserved_domain”: “mqtt-eu-2.meross.com”}]
My snifferlog
INFO - USER-TOPIC (/app/68xxx/subscribe) ← {‘header’: {‘timestampMs’: xxx, ‘timestamp’: 163xxxxxx, ‘sign’: ‘18c9ef6e1411170138axxxxxxxx’, ‘payloadVersion’: 1, ‘namespace’: ‘Appliance.Control.ToggleX’, ‘method’: ‘PUSH’, ‘messageId’: ‘bedb780340b1xxxxxxxxxxx’, ‘from’: ‘/appliance/18072498697172251axxxxxxxxx/publish’}, ‘payload’: {‘togglex’: [{‘onoff’: 1, ‘lmTime’: 1632xxxxxx, ‘channel’: 0}]}}
2021-09-19 15:34:43,721 - Sniffer - INFO - --------------- More data -----------------
2021-09-19 15:34:43,721 - Sniffer - DEBUG - Disconnected from MQTT brocker
2021-09-19 15:34:46,293 - Sniffer - INFO - Sysdata for Fönstret (18072498697172251axxxxxxx): {‘all’: {‘system’: {‘hardware’: {‘type’: ‘mss710’, ‘subType’: ‘us’, ‘version’: ‘2.0.0’, ‘chipType’: ‘mt7682’, ‘uuid’: ‘18072498697172251axxxxxxxxxx’, ‘macAddress’: ‘34:29:xx:xx:xx:xx’}, ‘firmware’: {‘version’: ‘2.1.4’, ‘compileTime’: ‘2018/11/30 11:02:57 GMT +08:00’, ‘wifiMac’: ‘74:ac:xx:xx:xx:xx’, ‘innerIp’: ‘192.168.1.113’, ‘server’: ‘mqtt-eu-2.meross.com’, ‘port’: 443, ‘userId’: 68xxx}, ‘time’:
‘online’: {‘status’: 1}}, ‘digest’: {‘togglex’: [{‘channel’: 0, ‘onoff’: 1, ‘lmTime’: 1632058482}], ‘triggerx’: [], ‘timerx’: [{‘channel’: 0, ‘id’: ‘26786d69xxxxxxxxx’, ‘count’: 1}, {‘channel’: 0, ‘id’: ‘e844fddaeb4xxxxx’, ‘count’: 1}]}}}
I have been reading Albertogiola:s page regarding to this link but I guess I have missed something:
Do I have to add some file somewhere with my mqtt broker(mosquitto) info or is it OK with just have my local ip in the meross2mqttV2.py file as above?
I don’t understand where I have to put my device info, from my snifferlog and which info is relevant in that file (and file ending/ for example devices.xx ?).
I guess I need to add my local device ipaddress, device mac address, uuid etc somewhere?
My mosquitto is tested/running via MQTT explorer
Thank you
Anyone is running Meross Garage Door Opener MSG100 with the script based on Meross 0.4 bridge?
The script recognizes my device, but I cannot integrate into OpenHAB.
I solved some of it.
I have miscalculated or lack of knowledge
I went back and changed mersso2mqttV2.py so with no changes in the file.
Then run
sudo python3 meross2mqttV2.py --email myemail@email.com --password mypassword
And I got connected.
mqtt explorer says
{“state”: “OFF”, “type”: “mss710”, “ChannelName”: “Main channel”, “friendlyName”: “F\u00f6nstret”, “online”: true}
Now I am in the same situation as @demichve
I can’t connect my channel to openhab.
The log says
string OFF could not be converted to JSON
string ON could not be converted to JSON Handling message from topic “meross/Fönstret/set”: OFF with qos 0 and retain flag 0
Openhab
I have just add in channel
mqtt state topic
meross/Fönstret/channel_0
mqtt command topic
meross/Fönstret/set
custom on
ON
custom off
OFF
Is command
switch to on
@Andreas3
You have to active the right transformations in OpenHab:
JSONPath Transformation
Javascript Transformation
Then it should work.
Yes. You need to go in Advance mode for the regarding channel and fix those two fields:
incoming Value Transformations
JSONPATH:$.state
Outgoing Value Transformation
JS:setZigbeeState.js
where setZigbeeState.js is simply this code that goes in the transform Openhab3 directory:
(function(x){
var result = new Object();
result.state = x;
return JSON.stringify(result);
})(input)
Great, Thanks!
(I also forgot to install Javascript transformation )
I add/update the incoming and outgoing value in OH3.
I add the merossfile.js in /etc/openhab/transform
reboot
run meross2mqttV2.py script
Mqtt explorer
meross ={“state”:true}
Fönstret
channel_0 ={“state”:“OFF”,“type” etc etc
set = {“state”:“OFF”}
Now when I toggle ON/OFF I get a number of errors instead
-- Logging error ---
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/meross_iot/manager.py", line 630, in _async_send_and_wait_ack
return await asyncio.wait_for(future, timeout, loop=self._loop)
File "/usr/lib/python3.7/asyncio/tasks.py", line 423, in wait_for
raise futures.TimeoutError()
concurrent.futures._base.TimeoutError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/etc/openhab/scripts/Meross2/meross2mqttV2.py", line 162, in handle_message
await device[0].async_turn_on(channel=0)
File "/usr/local/lib/python3.7/dist-packages/meross_iot/controller/mixins/toggle.py", line 110, in async_turn_on
drop_on_overquota=drop_on_overquota)
File "/usr/local/lib/python3.7/dist-packages/meross_iot/controller/device.py", line 233, in _execute_command
drop_on_overquota=drop_on_overquota)
File "/usr/local/lib/python3.7/dist-packages/meross_iot/manager.py", line 624, in async_execute_cmd
timeout=timeout)
File "/usr/local/lib/python3.7/dist-packages/meross_iot/manager.py", line 634, in _async_send_and_wait_ack
raise CommandTimeoutError()
meross_iot.model.exception.CommandTimeoutError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.7/logging/__init__.py", line 1034, in emit
msg = self.format(record)
File "/usr/lib/python3.7/logging/__init__.py", line 880, in format
return fmt.format(record)
File "/usr/lib/python3.7/logging/__init__.py", line 619, in format
record.message = record.getMessage()
File "/usr/lib/python3.7/logging/__init__.py", line 380, in getMessage
msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
File "/etc/openhab/scripts/Meross2/meross2mqttV2.py", line 374, in <module>
main()
File "/etc/openhab/scripts/Meross2/meross2mqttV2.py", line 370, in main
Runner().run()
File "/etc/openhab/scripts/Meross2/meross2mqttV2.py", line 333, in run
loop.run_until_complete(self.bridge.consume())
File "/usr/lib/python3.7/asyncio/base_events.py", line 571, in run_until_complete
self.run_forever()
File "/usr/lib/python3.7/asyncio/base_events.py", line 539, in run_forever
self._run_once()
File "/usr/lib/python3.7/asyncio/base_events.py", line 1775, in _run_once
handle._run()
File "/usr/lib/python3.7/asyncio/events.py", line 88, in _run
self._context.run(self._callback, *self._args)
File "/etc/openhab/scripts/Meross2/meross2mqttV2.py", line 122, in consume
await self.async_handle_openhab_mqtt_message(client, userdata, message)
File "/etc/openhab/scripts/Meross2/meross2mqttV2.py", line 141, in async_handle_openhab_mqtt_message
await self.handle_message("/".join(msg_split[1:-1]), str(message.payload.decode("utf-8")))
File "/etc/openhab/scripts/Meross2/meross2mqttV2.py", line 189, in handle_message
self.log.error("Unexpected error in MQTT message handling:", sys.exc_info()[0])
Message: 'Unexpected error in MQTT message handling:'
Arguments: (<class 'meross_iot.model.exception.CommandTimeoutError'>,)
What mqtt topic is needed to obtain the energy value from the MSS310? I am using the meross2mqttv2 service on a rpi3b+.
Sorry but actually, this bridge does not support this. It only handle CONTROL_TOGGLEX type notifications from Meross MQTT. That would be a nice addition but I does not have access to a MSS310 to develop it.
Thanks for your reply!
A real meross OH3 binding would be nice
I’m also looking for such a binding
would be great
Hi all,
I’ve a Meross MSG100 Garage Door opener. I’ve followed all the steps and installed albertogeniola’s merossiot and it works fine with it examples. The issue comes when I try to use meross2mqttv2. It starts right but when the state changes i get the following error:
2022-02-11 20:36:15,868 WARNING meross_iot.manager Found a new device Puerta Garaje (msg100, HW 3.5.0, FW 3.2.5, class: msg100:3.5.0:3.2.5) that has become online while we were offline.
2022-02-11 20:36:16,059 INFO root Topic: meross/Puerta Garaje/set
2022-02-11 20:36:16,061 INFO root Starting consumer for OpenHAB MQTT messages ...
2022-02-11 20:36:33,129 ERROR meross_iot.manager Uncaught error occurred while executing push notification handler <bound method MerossOpenHabBridge.event_handler of <__main__.MerossOpenHabBridge object at 0xb5624238>> for <meross_iot.model.push.generic.GenericPushNotification object at 0xb56550b8>
Traceback (most recent call last):
File "/home/pi/.local/lib/python3.9/site-packages/meross_iot/manager.py", line 727, in _handle_and_dispatch_push_notification
await handler(push_notification, target_devs, self)
TypeError: event_handler() takes 3 positional arguments but 4 were given
Do someone knows why this happens?
Thank you in advance.
Hi,
trying to follow this tutorial, I am stumbling when encountering this message:
openhabian@openhabian:/etc/openhab/scripts $ pip3 install paho-mqtt
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: paho-mqtt in /home/openhabian/.local/lib/python3.9/site-packages (1.6.1)
openhabian@openhabian:/etc/openhab/scripts $ sudo python3 meross2mqttV2.py --email myemail --password mypassword
Traceback (most recent call last):
File "/etc/openhab/scripts/meross2mqttV2.py", line 5, in <module>
import paho.mqtt.client as mqtt
ModuleNotFoundError: No module named 'paho'
openhabian@openhabian:/etc/openhab/scripts $
I installed paho mqtt client? Any idea about this? Thank you!