Unsolved Et si on codait (sans erreur) !
-
Bonjour,
dans les recipes, il y a des commandes.
Donc par exemple, si je dis Jarvis TV France2
il me lance la TV sur cette chaine.
Est il possible, depuis un nouveau module à moi, demander en ligne de code d exécuter cette commande (un truc du genre : this.sendNotification(“EXT_FREEBOXTV-PLAY”, { payload: “France2” }); )?Autre question : depuis le node helper, j ai une erreur lorsque j essaie de faire un des appels suivants : this.sendNotification… ou this.sendSocketNotification… !
voici le genre d erreur :
[13.02.2023 12:50.14.919] [ERROR] Whoops! There was an uncaught exception…
[13.02.2023 12:50.14.928] [ERROR] ReferenceError: sendNotification is not defined
at Class.initialize (/home/rpi/MagicMirror2/modules/ATO-MM1_CMD_MM2/node_helper.js:61:9)
at Class.socketNotificationReceived (/home/rpi/MagicMirror2/modules/ATO-MM1_CMD_MM2/node_helper.js:26:14)
at Socket.<anonymous> (/home/rpi/MagicMirror2/js/node_helper.js:108:11)
at Socket.emit (node:events:513:28)
at Socket.emitUntyped (/home/rpi/MagicMirror2/node_modules/socket.io/dist/typed-events.js:69:22)
at /home/rpi/MagicMirror2/node_modules/socket.io/dist/socket.js:614:39
at process.processTicksAndRejections (node:internal/process/task_queues:78:11)
[13.02.2023 12:50.14.929] [ERROR] MagicMirror² will not quit, but it might be a good idea to check why this happened. Maybe no internet connection?
[13.02.2023 12:50.14.930] [ERROR] If you think this really is an issue, please open an issue on GitHub: https://github.com/MichMich/MagicMirror/issuesmerci d avance de votre aide
Adel -
this.sendNotification(“EXT_FREEBOXTV-PLAY”,“France2”)
-> le payload attend du texte mais pas un objet
-> texte => valeur unique
-> objet => plusieurs valeursthis.sendNotification
est uniquement valable dans le core mais pas dans le node_helper
-> permet de dialoguer avec les autres modules (selon le protocole defini par le module qui lira la notification)
this.sendSocketNotification
permet le dialogue entre le core -> node_helper et également entre node_helper -> core
Notes:
le node_helper: permet de faire les calculs / recuperation externe d’info (api / xml / img/ …) [ne crashera pas MM² en cas d’erreur]
le core: permet l’affichage du module, et faire les calculs a la volée si besoin
/!\ il fait essayer de faire le minimum de calcul afin de minimiser les chances crashs ou vraiment cerner ce que l’on veux faire !
-> si le core crash… on crash MM²
-> exemple:- si crash: les autre modules aussi !!! ils seront affiché mais plus de mise a jours par exemple (resterons figé)
- si crash au démarrage, les autres modules ne se lancerons pas ! (MM² va suivre la liste des modules de la config et arretera au module qui a crash)
- si crash: MM² n’envera pas la notification “top départ” (
DOM_OBJECTS_CREATED
ouALL_MODULES_STARTED
)pour dire que tous les modules sont lancé … donc des modules ne fonctionnerons pas
c’est complexe la vie d’artiste, imaginer tous les cas de crash ! :)))
-
bugsounet
-
je pense que j avais compris dans l ensemble tout cela.
Je pense que mon erreur vient d ailleurs (un forEach je suppose) car j ai l erreur suivante :[13289:0213/232717.372885:ERROR:CONSOLE(1)] “TypeError: Failed to fetch”, source: devtools://devtools/bundled/entrypoints/main/main.js (1)
ça me bloque car je ne vois pas ce que je dois corriger !!!
-
nan, c’est pas ça
c’est une erreur dans la gestion de la console dev (oui oui … personne est parfait !!!)
cherche plus haut … doit avoir une ligne rouge
sinon … regarde dans le node helper (en lancant mm dans un terminal, tu dois avoir une erreur au démarrage) et corrige l’erreur (ou l’horreur ! au choix lol) -
j ai ça : un warning et rien en rouge d apres moi
Load stylesheet: modules/ATO-MM1_CMD_MM2/ATO-MM1_CMD_MM2.css
loader.js:162 Styles loaded for: ATO-MM1_CMD_MM2
loader.js:164 Translations loaded for: ATO-MM1_CMD_MM2
loader.js:184 Load script: modules/default/clock/clock.js
module.js:509 Module registered: clock
loader.js:155 Bootstrapping module: clock
loader.js:184 Load script: vendor/node_modules/moment/min/moment-with-locales.js
loader.js:184 Load script: vendor/node_modules/moment-timezone/builds/moment-timezone-with-data.js
loader.js:184 Load script: vendor/node_modules/suncalc/suncalc.js
loader.js:160 Scripts loaded for: clock
loader.js:203 Load stylesheet: modules/default/clock/clock_styles.css
loader.js:162 Styles loaded for: clock
loader.js:164 Translations loaded for: clock
loader.js:203 Load stylesheet: css/custom.css
clock.js:48 Starting module: clock
main.js:501 All modules started!
ATO-MM1_CMD_MM2.js:104 ATO DOM_OBJECTS_CREATED
VM4 sandbox_bundle:2 Electron Security Warning (Insecure Content-Security-Policy) This renderer process has either no Content Security
Policy set or a policy with “unsafe-eval” enabled. This exposes users of
this app to unnecessary security risks.For more information and help, consult
https://electronjs.org/docs/tutorial/security.
This warning will not show up
once the app is packaged.
warnAboutInsecureCSP @ VM4 sandbox_bundle:2
ATO-MM1_CMD_MM2.js:78 ATO la commande : 1.sh
ATO-MM1_CMD_MM2.js:83 ATO il faut executer la commande : 1.sh
ATO-MM1_CMD_MM2.js:85 ATO Commande executée : 1.sh -
ben c’est bon
-
des que je mets la ligne de france2 j ai une erreur : Uncaught SyntaxError: Invalid or unexpected token
cmd = payload console.log("ATO il faut executer la commande : ",cmd) this.sendNotification(“EXT_FREEBOXTV-PLAY”,“France2”) console.log("ATO Commande executée : ",cmd)
-
remplace
this.sendNotification(“EXT_FREEBOXTV-PLAY”,“France2”)
parthis.sendNotification("EXT_FREEBOXTV-PLAY","France2")
attention:
“
c’est differrent de"
-
ah oui c est ça j ai l impression. Purée j avais copié collé ce que tu m avais envoyé !
par contre … !!!
-
que veux tu que je te dise
vive le copier coller !
-
tu fais comment pour debugger le node helper car moi quand je lance en mode dev, je ne peux mettre que des points d arret que dans le core
-
dans le core … c’est la fenetre de debug (avec npm start dev) qui s’affiche dans MM²
dans le node helper, c’est tout ce que tu vois quand tu lance MM²exemple:
bugsounet@bugsounet-Kubuntu:~/MagicMirror$ npm start > magicmirror@2.23.0-develop start > DISPLAY="${DISPLAY:=:0}" ./node_modules/.bin/electron js/electron.js [14.02.2023 00:03.50.366] [LOG] Starting MagicMirror: v2.23.0-develop [14.02.2023 00:03.50.367] [LOG] Loading config ... [14.02.2023 00:03.50.369] [LOG] Loading module helpers ... [14.02.2023 00:03.50.370] [LOG] No helper found for module: alert. [14.02.2023 00:03.50.370] [LOG] No helper found for module: clock. [14.02.2023 00:03.50.371] [LOG] Initializing new module helper ... [14.02.2023 00:03.50.372] [LOG] Module helper loaded: EXT-Alert [14.02.2023 00:03.50.373] [LOG] Initializing new module helper ... [14.02.2023 00:03.50.373] [LOG] Module helper loaded: Gateway [14.02.2023 00:03.50.501] [LOG] Initializing new module helper ... [14.02.2023 00:03.50.501] [LOG] Module helper loaded: MMM-GoogleAssistant [14.02.2023 00:03.50.503] [LOG] Initializing new module helper ... [14.02.2023 00:03.50.503] [LOG] Module helper loaded: EXT-Detector ...
apres tu tags tes logs c’est plus simple pour lire
en utilisant console.log(“[MODULE] [FONCTION/CLASSE] Blah Blah”)
-
(oupss … on a vu que j’ai codé
Gateway v3
mdr) -
non meme pas
-
apres tu n’es pas obliger de tout logué en production, d’ou le
debug
true ou false en config
moi quand je code si le debug est sur false … tu vois le minimum -
oui je viens de faire le test et je vois la difference. Je pensais qu il fallait mettre debug à true et logLevel: [“INFO”, “LOG”, “WARN”, “ERROR”,“DEBUG”], et faire le npm start dev
France2 se lance bien Merci.
J ai appris des trucs
après le NodeJS, y a des trucs un peu bizarre à comprendre. Il me faudra du temps. -
les chaines fonctionnent, par contre this.sendNotification(“EXT_FreeboxTV-STOP”); n arrête pas le TV !!?? Est ce la bonne syntaxe?
"stop": { notificationExec: { notification: "EXT_FreeboxTV-STOP" }, soundExec: { chime: "close" } },
-
regarde les noti dispo dans la Doc
Note: attention au protocole et aux Majuscules/Minuscules
-
oui j ai regardé directement dans le recipe et je te l ai collé.
donc pas d erreur sur la noti c est sûr , mais est ce la bonne syntaxe sachant qu’il n y a pas de payload ?
Attends c est bizarre, dans le doc c est EXT_FREEBOXTV-STOP !!!
-
je corrigerai le recipe