본문 바로가기

개인 연구실/기획실장의 연구실

라즈베리파이 서버 활용하기 - 클라이언트에서 서버로 값 던져주기

  라즈베리파이에 웹서버, PHP, Mysql이 잘 세팅이 되었다면, 이번에는 라즈베리파이 서버에 클라이언트가 값을 던져주고, 서버에서는 그 값을 받아서 PHP로 처리하는 과정을 구현해보도록 하겠습니다.


  클라이언트에서 서버로 값을 던져주는 방법에는 흔히 쓰는 GET 방식과 POST 방식이 있습니다. GET 방식은 서버에 응답을 요청하면서 그 뒤에 덧붙여서 값을 던져주는 방식입니다. 예를 들면 이런식이죠.



  http://192.168.123.23/index.php?temp=23&humidity=80

 


  그러면 서버에서는 index.php파일이 실행이 될텐데, 그 때, temp라는 딱지가 붙어서 23, humidity라는 딱지가 붙어서 80이 함께 보내집니다. GET방식은 보낼 수 있는 정보의 길이에도 한계가 있고, 또 보내는 주소에 붙어서 가다보니 POST방식과 비교해서 보안상 취약합니다(POST방식도 보안상 우수하진 않습니다만...). 하지만 우리가 구현해보려는 간단한 센서 값을 보내기에는 간편하니 GET방식으로 처리해보도록 하겠습니다.


우선 아래 소스코드를 에디터로 작성해서 iot_ex1.php 라는 이름으로 저장합니다.



 <?php


 //header('Content-type: text/plain');

 echo "<html>";

 echo "<head>";

 echo "<meta name='viewport' content='width=device-width, user-scalable=false, initial-scale=1;'>";

 echo "</head>";

 echo "<body>" . "<h2>Temperature und Humidity</h2>";


 if( isset($_GET['temp']) && isset($_GET['humidity']) )

 {

   $t=$_GET['temp'];

   $h=$_GET['humidity'];

 }

   echo " Temparature : ";

   echo $t;

   echo " Humidity : ";

   echo $h;

 ?>



  그 다음, PC에 저장된 이 파일을 파일질라와 같은 FTP 클라이언트로 라즈베리파이에 접속해서 www/html/ 위치에 저장합니다.



  이 때, 잊지말고 권한도 755로 변경해줍니다. 오른쪽 서버쪽 파일을 오른쪽 마우스 버튼으로 클릭해서 "파일권한"을 선택하고, 그룹과 공개권한에 읽기와 실행에 체크를 하고 확인해줍니다.



  그럼 결과를 확인해봅시다. 웹브라우저 새 창을 하나 띄우시고, 라즈베리파이의 IP를 치신 다음, 올린 파일 iot_ex1.php를 써주시고, 추가로 ?temp=45&humidity=99 를 붙여서 엔터를 쳐봅시다. 말하자면 주소창에 아래와 같이 쓰시면 되는거죠. 물론 IP는 각자의 라즈베리파이에 할당된 IP를 쓰셔야 하지요.


 

 192.168.123.106/iot_ex1.php?temp=45&humidity=99



  자, 웹브라우저에 어떻게 나오나요? 저는 아래와 같이 나오네요^^ 성공입니다!! 





  대단하시군요...!! 이 어려운걸 해내시다니.... ㅎㅎㅎ


  PHP 소스는 C랑 너무너무 비슷해서 그냥 쓰윽 보시면 이해가 되실테니 자세한 설명은 생략하고, 다음 번에는, 요렇게 넘겨받은 값들을 Mysql DB에 집어넣고 빼내고 하는 작업을 해보면 되겠네요. 그것까지 된다면, 아두이노로 실제 온도와 습도를 측정해서 위에 쓰인 GET 방식으로 서버에 보내주는 걸 구현해보면 아주 간단한 iot 플렛폼이 완성되겠습니다. 


  수고하셨습니다!