SK / Node Red / Digital Switching Maretron DCR-100
I am traying to get digital switching working via SignalK and Node Red.
I have installed the following plugins:
- @signalk/signalk-node-red (operational)
- signalk-n2k-switching (configured - all on)
- signalk-maretron-proprietary (configured - all on)
I try to set electrical.switches.bank.11.3.state on a Maretron DCR 100
My node red dashboard:
[{"id":"89afe19b71f08c67","type":"tab","label":"Flow 2","disabled":false,"info":"","env":[]},{"id":"fc56aacc.889408","type":"signalk-subscribe","z":"89afe19b71f08c67","name":"","mode":"sendAll","flatten":true,"context":"vessels.self","path":"electrical.switches.bank.11.3.state","source":"","period":1000,"x":280,"y":120,"wires":[["4e791c49bf5180ba","a8c1e2500c85d9a1"]]},{"id":"64686842.76ea18","type":"signalk-send-put","z":"89afe19b71f08c67","name":"","path":"electrical.switches.bank.11.3.state","source":"","x":900,"y":120,"wires":[]},{"id":"4e791c49bf5180ba","type":"debug","z":"89afe19b71f08c67","name":"debug 4","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":580,"y":220,"wires":[]},{"id":"a8c1e2500c85d9a1","type":"change","z":"89afe19b71f08c67","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":120,"wires":[["64686842.76ea18","ba1d0728653a5e38"]]},{"id":"ba1d0728653a5e38","type":"debug","z":"89afe19b71f08c67","name":"debug 5","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":880,"y":220,"wires":[]}]
The error message I get is:
put error 400 there are multiple sources for the given path, but no source was specified in the request
If I change $source in signalk-sent-put to "node-red" than I get:
put error 405 PUT not supported for electrical.switches.bank.11.3.state
Any hint would be helpful.
Thanks a lot!
64 Replies
Can you show what the switches look like in the Data Browser?
Hello Scortt, thanks for your quick reply.
Here the requested information
Try making $source NGT1.73
Thank you for your feedback. I did this for the signalk-sent-put node.
Looking at the flow I see "pending" for the signak-sent-put followed by this error in the debug log:
put error 502 Did not receive change confirmation
Console out is:
[error] [signalk-send-put:64686842.76ea18] put error 502 Did not receive change confirmation
And the switch doesn’t actually “switch”?
Have you confirmed that you’re able to send n2k messages at all?
What’s you n2k Data Connection look like?
Yes, this is correct, it does not switch.
I am using a RPI 4B with kernel 6.6.31+rpt-rpi-v8.
node v18.20.4, SignalK 2.8.3, canboatjs /dev/ttyUSB0, 115200 baud USB-NGT1 N2k Interface from Actisense with latest FW
I used the same NGT1 for TimeZero Professional on a Windows 10 machine and it was able to sent XTR to my Furuno autopilot.
Is there a way I can test that N2k data is transmitted under RPi/SK?
I have a 2nd workstation on the bus with a own NGT1 where I can read N2k using Actisense NEMAReader and I also have a Maretron IPG-100 where I use the N2KAnalyzer.
Thank you so much,
Dirk
I think you need to enable send for pgn 127502 using the Actisense windows software.
Ok, will try and give feedback
I enabled pgn 127501 and 127502 for TX. I verified this with another PC an "update from hardware" showed the setting enabled. Nevertheless the error is still the same.
Aug 16 09:32:27 16 Aug 09:32:27 - [error] [signalk-send-put:64686842.76ea18] put error 502 Did not receive change confirmation
Aug 16 09:32:42 16 Aug 09:32:42 - [error] [signalk-send-put:64686842.76ea18] put error 502 Did not receive change confirmation
Hmm
Let’s try turning on debug for the n2 switching plugin.
Also turn off the Maretron plugin for now
After disabling the Maretron Plugin I see a lot of this messages in the Log:
Aug 17 20:33:18 2024-08-17T08:33:18.299Z signalk-n2k-switching register action handler for path electrical.switches.bank.211.6.state source NGT1.212
Aug 17 20:33:18 2024-08-17T08:33:18.741Z signalk-n2k-switching register action handler for path electrical.switches.bank.213.1.state source NGT1.228
Aug 17 20:33:18 2024-08-17T08:33:18.741Z signalk-n2k-switching register action handler for path electrical.switches.bank.213.2.state source NGT1.228
Aug 17 20:33:18 2024-08-17T08:33:18.742Z signalk-n2k-switching register action handler for path electrical.switches.bank.213.3.state source NGT1.228
Aug 17 20:33:18 2024-08-17T08:33:18.743Z signalk-n2k-switching register action handler for path electrical.switches.bank.213.4.state source NGT1.228
Aug 17 20:33:18 2024-08-17T08:33:18.743Z signalk-n2k-switching register action handler for path electrical.switches.bank.213.5.state source NGT1.228
Aug 17 20:33:18 2024-08-17T08:33:18.744Z signalk-n2k-switching register action handler for path electrical.switches.bank.213.6.state source NGT1.228
Aug 17 20:33:19 2024-08-17T08:33:19.185Z signalk-n2k-switching register action handler for path electrical.switches.bank.215.1.state source NGT1.211
Aug 17 20:33:19 2024-08-17T08:33:19.186Z signalk-n2k-switching register action handler for path electrical.switches.bank.215.2.state source NGT1.211
Aug 17 20:33:19 2024-08-17T08:33:19.187Z signalk-n2k-switching register action handler for path electrical.switches.bank.215.3.state source NGT1.211
Aug 17 20:38:49 2024-08-17T08:38:49.722Z signalk-n2k-switching setting electrical.switches.bank.11.3.state to 1
Aug 17 20:38:49 2024-08-17T08:38:49.778Z signalk-n2k-switching sending {"pgn":127502,"dst":255,"Switch Bank Instance":11,"Instance":11,"Switch3":"On"}
Aug 17 20:38:50 2024-08-17T08:38:50.781Z signalk-n2k-switching sending command {"pgn":126208,"dst":73,"prio":3,"fields":{"Function Code":"Command","PGN":127501,"Priority":8,"# of Parameters":2,"list":[{"Parameter":1,"Value":11},{"Parameter":4,"Value":"On"}]}}
Aug 17 20:38:50 2024-08-17T08:38:50.782Z signalk-n2k-switching checking electrical.switches.bank.11.3.state {"meta":{},"value":0,"$source":"NGT1.73","timestamp":"2024-08-17T08:38:48.717Z","pgn":127501} should be 1
Aug 17 20:38:51 2024-08-17T08:38:51.783Z signalk-n2k-switching checking electrical.switches.bank.11.3.state {"meta":{},"value":0,"$source":"NGT1.73","timestamp":"2024-08-17T08:38:48.717Z","pgn":127501} should be 1
Aug 17 20:38:52 2024-08-17T08:38:52.783Z signalk-n2k-switching checking electrical.switches.bank.11.3.state {"meta":{},"value":0,"$source":"NGT1.73","timestamp":"2024-08-17T08:38:48.717Z","pgn":127501} should be 1
Aug 17 20:38:53 2024-08-17T08:38:53.783Z signalk-n2k-switching checking electrical.switches.bank.11.3.state {"meta":{},"value":0,"$source":"NGT1.73","timestamp":"2024-08-17T08:38:48.717Z","pgn":127501} should be 1
Aug 17 20:38:54 2024-08-17T08:38:54.783Z signalk-n2k-switching checking electrical.switches.bank.11.3.state {"meta":{},"value":0,"$source":"NGT1.73","timestamp":"2024-08-17T08:38:48.717Z","pgn":127501} should be 1
Aug 17 20:38:55 2024-08-17T08:38:55.783Z signalk-n2k-switching checking electrical.switches.bank.11.3.state {"meta":{},"value":0,"$source":"NGT1.73","timestamp":"2024-08-17T08:38:48.717Z","pgn":127501} should be 1
Aug 17 20:38:56 2024-08-17T08:38:56.783Z signalk-n2k-switching checking electrical.switches.bank.11.3.state {"meta":{},"value":0,"$source":"NGT1.73","timestamp":"2024-08-17T08:38:48.717Z","pgn":127501} should be 1
Aug 17 20:38:56 17 Aug 20:38:56 - [error] [signalk-send-put:64686842.76ea18] put error 502 Did not receive change confirmation
Here the full log signalk-server > sk.log
I wonder if you need to enable send for 126208
sorry I didn't think f this before... enable debug for
signalk:actisense-out
The 126208 TX was enabled by default. I also enabled 126208 RX now.
Is Jeremy out there?!
Aug 18 07:09:50 2024-08-17T19:09:50.260Z signalk-n2k-switching setting electrical.switches.bank.11.3.state to 1
Aug 18 07:09:50 2024-08-17T19:09:50.291Z signalk-n2k-switching sending {"pgn":127502,"dst":255,"Switch Bank Instance":11,"Instance":11,"Switch3":"On"}
Aug 18 07:09:50 2024-08-17T19:09:50.294Z signalk:actisense-out sending 2024-08-17T19:09:50.293Z,2,127502,0,255,8,0b,df,ff,ff,ff,ff,ff,ff
Aug 18 07:09:50 2024-08-17T19:09:50.296Z signalk:actisense-out <Buffer 10 02 94 0e 02 0e f2 01 ff 08 0b df ff ff ff ff ff ff 70 10 03>
Aug 18 07:09:51 2024-08-17T19:09:51.298Z signalk-n2k-switching sending command {"pgn":126208,"dst":73,"prio":3,"fields":{"Function Code":"Command","PGN":127501,"Priority":8,"# of Parameters":2,"list":[{"Parameter":1,"Value":11},{"Parameter":4,"Value":"On"}]}}
Aug 18 07:09:51 2024-08-17T19:09:51.299Z signalk:actisense-out sending 2024-08-17T19:09:51.299Z,2,126208,0,73,10,01,0d,f2,01,f8,02,01,0b,04,01
Aug 18 07:09:51 2024-08-17T19:09:51.300Z signalk:actisense-out <Buffer 10 02 94 10 02 00 ed 01 49 0a 01 0d f2 01 f8 02 01 0b 04 01 0d 10 03>
Aug 18 07:09:51 2024-08-17T19:09:51.301Z signalk-n2k-switching checking electrical.switches.bank.11.3.state {"meta":{},"value":0,"$source":"NGT1.73","timestamp":"2024-08-17T19:09:49.242Z","pgn":127501} should be 1
Aug 18 07:09:52 2024-08-17T19:09:52.301Z signalk-n2k-switching checking electrical.switches.bank.11.3.state {"meta":{},"value":0,"$source":"NGT1.73","timestamp":"2024-08-17T19:09:49.242Z","pgn":127501} should be 1
Aug 18 07:09:53 2024-08-17T19:09:53.301Z signalk-n2k-switching checking electrical.switches.bank.11.3.state {"meta":{},"value":0,"$source":"NGT1.73","timestamp":"2024-08-17T19:09:49.242Z","pgn":127501} should be 1
Aug 18 07:09:54 2024-08-17T19:09:54.301Z signalk-n2k-switching checking electrical.switches.bank.11.3.state {"meta":{
},"value":0,"$source":"NGT1.73","timestamp":"2024-08-17T19:09:49.242Z","pgn":127501} should be 1
Aug 18 07:09:55 2024-08-17T19:09:55.302Z signalk-n2k-switching checking electrical.switches.bank.11.3.state {"meta":{},"value":0,"$source":"NGT1.73","timestamp":"2024-08-17T19:09:49.242Z","pgn":127501} should be 1
Aug 18 07:09:56 2024-08-17T19:09:56.302Z signalk-n2k-switching checking electrical.switches.bank.11.3.state {"meta":{},"value":0,"$source":"NGT1.73","timestamp":"2024-08-17T19:09:49.242Z","pgn":127501} should be 1
Aug 18 07:09:57 2024-08-17T19:09:57.302Z signalk-n2k-switching checking electrical.switches.bank.11.3.state {"meta":{},"value":0,"$source":"NGT1.73","timestamp":"2024-08-17T19:09:49.242Z","pgn":127501} should be 1
Aug 18 07:09:57 18 Aug 07:09:57 - [error] [signalk-send-put:64686842.76ea18] put error 502 Did not receive change confirmation
It does not switch - the additional actisense log above