Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expected "=", [ \t\r\n\x0C\0x00], or [a-zA-Z_\-0-9] but end of input found. #57

Closed
TomNovosad opened this issue Oct 20, 2017 · 6 comments

Comments

@TomNovosad
Copy link

I want to send SMS by the Mikrotik router, here is my code:

channel.write('/tool/sms/send', {
   'phone-number': '00420123456789',
   'message': 'Test',
   'port': 'usb1'
});

SMS has been sent (and received), but i get this error message from mikronode:

***************************************************************************
***************************************************************************
Error processing sentence: { SyntaxError: Expected "=", [ \t\r\n\x0C\0x00], or [a-zA-Z_\-0-9] but end of input found.
    at peg$buildStructuredError (D:\test\node_modules\mikronode\dist\mikronode.js:21362:15)
    at Object.peg$parse [as parse] (D:\test\node_modules\mikronode\dist\mikronode.js:22222:14)
    at MapSubscriber.project (D:\test\node_modules\mikronode\dist\mikronode.js:479:39)
    at MapSubscriber._next (D:\test\node_modules\mikronode\dist\mikronode.js:13247:36)
    at MapSubscriber.Subscriber.next (D:\test\node_modules\mikronode\dist\mikronode.js:2185:19)
    at MapSubscriber._next (D:\test\node_modules\mikronode\dist\mikronode.js:13253:27)
    at MapSubscriber.Subscriber.next (D:\test\node_modules\mikronode\dist\mikronode.js:2185:19)
    at DoSubscriber._next (D:\test\node_modules\mikronode\dist\mikronode.js:11071:31)
    at DoSubscriber.Subscriber.next (D:\test\node_modules\mikronode\dist\mikronode.js:2185:19)
    at Subject.next (D:\test\node_modules\mikronode\dist\mikronode.js:1777:26)
    at ScanSubscriber.accumulator (D:\test\node_modules\mikronode\dist\mikronode.js:522:41)
    at ScanSubscriber._tryNext (D:\test\node_modules\mikronode\dist\mikronode.js:15114:28)
    at ScanSubscriber._next (D:\test\node_modules\mikronode\dist\mikronode.js:15107:26)
    at ScanSubscriber.Subscriber.next (D:\test\node_modules\mikronode\dist\mikronode.js:2185:19)
    at Socket.handler (D:\test\node_modules\mikronode\dist\mikronode.js:5272:47)
    at emitOne (events.js:115:13)
    at Socket.emit (events.js:210:7)
    at addChunk (_stream_readable.js:252:12)
    at readableAddChunk (_stream_readable.js:239:11)
    at Socket.Readable.push (_stream_readable.js:197:10)
    at TCP.onread (net.js:589:20)
  message: 'Expected "=", [ \\t\\r\\n\\x0C\\0x00], or [a-zA-Z_\\-0-9] but end of input found.',
  expected: 
   [ { type: 'class',
       parts: [Array],
       inverted: false,
       ignoreCase: false },
     { type: 'class',
       parts: [Array],
       inverted: false,
       ignoreCase: false },
     { type: 'literal', text: '=', ignoreCase: false } ],
  found: null,
  location: 
   { start: { offset: 24, line: 2, column: 21 },
     end: { offset: 24, line: 2, column: 21 } },
  name: 'SyntaxError' }
Skipping and continuing
***************************************************************************
***************************************************************************

Here is log from router:

16:55:25 gsm,write,debug \1B\r 
16:55:25 gsm,write,debug 
16:55:25 gsm,write,debug AT\r 
16:55:25 gsm,write,debug 
16:55:25 gsm,read,debug AT 
16:55:25 gsm,read,debug OK 
16:55:25 gsm,write,debug AT+CPIN?\r 
16:55:25 gsm,write,debug 
16:55:25 gsm,read,debug AT+CPIN? 
16:55:25 gsm,read,debug +CPIN: READY 
16:55:25 gsm,read,debug OK 
16:55:25 gsm,write,debug AT+CMGF=0\r 
16:55:25 gsm,write,debug 
16:55:25 gsm,read,debug AT+CMGF=0 
16:55:25 gsm,read,debug OK 
16:55:25 gsm,write,debug AT+CMGS=18\r 
16:55:25 gsm,read,debug AT+CMGS=18 
16:55:25 gsm,read,debug >  
16:55:25 gsm,write,debug 0021000E8100247047244692001104D4F29C0E\1A 

