라즈베리파이 2 에서 온도센서를 PHP로 읽어 들이고, Mysql DB에 저장하는 법에 대해서 배우겠다.
이강좌를 이해하기 위해서는 앞의 강좌를 먼저 읽어 봐야한다.
그리고 , 당연히 Apach+ PHP + Mysql 환경 이어야 한다.
그런 본론으로 들어 가겠다.
아래는 먼저 읽어야하는 강좌 리스트 이다.
- 2015/05/13 라즈베리파이 2에서 APM(Apache,PHP,Mysql) 구축및 환경설정
- 2015/05/09 아두이노 라즈베리파이 온도센서 방수형 DS18B20 사용법
- 2015/05/09 라즈베리파이 아두이노 온도센서 방수형 DS18b20 상품 설명과 구매
일단 온도센서를 읽어들이는 출력하는 프로그램은 다음과 같다.
DB18B20.php
<?php //리눅스 명령어를 cat을 실행해서 온도센서의 데이터를 읽어 들인다. $re=exec("cat /sys/bus/w1/drivers/w1_slave_driver/28-*/w1_slave"); //데이터중 온도값의 값을 추출하기위해서 "t="기준으로 배열로 분리한다. $tem_c=explode("t=",$re); //현재 시간 과 온도값을 천으로 나누고, 소숫점 둘째자리에서 반올림 해서 출력한다. echo ( "Time = ".date("Y-m-d H:i:s")." , Temperature = ".round($tem_c[1]/1000,2)." C "); ?>
해당 프로그램을 웹에서 호출하면,
이 얼마나 간결하고 아름다운가? 감탄사가 헐~~~ 하고 나온다.
C, perl,자바(JSP), 파이썬 너희들 대가리 박고 웹에서는 덤비지 말라는 애기가 절로 나온다.
느들 주석빼고 , 3줄로 웹에 온도 센서값 뿌려줄수 있어?
C,자바 개발자가 돌 던지는 소리가 들린다. 웹 전용 랭귀지가 어디서 덤비냐?
이런 애비애미 못 알아 보는 놈 , 웃자고 하는 애기니 열받지 마시기를 ㅎㅎ
그럼 디비에 저장하는 법을 배워보겠다.
일단 Mysql 에 저장한 테이블을 생성하자.
--------- 테이블 생성 -----------
CREATE TABLE IF NOT EXISTS `temperature` ( `no` int(10) NOT NULL AUTO_INCREMENT COMMENT '번호', `time_ymd` char(8) NOT NULL COMMENT '날짜 ', `time_his` char(6) NOT NULL COMMENT '시간', `temperature` float NOT NULL COMMENT '온도', `regday` datetime NOT NULL COMMENT '저장시간', PRIMARY KEY (`no`), KEY `time_ymd` (`time_ymd`,`time_his`,`regday`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
--------- 테이블 생성 -----------
--------------- php 프로그램 ------------
<?php // mysql 접속 계정 정보 $mysql_host = 'localhost'; $mysql_user = 'pi'; $mysql_password = 'XXXXXX'; $mysql_db = 'pi'; // 접속 $conn = mysql_connect($mysql_host, $mysql_user, $mysql_password); $dbconn = mysql_select_db($mysql_db, $conn); // charset 설정, 설정하지 않으면 기본 mysql 설정으로 됨, 대체적으로 euc-kr를 많이 사용 //mysql_query("set names utf8"); //리눅스 명령어를 cat을 실행해서 온도센서의 데이터를 읽어 들인다. $re=exec("cat /sys/bus/w1/drivers/w1_slave_driver/28-*/w1_slave"); //데이터중 온도값의 값을 추출하기위해서 "t="기준으로 배열로 분리한다. $tem_c=explode("t=",$re); //온도 $data['temp_c']=round($tem_c[1]/1000,2); //날짜 $data['temp_ymd']=date("Ymd"); //시간 $data['temp_his']=date("His"); //insert sql 스트링 만들기 $query = "INSERT INTO `temperature`(`time_ymd`, `time_his`, `temperature`, `regday`) "; $query .= "VALUES ('".$data['temp_ymd']."','".$data['temp_his']."', '".$data['temp_c']."', now() )"; //테스트를 위해서 쿼리출력 echo $query; //쿼리 실행 $res = mysql_query($query, $conn); ?>
웹브라우저로 실행,
실제 디비에 저장된 데이타를 phpmyadmin 에서 확인
다음 강좌에는 위의 프로그램을 일정시간 간격으로 자동으로 DB에 저장하고 그래프로 표현하는 법에 대해서 배워보겠다.
'컴퓨터 프로그래밍 > 라즈베리파이' 카테고리의 다른 글
집(유동아이피)에 있는 라즈베리파이에 내 도메인으로 웹서버구축하기. (1) | 2015.07.03 |
---|---|
라즈베리파이와 릴레이(relay) 모듈을 이용해 전원 제어하기 (5) | 2015.06.10 |
라즈베리파이2에서 php을 이용하여 온도 저장으로 그래프로 출력하기. (0) | 2015.06.02 |
라즈베리파이 에서 php 에러 출력하기 (0) | 2015.05.24 |
라즈베리파이 2에서 APM(Apache,PHP,Mysql) 구축및 환경설정 (6) | 2015.05.13 |
아두이노 라즈베리파이 온도센서 방수형 DS18B20 사용법 (4) | 2015.05.09 |
라즈베리파이 아두이노 온도센서 방수형 DS18b20 상품 설명과 구매 (0) | 2015.05.09 |
라즈베리파이2 시간(timezone) 설정하기 (0) | 2015.05.09 |
라즈베리파이 2 무선랜 아이피 고정하기 (2) | 2015.05.03 |