Read the statement by Michael Teeuw here.
[Guide] Control MM via Google Home
-
@Sean
Can you read through the code below and determine where the error is?First, updating like you said did the trick. After updating/upgrading I was able to download everything and complete Step 2. Went on to complete Steps 3 & 4 and the IFTTT test worked.
Now, I’m trying to use the format of your test code and rewrite it to turn my monitor off using OnScreenMenu. I get the following error message:
pi@raspberrypi:~ $ cd MagicMirror pi@raspberrypi:~/MagicMirror $ sudo npm start > magicmirror@2.7.1 start /home/pi/MagicMirror > sh run-start.sh Starting MagicMirror: v2.7.1 Loading config ... Loading module helpers ... No helper found for module: alert. No helper found for module: clock. Initializing new module helper ... Module helper loaded: calendar No helper found for module: currentweather. No helper found for module: weatherforecast. No helper found for module: MMM-google-route. Initializing new module helper ... Module helper loaded: MMM-OnScreenMenu Initializing new module helper ... Module helper loaded: MMM-NotificationTrigger All module helpers loaded. Starting server on port 8080 ... Server started ... Connecting socket for: calendar Starting node helper for: calendar Connecting socket for: MMM-OnScreenMenu Connecting socket for: MMM-NotificationTrigger Sockets connected & modules started ... Launching application. Create new calendar fetcher for url: https://calendar.google.com/calendar/ical/xxx/basic.ics - Interval: 300000 SyntaxError: Unexpected token a in JSON at position 96 at JSON.parse (<anonymous>) at parse (/home/pi/MagicMirror/node_modules/body-parser/lib/types/json.js:89:19) at /home/pi/MagicMirror/node_modules/body-parser/lib/read.js:121:18 at invokeCallback (/home/pi/MagicMirror/node_modules/body-parser/node_modules/raw-body/index.js:224:16) at done (/home/pi/MagicMirror/node_modules/body-parser/node_modules/raw-body/index.js:213:7) at IncomingMessage.onEnd (/home/pi/MagicMirror/node_modules/body-parser/node_modules/raw-body/index.js:273:7) at IncomingMessage.emit (events.js:182:13) at endReadableNT (_stream_readable.js:1090:12) at process._tickCallback (internal/process/next_tick.js:63:19)
My config.js is here:
{ module: 'MMM-OnScreenMenu', position: 'bottom_right', }, { module: "MMM-NotificationTrigger", config: { useWebhook:true, triggers:[ { trigger: "ONSCREENMENU_PROCESS_ACTION", fires: [ { fire:"notificationReceived", payload: (payload) => {return payload} }, ], }, ] } },
My IFTTT is here:
{ "sender":{ "name":"IFTTT" }, "notification":"ONSCREENMENU_PROCESS_ACTION", "payload":{actionName: 'monitorOff' } }
Thoughts?
Thanks,
Scott -
@smackenzie5 said in [Guide] Control MM via Google Home:
{
“sender”:{
“name”:“IFTTT”
},
“notification”:“ONSCREENMENU_PROCESS_ACTION”,
“payload”:{actionName: ‘monitorOff’
}
}JSON syntax is somehow strict than usual JS convention.
{ "sender":{ "name":"IFTTT" }, "notification":"ONSCREENMENU_PROCESS_ACTION", "payload":{ "actionName": "monitorOff" } }
will work. you have failed/missed on using double-quotation marks.
-
@Sean
Thanks - that fixed the error message however it still doesn’t turn the monitor off.
I’m not sure what else to look at now. Below is what I’m seeing but with no error message, kind of hard to tell what to work on.I’m considering installing Remote-Control and seeing if I can get that to work unless you’ve got another thought.
Thanks,
Scottpi@raspberrypi:~ $ cd MagicMirror pi@raspberrypi:~/MagicMirror $ sudo npm start > magicmirror@2.7.1 start /home/pi/MagicMirror > sh run-start.sh Starting MagicMirror: v2.7.1 Loading config ... Loading module helpers ... No helper found for module: alert. No helper found for module: clock. Initializing new module helper ... Module helper loaded: calendar No helper found for module: currentweather. No helper found for module: weatherforecast. No helper found for module: MMM-google-route. Initializing new module helper ... Module helper loaded: MMM-OnScreenMenu Initializing new module helper ... Module helper loaded: MMM-NotificationTrigger All module helpers loaded. Starting server on port 8080 ... Server started ... Connecting socket for: calendar Starting node helper for: calendar Connecting socket for: MMM-OnScreenMenu Connecting socket for: MMM-NotificationTrigger Sockets connected & modules started ... Launching application. Create new calendar fetcher for url: https://calendar.google.com/calendar/ical/xxx/basic.ics - Interval: 300000 reqpost? { sender: { name: 'IFTTT' }, notification: 'ONSCREENMENU_PROCESS_ACTION', payload: { actionName: 'monitorOff' } }
-
@smackenzie5
I don’t know anything about OnScreenMenu. Have you any link to inspect?
I think your “fire” would be wrong. “NotificationReceived” is not usual type of notification conventions. Anyway if i see how Onscreenmenu works I may tell you more. -
@Sean
OnScreenMenu is one of the 3rd Party modules here:
https://github.com/shbatm/MMM-OnScreenMenuI used notificationReceived because it was similar to your example of SHOW_ALERT.
From alert.js - show_alert: function(params, sender) {
From MMM-NotificationTrigger.js - notificationReceived: function (notification, payload, sender) {
Maybe not correct but that’s why I did it.Here’s where I got the example used for the content of notification and payload:
https://github.com/shbatm/MMM-AlexaOnOff/blob/master/README.md
Again, maybe not correct but that’s why I did it.{ module: 'MMM-OnScreenMenu', position: 'bottom_right', }, { module: 'MMM-AlexaOnOff', config: { devices: [{ name: "Magic Mirror", on: { notification: "ONSCREENMENU_PROCESS_ACTION", payload: { actionName:'monitorOn' } }, off: { notification: "ONSCREENMENU_PROCESS_ACTION", payload: { actionName:'monitorOff' } }, }] } }
Thoughts?
Thanks,
Scott -
@smackenzie5
As far as I read OnScreenMenu module,
it needs notification like this;- notification : ONSCREENMENU_PROCESS_ACTION
- payload:
- “actionName” : “monitorOn”
So you can make your IFTTT & NotificationTrigger recipe like this;
IFTTT recipe{ "notification": "MONITOR_ON_FROM_IFTTT", "payload": null }
MMM-NotificationTrigger
module: "MMM-NotificationTrigger", config: { useWebhook: true, triggers: [ { trigger: "MONITOR_ON_FROM_IFTTT", fires: [ { fire: "ONSCREENMENU_PROCESS_ACTION", payload: {"actionName": "monitorOn"} } ] } ] }
I didn’t test those codes on real machine so there could be some syntax error, but I believe you can understand the concept
-
@Sean
You sir, are a freakin’ genius - it works perfectly.
Thanks again for all the effort. -
@Sean If possible could you give an example of how our config file should look like if we wanted to use the google home to turn on and off the monitor?
-
Also if i were using MMM-Remote-Control besides MMM-OnScreenMenu, how would it work?
-
@Sean So i followed all the steps and looked at the conversation you had with smackenzie, but i still cant get my monitor to turn off, here my
config.js{ module: 'MMM-OnScreenMenu', position: 'bottom_right', }, { module: "MMM-NotificationTrigger", config: { useWebhook: true, triggers: [ { trigger: "MONITOR_OFF_FROM_IFTTT", fires: [ { fire: "ONSCREENMENU_PROCESS_ACTION", payload: {"actionName": "monitorOff"} } ] } ] } },
IFTTT request
{ "notification": "MONITOR_OFF_FROM_IFTTT", "payload": null }
and here the log when i say Magic (the keyword)
reqpost? { notification: 'MONITOR_OFF_FROM_IFTTT', payload: null }