çµäº åã®éšå ã
ç®æ¬¡ïŒ
è¹å€ã»ã³ãµãŒã ãœãããŠã§ã¢
æµ·å€ã»ã³ãµãŒçšã®ãœãããŠã§ã¢ã«ã€ããŠè©±ããŠãã ããã ãã®åŸãããªãã¯ãã§ã«å®éšã§ããå®å
šãªã·ã¹ãã ãæã«å
¥ããã§ãããã
ãµãŒããŒã¯WiFiçµç±ã§ã€ã³ã¿ãŒããããšéä¿¡ã§ããäžå€®ã®ããŒã ãŠãããã§ããã ã¯ã©ã€ã¢ã³ãã¯ããŒã¿ãç¡ç·ã§ãµãŒããŒã«éä¿¡ãããããã«äœ¿çšã§ãããªã¢ãŒãã»ã³ãµãŒã§ããããšãæãåºããŠãã ããã
ãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ã®ãœãŒã¹ã³ãŒãã¯ãã¡ãã§ãã
ãœãŒã¹ããã¹ãã«ã¯è©³çްãªã³ã¡ã³ããä»ããŠããŸãã
ã¯ã©ã€ã¢ã³ãã§ã»ãšãã©äœãèšå®ããå¿
èŠã¯ãããŸããã
nRF24L01 +ç¡ç·éä¿¡æ©ãããæ£ç¢ºã«ã¯RadioHeadã©ã€ãã©ãªã§ã¯ããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®ã¢ãã¬ã¹ãæå®ããå¿
èŠããããŸãã è€æ°ã®ãµãŒããŒãšã¯ã©ã€ã¢ã³ããããå Žåã«åããŠãã¢ãã¬ã¹ãæäŸãããŸãã ã¢ãã¬ã¹ã¯åãªãæŽæ°ã§ãã ã¯ã©ã€ã¢ã³ãããµãŒããŒã«ããŒã¿ãã±ãããéä¿¡ãããšãããã®ãã±ãããã©ã®ãµãŒããŒåãã§ãããã瀺ããŸãã ãµãŒããŒã¯ãç¬èªã®ã¢ãã¬ã¹ãç¥ã£ãŠããããããã®ãã±ããããã®ã¢ãã¬ã¹å®ãã©ããã倿ããŸãã
ãããã£ãŠããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®SERVER_ADDRESS
ã¯åãã§ããå¿
èŠããããŸãããç°ãªãã¯ã©ã€ã¢ã³ãã®CLIENT_ADDRESS
ã¯ç°ãªãå¿
èŠããããŸãã ã€ãŸããå°æ¥å¥ã®æ°ããã»ã³ãµãŒãã·ã¹ãã ã«æ¥ç¶ããå Žåã CLIENT_ADDRESS
ã倿Žããå¿
èŠããããŸãã
// #define SERVER_ADDRESS 10 #define CLIENT_ADDRESS 20 // !!!
RF_CHANNEL
ç¡ç·ãã£ãã«RF_CHANNEL
ã¯ããã¹ãŠã®äººã§åãã§ãªããã°ãªããŸããã ããã©ã«ãã§ã¯ã2ã§ããããã©ã«ãã®çªå·ã倿ŽããŸããããä»ã®ãã®ãéžæã§ããŸãã
ããããªãŒã®äŸçµŠé»å§ã枬å®ããããã®é»å§èšã®èšå®ã倿Žããå¿
èŠããããŸãã
// , const float r1 = 100400; // 100K const float r2 = 9960; // 10K // // http://localhost/arduino-secret-true-voltmeter/ const float typVbg = 1.082; // 1.0 -- 1.2
ãšãã«ã®ãŒãç¯çŽããããã«ãArduinoçšã®è»œéã®äœé»åã©ã€ãã©ãªã䜿çšãããŸãã
以äžã¯ããã®ã©ã€ãã©ãªã䜿çšããArduino Pro Miniã®å®éã®æ¶è²»éã®æž¬å®å€ã§ãã
- éåžž25mA
- DHTã§äœæ¥ãããšããåã
- ç¡ç·äŒé38 mA
- LowPower.idle 15 mAã§
- LowPower.powerdown 7.5 mAã§
ã¯ã©ã€ã¢ã³ãã¯ãæž©åºŠãæ¹¿åºŠãããã³äŸçµŠé»å§ã®æž¬å®å€ãååŸããããããã¹ãŠãããŒã¿æ§é ã«ããã¯ãããµãŒããŒã«ããŒã¿ãéä¿¡ããŠãã¹ãªãŒãç¶æ
ã«ãªããŸããã 転éäžã«ãšã©ãŒãçºçããå Žåã転éã¯ããã«ç¹°ãè¿ãããŸãã
ãµãŒããŒïŒäžå€®ãããŒã ãŠãããïŒã¯ãããŒã¿ãåä¿¡ããåä¿¡ã確èªããŠåŠçããŸãã
ããŒã¿ããŒã¹ãMySQLãPHPãWWWãµãŒããŒ
äœæ¥ãå®äºãããšãæ°è±¡ã¹ããŒã·ã§ã³ã®å®å
šã«æ©èœããèšèšãã§ããŸããã ããããä»ã§ã¯æ°åã®ãã®ãããªæ°è±¡èŠ³æž¬æããããå°å
ã®å·¥èžåã¯ãã¯ãæµè¡ã§ã¯ãããŸããã çµå±ã®ãšãããã¢ãã®ã€ã³ã¿ãŒãããããããŸãã
ãããã£ãŠããããã®ã€ã³ã¿ãŒããããžã®ã¢ã¯ã»ã¹ãã©ã®ããã«å®è¡ããããã«ã€ããŠè©±ããããŒã¿ããŒã¹ãšWebãã§ã€ã¹ããŠã§ã¶ãŒã¹ããŒã·ã§ã³ã«æ·»ä»ããŸãã
ããŠã§ãã«ã¡ã©ãã®åé¡ã¹ããŒãã¡ã³ãïŒ
- æ°è±¡ã¹ããŒã·ã§ã³ããŒã¿ã®åä¿¡ãšä¿åïŒæž©åºŠãæ¹¿åºŠãæ°å§ãäŸçµŠé»å§
- ãã®ããŒã¿ã衚瀺ãã
- ãã£ãŒããäœæããŸãã
ãã®å Žåãmysqliã¢ãžã¥ãŒã«ã§ApacheãPHPãMySQLããµããŒããããã¹ãã£ã³ã°ãå¿
èŠã§ãã ãããŠããããã®æ¡ä»¶ã¯ãå°çäžã®ã»ãšãã©ãã¹ãŠã®ãã¹ãã«ãã£ãŠæºããããŸãã ãŸãã¯ããã¹ããã代ããã«ãããŒã ãããã¯ãŒã¯ã«ãŒã¿ãŒã«æ¥ç¶ãããã€ã³ã¿ãŒãããã«ã¢ã¯ã»ã¹ã§ãããµãŒããŒã®åœ¹å²ãæããã³ã³ãã¥ãŒã¿ãŒããããŸãã
ããŒã¿ããŒã¹äœæ
ããŒã¿ããŒã¹ã®èšèšãšäœæããå§ããŸãããã
ããŒã¿ããŒã¹ã¯ããªãã®äžçã§ãããé·æéåŠç¿ããããšãã§ããã®ã§ãçŽæ¥å¿
èŠãªãã®ã ããç°¡åã«èª¬æããŸãã
ãã¹ãŠã®SQLã¹ã¯ãªããã¯ã weather-station/server/php-sql/
ãã£ã¬ã¯ããªã«ãããŸã
ããŒã¿ããŒã¹èšèšã¯ã©ãããå§ãŸããŸããïŒ è«ççããã³ç©çç衚çŸã
è«çãã¥ãŒãŸãã¯ããŒã¿ããŒã¹ã¹ããŒãïŒ
- DHT枩湿床衚
- å§åããã³æž©åºŠã»ã³ãµãŒããŒã¿ããŒãã«BMP
- ãããã®ããŒãã«ã«ã¯çžäºã®ãªã³ã¯ããªãããããªã³ã¯ã¯äžèŠã§ãã
ç©çã¹ããŒã ã¯ãç¹å®ã®DBMSãšããŒã¿åã«äŸåããŠããŸãã ç¹å®ã®äŸã§åè§£ããæ¹ãç°¡åã§ãã make_tables.sql
SQLã¹ã¯ãªããmake_tables.sql
ãè«çã¹ããŒããšç©çã¹ããŒããmake_tables.sql
ããŸãã
åããŒãã«ã«ã¯ã¿ã€ããã£ãŒã«ããå¿
èŠã§ã
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT
ãã£ãŒã«ãåã¯ããŒã¿ããŒã¹ããšã«ç°ãªãå ŽåããããŸãããå¯äžã®æå³ããããŸã-ããã¯äžæã®èå¥åãã¬ã³ãŒãããŒã§ãã å°æ¥ããã®ãããªã«ãŠã³ã¿ãæããªãããŒãã«ã«ããŒã¿ããŒã¹ã衚瀺ãããå Žåããã®ããŒã¿ããŒã¹ã¯ããã°ã©ãã³ã°ããã¯ã»ã©é ã人ããããã人æç§åŠã«ãã£ãŠèšèšããããã®ã§ããããšãç¥ã£ãŠããå¿
èŠããããŸãã
åãã¿ã€ãã®ã»ã³ãµãŒããã®ããŒã¿ã1ã€ã®ããŒãã«ã«ä¿åããå¥ã®ã¿ã€ãã®ã»ã³ãµãŒã«ã€ããŠã¯å¥ã®ããŒãã«ãäœæããŸãã ããã«ãããããŒã¿ããŒã¹ãšããã«ãã€ã³ããããPHPãè¥å¹²è€éã«ãªããŸãããå°æ¥ã®ã·ã¹ãã å
šäœã®æ¡åŒµãŸãã¯å€æŽãç°¡åã«ãªããŸãã
ãããžã§ã¯ãã«ã¯2ã€ã®ããŒãã«ããããŸãã arduino_dht
ããŒãã«ã¯DHTã¿ã€ãã»ã³ãµãŒïŒsïŒïŒæž©åºŠã湿床ïŒããã®ããŒã¿ãæ ŒçŽãã arduino_bmp
ããŒãã«ã¯BMPã¿ã€ãã»ã³ãµãŒïŒsïŒïŒæž©åºŠãå§åïŒããã®ããŒã¿ãæ ŒçŽããŸãã å°æ¥ãããšãã°ãã¬ã¹ã»ã³ãµãŒãŸãã¯ã¢ãŒã·ã§ã³æ€åºåšã䜿çšããå Žåã¯ã远å ã®ããŒãã«ãäœæããŠãã ããã DHT11ãŸãã¯DHT22ã¿ã€ãã®å¥ã®ã»ã³ãµãŒãæ¥ç¶ããå Žåã远å ã®ããŒãã«ãäœæããå¿
èŠã¯ãããŸããarduino_dht
ããŒãã«ã䜿çšããŸãã ååãæç¢ºã§ããããšãé¡ã£ãŠããŸããå¥ã®ç©çãšã³ãã£ãã£ã¯å¥ã®ããŒãã«ã§ãã
åãã¿ã€ãã®è€æ°ã®ã»ã³ãµãŒããã®ããŒã¿ãããŒãã«ã«ä¿åãããå Žåãã©ã®ããã«ããããåºå¥ã§ããŸããïŒ ãããè¡ãã«ã¯ãåããŒãã«ã«ãã£ãŒã«ããå
¥åããŸã
idSensor INTEGER
å®éãããã¯ãªã¢ãŒãã¯ã©ã€ã¢ã³ã-ã¯ã©ã€ã¢ã³ãã®åã€ã³ã¹ã¿ã³ã¹ã®client/client.ino
ãšã server/server.ino
çŽæ¥æ¥ç¶ãããŠããã»ã³ãµãŒã®äžå€®ãµãŒããŒã§ããserver/server.ino
ããserver/server.ino
ã§ãã
ç£æ¥ã·ã¹ãã ã§ã¯ãå¥ã®ããŒãã«ãå¿
èŠã§ãidSensor
ãšãã®å£é ã§äººéãèªããèšè¿°ã®å¯Ÿå¿ã ããšãã°ã idSensor
= 2ã®ã»ã³ãµãŒã¯ã枩床ãã¢ããŒãå
ã®æ¹¿åºŠããªã©ã§ãã ãããããã®ãããžã§ã¯ãã§ã¯è€éåãããæ¬¡ã®ããšãèŠããŠãããŠãã ããã
idSensor
æã€ã»ã³ãµãŒã CLIENT_ADDRESS
ã11ã«çãã-ããã¯ãµãŒããŒäžã®ããŒã ã»ã³ãµãŒ-äžå€®ãŠããããidSensor
åããã»ã³ãµãŒã¯ã CLIENT_ADDRESS
ã20ã«çãã-ããã¯ãæåã®ïŒãããžã§ã¯ãã§å¯äžã®ïŒãŠã£ã³ããŠããŒã¹ã®ã»ã³ãµãŒã¯ã©ã€ã¢ã³ãã§ãã
次ã ããŒãã«ã«ã¯æ¬¡ã®ããŒã¿ãä¿åãããŸãã
- ipRemote-ããŒã¿ã®éä¿¡å
ã®æ°è±¡èŠ³æž¬æïŒãµãŒããŒïŒã®IPã¢ãã¬ã¹ããããã°ãšç£èŠã«åœ¹ç«ã¡ãŸãã
- dateCreate-ã¬ã³ãŒããäœæãããæ¥ä»ã
- millis-ãããã°ã«åœ¹ç«ã¡ãŸããããã¯ãArduinoã§ã¹ã±ãããéå§ããŠããã®ããªç§åäœã®æéã§ãã
- 枩床-枩床
- 湿床-湿床
- é»å§-äŸçµŠé»å§ã
- å§å-å§å
- errors-ãšã©ãŒã®æ°ïŒäœ¿çšãããŸããïŒã ã·ã¹ãã å
šäœã®ç¶æ
ããªã¢ãŒãã§è©äŸ¡ã§ããããã«ãäŒéãšã©ãŒã®æ°ãªã©ãä¿åããããšãç®çãšããŠããŸããã
ã芧ã®arduino_dht
ã arduino_bmp
ãšarduino_bmp
éåžžã«äŒŒãŠãããéãã¯å§åãšæ¹¿åºŠã®ãã£ãŒã«ãã®ã¿ã§ããããã¹ãŠã1ã€ã®ããŒãïŒããŒãã«ïŒã«ãã³ãããããšããèŠæããããŸãã ãããã æåã®æšæºåœ¢åŒã¯ãããè¡ãããã«æç€ºããŠããŸãããå€ãã®åå¿è
ããã°ã©ããŒããããåé¿ããããšããŸããããã©ããæåããŸããã§ããã ããã¯ãåœåã®éãäžæåŒåã®æ³åã«æ°ä»ããªãæ¹æ³ã§ãã
arduino_error_log
ããŒãã«arduino_error_log
ãããã°ã«åœ¹ç«ã¡ãŸãâãšã©ãŒããã®ä»ã®ã·ã¹ãã ã¡ãã»ãŒãžã®ãã°ã§ãã
æš©éãæã€ããŒã¿ããŒã¹ãšãã®ãŠãŒã¶ãŒã®äœæã«ã€ããŠã¯ã make_db.sql
ã§èª¬æããŠãmake_db.sql
ããã¯äžåºŠè¡ãããããŒã¿ããŒã¹åãšãŠãŒã¶ãŒåã¯ç¬èªã®ãã®ã«ãªããŸãã ãããŠãæ£ç¢ºã«è¡ãå¿
èŠãããã®ã¯ããã¹ã¯ãŒããèšå®ããããšã§ãã
PHPããã³WebãµãŒããŒ
ãã¹ãŠã®Webã€ã³ã¿ãŒãã§ã€ã¹èšå®ã¯config.php
ä¿åãããŸãã ããŒã¿ããŒã¹èšå®ã«åŸã£ãŠå€æŽããŸãã
ã¿ã€ã ãŸãŒã³ãPHP圢åŒã§èšå®ããŸã
date_default_timezone_set('Europe/Prague')
å©çšå¯èœãªãã¹ãŠã®ã¿ã€ã ãŸãŒã³ã«ã€ããŠã¯ãããã§èª¬æããŸã ã
ã¹ã±ããserver.ino
ããã®å®æ°SOURCE_KEY
äžèŽããå¿
èŠãããã¢ã¯ã»ã¹çšã®ç§å¯éµãïŒæ°åãšããŠïŒèšå®ããŸã
$access_key = '***KEY***';
WebãµãŒããŒã«ã¯èªèšŒããã¹ã¯ãŒãã®ãã°ã€ã³ããããŸãããããã¯èšèšå
šäœãè€éã«ããŸãã ãããã¿ã€ãã®å Žåãããã¯å¿
èŠãããŸããã ãããã£ãŠããã¹ãŠã®ä¿è·ã¯robots.txt
ãã¡ã€ã«ã index.php
ããã³ã¢ã¯ã»ã¹çšã®ãã®ç§å¯ããŒã®äžåšã«åºã¥ããŠæ§ç¯ãããŸãã
ã¡ã€ã³ã®PHPã¹ã¯ãªããweather.php
ã¯ãããŒã¿ãå«ãåçŽãªHTTP GETãªã¯ãšã¹ããåãå
¥ãã察å¿ããããŒã¿ããŒã¹ããŒãã«ã«ä¿åããŸãã ããŒ$access_key
ãäžèŽããªãå Žåããªã¯ãšã¹ãã¯æåŠãããŸãã
weather-view.php
ããŒã¿ããŒãã«ã®è¡šç€ºã«äœ¿çšãããä»ã®Webã€ã³ã¿ãŒãã§ã€ã¹ã¹ã¯ãªãããžã®ãã€ããŒãªã³ã¯ãå«ãŸããŠããŸãã ãããªåœŒã«é»è©±ããŠ
http:
äŸãã°
http:
weather-view.php
ã¯ã次ã®ããšãèŠããŠããå¿
èŠã®ããç°¡åãªã©ãã«ã衚瀺ããŸãã
- ID 11ã®ã»ã³ãµãŒã¯ãµãŒããŒäžã®ããŒã ã»ã³ãµãŒã§ãã
- ID 20ã®ã»ã³ãµãŒã¯ãŠã£ã³ããŠã»ã³ãµãŒã§ãã
function.php
ã¹ã¯ãªããã«ã¯ããã¹ãŠã®PHPã¹ã¯ãªããã«å
±éã®function.php
ãå«ãŸããŠããŸãã
chart-dht.php
ã¯ã Google Chartã䜿çšãããã£ãŒãäœæãæ
åœããŸã ã ããã¯ãããšãã°ãç¡ç·ã»ã³ãµãŒã®äŸçµŠé»å§ã®ã°ã©ãã§ãã æŽããæ¥ã«å€ªéœé»æ± ã«ããé»å§ãäžæãããã®åŸã黿± ã®é»æºãåŸã
ã«æŸé»ããŸãã

