Hey, relatively new to the group, wanted to show off my build.
Using a Pi 3 with a 39" Insigna LED TV.
Frame is TIG welded and brushed aluminum, frame is 3/4" oak ply that was bondo(ed) and then painted. Whole thing is 24" tall and 36" wide.
Hey, relatively new to the group, wanted to show off my build.
Using a Pi 3 with a 39" Insigna LED TV.
Frame is TIG welded and brushed aluminum, frame is 3/4" oak ply that was bondo(ed) and then painted. Whole thing is 24" tall and 36" wide.
The hotword detection is working and it’s passing it to the Google Assistant module and that module is working too
@bdream Sure so I had some 3/4" (19MM) oak plywood kicking around. I ripped it down on the table saw, I glued that up and put screws in the end and then covered them over with bondo
The screen runs to the edges, but not quite to the top.
I did some rough cutouts on the top for the speakers, and made a VESA mount plate out of sheet steel on the back
Speaker openings were pretty rough, but I planned on covering them.
Here are the 3D printed covers, I didn’t bother making the screws all pretty and hidden since there’s only about a foot between the top of the mirror and the ceiling
Here’s the whole thing painted, if you look in the corners you can see the 3D printed brackets that I’ve used to hold it to the wall.
@sdetweil I run a local makerspace, so I was able to talk to our metal shop guy and he had one, in total fairness I didn’t do the welds on the frame myself he did them for me, as this was my first attempt at TIG welding.
Hey, relatively new to the group, wanted to show off my build.
Using a Pi 3 with a 39" Insigna LED TV.
Frame is TIG welded and brushed aluminum, frame is 3/4" oak ply that was bondo(ed) and then painted. Whole thing is 24" tall and 36" wide.
The hotword detection is working and it’s passing it to the Google Assistant module and that module is working too
Awesome! That was it, thanks so much for the help.
Ok, here’s the bog standard config with just the hotword module loaded, still don’t get an icon for it.
I am noticing that in the terminal window there is a
[HOTWORD] No model to load
Even though there are models in the directory
/home/pi/MagicMirror/modules/MMM-Hotword/models
as well as
/home/pi/MagicMirror/modules/MMM-Hotword/snoboy/resources/models
/* 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, is “localhost”
port: 8080,
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”],
language: "en",
timeFormat: 24,
units: "metric",
modules: [
{
module: "alert",
},
{
module: "updatenotification",
position: "top_bar"
},
{
module: "clock",
position: "top_left"
},
{
module: "calendar",
header: "US Holidays",
position: "top_left",
config: {
calendars: [
{
symbol: "calendar-check",
url: "webcal://www.calendarlabs.com/ical-calendar/ics/76/US_Holidays.ics" }
]
}
},
{
module: "compliments",
position: "lower_third"
},
{
module: "currentweather",
position: "top_right",
config: {
location: "New York",
locationID: "", //ID from http://bulk.openweathermap.org/sample/city.list.json.gz; unzip the gz file and find your city
appid: "YOUR_OPENWEATHER_API_KEY"
}
},
{
module: "weatherforecast",
position: "top_right",
header: "Weather Forecast",
config: {
location: "New York",
locationID: "5128581", //ID from http://bulk.openweathermap.org/sample/city.list.json.gz; unzip the gz file and find your city
appid: "YOUR_OPENWEATHER_API_KEY"
}
},
{
module: "newsfeed",
position: "bottom_bar",
config: {
feeds: [
{
title: "New York Times",
url: "http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml"
}
],
showSourceTitle: true,
showPublishDate: true,
broadcastNewsFeeds: true,
broadcastNewsUpdates: true
}
},
//Hotword Module
{
module: “MMM-Hotword”,
config: {
record: {
recordProgram : “arecord”,
device : “plughw:1”,
},
autostart:true,
onDetected: {
notification: function (payload) {
return “ASSISTANT_ACTIVATE”
},
payload: function (payload){
return {
profile: payload.hotword
}
}
},
},
},
]
};
/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== “undefined”) {module.exports = config;}
Ah Ok, I guess I assumed the errors were bad.
So then I guess my next question is, why would Hotword detection not work? I’ve enabled it in the config.js and I get the Google Assistant icon at the bottom of my screen, but no hotword icon, and saying any of the built in hotwords doesn’t seem to do anything.
I’ve done test recordings from command line and the microphone is picking up audio, but just no dice on getting the mirror to respond to voice commands.
I’m trying to set up Google Assistant with hotword detection.
I’ve follow the tutorials on Github, but when I try to install snowboy I’m getting the output below.
I am running the latest Raspian build on a Pi 3. I’ve uninstalled and tried multiple times to install, I’ve even blown away the whole OS and Magic Mirror install and started from scratch.
pi@raspberrypi:~/MagicMirror/modules/MMM-Hotword $ ./installer/install.sh
Cloning into ‘snowboy’…
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 2131 (delta 2), reused 5 (delta 2), pack-reused 2125
Receiving objects: 100% (2131/2131), 55.22 MiB | 4.97 MiB/s, done.
Resolving deltas: 100% (1060/1060), done.
Checking out files: 100% (313/313), done.
npm WARN deprecated hawk@3.1.3: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm WARN deprecated cryptiles@2.0.5: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated boom@2.10.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated sntp@1.0.9: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm WARN deprecated hoek@2.16.3: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm notice created a lockfile as package-lock.json. You should commit this file.
npm audit fix
to fix them, or npm audit
for details::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo
::Callback = void ()(const v8::WeakCallbackInfonode::ObjectWrap&)]’:
/usr/include/nodejs/src/node_object_wrap.h:85:78: required from here
/usr/include/nodejs/deps/v8/include/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfonode::ObjectWrap::Callback’ {aka ‘void ()(const v8::WeakCallbackInfonode::ObjectWrap&)’} to ‘Callback’ {aka ‘void ()(const v8::WeakCallbackInfo&)’} [-Wcast-function-type]
reinterpret_cast(callback), type);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/nodejs/deps/v8/include/v8.h: In instantiation of ‘void v8::PersistentBase::SetWeak(P, typename v8::WeakCallbackInfo
::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo
::Callback = void ()(const v8::WeakCallbackInfoNan::ObjectWrap&)]’:
…/node_modules/nan/nan_object_wrap.h:65:61: required from here
/usr/include/nodejs/deps/v8/include/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfoNan::ObjectWrap::Callback’ {aka ‘void ()(const v8::WeakCallbackInfoNan::ObjectWrap&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo&)’} [-Wcast-function-type]
SOLINK_MODULE(target) Release/obj.target/snowboy.node
COPY Release/snowboy.node
COPY /home/pi/MagicMirror/modules/MMM-Hotword/snowboy/lib/node/binding/Release/node-v64-linux-arm/snowboy.node
TOUCH Release/obj.target/action_after_build.stamp
make: Leaving directory ‘/home/pi/MagicMirror/modules/MMM-Hotword/snowboy/build’
gyp info ok
node-pre-gyp info ok
snowboy@1.3.1 install /home/pi/MagicMirror/modules/MMM-Hotword/snowboy
node-pre-gyp install --fallback-to-build
[snowboy] Success: “/home/pi/MagicMirror/modules/MMM-Hotword/snowboy/lib/node/binding/Release/node-v64-linux-arm/snowboy.node” already installed
Pass --update-binary to reinstall or --build-from-source to recompile
npm WARN prepublish-on-install As of npm@5, prepublish
scripts are deprecated.
npm WARN prepublish-on-install Use prepare
for build steps and prepublishOnly
for upload-only.
npm WARN prepublish-on-install See the deprecation note in npm help scripts
for more information.
snowboy@1.3.1 prepublish /home/pi/MagicMirror/modules/MMM-Hotword/snowboy
tsc --listFiles
…/…/…/node_modules/@types/unist/index.d.ts:31:20 - error TS2304: Cannot find name ‘unknown’.
31 [key: string]: unknown;
~~~~~~~
…/…/…/node_modules/@types/unist/index.d.ts:40:20 - error TS2304: Cannot find name ‘unknown’.
40 [key: string]: unknown;
~~~~~~~
…/…/…/node_modules/@types/unist/index.d.ts:97:12 - error TS2304: Cannot find name ‘unknown’.
97 value: unknown;
~~~~~~~
…/…/…/node_modules/@types/vfile-message/index.d.ts:69:24 - error TS2304: Cannot find name ‘unknown’.
69 [key: string]: unknown;
~~~~~~~
…/…/…/node_modules/@types/vfile/index.d.ts:48:15 - error TS2304: Cannot find name ‘unknown’.
48 data: unknown;
~~~~~~~
/home/pi/MagicMirror/modules/MMM-Hotword/snowboy/node_modules/typescript/lib/lib.es6.d.ts
/home/pi/MagicMirror/modules/MMM-Hotword/snowboy/lib/node/index.ts
/home/pi/MagicMirror/modules/MMM-Hotword/snowboy/lib/node/node-pre-gyp.d.ts
/home/pi/MagicMirror/modules/MMM-Hotword/snowboy/lib/node/SnowboyDetectNative.d.ts
/home/pi/MagicMirror/modules/MMM-Hotword/snowboy/node_modules/@types/node/base.d.ts
/home/pi/MagicMirror/modules/MMM-Hotword/snowboy/node_modules/@types/node/index.d.ts
/home/pi/MagicMirror/node_modules/@types/events/index.d.ts
/home/pi/MagicMirror/node_modules/@types/minimatch/index.d.ts
/home/pi/MagicMirror/node_modules/@types/glob/index.d.ts
/home/pi/MagicMirror/node_modules/@types/unist/index.d.ts
/home/pi/MagicMirror/node_modules/@types/vfile-message/index.d.ts
/home/pi/MagicMirror/node_modules/@types/vfile/index.d.ts
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! snowboy@1.3.1 prepublish: tsc --listFiles
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the snowboy@1.3.1 prepublish script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/pi/.npm/_logs/2019-09-15T03_46_46_443Z-debug.log
npm audit fix
to fix them, or npm audit
for details