mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Much tidier Raspberry Pi GPIO node - requires @drogon 's Wiring-Pi installed... more to come
This commit is contained in:
69
nodes/deprecated/35-rpi-gpio-in.html
Normal file
69
nodes/deprecated/35-rpi-gpio-in.html
Normal file
@@ -0,0 +1,69 @@
|
||||
<!--
|
||||
Copyright 2013 IBM Corp.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/x-red" data-template-name="rpi-gpio in">
|
||||
<div class="form-row">
|
||||
<label for="node-input-pin"><i class="icon-asterisk"></i> Pin</label>
|
||||
<select type="text" id="node-input-pin" style="width: 150px;">
|
||||
<option value="7">7</option>
|
||||
<option value="11">11</option>
|
||||
<option value="12">12</option>
|
||||
<option value="13">13</option>
|
||||
<option value="15">15</option>
|
||||
<option value="16">16</option>
|
||||
<option value="18">18</option>
|
||||
<option value="22">22</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
|
||||
<input type="text" id="node-input-name" placeholder="Name">
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="node-input-resistor"><i class=" icon-resize-full"></i> Resistor?</label>
|
||||
<select type="text" id="node-input-resistor" style="width: 150px;">
|
||||
<option value="no">no</option>
|
||||
<option value="pullup">pullup</option>
|
||||
<option value="pulldown">pulldown</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-tips">Tip: if pull up/down resistor is selected, the <code>gpio-admin</code> command <em>must</em> be used
|
||||
to do the actual enabling. If 'no' resistor is selected, nothing further needs to be done
|
||||
to use this node. See <code>man gpio-admin</code> for more details.</div>
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
RED.nodes.registerType('rpi-gpio in',{
|
||||
category: 'advanced-input',
|
||||
color:"#c6dbef",
|
||||
defaults: {
|
||||
name: { value:""},
|
||||
resistor: { value: "no"},
|
||||
pin: {value:"",required:true},
|
||||
},
|
||||
inputs:0,
|
||||
outputs:1,
|
||||
icon: "rpi.png",
|
||||
label: function() {
|
||||
return this.name||"Pin: "+this.pin;
|
||||
//+(this.resistor == "no"?"":" ("+(this.resistor=="pullup"?"":"↓")+")");
|
||||
},
|
||||
labelStyle: function() {
|
||||
return this.name?"node_label_italic":"";
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
71
nodes/deprecated/35-rpi-gpio-in.js
Normal file
71
nodes/deprecated/35-rpi-gpio-in.js
Normal file
@@ -0,0 +1,71 @@
|
||||
/**
|
||||
* Copyright 2013 IBM Corp.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
var RED = require("../../red/red");
|
||||
var gpio = require("pi-gpio");
|
||||
|
||||
function GPIOInNode(n) {
|
||||
RED.nodes.createNode(this,n);
|
||||
|
||||
this.buttonState = -1;
|
||||
this.pin = n.pin;
|
||||
this.resistor = n.resistor;
|
||||
|
||||
var node = this;
|
||||
|
||||
if (this.pin) {
|
||||
var setupPin = function(err) {
|
||||
if (err) {
|
||||
node.error(err);
|
||||
} else {
|
||||
node._interval = setInterval(function(){
|
||||
gpio.read(node.pin, function(err, value) {
|
||||
if(err){
|
||||
node.error(err);
|
||||
} else{
|
||||
if(node.buttonState !== value){
|
||||
var previousState = node.buttonState;
|
||||
node.buttonState = value;
|
||||
if (previousState !== -1) {
|
||||
var msg = {payload:node.buttonState};
|
||||
node.send(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}, 50);
|
||||
}
|
||||
};
|
||||
if (this.resistor == "no") {
|
||||
gpio.open(this.pin,"input",setupPin());
|
||||
} else {
|
||||
// Assume enabled externally via gpio-admin
|
||||
setupPin();
|
||||
}
|
||||
} else {
|
||||
this.error("Invalid GPIO pin: "+this.pin);
|
||||
}
|
||||
}
|
||||
|
||||
RED.nodes.registerType("rpi-gpio in",GPIOInNode);
|
||||
|
||||
GPIOInNode.prototype.close = function() {
|
||||
clearInterval(this._interval);
|
||||
if (this.resistor == "no") {
|
||||
gpio.close(this.pin);
|
||||
}
|
||||
}
|
||||
|
59
nodes/deprecated/35-rpi-gpio-out.html
Normal file
59
nodes/deprecated/35-rpi-gpio-out.html
Normal file
@@ -0,0 +1,59 @@
|
||||
<!--
|
||||
Copyright 2013 IBM Corp.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/x-red" data-template-name="rpi-gpio out">
|
||||
<div class="form-row">
|
||||
<label for="node-input-pin"><i class="icon-asterisk"></i> Pin</label>
|
||||
<select type="text" id="node-input-pin" style="width: 150px;">
|
||||
<option value="7">7</option>
|
||||
<option value="11">11</option>
|
||||
<option value="12">12</option>
|
||||
<option value="13">13</option>
|
||||
<option value="15">15</option>
|
||||
<option value="16">16</option>
|
||||
<option value="18">18</option>
|
||||
<option value="22">22</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
|
||||
<input type="text" id="node-input-name" placeholder="Name">
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
RED.nodes.registerType('rpi-gpio out',{
|
||||
category: 'advanced-output',
|
||||
color:"#c6dbef",
|
||||
defaults: {
|
||||
name: { value:""},
|
||||
resistor: { value: "no"},
|
||||
pin: {value:"",required:true},
|
||||
},
|
||||
inputs:1,
|
||||
outputs:0,
|
||||
icon: "rpi.png",
|
||||
align: "right",
|
||||
label: function() {
|
||||
return this.name||"Pin: "+this.pin;
|
||||
//+(this.resistor == "no"?"":" ("+(this.resistor=="pullup"?"":"↓")+")");
|
||||
},
|
||||
labelStyle: function() {
|
||||
return this.name?"node_label_italic":"";
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
51
nodes/deprecated/35-rpi-gpio-out.js
Normal file
51
nodes/deprecated/35-rpi-gpio-out.js
Normal file
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* Copyright 2013 IBM Corp.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
var RED = require("../../red/red");
|
||||
var gpio = require("pi-gpio");
|
||||
|
||||
function GPIOOutNode(n) {
|
||||
RED.nodes.createNode(this,n);
|
||||
|
||||
this.pin = n.pin;
|
||||
|
||||
var node = this;
|
||||
|
||||
if (this.pin) {
|
||||
gpio.open(this.pin,"output",function(err) {
|
||||
if (err) {
|
||||
node.error(err);
|
||||
} else {
|
||||
node.on("input",function(msg) {
|
||||
gpio.write(node.pin,msg.payload,function(err) {
|
||||
if (err) node.error(err);
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.error("Invalid GPIO pin: "+this.pin);
|
||||
}
|
||||
}
|
||||
|
||||
RED.nodes.registerType("rpi-gpio out",GPIOOutNode);
|
||||
|
||||
GPIOOutNode.prototype.close = function() {
|
||||
gpio.close(this.pin);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user