Particle Electron ve AWS kullanarak bir hava durumu istasyonu oluşturuyorum.Node.js ile ayrı dizin tablosunu kullanarak dynamodb tablosundan öğe alın
Item{13}
deviceId: 540056000a51343334363138 (String) (Primary Partition Key)
tm: 1458754711 (Number) (Primary Sort Key)
batSoC: 89 (String)
batV: 4.01 (String)
hum: 27.9 (String)
lat: 41.2083 (String)
lon: -73.3439 (String)
pres: 968.4 (String)
temp: 19.8 (String)
uvI: 0.1 (String)
wDir: 0 (String)
wGst: 0.0 (String)
wSpd: 0.0 (String)
yanı sıra ayrı bir "weather_index" tablosunu: Ben (paket içeriğine dahil numune değerlerle) aşağıdaki şema ile meteorolojik verilerin içeren bir DynamoDB tablosu "hava" gönderilen iade veri almak başarmış Yalnızca ana tabloya yazılan en son verilere ait deviceId
ve tm
özniteliklerini içerir (atomik sayıcı gibi ama periyodik olarak güncelleştirilen unix zaman damgası değeri için). Yani "weather_index" öğesi üzerinde şu şekilde görünecektir "weather_index" tablosunda en son girdiyi, öğe ise: Şu anda node.js çok temel web ön uç (yazmaya çalışıyorum
Item{2}
deviceIdString: 540056000a51343334363138 (String) (Primary Partition Key)
tmNumber: 1458754711 (Number)
hangi öncesinde bu projeye, ben hiçbir deneyimim oldu, bu yüzden hala öğreniyorum) ve nasıl bilemiyorum:
- bir önceki GetItem yoluyla alınan bir parametre içeren bir DynamoDB getItem gerçekleştirin. Gibi:
latestTime = getItem (weather_index, deviceId) // o "latestTime" En son hava gözlem ve mağazaların zaman "tm" alır // "weather_index" tablo adı
olduğundacurrentWeather = getItem (deviceId tm) // o "currentWeather" belirtilen "tm" değeri ve mağazalarda "tm" en son gözlem unix zaman damgası olan // hava gözlemi alır
Daha sonra bireysel değerleri terminal/web sayfası/taşıyıcı güvercini/etc'ye yazdırabilirim ... (currentWeather.deviceId
, currentWeather.tm
, currentWeather.batSoC
, vb ...
Ben gerçekten düzgün çalışması yapamaz aşağıdaki kod var:
/*
* Module dependencies
*/
var AWS = require('aws-sdk')
// weathermon_dev credentials
AWS.config.update({accessKeyId: 'REDACTED for obvious reasons', secretAccessKey: 'This bit too'});
// Select AWS region
AWS.config.update({region: 'us-east-1'});
var db = new AWS.DynamoDB();
// db.listTables(function(err,data) {
// console.log(data.TableNames);
// });
var time = Date.now()/1000;
time = Math.round(time);
//console.log("Time: ");
//console.log(time);
time = Math.round(time);
var deviceId = "540056000a51343334363138"
var params = {
Key: {
deviceId: {S: deviceId}
},
TableName: 'weather_index'
};
var timeJson;
db.getItem(params, function(err,data) {
if (err) console.log(err); // an error occurred
else console.log(data); // successful response
var timeJson = JSON.parse(data);
})
// var timeJson = JSON.parse(data);
// var itemTime = timeJson.item;
console.log("timeJSON: " + timeJson);
// console.log("itemTime: " + itemTime);
var params = {
Key: {
deviceId: {S: deviceId},
time: {N: 'tm'}
},
TableName: 'weather'
};
db.getItem(params, function(err, data) {
if (err) console.log(err); // an error occurred
else console.log(data); // successful response
})
Herhangi bir yardım büyük takdir.