• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

Sentences not loaded in hello-Lucy

Scheduled Pinned Locked Moved Troubleshooting
19 Posts 2 Posters 1.9k Views 3 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    Nicodil
    last edited by Nicodil Apr 13, 2021, 2:05 PM Apr 13, 2021, 2:05 PM

    Hi guys,

    It seems my Hello-Lucy module doesnt load sentences, only words.
    At least this is my explaination why Lucy doesnt understand me correctly. It seems it only takes words like “who” and “the”, which i can see in the terminal:
    05876c8b-e9b7-47e4-88d3-015417366ae4-image.png ![0_1618322341814_f9478479-842d-4043-a952-b4a812810841-image.png](Uploading 100%)

    So my first issue which leads me to there was, that my Lucy-module wont start until i initialized

    var importedSentences="";
    

    in Hello-Lucy.js.

    So maybe improtedSentences is never filled with the data of sentences.json in Hello-Lucy-Folder.
    I got an error with concat on line 69:

    start() {
    		var combinedSentences = importedSentences.concat(this.lucy.sentences);
    ....
    

    Also i had some problems with module_name var, so i had to change to

    Module.register("Hello-Lucy",
    

    in line 28.
    SO maybe my “localPath” is wrong. Im not sure. Anyone any ideas?

    /home/pi/MagicMirror/modules/Hello-Lucy
    
    S 1 Reply Last reply Apr 13, 2021, 2:36 PM Reply Quote 0
    • S Away
      sdetweil @Nicodil
      last edited by sdetweil Apr 13, 2021, 2:36 PM Apr 13, 2021, 2:36 PM

      @nicodil I JUST posted a fix for that

      https://forum.magicmirror.builders/topic/14918/hello-lucy-not-shown-no-error/7

      Sam

      How to add modules

      learning how to use browser developers window for css changes

      N 1 Reply Last reply Apr 13, 2021, 2:42 PM Reply Quote 0
      • N Offline
        Nicodil @sdetweil
        last edited by Nicodil Apr 13, 2021, 2:49 PM Apr 13, 2021, 2:42 PM

        @sdetweil Thanks! With your FIX i can now use this line again:

        Module.register(ModuleName, {
        

        So the ModuleName seems to be found again, BUT
        if i dont initialize var importedSentences=“”; in the 2nd line,
        i get the following error:
        15e1fe94-4878-436b-b7ae-f9530abef747-image.png

        It seems like sentences are still not loaded…

        S 1 Reply Last reply Apr 13, 2021, 2:50 PM Reply Quote 0
        • S Away
          sdetweil @Nicodil
          last edited by sdetweil Apr 13, 2021, 2:55 PM Apr 13, 2021, 2:50 PM

          @nicodil I JUST tested and it worked…

          in the sources view
          find the module and source file (left nav) and put a stop (click the number on the left edge of the line) on line 27

          then hit f5, refesh page

          hover over the variable and expand the array
          Screenshot at 2021-04-13 09-54-11.png

          Sam

          How to add modules

          learning how to use browser developers window for css changes

          N 1 Reply Last reply Apr 13, 2021, 3:33 PM Reply Quote 0
          • N Offline
            Nicodil @sdetweil
            last edited by Apr 13, 2021, 3:33 PM

            @sdetweil Thanks for your help! Here are my errors:

            1fc01a8f-ea05-48d7-a266-c508d314cf95-image.png

            S 1 Reply Last reply Apr 13, 2021, 3:39 PM Reply Quote 0
            • S Away
              sdetweil @Nicodil
              last edited by Apr 13, 2021, 3:39 PM

              @nicodil so it seems u did NOT replace the line as per my instructions

              Sam

              How to add modules

              learning how to use browser developers window for css changes

              N 1 Reply Last reply Apr 13, 2021, 3:54 PM Reply Quote 0
              • N Offline
                Nicodil @sdetweil
                last edited by Apr 13, 2021, 3:54 PM

                @sdetweil said in Sentences not loaded in hello-Lucy:

                u did NOT replace the line as per my instructions

                But i did, see my code here:

                "use strict";
                
                var importedSentences;                              /** Prepare variable to be populated from import. */
                function readTextFile(file, callback) {
                	var rawFile = new XMLHttpRequest();
                	rawFile.overrideMimeType("application/json");
                	rawFile.open("GET", file, true);
                	rawFile.onreadystatechange = function() {
                		if (rawFile.readyState === 4 && rawFile.status == "200") {
                			callback(rawFile.responseText);
                		}
                	};
                	rawFile.send(null);
                }
                const sfn= document.currentScript.src.substring(7,document.currentScript.src.lastIndexOf(document.currentScript.src.slice(7).includes('//')?'//':'/'))
                const localPath= sfn.substring(sfn.indexOf('modules'))
                const ModuleName=localPath.substring(localPath.lastIndexOf("/")+1)
                //console.log("localPath="+localPath+" modulename="+ModuleName);
                
                readTextFile(localPath+"/sentences.json", function(text){
                	var tempImport = JSON.parse(text);
                	importedSentences = tempImport;
                	 console.log("SENTENCE: "+importedSentences);
                });
                
                ////////////////////////////////////////////////////
                
                Module.register(ModuleName, {
                
                	icon: "fa-microphone-slash",
                	pulsing: true,
                	help: false,
                	timeout: null,
                	lucy: {
                		mode: "Sprich 'Hello Lucy'",
                		sentences: []
                	},
                
                	modules: [],
                	previouslyHidden: [],
                
                	defaults: {
                		timeout: 15,                                // time listening for a command/sentence when mic pulsing
                		defaultOnStartup: "Hello-Lucy",
                		keyword: "HELLO LUCY",                      // keyword to activate listening for a command/sentence
                		standByMethod: "DPMS",                      // 'DPMS' = anything else than RPi or 'PI'
                		sounds: ["a.mp3",  "b.mp3",  "c.mp3" , "d.mp3"], // welcome sounds at startup randomly chosen
                		startHideAll: false,                        // if true, all modules start as hidden
                		microphone: "default",                      // 
                		speed: 1000,                                // transition speed between show/no-show/show in milliseconds
                	    	pageOneModules: ["Hello-Lucy"],         // default modules to show on page one/startup
                		    pageTwoModules: [],                         // modules to show on page two
                    		pageThreeModules: [],                       // modules to show on page two
                    		pageFourModules: [],                        // modules to show on page two
                    		pageFiveModules: [],                        // modules to show on page two
                    		pageSixModules: [],                         // modules to show on page two
                    		pageSevenModules: [],                       // modules to show on page two
                    		pageEightModules: [],                       // modules to show on page two
                    		pageNineModules: [],                        // modules to show on page two
                    		pageTenModules: [],                         // modules to show on page two
                		    greetingSounds: [ "a.mp3",  "b.mp3",  "c.mp3" , "d.mp3"], // randomized greeting sounds
                				confirmationSound: "ding.mp3",               // when command is accepted. use your own or default
                				debug: true,                               // get debug information in console
                	},
                
                	poweredOff: false,
                
                	start() {
                		var combinedSentences = importedSentences.concat(this.lucy.sentences);
                		this.lucy.sentences = combinedSentences;
                		//Log.info(`Starting module: ${this.name}`);
                		this.mode = this.translate("INIT");
                		this.modules.push(this.lucy);
                		//Log.info(`${this.name} is waiting for lucy command registrations.`);
                	},
                
                	getStyles() {
                		return ["font-awesome.css", "Hello-Lucy.css"];
                	},
                
                	getTranslations() {
                		return {
                			en: "translations/en.json",
                			de: "translations/de.json",
                			id: "translations/id.json"
                		};
                	},
                
                  // audible confirmation sound that Lucy understood the command
                	playConfirmationSound() {
                		var audio = new Audio(localPath+"/sounds/" + this.config.confirmationSound);
                		audio.play();
                	},
                
                  // randomized greeting sounds
                	playGreetingSound() {
                		var random_file = this.config.sounds[Math.floor(Math.random() * this.config.sounds.length)];
                		var audio = new Audio(localPath+"/sounds/"+random_file);
                		audio.play();
                	},
                
                	getDom() {
                		//Log.log("lucy entered getDom")
                		const wrapper = document.createElement("div");
                		const lucy = document.createElement("div");
                		lucy.classList.add("small", "align-left");
                
                		const modeSpan = document.createElement("span");
                		const icon = document.createElement("i");
                		icon.classList.add("fa", this.icon, "icon");
                		if (this.pulsing) {
                			icon.classList.add("pulse");
                			modeSpan.innerHTML = "Command Please:"
                		}
                		else
                			modeSpan.innerHTML = this.mode;
                		lucy.appendChild(icon);
                		lucy.appendChild(modeSpan);
                
                		if (this.config.debug) {
                			const debug = document.createElement("div");
                			debug.innerHTML = this.debugInformation;
                			lucy.appendChild(debug);
                		}
                
                		const modules = document.querySelectorAll(".module");
                		for (let i = 0; i < modules.length; i += 1) {
                			if (!modules[i].classList.contains(this.name)) {
                				if (this.help) {
                					modules[i].classList.add(`${this.name}-blur`);
                				} else {
                					modules[i].classList.remove(`${this.name}-blur`);
                				}
                			}
                		}
                
                		if (this.help) {
                			lucy.classList.add(`${this.name}-blur`);
                			const modal = document.createElement("div");
                			modal.classList.add("modal");
                			this.appendHelp(modal);
                			wrapper.appendChild(modal);
                		}
                
                		wrapper.appendChild(lucy);
                
                		return wrapper;
                	},
                
                	notificationReceived(notification, payload, sender) {
                		//Log.log("lucy module notification received="+notification)
                		var self=this;
                		if (notification === "DOM_OBJECTS_CREATED") {
                			//Log.log("lucy module sending start")
                			this.sendSocketNotification("START", { config: this.config, modules: this.modules });
                		} else if (notification === "REGISTER_LUCY_MODULE") {
                			if (Object.prototype.hasOwnProperty.call(payload, "mode") && Object.prototype.hasOwnProperty.call(payload, "sentences")) {
                				this.modules.push(payload);
                		}
                		}
                       // randomly chosen startup greeting
                		if (notification === "DOM_OBJECTS_CREATED") {
                			this.playGreetingSound();
                		}
                
                		// @TheStigh to manage hide/show modules on startup
                		if (this.config.startHideAll) {
                			if (notification === "DOM_OBJECTS_CREATED") {
                				MM.getModules().enumerate((module) => {
                					module.hide(1000);
                				});
                			}
                		}
                
                		if (notification === "DOM_OBJECTS_CREATED"){
                			var showOnStart = MM.getModules().withClass(self.config.pageOneModules);
                			showOnStart.enumerate(function(module) {
                				var callback = function(){};
                				module.show(self.config.speed, callback);
                			});
                		}
                
                		if (notification === "DOM_OBJECTS_CREATED"){
                			var showOnStart = MM.getModules().withClass(self.config.defaultOnStartup);
                			showOnStart.enumerate(function(module) {
                				var callback = function(){};
                				module.show(self.config.speed, callback);
                			});
                		}
                
                		// to show page one on alert @TheStigh
                		if (notification === "SHOW_ALERT") {
                			var showOnStart = MM.getModules().withClass(self.config.pageOneModules);
                			showOnStart.enumerate(function(module) {
                				var callback = function(){};
                				module.show(self.config.speed, callback);
                			});
                		}
                 	},
                
                	socketNotificationReceived(notification, payload) {
                		if (notification === "READY") {
                			this.icon = "fa-microphone";
                			this.mode = this.translate("NO_MODE")+ "'Hello Lucy'";
                			this.pulsing = false;
                
                		} else if (notification === "LISTENING") {
                			this.pulsing = true;
                
                		} else if (notification === "SLEEPING") {
                			this.pulsing = false;
                
                		} else if (notification === "ERROR") {
                			this.mode = notification;
                
                		} else if (notification === "LUCY") {
                			for (let i = 0; i < this.modules.length; i += 1) {
                				if (payload.mode === this.modules[i].mode) {
                					if (this.mode !== payload.mode) {
                						this.help = false;
                						this.sendNotification(`${notification}_MODE_CHANGED`, { old: this.mode, new: payload.mode });
                						this.mode = payload.mode;
                					}
                					if (this.mode !== "LUCY") {
                						this.sendNotification(`${notification}_${payload.mode}`, payload.sentence);
                					}
                					break;
                				}
                			}
                
                		} else if (notification === "HIDE_MODULES") {
                			this.playConfirmationSound();
                
                			MM.getModules().enumerate((module) => {
                				module.hide(1000);
                			});
                
                		} else if (notification === "SHOW_MODULES") {
                			this.playConfirmationSound();
                
                			MM.getModules().enumerate((module) => {
                				module.show(1000);
                			});
                
                		} else if (notification === "DEBUG") {
                			this.debugInformation = payload;
                
                		} else if (notification === "MODULE_STATUS") {
                			this.playConfirmationSound();
                
                			var hide = MM.getModules().withClass(payload.hide);
                			hide.enumerate(function(module) {
                				//Log.log("Hide "+ module.name);
                				var callback = function(){};
                				module.hide(self.config.speed, callback);
                			});
                
                			var show = MM.getModules().withClass(payload.show);
                			show.enumerate(function(module) {
                				//Log.log("Show "+ module.name);
                				var callback = function(){};
                				module.show(self.config.speed, callback);
                			});
                
                		} else if (notification === "MODULE_UPDATE") {
                			this.sendNotification(payload);
                			//console.log("sendNoti received :"+payload);
                
                		} else if (notification === "CLOSE_HELP") {
                			this.help = false;
                		} else if (notification === "OPEN_HELP") {
                			this.help = true;
                		}
                		this.updateDom(300);
                	},
                
                	appendHelp(appendTo) {
                		const listLabel = document.createElement("div");
                		listLabel.classList.add("medium");
                		// heading for help screen
                		listLabel.innerHTML = `${this.translate("Lucy Commands")}:`;
                		appendTo.appendChild(listLabel);
                
                		const list = document.createElement("ul");
                		for (let i = 0; i < this.lucy.sentences.length; i += 1) {
                			const item = document.createElement("li");
                			list.classList.add("xsmall");
                			item.innerHTML = this.lucy.sentences[i];
                			list.appendChild(item);
                		}
                		appendTo.appendChild(list);
                	}
                });
                
                
                S 1 Reply Last reply Apr 13, 2021, 4:02 PM Reply Quote 0
                • S Away
                  sdetweil @Nicodil
                  last edited by Apr 13, 2021, 4:02 PM

                  @nicodil ok, are you using https for mm?

                  can u stop on the sfn= line and hover over the src

                  document.currentScript.src

                  I just need to see the beginning of the string

                  Sam

                  How to add modules

                  learning how to use browser developers window for css changes

                  1 Reply Last reply Reply Quote 0
                  • N Offline
                    Nicodil
                    last edited by Nicodil Apr 13, 2021, 4:21 PM Apr 13, 2021, 4:13 PM

                    @sdetweil Yes sure:
                    1cc0da69-f59c-4573-9e7d-317afedb0792-image.png

                    AND No file in this folder:
                    be6e932b-e6a7-449a-a02c-48e231918371-image.png

                    S 1 Reply Last reply Apr 13, 2021, 4:34 PM Reply Quote 0
                    • S Away
                      sdetweil @Nicodil
                      last edited by Apr 13, 2021, 4:34 PM

                      @nicodil that’s the right path.is sentences.json in the module folder?

                      computer says no

                      Sam

                      How to add modules

                      learning how to use browser developers window for css changes

                      N 1 Reply Last reply Apr 13, 2021, 4:37 PM Reply Quote 0
                      • 1
                      • 2
                      • 1 / 2
                      1 / 2
                      • First post
                        4/19
                        Last post
                      Enjoying MagicMirror? Please consider a donation!
                      MagicMirror created by Michael Teeuw.
                      Forum managed by Sam, technical setup by Karsten.
                      This forum is using NodeBB as its core | Contributors
                      Contact | Privacy Policy