Read the statement by Michael Teeuw here.
MMM-MQTTbridge
-
Darned, I just found the problem.
I had this in the mqttdictionary:
var mqttHook = [ { mqttPayload: "TURN_OFF_SCREEN", mqttNotiCmd: ["MONITOROFF"] },
But I was sending a MQTT message with ‘MONITOROFF’, if I send ‘TURN_OFF_SCREEN’ it works perfectly :-)
Thankyou @Serge and @Bugsounet for this GREAT module, just the missing piece.
Now I have to figure out about the noti->mqtt thing, I can see that the monitor status is reported in the log, but I can’t see what ‘notification’ is sent…P.S. the logfile looks a bit weird:
0|mm | [MQTT bridge] MQTT message received. Topic: cmnd/bathroom/mirror, message: MONITORON 0|mm | [MQTT bridge] MQTT -> NOTI issued: REMOTE_ACTION, payload: **[object Object]**
But it works…
-
@fribse , finally it works for you. So the reason was the incorrect config initially as I understood.
P.S. the logfile looks a bit weird:
log means that the payload of the noti is an “object” and not other type of data.
Now I have to figure out about the noti->mqtt thing,
Exactly the same as for mqtt->noti: create an noti->mqtt dictionary and that is, literally, all.
I can see that the monitor status is reported in the log, but I can’t see what ‘notification’ is sent
here author https://github.com/Jopyth/MMM-Remote-Control#system-control wrote that Noti
USER_PRESENCE: true
orUSER_PRESENCE: false
is issued by the MMM-Remote-Control.
So configure your noti dictionary with these lines and you will get mqtt as soon as theUSER_PRESENCE: true\false
arrive. Pay attention, that the same noti could by issued by other modules, e.g.Also, you can control other modules via mqtt-noti command. Starting from hiding/showing and ending with direct control. Examples:
Within your smarthome ecosystem based on MQTT/HomeAssistant (HA) - a great modules are- MMM-NewPIR - use your PIR sensor, integrated into MM as an instance within HA ecosystem and add it states to the scenes automation.
- MMM-Youtube, - send mqtt->noti to this module and control via HA scenes e.g. turn-on news on Youtube in the morning etc.
- MMM-Volume, set and turn-on/off the volume (e.g. during the day/night time)
- Google Assistant etc.
Also, just a hint: add to
ignoreNotiSender
a default “clock” module. I will add this by default to the next release. The reason: “clock” module sends notification every second. So adding “clock” to ignored list will prevent MQTTbridge from checking “clock’s” notification in dictionary every second (just to save rpi cpu usage). -
@Serge Yes, I did most of this already, I used the MMM-ViewNotifications to monitor which notifications was sent, and added all those I am not interested in :-)
Thankyou for the followup. -
here is fribse’s great tutorial for simple integration of MM into Home Assistant ecosystem.
Following the logic from his post, user can expand it and control everything on its MM:https://community.home-assistant.io/t/magicmirror-integration-into-home-assistant-with-mqtt/177246
-
Hi @Serge , I found one thing missing from the noti->mqtt, the QOS is not settable.
I can see that you send them with qos:0, it should be settable to 0,1 or 2 as to how much guarantee for delivery it’s supposed to get.
Other than that, it’s working perfectly, even via Google Home to turn the screen on and off (via the switch in Home Assistant) -
This looks very interesting! Thanks a lot for the effort to create this module. I look forward to trying it :)
-
Hey @Serge
i am struggeling around with publishing a variable. Here is the thing: I want to publish a variable from the default “newsfeed” module of MMM. I already get a notification ofARTICLE_INFO_RESPONSE
. I took a look at the source code and it seems likeARTICLE_INFO_RESPONSE
is kind of an Array. I spend hours trying to get the “URL” variable from this Array intomqttMsgPayload:
. Is it possible to get variables (from “arrays”) into themqttMsgPayload
variable of NotiDictionary.js?
It can be a really easy thing, but I am kind of a newbie in JavaScrip…But newertheless I really like your module! Very good job!!!
-
This is perfect!!! Thanks so much! I run OpenHAB and utilise MQTT quite heavily. However I don’t like MQTT persistence, as it doesn’t work for me in OpenHAB. I run MMM-MQTT module in MM, but the problem with that is, when MagicMirror starts up it doesn’t display MQTT topic payload, as many MQTT updates I get are on intermittent basis (eg: swimming pool temperature, only updates if it changes, garden sprinkler last run, only updates when it’s run etc) So I’ve used this with MMM-Pages (I have several MM screens) and the 2nd page has mostly OpenHAB related info that I want to display. So I use the Notification ‘PAGE_CHANGED’ with payload = 1 (as pages start from 0) to publish an MQTT message of openhab/magicmirror/requestmqtt = ON. This is tied to a switch item in OpenHAB, and a rule in OpenHAB detects when the switch gets turned on, and in turn publishes a list of latest home automation data out to MQTT, which gets picked up and displayed on Magic Mirror. Prior to this, I would have a lot of items with “updating…” and had to wait until the device sent its latest information to MQTT.
This covers all bases and more. I can see this becoming a very powerful little module!
Thanks again!
-
@chimera said in MMM-MQTTbridge:
eg: swimming pool temperature, only updates if it changes, garden sprinkler last run, only updates when it’s run, etc
As far as I understood you, you need to issue some NOTI during the MM/Module startup, right?
How would be the best option to do that? One possible solution is to have a file with the list of topics (e.g. “swimmingpool/temp/status”, “gardenspirnkler/run/status”) to which MQTTbrdige will send the mqtt-messages at startup.
Will this solve your problem with the integration of MM to your smart home? -
@oberpiller said in MMM-MQTTbridge:
Is it possible to get variables (from “arrays”) into the mqttMsgPayload variable of NotiDictionary.js?
nope. I will think about it.
should it work somehow like that:
In notiMqtt dict should be specified whether we are using variable or not and, if yes, use it:var notiMqttCommands = [ { commandId: "Command 1", mqttTopic: "myhome/kitchen/light/set", useVariables: true, //added new setting to the dict to mqttMsgPayload: ARTICLE_INFO_RESPONSE //if useVriables=true, put here the variable name. If useVariable=false or not stated - mqttMsgPayload will send "ARTICLE_INFO_RESPONSE" in its payload. }, ];