export-dht.php
ã¯ãMySQLããŒã¿ããŒã¹ããŒãã«ããCSVãã¡ã€ã«ã«ããŒã¿ãexport-dht.php
ãŸãã ã¹ãã¬ããã·ãŒãã§ããã«ã€ã³ããŒãããã³åæããããã
export-voltage.php
ã¯ããŠã£ã³ããŠã»ã³ãµãŒã®äŸçµŠé»å§ã«é¢ããããŒã¿ãMySQLããŒã¿ããŒã¹ããCSVãã¡ã€ã«ã«ãšã¯ã¹ããŒãããŸãã ãããã°ã«åœ¹ç«ã¡ãŸãã
truncate.php
ãã¹ãŠã®ããŒãã«ãã¯ãªã¢ããŸãã ãã¹ãŠã®ããŒã¿ãåé€ããŸãã ãããã°ã«åœ¹ç«ã¡ãŸãã weather-view.php
ãããã®ã¹ã¯ãªãããžã®ãªã³ã¯ã¯ãªãããããã©ãŠã¶ã®ã¢ãã¬ã¹ããŒã«ãã$access_key
çŽæ¥ãªã³ã¯ãä»ããŠåŒã³åºãå¿
èŠããããŸãã
ããŒã¿ãåä¿¡ãããšãã mysqli_real_escape_string()
颿°ã¯ãäžè¬çã«èª€ã£ãå€ãããŒã¿ããŒã¹ã«å
¥ãã®ãé²ãããã«äœ¿çšãããŸãã
robots.txt
ããµã€ãã®ã«ãŒãã«é
眮ããŠãæ€çŽ¢ãšã³ãžã³ãžã®äŸµå
¥ãé²ãããšãå¿ããªãã§ãã ããã
ESP8266ãWiFiããã³ããŒã¿è»¢é
server.ino
ã server.ino
ã¹ã±ããã«æ»ããWiFiã¢ã¯ã»ã¹ãã€ã³ãã«æ¥ç¶ããŠããŒã¿ãWebãµãŒããŒã«éä¿¡ããéšåã«æ»ããŸãã
æ¢ã«æžããããã«ãArduinoãATã³ãã³ãã䜿çšããŠESP8266ã¢ãžã¥ãŒã«ãå¶åŸ¡ããããã®éåžžã®ã©ã€ãã©ãªãèŠã€ããããšãã§ããªãã£ããããèªåã§ãéå£èŸ²å Žããããªããã°ãªããŸããã§ããã ãŸããESP8266-01ã®ãã¡ãŒã ãŠã§ã¢ã®ç¹å®ã®ããŒãžã§ã³ããã©ãã·ã¥ããå¿
èŠãããããšãæãåºãããŠãã ããã ãããŠããã¹ãŠã®æºåãæŽã£ãããã©ã®ããã«æ©èœããããèŠãŠã¿ãŸãããã
server.ino
ã¹ã±ããã§WebãµãŒããŒã«ã¢ã¯ã»ã¹ããã«ã¯ããããã®å®æ°ã倿Žserver.ino
å¿
èŠãããserver.ino
const String DEST_HOST = " "; // habr.com const String DEST_PORT = " "; // 80 const String DEST_URL = "/ /weather.php"; const String SOURCE_KEY= " "; // $access_key config.php
server.ino
ã void setup()
颿°ã§ãESP8266ã¯æåã«ã¹ããŒã·ã§ã³ã¢ãŒãã«åãæ¿ããããŸãã Wi-Fiã¯ã©ã€ã¢ã³ããšããŠæ©èœãå§ããŸã
espSendCmd(«AT+CWMODE_CUR=1», «OK», 3000)
ãããŠãã¢ã¯ã»ã¹ãã€ã³ããžã®æ¥ç¶ã«åŸããŸã
espState = espConnectToWiFi()
æ¥ç¶ãçºçããªãå Žåã詊è¡ãç¹°ãè¿ãããŸãïŒ1åïŒ
if ( espState != ESP_SUCCESS ) { delay(5000); Serial.println("WiFi not connected! Try again ..."); espConnectToWiFi(); }
次ã«ãTCP / IPã·ã³ã°ã«æ¥ç¶ã¢ãŒããéžæããŸã
espSendCmd("AT+CIPMUX=0", "OK", 2000)
DHTã»ã³ãµãŒããWebãµãŒããŒã«ããŒã¿ãéä¿¡ããå Žåã type=dht
ãšããŠç€ºãããããŒã¿åã§é¢æ°ã䜿çšãããŸã
espSendData( "type=dht&t=" + String(dhtData.temperature) + "&h=" + String(dhtData.humidity) + "&v=" + String(dhtData.voltage) + "&s=" + String(CLIENT_ADDRESS) )
BMPã»ã³ãµãŒããWebãµãŒããŒã«ããŒã¿ãéä¿¡ãããšããåã颿°ãtype=bmp
ãšããŠç€ºãããããŒã¿åã§äœ¿çšãããŸã
espSendData( "type=bmp&t=" + String(temperature_bmp) + "&p=" + String(pressure_bmp) + "&s=" + String(CLIENT_ADDRESS) )
espSendData()
颿°ã¯ãHTTP GETèŠæ±æååãåãå
¥ããæå³ãããšããã«WebãµãŒããŒã«éä¿¡ããŸãã
å
éšã§ã¯ã espSendData()
ã¯ãATãã³ãã³ããéä¿¡ããŠESPã¢ãžã¥ãŒã«ã®å¯çšæ§ã確èªããå¿
èŠã«å¿ããŠWiFiæ¥ç¶ã確èªããŠåæ¥ç¶ããŸãã ãã®åŸãããŒã¿ãéä¿¡ãããTCPæ¥ç¶ãéããããŸãã
Androidã¢ããª
æè¿ã§ã¯ã誰ããLEDãç¹æ»
ãããããšãã§ããã°ãæ°è±¡èŠ³æž¬æãæã£ãŠãã人ãé©ãããããšã¯ãããŸããã ããããã¯ã©ãããWiFiçµç±ã§ãµãŒããŒãšéä¿¡ã§ããWebãã§ã€ã¹ãšã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãæã£ãŠããå Žåãããã¯äœãã§ãïŒ ããã§ã®ãµãŒããŒãšã¯ããã¡ããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãã€ãŸã ç§ãã¡ã®å Žåãããã¯PHPãã€ã³ãã£ã³ã°ããã³MySQL DBMSã§ãã ã±ãŒãã«ã¯ååãªãã§ãªãŒããããŸãããã€ãŸããAndroidã¢ããªã±ãŒã·ã§ã³ã§ããããã«ã€ããŠã¯ãããããäœæããŸãã
建ç¯
æ°è±¡èŠ³æž¬æãœãããŠã§ã¢ãã©ãããã©ãŒã å
šäœã®ã¢ãŒããã¯ãã£ã¯åçŽã§ãã
- æ°è±¡ã¹ããŒã·ã§ã³ã®ãµãŒããŒéšåïŒäžå€®ãŠãããïŒã¯ããªã¢ãŒãã»ã³ãµãŒã¯ã©ã€ã¢ã³ãããããŒã¿ãåéããŸã
- 次ã«ãããŒã¿ãã¢ããªã±ãŒã·ã§ã³ã®WebãµãŒããŒã«è»¢éãããã®ããŒã¿ãããŒã¿ããŒã¹ã«ä¿åããŸã
- Androidã¢ããªã±ãŒã·ã§ã³ïŒãŸãã¯ä»ã®ãªã¢ãŒãã¢ããªã±ãŒã·ã§ã³ïŒiOSããã©ãŠã¶ãŒïŒã¯ãWebãµãŒããŒã«ããŒã¿ãèŠæ±ããç»é¢ã«è¡šç€ºããŸãã
Androidããã€ã¹ã®ç»é¢ã«ã¯ãçŸåšã®ææ°ã®ã»ã³ãµãŒæž¬å®å€ã衚瀺ãããŸãã
HTTP GETããã³JSON
ãããã解決ããå¿
èŠããã質åã¯ãããŒã¿ãWebãµãŒããŒããAndroidã¢ããªã±ãŒã·ã§ã³ã«ã©ã®ããã«è»¢éããããã§ãã
ããã§ã¯äœãçºæããå¿
èŠã¯ãããŸããããã¹ãŠããã§ã«çºæãããŠããŸã-ãããã¯HTTP GETãšJSONã§ãã
ãã®äŸã§ã¯ãAndroidã¢ããªã±ãŒã·ã§ã³ã®æºåããŸã ã§ããŠããªãéã«ãWebãµãŒããŒãžã®åçŽãªGETãªã¯ãšã¹ããæåã§ã³ã³ãã€ã«ããã³ãããã°ã§ããŸãã
Javaããã³Androidã«ã¯ãJSON圢åŒã®ããŒã¿ãåŠçããããã®æ¢è£œã®ã©ã€ãã©ãªããããŸãã JSONã¯ã人éãèªãã圢åŒã®ããã¹ã圢åŒã§ããããããã°ã«åœ¹ç«ã¡ãŸãã
æ°è±¡ã¹ããŒã·ã§ã³ã®ã»ã³ãµãŒããçŸåšã®ããŒã¿ãçæããããã«ãWebãµãŒããŒäžã«æ°ããPHPã¹ã¯ãªããlast-data-to-json.phpãäœæããŸãã
ã¹ã¯ãªããåŒã³åºãïŒ
http://<>/last-data-to-json.php?k=<access_key>
ããã§ã <access_key>
ã¯ãæãåºãããã«ãã·ãŒã¯ã¬ããããŒã¿ããŒã¹ã¢ã¯ã»ã¹ããŒã§ãã
JSON圢åŒã®å¿çäŸïŒ
{ "DHT 11":{ "idSensor":"11", "dateCreate":"2016-04-20 18:06:03", "temperature":"19", "humidity":"26", "voltage":"5.01" }, "DHT 20":{ "idSensor":"20", "dateCreate":"2016-04-18 07:36:26", "temperature":"10", "humidity":"26", "voltage":"3.7" }, "BMP 11":{ "idSensor":"11", "dateCreate":"2016-04-20 18:06:22", "temperature":"19", "pressure":"987.97" } }
3ã€ã®ã»ã³ãµãŒãããããšãæãåºããŠãã ããã ãããã®IDãšã¿ã€ãïŒDHTãŸãã¯BMPïŒã¯ãæ°è±¡èŠ³æž¬æã³ãŒãå
šäœã«ããŒãã³ãŒãã£ã³ã°ãããŠããŸãã ãã®ããŒãã³ã¢ã³ãŒãã£ã³ã°ã®æ¹æ³ã¯ã€ããªãã®ãŒçã«ã¯æ£ãããããŸããããèã§æããããããã¿ã€ãïŒè¿
éã§ç°¡åãªè§£æ±ºçãå¿
èŠãªå ŽåïŒã®å Žåãããã¯åŠ¥åœãªåХ忡ã§ãã
$idSensor = 11; // DHT $idSensor = 11; // BMP $idSensor = 20; // DHT
last-data-to-json.php
ã¯ããããã®ç°çš®ã»ã³ãµãŒã®ææ°ããŒã¿ãããŒã¿ããŒã¹ããååŸããJSON圢åŒã§ããã¯ããŸãã ãæåŸãããããŒã¿ããŒã¹ããã®ããŒã¿ã®éžæã¯ã次ã®ããã«é²ã¿ãŸãã
SELECT <> FROM <> ORDER BY id DESC LIMIT 1;
Android
次ã«ãJSONããŒã¿ãèŠæ±ãåä¿¡ããã³ãŒãããç»é¢ã«æ
å ±ã衚瀺ããã·ã³ãã«ãªAndroidã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã
ç§ãã¡ã®Androidã¢ããªã±ãŒã·ã§ã³ã¯å¯èœãªéãã·ã³ãã«ã§ããã¯ãããžãŒã®æ¬è³ªã ãã§ãã ããã«ãã®ãã¹ã±ã«ãã³ãã®åšãã«ãããŸããŸãªãçŸããå·»ãäžããããšããã§ã«å¯èœã«ãªããŸãã
çµæã®ã¹ã¯ãªãŒã³ã·ã§ãããæ¬¡ã«ç€ºããŸã

