Read the statement by Michael Teeuw here.
How to use the 'node_helper', 'serialport'
-
@nhpunch u cannot talk to hardware in module, you do that in node_helper.
if you split the mirror into two parts server and client… node_helper runs on the server,
module runs in the client browser…(even in the same machine)here is a package u can install to enable code to talk to serial port in node helper
https://www.npmjs.com/package/serialport
button would be in the module. you can use an html button, or more advanced div and span
then when u get the button action in the module, you sendSocketNotification() a message to the node_helper… then node_helper then talks serial port to your arduino. -
Thank you very much for your reply.
You said that hardware and modules did not communicate, but communication is possible.
serialport.open(function () { console.log('connect...'); serialport.on('data', function(data) { // 아두이노로부터 전달된 데이터 console.log('data received: ' + data); }); setInterval( function() { // 2초마다 아두이노에게 문자열을 전송하는 예 led = !led; serialport.write(led==true ? "1" : "0", function(err, result){ if(err){ console.log(err); } }); }, 5000); });
In this code, it is possible to send a string to Arduino
What I’m wondering is how to do sendSocketNotification ().
I referenced
https://github.com/MichMich/MagicMirror/tree/master/modules
but did not understandPlease let me know how to send it. Then I will be very thankful:folded_hands_light_skin_tone:
-
@nhpunch there are two parts of a MagicMirror module
- node_helper, runs on server, can use require(…some other library…)
- module_name.js, runs in browser, manages data presented on screen, cannot use require(…)
so, the two parts can talk to each other by sending socket messages, using the supplied function
sendSocketNotification(some_id_string, some_data_packet)the receiver of the message gets called at the function socketNotificationReceived(some_id_string, some_data_packet)
get my sample module that has both parts, and uses timer,
https://github.com/sdetweil/SampleModule
also see the developers doc here
https://github.com/MichMich/MagicMirror/tree/master/modules
my sample implements all the functions so you can see them…
not all are needed… so u can comment out the ones u don’t need to useconfig for my sample, to add to config.js is
{ module: "SampleModule", position: "center", config: { message: "this is a test from config entry" } },
-
I was really grateful and ran the sample code.
But I do not know what to send as a module to do what I want.
Can you help me with my module and node_helper?
-
@nhpunch sorry, i don’t understand
-
@sdetweil you make up your own messages…
so, you have a push button on the screen (done by module_name,js)… when push button,
send button name and 1 to node helper… when it gets 1, it uses serial port to send to arduino.when u let up on button , you send 0…
write out what you WANT the system to do… (design)
then implement THAT design
-
I’m doing what you said, but I do not know how to send it to the node_helper when the button is pressed.
I’m so sorry.
-
@nhpunch this.sendSocketNotification(…,…)
from the doc
this.sendSocketNotification(notification, payload)
notification String - The notification identifier.
payload AnyType - Optional. A notification payload.If you want to send a notification to the node_helper, use the sendSocketNotification(notification, payload). Only the node_helper of this module will receive the socket notification.
Example:
this.sendSocketNotification('SET_CONFIG', this.config);
you’ll see in the sample that this is used twice… once by the module_name.js to send the config over to the node_helper and once by the node_helper to send a new text string to the module_name.js to display
its also used in your module, from the first post above
start: function () { Log.info("Starting module: " + this.name); this.sendSocketNotification('CONFIG', this.config) },
-
-
@nhpunch sure. Make a GitHub repo, and let me know