라즈베리파이 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 |