From df6eae9ee99b3604d711df3a292f622d7cc66973 Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Sun, 11 Aug 2024 22:00:36 +0100 Subject: [PATCH] Fixup PiSRF node for latest Bookworm to close #1078 --- hardware/PiSrf/nrsrf | 3 ++- hardware/PiSrf/package.json | 4 ++-- hardware/PiSrf/pisrf.js | 45 ++++++++++++++++++++++--------------- hardware/PiSrf/testgpio | 8 +++++++ hardware/PiSrf/testgpio.py | 6 +++++ 5 files changed, 45 insertions(+), 21 deletions(-) create mode 100755 hardware/PiSrf/testgpio create mode 100755 hardware/PiSrf/testgpio.py diff --git a/hardware/PiSrf/nrsrf b/hardware/PiSrf/nrsrf index 1dc6f8f9..07add271 100755 --- a/hardware/PiSrf/nrsrf +++ b/hardware/PiSrf/nrsrf @@ -1,7 +1,8 @@ #!/bin/bash + python_cmd='python3' # Fallback to Python 2, if Python 3 is not available command -v python3 > /dev/null || python_cmd='python' BASEDIR=$(dirname $0) -exec $python_cmd -u $BASEDIR/nrsrf.py $@ +$python_cmd -u $BASEDIR/nrsrf.py $@ diff --git a/hardware/PiSrf/package.json b/hardware/PiSrf/package.json index be6cbbc3..327d8a0e 100644 --- a/hardware/PiSrf/package.json +++ b/hardware/PiSrf/package.json @@ -1,6 +1,6 @@ { "name" : "node-red-node-pisrf", - "version" : "0.3.0", + "version" : "0.4.0", "description" : "A Node-RED node for a Raspberry Pi to use a SRF04 or SRF05 range finder", "dependencies" : { }, @@ -18,7 +18,7 @@ }, "author": { "name": "Dave Conway-Jones", - "email": "ceejay@vnet.ibm.com", + "email": "dceejay@gmail.com", "url": "http://nodered.org" } } diff --git a/hardware/PiSrf/pisrf.js b/hardware/PiSrf/pisrf.js index cc293cac..d1cb5a86 100644 --- a/hardware/PiSrf/pisrf.js +++ b/hardware/PiSrf/pisrf.js @@ -1,33 +1,41 @@ module.exports = function(RED) { "use strict"; - var util = require("util"); var spawn = require('child_process').spawn; - var fs = require('fs'); + var execSync = require('child_process').execSync; + //var fs = require('fs'); + var testCommand = __dirname + '/testgpio'; var gpioCommand = __dirname + '/nrsrf'; var allOK = true; try { - var cpuinfo = fs.readFileSync("/proc/cpuinfo").toString(); - if (cpuinfo.indexOf(": BCM") === -1 && cpuinfo.indexOf(": Raspberry Pi") === -1) { - RED.log.warn("rpi-srf : "+RED._("node-red:rpi-gpio.errors.ignorenode")); - allOK = false; - } - else if (!fs.existsSync("/usr/share/doc/python-rpi.gpio") && !fs.existsSync("/usr/share/doc/python3-rpi.gpio")) { - RED.log.warn("rpi-srf : "+RED._("node-red:rpi-gpio.errors.libnotfound")); - allOK = false; - } - else if (!(1 & parseInt ((fs.statSync(gpioCommand).mode & parseInt ("777", 8)).toString (8)[0]))) { - RED.log.warn("rpi-srf : "+RED._("node-red:rpi-gpio.errors.needtobeexecutable",{command:gpioCommand})); - allOK = false; - } - } - catch(err) { - RED.log.warn("rpi-srf : "+RED._("node-red:rpi-gpio.errors.ignorenode")); + execSync(testCommand); + } catch(err) { allOK = false; + RED.log.warn("rpi-srf : "+RED._("rpi-gpio.errors.ignorenode")); } + // try { + // var cpuinfo = fs.readFileSync("/proc/cpuinfo").toString(); + // if (cpuinfo.indexOf(": Raspberry Pi") === -1) { + // RED.log.warn("rpi-srf : "+RED._("node-red:rpi-gpio.errors.ignorenode")); + // allOK = false; + // } + // else if (!fs.existsSync("/usr/share/doc/python-rpi.gpio") && !fs.existsSync("/usr/share/doc/python3-rpi.gpio")) { + // RED.log.warn("rpi-srf : "+RED._("node-red:rpi-gpio.errors.libnotfound")); + // allOK = false; + // } + // else if (!(1 & parseInt ((fs.statSync(gpioCommand).mode & parseInt ("777", 8)).toString (8)[0]))) { + // RED.log.warn("rpi-srf : "+RED._("node-red:rpi-gpio.errors.needtobeexecutable",{command:gpioCommand})); + // allOK = false; + // } + // } + // catch(err) { + // RED.log.warn("rpi-srf : "+RED._("node-red:rpi-gpio.errors.ignorenode")); + // allOK = false; + // } + function PiSrfNode(n) { RED.nodes.createNode(this, n); this.topic = n.topic; @@ -83,6 +91,7 @@ module.exports = function(RED) { node.on("close", function(done) { if (node.child != null) { node.child.kill('SIGKILL'); + setTimeout(function() { if (done) { done(); } }, 50); } wfi(done); }); diff --git a/hardware/PiSrf/testgpio b/hardware/PiSrf/testgpio new file mode 100755 index 00000000..df2b8842 --- /dev/null +++ b/hardware/PiSrf/testgpio @@ -0,0 +1,8 @@ +#!/bin/bash + +python_cmd='python3' +# Fallback to Python 2, if Python 3 is not available +command -v python3 > /dev/null || python_cmd='python' + +BASEDIR=$(dirname $0) +$python_cmd -u $BASEDIR/testgpio.py $@ diff --git a/hardware/PiSrf/testgpio.py b/hardware/PiSrf/testgpio.py new file mode 100755 index 00000000..f474faa2 --- /dev/null +++ b/hardware/PiSrf/testgpio.py @@ -0,0 +1,6 @@ +import sys +try: + import RPi.GPIO as GPIO + sys.exit(0) +except ImportError: + sys.exit(1)