Read the statement by Michael Teeuw here.
How to use the 'node_helper', 'serialport'
-
const NodeHelper = require('node_helper') const Serialport = require("serialport"); module.exports = NodeHelper.create({ start: function () { }, socketNotificationReceived: function (notification, payload) { if (notification === 'CONFIG') { const self = this; self.config = payload; } else if(notification ==='BUTTON_PRESSED') { var serialport = new Serialport('/dev/ttyACM0', { baudRate: 9600 }); var led = 0; serialport.open(function () { console.log('connect...'); serialport.on('data', function(data) { // 아두이노로부터 전달된 데이터 console.log('data received: ' + data); }); if(this._isPushed==false) { serialport.write("0"); } else if(this._isPushed==true) { serialport.write("1"); } }); } }, })
Thank you very much…!!! Overlay is not important.
It was working as you told me.
Currently, node_helper sets the following, but serial.write does not work. May I ask you one last time?
I’m really desperate:folded_hands_light_skin_tone: :folded_hands_light_skin_tone: :folded_hands_light_skin_tone: :folded_hands_light_skin_tone:
https://github.com/nhpunch/sohard
I uploaded the Arduino code.
int led = 13; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); Serial.println(“hello”); } void loop() { static int incomingValue = 0; // nodeJS에서 보낸값 if ( Serial.available() > 0 ) { // 뭔가 입력값이 있다면 incomingValue = Serial.read(); Serial.println(incomingValue); } if ( incomingValue == 49 ) { // 값이 ‘1’ 이면 digitalWrite(13, HIGH); // LED를 켠다. } if ( incomingValue == 48 ) { // 값이 ‘0’ 이면 digitalWrite(13, LOW); // LED를 끈다. } deayl(2000); }
-
@nhpunch said in How to use the 'node_helper', 'serialport':
if(this._isPushed==false)
where is _isPushed defined or set?
i know it is in module_name.js, but node_helper cannot see it…
you should send that as the payload on button_pressed message
-
socketNotificationReceived: function (notification, payload) { if (notification === 'CONFIG') { const self = this; self.config = payload; } else if(notification ==='BUTTON_PRESSED') { this._isPushed = payload; var serialport = new Serialport('/dev/ttyACM0', { baudRate: 9600 });
Is that right? I’m really sorry for you.
-
@nhpunch yes if you send it that way
this.sendSocketNotification(“BUTTON_PUSHED”,this._isPushed)
-
false, true
works with two button in moduleIt seems that the value can not be sent to the node_helper
why?
buttonoff.addEventListener('click', ()=> { Log.log("button pushed 'on'") this._isPushed = false; console.log(this._isPushed); }); button.addEventListener('click', ()=> { Log.log("button pushed 'off' ") this._isPushed = true; console.log(this._isPushed); });
this is module
serialport.write(this._isPushed==true? '1' : '0');
this is node_helper
-
else if(notification ==='BUTTON_PRESSED') { this._isPushed = payload; console.log(payload);
‘false’ is displayed in the terminal window
._isPushed is passed to node_helper, but I think that the changed value is not sent when the button is pressed.
Please advise…:folded_hands_light_skin_tone: :folded_hands_light_skin_tone: :folded_hands_light_skin_tone:
If this is solved, it’s really a success.:flexed_biceps_light_skin_tone:
-
@nhpunch said in How to use the 'node_helper', 'serialport':
buttonoff.addEventListener('click', ()=> { Log.log("button pushed 'on'") this._isPushed = false; console.log(this._isPushed); this.sendSocketNotification(“BUTTON_PUSHED”,this._isPushed) }); button.addEventListener('click', ()=> { Log.log("button pushed 'off' ") this._isPushed = true; console.log(this._isPushed); this.sendSocketNotification(“BUTTON_PUSHED”,this._isPushed) });
-
._isPushed
was sentbut there was an error… im really sad
-
@nhpunch that is in the node_helper, serial library
looks like serialport.write(data: string|Buffer|Array,
i don’t know anything about serial port api… looks like promise based, so would need callbacks or .then()
-