HAHA, yes you are right! I was working late at night and got confused, so does google photo always display photos in the background or can it by voice command only.
TThanks for your help
HAHA, yes you are right! I was working late at night and got confused, so does google photo always display photos in the background or can it by voice command only.
TThanks for your help
Oh, that’s weird. When I installed EXT-Photos, when magic mirror launches my photos start playing in the background automatically without me telling to jarvis to sttart it.
Hello, I want to start off by saying wow! I am so impressed by GA4 and all of its extensions! I am so grateful for your hard work in this community and project.
I was wondering if there is a way for EXT-Photos to only show photos when prompted by voice assistant and not the whole time? I couldn’t see anything about the in the wiki.
if you are comfortable with it would you be able to share your code for the commands used between telegram and MMM-Pages to switch pages from telegram?
@bugsounet
/* Magic Mirror Config Sample
*
* By Michael Teeuw https://michaelteeuw.nl
* MIT Licensed.
*
* For more information on how you can configure this file
* See https://github.com/MichMich/MagicMirror#configuration
*
*/
var config = {
address: "localhost", // Address to listen on, can be:
// - "localhost", "127.0.0.1", "::1" to listen on loopback interface
// - another specific IPv4/6 to listen on a specific interface
// - "0.0.0.0", "::" to listen on any interface
// Default, when address config is left out or empty, is "localhost"
electronOptions: {
webPreferences: {
webviewTag: true
}
},
port: 8080,
basePath: "/", // The URL path where MagicMirror is hosted. If you are using a Reverse proxy
// you must set the sub path here. basePath must end with a /
ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"], // Set [] to allow all IP addresses
// or add a specific IPv4 of 192.168.1.5 :
// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.1.5"],
// or IPv4 range of 192.168.3.0 --> 192.168.3.15 use CIDR format :
// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.3.0/28"],
useHttps: false, // Support HTTPS or not, default "false" will use HTTP
httpsPrivateKey: "", // HTTPS private key path, only require when useHttps is true
httpsCertificate: "", // HTTPS Certificate path, only require when useHttps is true
language: "en",
locale: "en-US",
logLevel: ["INFO", "LOG", "WARN", "ERROR"], // Add "DEBUG" for even more logging
timeFormat: 12,
units: "imperial",
// serverOnly: true/false/"local" ,
// local for armv6l processors, default
// starts serveronly and then starts chrome browser
// false, default for all NON-armv6l devices
// true, force serveronly mode, because you want to.. no UI on this device
modules: [
{
module: "alert",
},
{
module: "clock",
position: "top_center"
},
{
module: "calendar",
header: "US Holidays",
position: "bottom_left",
colored: true,
config: {
calendars: [
{
symbol: "gift",
url: "" },
{
symbol: "calendar-check-o",
url: " },
]
}
},
{
module: "compliments",
position: "lower_third"
},
{
module: "weather",
position: "top_center",
config: {
weatherProvider: "openweathermap",
type: "current",
locationID: "", //ID from http://bulk.openweathermap.org/sample/city.list.json.gz; unzip the gz file and find your city
apiKey: ""
}
},
{
module: "newsfeed",
position: "bottom_bar",
config: {
feeds: [
{
title: "New York Times",
url: "https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml"
}
],
showSourceTitle: true,
showPublishDate: true,
broadcastNewsFeeds: true,
broadcastNewsUpdates: true
}
},
{
module: "MMM-UpdateNotification",
position: "top_bar",
config: {
debug: false,
updateInterval: 10 * 60 * 1000, // every 10 minutes
startDelay: 60 * 1000, // delay before 1st scan
ignoreModules: [],
updateCommands: [],
notification: {
useTelegramBot: true,
sendReady: true,
useScreen: true,
useCallback: true
},
update: {
autoUpdate: false,
autoRestart: true,
usePM2: true,
PM2Name: "0",
defaultCommand: "git pull && npm install",
updateMagicMirror: false,
logToConsole: true,
timeout: 2 * 60 * 1000
}
}
},
{
module: 'MMM-GmailFeed',
position: 'bottom_left',
config: {
username: '',
password: '',
updateInterval: 60000,
maxEmails: 5,
maxSubjectLength: 38,
maxFromLength: 15,
playSound: true
}
},
{
module: 'MMM-GmailFeed',
position: 'bottom_left',
config: {
username: '',
password: '',
updateInterval: 60000,
maxEmails: 5,
maxSubjectLength: 38,
maxFromLength: 15,
playSound: true
}
},
{
module: 'MMM-TelegramBot',
config: {
telegramAPIKey : '',
allowedUser : [''], // This is NOT the username of bot.
adminChatId : ,
}
},
{
module: "MMM-UpdateNotification",
position: "top_bar",
config: {
debug: false,
updateInterval: 10 * 60 * 1000, // every 10 minutes
startDelay: 60 * 1000, // delay before 1st scan
ignoreModules: [],
updateCommands: [],
notification: {
useTelegramBot: true,
sendReady: true,
useScreen: true,
useCallback: true
},
update: {
autoUpdate: false,
autoRestart: true,
usePM2: true,
PM2Name: "0",
defaultCommand: "git pull && npm install",
updateMagicMirror: false,
logToConsole: true,
timeout: 2 * 60 * 1000
}
}
},
{
module: "MMM-GoogleAssistant",
position: "fullscreen_above",
config: {
debug: false,
assistantConfig: {
lang: "en-US",
latitude: 51.508530,
longitude: -0.076132,
},
responseConfig: {
useScreenOutput: true,
screenOutputCSS: "screen_output.css",
screenOutputTimer: 5000,
screenRotate: true,
activateDelay: 250,
useAudioOutput: true,
useChime: true,
newChime: false,
useNative: false,
playProgram: "mpg321"
},
micConfig: { // put there configuration generated by auto-installer
recorder: "arecord",
device: "plughw:2",
},
snowboy: {
useSnowboy: true,
usePMDL: false,
audioGain: 2.0,
Frontend: true,
Model: "jarvis",
Sensitivity: .5
},
A2DServer: {
useA2D: true,
stopCommand: "thank you",
useYouTube: true,
youtubeCommand: "youtube",
displayResponse: true
},
recipes: [ "with-MMM-TelegramBot.js" ],
NPMCheck: {
useChecker: true,
delay: 10 * 60 * 1000,
useAlert: false
}
}
},
{
module: "MMM-Assistant2Display",
configDeepMerge: true,
position: "top_left",
config: {
debug:false,
youtube: {
useYoutube: true,
useVLC: true,
minVolume: 30,
maxVolume: 100
},
links: {
useLinks: true,
displayDelay: 60 * 1000,
scrollStep: 25,
scrollInterval: 1000,
scrollStart: 5000,
scrollActivate: true,
verbose: false
},
photos: {
usePhotos: true,
displayDelay: 10 * 1000
},
volume: {
useVolume: true,
volumePreset: "ALSA_HDMI",
myScript: null
},
briefToday: {
useBriefToday: false,
welcome: "brief Today"
},
screen: {
useScreen: false,
delay: 5 * 60 * 1000,
turnOffDisplay: true,
mode: 1,
ecoMode: true,
displayCounter: true,
displayBar: false,
displayStyle: "Text",
text: "Auto Turn Off Screen:",
detectorSleeping: false,
governorSleeping: false,
displayLastPresence: true,
LastPresenceText: "Last Presence:",
delayed: 0
},
touch: {
useTouch: false,
mode: 3
},
pir: {
usePir: false,
gpio: 21,
reverseValue: false
},
governor: {
useGovernor: false,
sleeping: "powersave",
working: "ondemand"
},
internet: {
useInternet: false,
displayPing: false,
delay: 2* 60 * 1000,
scan: "google.fr",
command: "pm2 restart 0",
showAlert: true
},
cast: {
useCast: false,
castName: "MagicMirror_A2D",
port: 8569
},
spotify: {
useSpotify: true,
useBottomBar: true,
useLibrespot: true,
connectTo: "Librespot",
playDelay: 3000,
minVolume: 10,
maxVolume: 100,
updateInterval: 1000,
idleInterval: 10000,
username: "",
password: "",
CLIENT_ID: "",
CLIENT_SECRET: "",
deviceDisplay: "Listening on",
usePause: true,
typeArtist: "artist",
typePlaylist: "playlist",
typeAlbum: "album",
typeTrack: "track"
},
NPMCheck: {
useChecker: true,
delay: 10 * 60 * 1000,
useAlert: false
}
}
},
{
module: 'MMM-Tools',
position: 'bottom_right',
config: {
refresh: 1000 * 5,
containerSize: null,
itemSize: null,
OS: {
displayOs: false,
orderOs: 1
},
CPU: {
displayUsage: false,
orderUsage: 4,
displayTemp: false,
orderTemp: 7,
displayType: false,
orderType: 2
},
RAM: {
displayRam: false,
orderRam: 5
},
STORAGE: {
displayStorage: false,
orderStorage: 6,
partitionExclude : []
},
NETWORK: {
displayNetwork: false,
orderNetwork: 3,
nativeNetwork: false,
displayDefaultNetwork: true
},
UPTIME: {
displayUptime: false,
useMagicMirror: true,
orderUptime: 8,
displayRecord: false,
orderRecord: 9
},
WARNING: {
enableWarning: true,
interval: 1000 * 60 * 5,
check : {
CPU_TEMP : 75,
CPU_USAGE : 75,
STORAGE_USED : 80,
MEMORY_USED : 80,
}
}
}
},
{
module: 'mmm-systemtemperature',
position: 'bottom_right', // This can be any of the regions.
classes: 'small dimmed', // Add your own styling. Optional.
config: {
// See 'Configuration options' for more information.
}
},
{
module: 'MMM-DynamicWeather',
//position: 'fullscreen_above',
config: { // See https://github.com/scottcl88/MMM-DynamicWeather for more information.
api_key: "",
locationID: "",
effects: [
{
month: "2",
day: "14",
year: "2021",
images: ["heart1.png", "heart2.png"],
direction: "up"
}
],
}
},
{
module: 'MMM-Dad-Jokes',
position: 'lower_third', // Or wherever you want
config: {
updateInterval: 60000,
fadeSpeed: 4000
}
},
]
};
/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {module.exports = config;}
pm2 status:
@bugsounet ```
/* Magic Mirror Config Sample
*
*/
var config = {
address: “localhost”, // Address to listen on, can be:
// - “localhost”, “127.0.0.1”, “::1” to listen on loopback interface
// - another specific IPv4/6 to listen on a specific interface
// - “0.0.0.0”, “::” to listen on any interface
// Default, when address config is left out or empty, is “localhost”
electronOptions: {
webPreferences: {
webviewTag: true
}
},
port: 8080,
basePath: “/”, // The URL path where MagicMirror is hosted. If you are using a Reverse proxy
// you must set the sub path here. basePath must end with a /
ipWhitelist: [“127.0.0.1”, “::ffff:127.0.0.1”, “::1”], // Set [] to allow all IP addresses
// or add a specific IPv4 of 192.168.1.5 :
// [“127.0.0.1”, “::ffff:127.0.0.1”, “::1”, “::ffff:192.168.1.5”],
// or IPv4 range of 192.168.3.0 --> 192.168.3.15 use CIDR format :
// [“127.0.0.1”, “::ffff:127.0.0.1”, “::1”, “::ffff:192.168.3.0/28”],
useHttps: false, // Support HTTPS or not, default "false" will use HTTP
httpsPrivateKey: "", // HTTPS private key path, only require when useHttps is true
httpsCertificate: "", // HTTPS Certificate path, only require when useHttps is true
language: "en",
locale: "en-US",
logLevel: ["INFO", "LOG", "WARN", "ERROR"], // Add "DEBUG" for even more logging
timeFormat: 12,
units: "imperial",
// serverOnly: true/false/"local" ,
// local for armv6l processors, default
// starts serveronly and then starts chrome browser
// false, default for all NON-armv6l devices
// true, force serveronly mode, because you want to.. no UI on this device
modules: [
{
module: "alert",
},
{
module: "clock",
position: "top_center"
},
{
module: "calendar",
header: "US Holidays",
position: "bottom_left",
colored: true,
config: {
calendars: [
{
symbol: "gift",
url: "" },
{
symbol: "calendar-check-o",
url: " },
]
}
},
{
module: "compliments",
position: "lower_third"
},
{
module: "weather",
position: "top_center",
config: {
weatherProvider: "openweathermap",
type: "current",
locationID: "", //ID from http://bulk.openweathermap.org/sample/city.list.json.gz; unzip the gz file and find your city
apiKey: ""
}
},
{
module: "newsfeed",
position: "bottom_bar",
config: {
feeds: [
{
title: "New York Times",
url: "https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml"
}
],
showSourceTitle: true,
showPublishDate: true,
broadcastNewsFeeds: true,
broadcastNewsUpdates: true
}
},
{
module: “MMM-UpdateNotification”,
position: “top_bar”,
config: {
debug: false,
updateInterval: 10 * 60 * 1000, // every 10 minutes
startDelay: 60 * 1000, // delay before 1st scan
ignoreModules: [],
updateCommands: [],
notification: {
useTelegramBot: true,
sendReady: true,
useScreen: true,
useCallback: true
},
update: {
autoUpdate: false,
autoRestart: true,
usePM2: true,
PM2Name: “0”,
defaultCommand: “git pull && npm install”,
updateMagicMirror: false,
logToConsole: true,
timeout: 2 * 60 * 1000
}
}
},
{
module: ‘MMM-GmailFeed’,
position: ‘bottom_left’,
config: {
username: ‘’,
password: ‘’,
updateInterval: 60000,
maxEmails: 5,
maxSubjectLength: 38,
maxFromLength: 15,
playSound: true
}
},
{
module: ‘MMM-GmailFeed’,
position: ‘bottom_left’,
config: {
username: ‘’,
password: ‘’,
updateInterval: 60000,
maxEmails: 5,
maxSubjectLength: 38,
maxFromLength: 15,
playSound: true
}
},
{
module: ‘MMM-TelegramBot’,
config: {
telegramAPIKey : ‘’,
allowedUser : [‘’], // This is NOT the username of bot.
adminChatId : ,
}
},
{
module: “MMM-UpdateNotification”,
position: “top_bar”,
config: {
debug: false,
updateInterval: 10 * 60 * 1000, // every 10 minutes
startDelay: 60 * 1000, // delay before 1st scan
ignoreModules: [],
updateCommands: [],
notification: {
useTelegramBot: true,
sendReady: true,
useScreen: true,
useCallback: true
},
update: {
autoUpdate: false,
autoRestart: true,
usePM2: true,
PM2Name: “0”,
defaultCommand: “git pull && npm install”,
updateMagicMirror: false,
logToConsole: true,
timeout: 2 * 60 * 1000
}
}
},
{
module: “MMM-GoogleAssistant”,
position: “fullscreen_above”,
config: {
debug: false,
assistantConfig: {
lang: “en-US”,
latitude: 51.508530,
longitude: -0.076132,
},
responseConfig: {
useScreenOutput: true,
screenOutputCSS: “screen_output.css”,
screenOutputTimer: 5000,
screenRotate: true,
activateDelay: 250,
useAudioOutput: true,
useChime: true,
newChime: false,
useNative: false,
playProgram: “mpg321”
},
micConfig: { // put there configuration generated by auto-installer
recorder: “arecord”,
device: “plughw:2”,
},
snowboy: {
useSnowboy: true,
usePMDL: false,
audioGain: 2.0,
Frontend: true,
Model: “jarvis”,
Sensitivity: .5
},
A2DServer: {
useA2D: true,
stopCommand: “thank you”,
useYouTube: true,
youtubeCommand: “youtube”,
displayResponse: true
},
recipes: [ “with-MMM-TelegramBot.js” ],
NPMCheck: {
useChecker: true,
delay: 10 * 60 * 1000,
useAlert: false
}
}
},
{
module: “MMM-Assistant2Display”,
configDeepMerge: true,
position: “top_left”,
config: {
debug:false,
youtube: {
useYoutube: true,
useVLC: true,
minVolume: 30,
maxVolume: 100
},
links: {
useLinks: true,
displayDelay: 60 * 1000,
scrollStep: 25,
scrollInterval: 1000,
scrollStart: 5000,
scrollActivate: true,
verbose: false
},
photos: {
usePhotos: true,
displayDelay: 10 * 1000
},
volume: {
useVolume: true,
volumePreset: “ALSA_HDMI”,
myScript: null
},
briefToday: {
useBriefToday: false,
welcome: “brief Today”
},
screen: {
useScreen: false,
delay: 5 * 60 * 1000,
turnOffDisplay: true,
mode: 1,
ecoMode: true,
displayCounter: true,
displayBar: false,
displayStyle: “Text”,
text: “Auto Turn Off Screen:”,
detectorSleeping: false,
governorSleeping: false,
displayLastPresence: true,
LastPresenceText: “Last Presence:”,
delayed: 0
},
touch: {
useTouch: false,
mode: 3
},
pir: {
usePir: false,
gpio: 21,
reverseValue: false
},
governor: {
useGovernor: false,
sleeping: “powersave”,
working: “ondemand”
},
internet: {
useInternet: false,
displayPing: false,
delay: 2* 60 * 1000,
scan: “google.fr”,
command: “pm2 restart 0”,
showAlert: true
},
cast: {
useCast: false,
castName: “MagicMirror_A2D”,
port: 8569
},
spotify: {
useSpotify: true,
useBottomBar: true,
useLibrespot: true,
connectTo: “Librespot”,
playDelay: 3000,
minVolume: 10,
maxVolume: 100,
updateInterval: 1000,
idleInterval: 10000,
username: “”,
password: “”,
CLIENT_ID: “”,
CLIENT_SECRET: “”,
deviceDisplay: “Listening on”,
usePause: true,
typeArtist: “artist”,
typePlaylist: “playlist”,
typeAlbum: “album”,
typeTrack: “track”
},
NPMCheck: {
useChecker: true,
delay: 10 * 60 * 1000,
useAlert: false
}
}
},
{
module: ‘MMM-Tools’,
position: ‘bottom_right’,
config: {
refresh: 1000 * 5,
containerSize: null,
itemSize: null,
OS: {
displayOs: false,
orderOs: 1
},
CPU: {
displayUsage: false,
orderUsage: 4,
displayTemp: false,
orderTemp: 7,
displayType: false,
orderType: 2
},
RAM: {
displayRam: false,
orderRam: 5
},
STORAGE: {
displayStorage: false,
orderStorage: 6,
partitionExclude : []
},
NETWORK: {
displayNetwork: false,
orderNetwork: 3,
nativeNetwork: false,
displayDefaultNetwork: true
},
UPTIME: {
displayUptime: false,
useMagicMirror: true,
orderUptime: 8,
displayRecord: false,
orderRecord: 9
},
WARNING: {
enableWarning: true,
interval: 1000 * 60 * 5,
check : {
CPU_TEMP : 75,
CPU_USAGE : 75,
STORAGE_USED : 80,
MEMORY_USED : 80,
}
}
}
},
{
module: ‘mmm-systemtemperature’,
position: ‘bottom_right’, // This can be any of the regions.
classes: ‘small dimmed’, // Add your own styling. Optional.
config: {
// See ‘Configuration options’ for more information.
}
},
{
module: 'MMM-DynamicWeather',
//position: 'fullscreen_above',
config: { // See https://github.com/scottcl88/MMM-DynamicWeather for more information.
api_key: "",
locationID: "",
effects: [
{
month: "2",
day: "14",
year: "2021",
images: ["heart1.png", "heart2.png"],
direction: "up"
}
],
}
},
{
module: 'MMM-Dad-Jokes',
position: 'lower_third', // Or wherever you want
config: {
updateInterval: 60000,
fadeSpeed: 4000
}
},
]
};
/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== “undefined”) {module.exports = config;}
pm2 status: ![2021-05-15-164036_1920x1080_scrot.png](/assets/uploads/files/1621114903402-2021-05-15-164036_1920x1080_scrot.png)
I have seen the issue and do have pm2 enabled. I also do not have mmm-remotecontrol. I have restarted my pi but I still keep receiving these duplicate messages. ANy suggestions?
Whenever I launch MagicMirror, Telegram sends me messages which are good. But, it will send duplicate messages. I’m not sure how to fix it, I didn’t see anything in the wiki but I may have just missed it. I have attached images.