ã芧ã®ãšãããUIã¯LinearLayoutã«åºã¥ãåãªãSpartanã§ããããã以äžã®ãã®ã¯ãããŸããã
TextViewã®äžéšã«ã¯ãã»ã³ãµãŒã®IDãšæ°è±¡ããŒã¿ã衚瀺ãããŸãã [æŽæ°]ãã¿ã³ã¯ãWebãµãŒããŒãžã®2çªç®ã®èŠæ±ãéå§ããŸãã EditTextã®Nextã¯å¯äžã®ããã°ã©ã èšå®ã§ã-ããã¯ãã©ãŒã å
ã®ãªã¯ãšã¹ãURLã§ã
http://< >/last-data-to-json.php?k=<access_key>
äœã«æ³šæããå¿
èŠããããŸããïŒ
ãããã§ã¹ãã§ãã€ã³ã¿ãŒããããèš±å¯ãããããã¯ãŒã¯æ¥ç¶ã®ã¹ããŒã¿ã¹ã確èªããè¡ã远å ããŸãã
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
ãããã¯ãŒã¯ã§ã®äœæ¥ãšWebãµã€ãããã®ããŒã¿ã®åä¿¡ã¯æ¬¡ã®ãšããã§ãã
AsyncTaskã䜿çšããŠãã¡ã€ã³UIã¹ã¬ãããšã¯å¥ã®ããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ãäœæããŸãã ãã®ããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ã¯ãªã¯ãšã¹ãURLãHttpURLConnection
ããããã䜿çšããŠHttpURLConnection
ãäœæããŸãã
æ¥ç¶ã確ç«ãããåŸãAsyncTaskã¯WebããŒãžïŒJSONïŒã®ã³ã³ãã³ããInputStreamãšããŠããŒãããŸãã æ¬¡ã«ãInputStreamã¯æååã«å€æãããJSONObjectã䜿çšããŠãã³ãŒãããã onPostExecute()
ã¡ãœããã䜿çšããŠãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã«è¡šç€ºãããŸãã
MainActivity.javaã§ãURLãæ¬¡ã®ããã«å€æŽããŸãã
private static final String defUrl = "http://host/dir/last-data-to-json.php?k=< >";
Androidã¢ããªã±ãŒã·ã§ã³ãæåã«èµ·åãããšãã«ããã©ã«ãã§äœ¿çšãããŸãã
ãšãããŒã°
ãŸããäœãããã§ã«æ©èœããŠããŸãã ããã«ãäœããæé©åã眮ãæãããã¹ãŠãæšãŠãããšãã§ããŸãããäœããåããããšãã§ããŸãã
å¥ã®å€§ããªåé¡ã¯ãšãã«ã®ãŒæ¶è²»ã§ãã å®çšçãªãã³ããå€ãæçš¿ã®ã³ã¡ã³ããèªãããšããå§ãããŸãã
ç¡éã«...ãããŠãã®å
ãžã