obnizのフォーラムは新しいシステムに移行しております。
新しいフォーラムはこちらになりますセンサ等で取得した値の保存方法について
-
センサ等の取得した値を保存するにはどのような方法があるのでしょうか?
クラウド上でデータ保存して、後からそのデータをダウンロードして確認するということはできるのでしょうか?
-
@Inventor-1m さん
いくつか方法がありますので、状況に合わせて選んでいただければと思います。
-
obniz cloud apiを使ってobniz cloudにデータを保存する
obnizのユーザー登録&デバイス登録をして頂くと、リポジトリ内にデータを保存できるようになります。
ドキュメントがこちらにありますが、SDKが現在はないため、少々難易度が高いかも知れません。
https://obniz.io/ja/doc/obniz_api/cloud_repository -
Dropboxをつかう
Dropbox での保存方法はこちらにて紹介しています。
https://obniz.io/ja/lessons/dropbox/lessons_dropbox -
ambientを使う
ambientというストレージ+グラフ化サービスがあります。
グラフ化までしてしまいたい場合はこちらも選択肢になるかと思います。
https://ambidata.io/samples/devices/obniz/ -
AWS S3、google cloudなどを使う
obnizのプログラムはawsやgoogle cloudなど、どんなクラウドサービスとも連携することができます。具体的に紹介しているサイトが有るわけではありませんが、それらと組み合わせて保存することも可能です。
-
-
ご連絡が遅くなり、大変申し訳ありません。
ご回答いただき、ありがとうございます。
内容を確認いたします。
不明点等があれば、再度、ご連絡させていただきますので
よろしくお願いいたします。
-
早速、2の方法で、保存方法を勉強しているのですが
データは上書きしかできないのでしょうか?
上書きをせず、定期的にデータを取得するのはどのようにすればよいでしょうか?
ご確認をよろしくお願いいたします。
-
@Inventor-1m さん
Dropboxへの保存ですね。
DropboxのAPIを確認しましたが、追記は無いようでした。別の方法として、ファイルの内容を取得→追記したテキストを作成→ファイル保存 のようにやると追記することができます。
もしくは、ファイル名を変えて頂くと、上書きされずに新しいファイルで作ることができます。
-
ご回答をいただき、ありがとうございます。
追記がないことは承知いたしました。
一つのファイルにまとめたいので、
前者の方法を考えていますが、具体的にはどのようにすればよいでしょうか?聞いてばかりで、大変申し訳ありませんが
よろしくお願いいたします。
-
@Inventor-1m さん
①ファイルの内容を取得→②追記したテキストを作成→③ファイル保存 ですが、
①についてはこちらが参考になるかと思います
https://stackoverflow.com/questions/42622526/dropbox-api-v2-javascript-read-file上記の記事内で、
test.txt
のデータを読むために書きを行っています。dbx.filesDownload({path: '/test.txt'}) .then(function (response) { var blob = response.fileBlob; var reader = new FileReader(); reader.addEventListener("loadend", function() { console.log(reader.result); // will print out file content }); reader.readAsText(blob); }) .catch(function (error) { ... })
これの
console.log(reader.result);
の部分にてデータの取得ができますので
文字列を追記して②追記したテキストを作成していただければと思います。③についてはすでに実装されているかと思います。
上記は少々難しいので、難易度が高ければ教えてください。
もし用途にあうようでしたら、dropboxではなく、ambientを使うほうが簡単かもしれません
-
ご回答いただき、ありがとうございます。
ご回答内容を参考にプログラムを作成して
一応、データの追加は出来たのですが
なぜか途中にカンマが入ったり入らなかったりします。
これを直すことはできるのでしょうか?
また、データの追加方法を縦並びにすることは可能でしょうか?
下記のプログラムはカラーセンサの値を取り出した例です。obniz.onconnect = async function() {
var j= [];
for(var i=0;i<5;i++){
Obniz.PartsRegistrate(SS);
var colorSens = obniz.wired("SS", {vcc:0, sda:1, scl:2, gnd:3});
colorSens.init();
var ret = await colorSens.getVal();
console.log("getVal:"+ ret);
var red = ret[0];
var green = ret[1];
var blue = ret[2];
var ir = ret[3];console.log("Red:"+ red); console.log("Green:"+ green); console.log("Blue:"+ blue); console.log("IR:"+ ir); var dbx = new Dropbox.Dropbox({ accessToken: '111111' }); dbx.filesDownload({path: '/suncon.txt'}) .then(function (response) { var blob = response.fileBlob; var reader = new FileReader(); reader.addEventListener("loadend", function() { console.log(reader.result); // will print out file content j[i]=reader.result; }); reader.readAsText(blob); }) .catch(function (error) { alert(error); }) dbx.filesUpload({path: '/11111.txt', contents:j + "Red:"+ red + "Green:"+ green + "Blue:"+ blue + "IR:"+ ir, mode: 'overwrite' }) .catch(function(error) { alert(error); }); await obniz.wait(5000); }
txtファイルの内容は
,Red:1693Green:3562Blue:1758IR:1259,Red:1660Green:3497Blue:1726IR:1142,,Red:1693Green:3562Blue:1758IR:1259Red:1644Green:3454Blue:1708IR:1177Red:1657Green:3485Blue:1719IR:1173
となります。ご対応をよろしくお願いいたします。
-
dbx.filesUpload({path: '/11111.txt', contents:j + "Red:"+ red + "Green:"+ green + "Blue:"+ blue + "IR:"+ ir, mode: 'overwrite' })
こちらの行の
contents:j + ...
のjが配列のため、カンマが入ったり入らなかったりしてると思われます。やりたいことから推測すると、こちらのようなコードはいかがでしょうか。
※上記以外の部分もawaitを入れたりなど少々変更していますobniz.onconnect = async function () { Obniz.PartsRegistrate(SS); var colorSens = obniz.wired("SS", {vcc:0, sda:1, scl:2, gnd:3}); colorSens.init(); var j= []; for(var i=0;i<5;i++){ var ret = await colorSens.getVal(); console.log("getVal:"+ ret); var red = ret[0]; var green = ret[1]; var blue = ret[2]; var ir = ret[3]; console.log("Red:"+ red); console.log("Green:"+ green); console.log("Blue:"+ blue); console.log("IR:"+ ir); var dbx = new Dropbox.Dropbox({ accessToken: 'xxxxx' }); await dbx.filesDownload({path: '/suncon.txt'}) .then(function (response) { var blob = response.fileBlob; var reader = new FileReader(); return new Promise((resolve)=>{ reader.addEventListener("loadend", function() { console.log(reader.result); // will print out file content j[i]=reader.result; resolve(reader.result) }); reader.readAsText(blob); }); }) .catch(function (error) { alert(error); }) await dbx.filesUpload({path: '/suncon.txt', contents:j[i] + "\nRed:"+ red + "Green:"+ green + "Blue:"+ blue + "IR:"+ ir, mode: 'overwrite' }) .catch(function(error) { alert(error); }); await obniz.wait(5000); } }
-
ご連絡が遅くなり、大変申し訳ありません。
ご回答いただき、ありがとうございます。
内容を確認いたしました。
私の思っていた通りのことができました。お忙しい所、
色々とご対応いただき、ありがとうございました。不明点等がでましたら、再度、ご連絡させていただきますので
その際はよろしくお願いいたします。
-
@Inventor-1m さん
無事完成してよかったです!
また何かありましたらご連絡下さい