GREENBIT - få det att växa (INTEL IOT) (7 / 13 steg)
Steg 7: Nod server kod
Inkludera alla moduler som behövs i din server
var Firebase = require('firebase');
var mraa = require("mraa");
var fs = require('fs');
Skapa ett nytt Firebase referens objekt med din Firebase programmets url
var firebaseRef = ny Firebase('.firebaseio.com');
Initiera värden
var currentSettings = null;
var pushedSettings = null;
/ *** Trigger budskap sänder avbrott var 20 sekund *** /
var notifier_pin = ny mraa. Gpio(5);
notifier_pin.dir (mraa. DIR_OUT);
IPC att läsa data från Arduino skiss () exempel innehåll: 123|45|200|... | 0)
Prenumerera om du vill avbryta meddelanden från Arduino
var subscriber_pin = ny mraa. Gpio(1);
subscriber_pin.dir (mraa. DIR_IN);
subscriber_pin.ISR (mraa. EDGE_RISING, subscriberEvent);
Bifoga förändring händelseavlyssnare på Firebase currentSettings värde
Varje gång currentSettings värde förändringar callback körs.
Ref: https://www.firebase.com/docs/web/api/query/on.ht...
firebaseRef.child('currentSettings').on ("värde", function(dataSnapShot) {
Få de nya inställningarna
var data = dataSnapShot.val();
Ställa in uppdaterade inställningarna i skjuts inställningar
pushedSettings = data;
Om lightState är sant måste vi slå på den annars tvärtom
IF(data.lightState)
data.lightState = '1';
annat
data.lightState = "0";
Nu måste vi passera currentSettings värde till Arduino att vidta lämpliga åtgärder
Eftersom arduino inte förstår noden objektet skapar vi en sammanfogade strängen med värden //and passera den till Arduino med MQTT
var arduinoSettingString = "abcd" + "|" + data.plant+'| " + data.lightState+'| " + data.lightOn+'| " + data .lightOff +'| ' + data.moisture+'| " + data.temperature;
fs.writeFileSync ("/home/root/ipc_codes/js_notification_out.txt", "NodeJS:"
+ arduinoSettingStr ing + "\n");
Meddela samtliga abonnenter av MQTT mäklaren
notifyWorld();
});
Brand event att anmäla alla abonnenter
funktion notifyWorld() {
notifier_pin.write(1);
setTimeout(function() {
notifier_pin.write(0);
}, 100);
}
Prenumerera på evenemang av nod server
Denna händelse anropas när data skickas från Arduino till nod över MQTT
funktion subscriberEvent() {
var arduinoSettingString = fs.readFileSync('/home/root/ipc_codes/arduino_notification_out.txt') .toString();
currentSettings = arduinoSettingString.split('|');
Tweet inställningen är sant då skicka en tweet genom firebase
Den här inställningen är sant när person berör Tweet touch sensor
om (currentSettings [currentSettings.length -1] === '1')
{
var tweet = ' temperatur: "+ currentSettings [0] +' DEG | Fukt: "+ currentSettings [1] +" PPM | Ljus: "+ currentSettings [2] +"LUX".
firebaseRef.update ({Tweet: tweet});
}
Lägga till en ny post i loggar
firebaseRef.child('logs').push ({
temperatur: currentSettings [2],
fukt: currentSettings [1],
ljus: currentSettings [0]
});
}