Stap 3: Instellen van de Raspberry Pi
Sluit uw Raspberry Pi aan een monitor, muis en toetsenbord. Zien erop toe dat een Ethernet of WiFi-verbinding werkt, en zorg ervoor dat de OS up-to-date is:
- $ sudo apt-get update
- $ sudo apt-get upgrade
Indien nog niet geïnstalleerd, Installeer Node.js voor ARM, dan de pakketten serialport en ws via npm toevoegen:
- $ npm installeren serialport
- $ npm installeren ws
Nu verbinden met de seriële poort van de Arduino de USB op de Raspberry Pi.
Ten slotte, download de Node.js code (send_data_to_sami.js) naar de Raspberry Pi. Vervang de tijdelijke aanduidingen in de code met de token van de apparaat en apparaat-ID u verzameld uit de User Portal.
Ook is de Node.js code hieronder gegeven. Het stelt een bi-directionele WebSocketconnection tussen de Raspberry Pi en SAMI. Nadat de WebSocket verbinding geopend is, registreert register() methode het apparaat met de WebSocket. Telkens de code één gegevenspunt leest van de seriële poort, en dan loopt het in een bericht en verzendt het bericht naar SAMI via WebSocket.
var webSocketUrl = "wss://api.samsungsami.io/v1.1/websocket?ack=true";
var device_id = ""; var device_token = "";
var isWebSocketReady = false; var ws = null;
var serialport = require("serialport")
var SerialPort = serialport. SerialPort;
var sp = nieuwe SerialPort ("/ dev/ttyACM0", {}
baudrate: 9600,
parser: serialport.parsers.readline("\n")
});
var WebSocket = require('ws');
/**
* Krijgt de huidige tijd in millis
*/
functie getTimeMillis() {}
Return parseInt(Date.now().toString());
}
/**
* /Websocket bi-directionele verbinding maken
*/
functie start() {}
De websocket verbinding maken
isWebSocketReady = false;
WS = nieuwe WebSocket(webSocketUrl);
WS.on ('open', function {}
console.log ("Websocket verbinding is open...");
register();
});
WS.on ('bericht', functie (data, vlaggen) {}
console.log ("ontvangen bericht:" + data + '\n');
});
WS.on ('close', function {}
console.log ("Websocket verbinding is gesloten...");
});
}
/**
* Een signaal register aan de websocket en begint de boodschap flooder
*/
functie register() {}
console.log ("registratie apparaat op de websocket verbinding");
Probeer {}
var registerMessage = ' {"type": "inschrijven", "sdid": "" + device_id +"", "Vergunning": "aan toonder"+ device_token +"", "cid":"'+getTimeMillis() +" "}';
console.log ('Bericht verzenden register' + registerMessage + '\n');
WS.send (registerMessage, {masker: true});
isWebSocketReady = true;
}
vangst (e) {}
console.error ("fout bij het registreren van berichten. Fout bij het registreren van de boodschap: "+ e.toString());
}
}
/**
* Stuur een bericht naar SAMI
*/
functie sendData(onFire) {}
Probeer {}
TS = ', "ts": "+ getTimeMillis();
gegevens van de var = {}
"onFire": onFire
};
var payload = ' {"sdid": "" + device_id +"" '+ ts +', "gegevens": "+ JSON.stringify(data) +", "cid":"'+getTimeMillis() +" "}'; console.log ('Verzenden lading' + lading);
WS.send (nettolading, {masker: true});
} catch (e) {}
console.error ("fout bij het verzenden van een bericht:" + e.toString());
}
}
/**
* Alle start hier
*/
Start(); websocket verbinding maken
SP.on ("open", functie () {}
SP.on ('data', function(data) {}
Als (! isWebSocketReady) {}
console.log ("Websocket is niet klaar. Skip verzenden van gegevens naar SAMI (gegevens: "+ data +") ");
terugkeer;
}
console.log ("seriële poort ontvangen gegevens:" + data);
var flameDigitalValue = parseInt(data);
flameDigitalValue = 1 == > geen vuur wordt gedetecteerd
flameDigitalValue = 0 == > brand wordt gedetecteerd
var onFire = false;
Als (flameDigitalValue == 0) {}
onFire = true;
}
sendData(onFire);
});
});