obnizというマイコンボードに繋いだセンサで所得した値(温度と土壌湿度)をtwitterなどの外部サービスに投稿できる形をできるようにするシステムを作っています。
発生している問題
javascript
1var Obniz = require("obniz"); 2 3var obniz = new Obniz("0000-0000"); 4 5obniz.onconnect = async function() { 6var tempsens = obniz.wired("LM35DZ", { gnd:2 , output:3, vcc:4}); 7var sensor = obniz.wired("SEN0114", {vcc:5, gnd:6, output:7}); 8 9 temp = await tempsens.getWait(); 10 value = await sensor.getHumidityWait(); 11console.log('temperature:' + temp + 'Humidity Level:' + value); 12)
以上のコードでコンソールに温度と土壌湿度の値を取り出すことはできましたが,外部のサービスで使うために,上記「obniz.onconnect=...」以下の関数の外で変数temp,valueの値を読もうとすると,以下のエラーが出ます。
該当のソースコード
javascript
1var Obniz = require("obniz"); 2 3var obniz = new Obniz("0000-0000"); 4 5obniz.onconnect = async function() { 6var tempsens = obniz.wired("LM35DZ", { gnd:2 , output:3, vcc:4}); 7var sensor = obniz.wired("SEN0114", {vcc:5, gnd:6, output:7}); 8 9 temp = await tempsens.getWait(); 10 value = await sensor.getHumidityWait(); 11 12} 13 14console.log('temperature:' + temp + 'Humidity Level:' + value); 15 16
ReferenceError: temp is not defined at Object.<anonymous> (/home/pi/node/test2.js:14:30) at Module._compile (internal/modules/cjs/loader.js:701:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10) at Module.load (internal/modules/cjs/loader.js:600:32) at tryModuleLoad (internal/modules/cjs/loader.js:539:12) at Function.Module._load (internal/modules/cjs/loader.js:531:3) at Function.Module.runMain (internal/modules/cjs/loader.js:754:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
試したこと
グローバル変数やローカル変数に関する問題だと考え,変数にvarをつけたり消したりしましたが解決できません。
関数の中で読み取った値をどのようにすれば関数の外で使えるのかということをポイントに教えていただきたいです。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー