Tessel kamera (2 / 3 steg)
Steg 2: Tillval: Auto-tweet dina bilder
Om du vill ta det ett steg längre, kommer att denna kod göra det automatiskt bokföra bilden det bara tog till Twitter som:
< p > var plats = "San Francisco" / / skriva där du tweeting från! < br >
Nod kräver
var fs = require('fs');
var https = require('https');
var crypto = require('crypto');
Ställ in att Tweet
var bunden = require('crypto').pseudoRandomBytes(16).toString('hex');
var bförebild = "multipart/form-data; gränsen = "+ bunden;
Tweeting som
var oauth_consumer_key = "O7oc0pvsZn4xjgcuHuYdX4FaC";
var oauth_consumer_secret = "iJYuHFz2sD46Nvk3mcwzX8uih14aEAMgVWdWoR59nx8v6Zl7ZX";
var oauth_access_token = "2529232909-luARGU89K4CKFMvfzBjCgG6ubefzDkdDWkSB85i";
var oauth_access_secret = "GXQfuzvGdjLEs3t1HEYfhQ9x9bdBcSBVXjBkbRgwYlOE0";
Få tid
var curtime = parseInt(process.env.DEPLOY_TIMESTAMP || Date.Now());
Ställ in OAuth
var oauth_data = {
oauth_consumer_key: oauth_consumer_key,
oauth_nonce: require('crypto').pseudoRandomBytes(32).toString('hex'),
oauth_signature_method: 'HMAC-SHA1',
oauth_timestamp: Math.floor(curtime / 1000),
oauth_token: oauth_access_token,
oauth_version: "1.0"
};
var ut = .concat ()]
['POST', 'https://api.twitter.com/1.1/statuses/update_with_media.json'],
(Object.keys (oauth_data) .sort () .map (funktion (k) {
Return encodeURIComponent(k) + "=" + encodeURIComponent(oauth_data[k]);
{}) .join ('&'))
) .map (encodeURIComponent) .join ('&');
oauth_data.oauth_signature = crypto
.createHmac ("sha1", [oauth_consumer_secret, oauth_access_secret] .join('&'))
.Update(out)
.Digest('base64');
var auth_header = "OAuth" + Object.keys (oauth_data) .sort () .map (funktion (nyckel) {
returnera nyckel + "=" "+ encodeURIComponent(oauth_data[key]) +" "';
{}) .join (',').
funktionen post (status, fil) {
var req = https.request({
Port: 443,
metod: "POST",
hostname: 'api.twitter.com',
sökväg: "/ 1.1/statuses/update_with_media.json",
rubriker: {
Värd: 'api.twitter.com',
"Acceptera": ' * / *',
"User-Agent": "tessel",
"Tillstånd": auth_header,
"Content-Type": bförebild,
"Anslutning": "keep-alive"
}
}, {funktion (res)
Console.log ("statusCode:", res.statusCode);
Console.log ("headers:", res.headers);
Res.on ('data', function(d) {
Console.log(' ');
Console.log(' ');
Console.log(String(d));
});
});
Req.write ("--" + bundna + "\r\n");
Req.write ("Content-Disposition: form-data, namn ="status"\r\n");
Req.write('\r\n');
Req.write (status + "\r\n");
Req.write ("--" + bundna + "\r\n");
Req.write ("Content-Type: application/oktett-stream\r\n');
Req.write ("Content-Disposition: form-data, namn ="media []", filename="test.jpg"\r\n");
Req.write('\r\n');
Req.write(File);
Req.write('\r\n');
Req.write ("--" + bundna + "--\r\n");
Req.End();
Req.on ('fel', function(e) {
Console.error(e);
});
}
var tessel = require('tessel');
Console.log ("ansluter kameran...');
var kamera = require('camera-vc0706').use(tessel.port['A']);
Camera.on ("ready", function(err) {
om (err) återvänder console.log ("inte ok - fel på klar:", err);
Console.log ("kamera ansluten. Ställa in upplösning...');
camera.setResolution ('vga', function(err) {
om (err) återvänder console.log ("inte ok - fel inställning upplösning:', err);
Console.log ("Resolution uppsättning. Ställa in komprimering...');
camera.setCompression (100, function(err) {
om (err) återvänder console.log ("inte ok - fel inställning komprimering:', err);
Console.log ("komprimering uppsättning.");
Console.log ("kameran redo. Tryck på Config-knappen för att ta en bild. ");
Tessel.LED[1].High();
Tessel.Button.on ("tryck", funktion () {
Console.log ('ta bild...');
Tessel.LED[3].High();
camera.setCompression (100, function(err) {
camera.takePicture (function(err, image) {
om (err) återvänder console.log ("fel ta bild:", err);
Console.log ("bild tagen. Utstationering...');
post ("Tweeting från #tesselcam! + läge, bild);
Tessel.LED[3].Low();
});
});
});
});
});
});
Camera.on ("fel", funktion (err) {
Console.log ("fel:", err);
{}); < /p >
- Gör en mapp.
- I mappen, spara kod som en oformaterad text fil som heter camera.js.
- I din kommandorad, navigera till platsen du sparade camera.js
- Köra "npm installera tessel" om du inte redan har Tessel installerat globalt.
- Kör 'npm installera kamera-vc0706' att installera kameran biblioteket.
- Ansluta till wifi: kör "tessel wifi - n -p"
- Nu kör "tessel kör camera.js--upload-dir.". Ladda upp-dir flaggan kan du ange där bilderna ska sparas.
- Ta bilder!
Andra saker du (trivialt) kunde göra med denna installation av maskinvara:
- Skicka bilder till en webbplats med hjälp av Tessel's wifi och tiny-router.
- Kontrollera Tesselcam från en webbplats (med Tessel's wifi och tiny-router)