Well here's what I've come up with so far in node red, but I still get alarms for 0 depth on the NMEA 2000 chart plotter, although it's no longer showing up in grafana.
I will try updating the nmea 2000 output directly.
I will try updating the nmea 2000 output directly.
Code:
[{"id":"38336563.2cc8e2","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"71b3bf61.5dd4f8","type":"inject","z":"38336563.2cc8e2","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"1","topic":"environment.wind.angleApparent","payload":"3.14","payloadType":"num","x":90,"y":140,"wires":[["8c8dd0de.697ad"]]},{"id":"3b7621c1.ff17e6","type":"inject","z":"38336563.2cc8e2","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"1","topic":"environment.wind.angleApparent","payload":"NaN","payloadType":"str","x":90,"y":200,"wires":[["8c8dd0de.697ad"]]},{"id":"8c8dd0de.697ad","type":"function","z":"38336563.2cc8e2","name":"filter zero and NaN AWA","func":"var payload = msg.payload;\n//node.warn(\"msg.payload = \" + msg.payload);\nlastAwa=context.get(\"lastAwa\"); \n//node.warn(\"lastAwa = \" + context.get(\"lastAwa\"));\n\nif (payload == \"0\"||payload == \"NaN\"||payload == \"3.14\")\n{\nnode.warn(\"BAD WIND DATA \" + payload);\nmsg.payload = lastAwa\nnode.warn(\"lastAwa = \" + context.get(\"lastAwa\"));\nreturn msg;\n} else \n{\n//node.warn(\"GOOD WIND DATA\" + payload);\ncontext.set(\"lastAwa\",payload); \n//node.warn(\"lastAwa = \" + context.get(\"lastAwa\"));\nreturn msg;\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":470,"y":160,"wires":[["e18508a1.f09518"]]},{"id":"966391c5.dede38","type":"signalk-input-handler","z":"38336563.2cc8e2","name":"AWA input handler","context":"vessels.self","path":"environment.wind.angleApparent","source":"","x":140,"y":280,"wires":[["8c8dd0de.697ad"]]},{"id":"e18508a1.f09518","type":"signalk-input-handler-next","z":"38336563.2cc8e2","name":"back to server","x":880,"y":240,"wires":[]},{"id":"cb274b3f.f47ee8","type":"signalk-input-handler","z":"38336563.2cc8e2","name":"Depth input handler","context":"vessels.self","path":"environment.depth.belowTransducer","source":"","x":130,"y":340,"wires":[["2405a162.722516"]]},{"id":"2405a162.722516","type":"function","z":"38336563.2cc8e2","name":"filter zero and above 150 depth","func":"var payload = msg.payload;\n//node.warn(\"msg.payload = \" + msg.payload);\nlastDepth=context.get(\"lastDepth\"); //to retrieve a variable \n//node.warn(\"lastDepth = \" + context.get(\"lastDepth\"));\n\nif (payload == \"0\"||payload >= 150)\n{\nnode.warn(\"BAD DEPTH DATA \" + payload);\nnode.warn(\"lastDepth = \" + context.get(\"lastDepth\"));\nmsg.payload = lastDepth\nreturn msg;\n} else \n{\n//node.warn(\"GOOD DEPTH DATA \" + payload);\ncontext.set(\"lastDepth\",payload); // to store a variable\nreturn msg;\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":470,"y":320,"wires":[["e18508a1.f09518"]]},{"id":"38e1dfe7.ae87c","type":"inject","z":"38336563.2cc8e2","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"1","topic":"environment.depth.belowTransducer","payload":"160","payloadType":"num","x":190,"y":440,"wires":[["2405a162.722516"]]},{"id":"dabf54e0.0a65f8","type":"inject","z":"38336563.2cc8e2","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"1","topic":"environment.depth.belowTransducer","payload":"0","payloadType":"num","x":190,"y":480,"wires":[["2405a162.722516"]]}]