Read the statement by Michael Teeuw here.
Python in to the magic mirror.
-
the spawn stuff needs to be INSIDE the node helper…
probably called in Start or in the socketNotificationReceived, when the config is sent down from the module…
-
@sdetweil Thank you for you’re information.
I changed it like you said but unfortunly still get the With screens. -
@paulvanderheijden90
If possible, Instead image, post code itself.
Anyway, You’d better to read docs more carefully.MMM-P2000.js
/// MMM-P2000.js Module.register("MMM-P2000", { getDom: function() { var e = document.createElement("div") e.id = "DISPLAY" return e }, notificationReceived: function(notification, payload, sender) { switch(notification) { case "DOM_OBJECTS_CREATED": var timer = setInterval(()=>{ this.sendSocketNotification("GIVE_ME_DATA") }, 1000) break } }, socketNotificationReceived: function(notification, payload) { switch(notification) { case "HERE_IS_DATA": var e = document.getElementById("DISPLAY") e.innerHTML = payload break } }, })
node_helper.js
/// node_helper.js const spawn = require("child_process").spawn var NodeHelper = require("node_helper") module.exports = NodeHelper.create({ socketNotificationReceived: function(notification, payload) { switch(notification) { case "GIVE_ME_DATA": this.job() break } }, job: function() { var process = spawn("python", ["/home/pi/src/test.py"]) process.stdout.on("data", (data)=>{ console.log(data) this.sendSocketNotification("HERE_IS_DATA", data) }) } })
I didn’t test. I wrote this code with only my brain. so there could be errors, but you can catch the concept.
-
@Sean Thank you very much im going to check the code and see if I can implement it in the magic mirror.
Thank you I will let you know -
@sean
Hello Sean, Again thank you very much for you’re valued help!.I spend yesterday after midday and evening with a friend figure out how you’re code is working. and we did some tests to send also somthing back to the Node helper and alote came clear by you’re example.
So realy thank u very much.To day I spend my morning figure out one last problem the text on the screen is [ Object ArrayBuffer] and not the string I put true the stdout.write.
The text that is displayed on the screen is :I did some debugging of my own. and wenn I override the data in the node helper just after it come from the spawn function this is displayed on the mirror. so the code is working until the spawn function.
/// node_helper.js const spawn = require("child_process").spawn var NodeHelper = require("node_helper") module.exports = NodeHelper.create({ socketNotificationReceived: function(notification, payload) { switch(notification) { case "GIVE_ME_DATA": this.job() break } }, job: function() { var process = spawn("python", ["/home/pi/src/test.py"]) process.stdout.on("data", (data)=>{ data= "test hello World" console.log(data) this.sendSocketNotification("HERE_IS_DATA", data) }) } })
So i tested also the python test project. and wenn I run it in the terminal it give no error. so the python project is fine aswell I think.
import sys sys.stdout.write("Hallo Ik ben Paul")
So I think the spawn function is not correct at this time?
Can you help me out one more time please? -
@paulvanderheijden90 said in Python in to the magic mirror.:
Object ArrayBuffer
is one of javascript Object type. not text itself. (Sorry for my prior example. it needs to be converted from Object to HTMLText.)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer
process.stdout.on("data", (data)=>{ console.log(data) // You can see the structure of this `data` object(ArrayBuffer) on the shell terminal. var result = String.fromCharCode.apply(null, new Uint16Array((data)) // You need to convert or filter or manipulate `data` object whatever for your real usage. this.sendSocketNotification("HERE_IS_DATA", result) })
-
@Sean Hello Sean,
I was thinking somting was wrong because I see the buffer printing in the terminal showing:Buffer 48 61 6c 6c 6f 20 49 6b 20 62 65 6e 20 50 61 75 6c>
i was trying to figure out the text line that it was representing but it was not showing something.
So im happy you came up with the solution for the buffer.
Unfortunly wenn at the var result code the magic mirror is crashing again and im not able to debug.
Can you please heave a look at it/// node_helper.js const spawn = require("child_process").spawn var NodeHelper = require("node_helper") module.exports = NodeHelper.create({ socketNotificationReceived: function(notification, payload) { switch(notification) { case "GIVE_ME_DATA": this.job() break } }, job: function() { var process = spawn("python", ["/home/pi/src/test.py"]) process.stdout.on("data", (data)=>{ console.log(data) var result = String.fromCharCode.apply(null, new Uint16Array((data)) this.sendSocketNotification("HERE_IS_DATA", result) }) }
-
@paulvanderheijden90
Crashing? show me the error log. -
@sean said in Python in to the magic mirror.:
Crashing? show me th
App threw an error during load /home/pi/MagicMirror/modules/MMM-P2000/node_helper.js:76 }.call(this, exports, require, module, __filename, __dirname); }); ^ SyntaxError: missing ) after argument list at createScript (vm.js:80:10) at Object.runInThisContext (vm.js:139:10) at Module._compile (module.js:606:28) at Object.Module._extensions..js (module.js:653:10) at Module.load (module.js:561:32) at tryModuleLoad (module.js:504:12) at Function.Module._load (module.js:496:3) at Module.require (module.js:586:17) at require (internal/module.js:11:18) at loadModule (/home/pi/MagicMirror/js/app.js:127:17) Whoops! There was an uncaught exception... /home/pi/MagicMirror/modules/MMM-P2000/node_helper.js:76 }.call(this, exports, require, module, __filename, __dirname); }); ^ SyntaxError: missing ) after argument list at createScript (vm.js:80:10) at Object.runInThisContext (vm.js:139:10) at Module._compile (module.js:606:28) at Object.Module._extensions..js (module.js:653:10) at Module.load (module.js:561:32) at tryModuleLoad (module.js:504:12) at Function.Module._load (module.js:496:3) at Module.require (module.js:586:17) at require (internal/module.js:11:18) at loadModule (/home/pi/MagicMirror/js/app.js:127:17) MagicMirror will not quit, but it might be a good idea to check why this happened. Maybe no internet connection? If you think this really is an issue, please open an issue on GitHub: https://github.com/MichMich/MagicMirror/issues Launching application.
-
@paulvanderheijden90 said in Python in to the magic mirror.:
Your log is telling you what is wrong.
See the 76 line ofnode_helper.js
. There could be missing)
after argument list.