Could you help me, please?

@Trakkasure
Copy link
Owner

Which version of the library are you using?
Can you enable debug mode?

var MikroNode = require('mikronode');
// Create API instance to a host.
var device = new MikroNode(IP);
device.setDebug(MikroNode.DEBUG);

@Trakkasure
Copy link
Owner

What I really need, is the data attempted to be parsed before and during the error.
If DEBUG isn't enough, then SILLY will give what I need.

@TomNovosad
Copy link
Author

I am using 2.3.4.
Thanks for your response.

Here is complete log:

Login complete: Connected
Creating channel  1508827277144
Channel 1508827277144 Created
Writing on channel 1508827277144 /tool/sms/send { 'phone-number': '00420123456789',
  message: 'Test',
  port: 'usb1' }
SocketStream::write: [ [ '/tool/sms/send',
    '.tag=1508827277144-1',
    '=phone-number=00420123456789',
    '=message=Test',
    '=port=usb1' ] ]
SocketStream::write: sending /tool/sms/send
SocketStream::write: sending .tag=1508827277144-1
SocketStream::write: sending =phone-number=00420123456789
SocketStream::write: sending =message=Test
SocketStream::write: sending =port=usb1
Packet received:  [ '\u0003!re\u0014.tag=1508827277144-1',
  '\u0005!done\u0014.tag=1508827277144-1',
  '' ]
***************************************************************************
***************************************************************************
Error processing sentence: { SyntaxError: Expected "=", [ \t\r\n\x0C\0x00], or [a-zA-Z_\-0-9] but end of input found.
    at peg$buildStructuredError (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:21362:15)
    at Object.peg$parse [as parse] (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:22222:14)
    at MapSubscriber.project (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:479:39)
    at MapSubscriber._next (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:13247:36)
    at MapSubscriber.Subscriber.next (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:2185:19)
    at MapSubscriber._next (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:13253:27)
    at MapSubscriber.Subscriber.next (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:2185:19)
    at DoSubscriber._next (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:11071:31)
    at DoSubscriber.Subscriber.next (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:2185:19)
    at Subject.next (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:1777:26)
    at ScanSubscriber.accumulator (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:522:41)
    at ScanSubscriber._tryNext (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:15114:28)
    at ScanSubscriber._next (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:15107:26)
    at ScanSubscriber.Subscriber.next (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:2185:19)
    at Socket.handler (D:\Projects\incinity\invipo-node\node_modules\mikronode\dist\mikronode.js:5272:47)
    at emitOne (events.js:115:13)
    at Socket.emit (events.js:210:7)
    at addChunk (_stream_readable.js:252:12)
    at readableAddChunk (_stream_readable.js:239:11)
    at Socket.Readable.push (_stream_readable.js:197:10)
    at TCP.onread (net.js:589:20)
  message: 'Expected "=", [ \\t\\r\\n\\x0C\\0x00], or [a-zA-Z_\\-0-9] but end of input found.',
  expected: 
   [ { type: 'class',
       parts: [Array],
       inverted: false,
       ignoreCase: false },
     { type: 'class',
       parts: [Array],
       inverted: false,
       ignoreCase: false },
     { type: 'literal', text: '=', ignoreCase: false } ],
  found: null,
  location: 
   { start: { offset: 24, line: 2, column: 21 },
     end: { offset: 24, line: 2, column: 21 } },
  name: 'SyntaxError' }
Skipping and continuing
***************************************************************************
***************************************************************************

@Trakkasure
Copy link
Owner

Ok. I see what is happening. The exception is due to the inconsistent return from the server. Typically an !re sentence has actual data. In this implementation, there is no data.
I probably should issue a ticket for RouterOS guys. However, I can alter the parser to handle this issue.

Trakkasure added a commit that referenced this issue Oct 25, 2017
…entences

Fix #57 : allow non data return sentences
@Trakkasure
Copy link
Owner

Let me know if this fixes it. I don't have SMS capability from my devices. I get traps in response.

@TomNovosad
Copy link
Author

It works great. Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants