Stokerforum

Interface => Interface til varme systemer => Emne startet af: SteenSN efter Jun 10, 2021, 20:00

Titel: Seriel kommunikation med NodeJS
Indlæg af: SteenSN efter Jun 10, 2021, 20:00
Lige som PellMon med Python burde det vel være muligt at lege med en version 6 styring med NodeJS - har nogen rodet med det? Jeg kan forbinde til COM3 (og Stokerkontrol fungerer fint på COM3), porten åbnes fint og specifikationerne for COM3-porten vises, men der kommer ingen data. Skal jeg sende en kommando før det kommer data? Eller er der noget helt grundlæggende, jeg har misforstået? Koden er helt simpel:

const SerialPort = require('serialport')
const Readline = require('@serialport/parser-readline')
const port = new SerialPort('COM3', {
    baudRate: 9600 
})

const parser = port.pipe(new Readline({ delimiter: '\r\n' }))

port.on("open", () => {
    console.log("Port opened");
    SerialPort.list().then(
        ports => ports.forEach(console.log),
        err => console.error(err)
      )     
})
parser.on("data", (data) => {
  console.log(data);
} );
Titel: Sv: Seriel kommunikation med NodeJS
Indlæg af: motoz efter Jun 14, 2021, 09:44
The controller doesn't send anything spontaneously, it only responds to correctly formatted frames you send to it. A kind of protocol specification used to be found from the old NBE website, but I don't think it's anywhere anymore. You could use the pellmon python source as specification to work out the details. Basically you could get an answer by sending a simple 'frame read' command like 'Z000000' but it's a bit more complicated since the controller wants a correct checksum at the end of the request before it answers anything. And then you need to parse the result, every response contain a bunch of different measurement/setting values.
Python code for the v4-5-6 serial protocol here: https://github.com/motoz/PellMon/tree/master/src/Scotteprotocol
Titel: Sv: Seriel kommunikation med NodeJS
Indlæg af: SteenSN efter Jul 01, 2021, 09:28
Tak for svaret og linket til Pellmon. Jeg prøvede at sende 'Z0000000'  og ' Z560000Y' og fik svar tilbage, så det virker fint. Svaret på det første var:
<Buffer 45>
<Buffer 30 75>

og på 'Z560000Y' kom fx:

<Buffer 36 32 20 20 20 34 39 20 20 20 32 37 20 20 20 20 31 31 30 30 30 30 31 30 30 30>

Godt at det kun er et hobbyprojekt....