TechTogetWorld

 daviduino.co.kr

techtogetworld.com

 david201207.blog.me

cafe.naver.com/3dpservicedavid


IOT(사물인터넷) 웹 서비스 구축하기(WordPress 적용)  #4


오늘은 미세먼지 측정지역을 구글지도로 확인하는 방법에 대한 글입니다.

글의 순서는


----------------------------------------------------------------------------

1. 메뉴구성

2. 미세먼지 측정대상 위치를 선택함

3. 선택된 지역에 대한 위도와 경도에 대한 정보를 데이터 베이스에서 찾아서 배열로 저장한다

4. 배열에 저장되 위치(경도/위도)에 해당하는 지도용 PHP를 호출 실행한다.

5. 홈페이지상 구현된 모습 

6. Next step

  - 구글지도의 위도 경도를 수치가 아닌 변수로 지정하고, 사용자가 선택하는 지역의 위도/경도를  데이터 베이스로 부터

    불러와서, 바로 구글 지도로 변수를 통해 넘겨서 그리는 방법 구현

    . 현재는 변수를 지정시에 정상 작동이 안되고 있음, 추후 개선 필요사항임.

  - 미세먼지 데이터 조회와, 측정위치 선택하는 과정을 구조화/보완예정임(사용자 편의성을 위함임)

----------------------------------------------------------------------------


[ 메뉴구성 ]


1.주 메뉴 "미세먼지 모니터링 웹 서비스"의 하위 메뉴(측정지역)로 만든다



[ 미세먼지 측정대상 위치를 선택함 ]

  

1. 상기 그림에서 텍스트 박스에  미세먼지 측정지역을 기록하고, 선택하기 버튼을 누르면, 해당 지도가 나타남

2. 측정위치를 선택하는 코딩

  - 저장위치 : 워드프레스 페이지

-------------------------------------------------------------------------------------------------

<!-- 미세먼지 측정위치를 선택하면, 해당 위치가 구글 지도에 나타냄 -->

<div class="container">

<div class="row">

<nav class="col-md-2">

<p>

 [ 미세먼지 측정 위치 ]

      <li>구로역</li>

      <li>인천역</li>

      <li>오류역</li>

      <li>신도림</li>

       <form action="" method="post">

        <input type="text" name="location1" id="loca1">

        <input type="submit" value="선택하기">

      </form>

</p>

</nav>

<nav class="col-md-9">


<!-- 선택한 측정위치를 변수($LOCATION)에 저장 -->


[xyz-ips snippet="finemap"] ==> Sort code ( 입력받은 위치에 대한 지도를 나타내는 코드의 short code )

---------------------------------------------------------------------------------------------------

3. 입력받은 위치에 대한 지도를 나타낸다

 - 저장위치 : php 플러그인으로 작성하고, shot 코드를  페이지에 등록해서 실행을 시킨다.

 - 코드

--------------------------------------------------------------------------------------------------

// post type으로 위치를 입력 받는다 //

$location1=$_POST['location1'];



[선택된 지역에 대한 위도와 경도에 대한 정보를 데이터 베이스에서 찾아서 배열로 저장한다]


// 위치정보 데이터 베이스에 접속한다 

$link = mysqli_connect("localhost","개인아이디",비밀번호,"데이터베이스 명","포트");

// $sql="select id ,location ,latitude ,longitude from 'finemap' " ; 


// 위치정보중  선택된 지역에 대한 위도와 경도를 배열에 저장한다 

$sql="select * from `finemap` "  ;

$result=mysqli_query($link,$sql);

$rows=array();

$flag=true;

$table=array();

$table['cols']=array(

array('id'=>'id' , 'type'=>'number'),

array('location'=>'location','type'=>'string'),

array('latitude'=>'latitude','type'=>'number'),

array('longitude'=>'longitude','type'=>'number')

);

$rows=array();


while($r=mysqli_fetch_assoc($result)){

$location = $r['location'];

if ($location==$location1) {

$lat = $r['latitude'];

$long = $r['longitude'];

}

}


[ 배열에 저장되 위치(경도/위도)에 해당하는 지도용 PHP를 호출 실행한다.]


// 선택된 지역의 경도/위도값이 같은 배열의 요소값을 찾아내고,  요소값에 해당하는 지역의 지도를 실행시킨다


if ($lat==37.4766 && $long==126.617) {

require('./dust/logetincheon.php'); 

}elseif ($lat==37.4947 && $long==126.845) {

require('./dust/logetoryu.php'); 

} elseif($lat==37.5032 && $long==126.882 ) {

require('./dust/logetqua.php'); 

} elseif($lat==37.5088 && $long==126.891) {

  require('./dust/logetsindo.php'); 

}

-----------------------------------------------------------------------------------------------------

4. 선택된 지역의 구글 지도를 실행함

 - 하기 코드는 구로역에 대한 코드임, 다른지역의 코드는 "경도와 위도"만 틀리고, 나머지부분은 동일함, 본지에서는 생략함(중복)

 - 저장위치 : www/dust/ 폴더에 php형태로 저장하고, 상기의 php  require 함수를 이용해서 호출/실행 시킵니다.

-----------------------------------------------------------------------------------------------------

<div id="map" style="width:1024px;height:600px"></div>

<script>

function myMap() {

var azit = new Array();

var azitColor = new Array();

var zoomNumber = 16;

azit[0] = new google.maps.LatLng(37.5032,126.882);

azitColor[0] = "red";

var mapCanvas = document.getElementById("map");

var mapOptions = {center: azit[0], zoom: zoomNumber};

var map = new google.maps.Map(mapCanvas,mapOptions);


for(var i in azit) {

var myCity = new google.maps.Circle({

center: azit[i],

radius: 100,

strokeColor: "BLACK",

strokeOpacity: 0.8,

strokeWeight: 2,

fillColor: azitColor[i],

fillOpacity: 0.4

});

myCity.setMap(map);

}

};

</script>

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAOYundwm4l2yUb7A3nfKoj5V99wr3n9O0&callback=myMap"></script>


----------------------------------------------------------------------------------------------------------


[ 홈페이지상 구현된 모습 ]


1. 위치정보를  data base 에 저장해 놓는다.



2. 선택된 지역의 구글지도

 







 





 daviduino.co.kr

techtogetworld.com

 david201207.blog.me

cafe.naver.com/3dpservicedavid


Cafe24 CDN 서버 활용하기


CAFE24에 등록을 할때  서비스명을 선택하면  기본적으로 하드용량과 트래픽 용량이 정해지게 됩니다.

웹 프로그램의 사용량이 늘어나게 되면, 용량이 점점 부족하게 됩니다.

이때 그림화일만을 따로 저장하고 사용하게 되면, 그만큼 하드용량과 트래픽 용량이 여유가 생깁니다.

이와같이 그림화일만 따로 저장할수있는 일정용량의 공간을 무료로 신청을 할수가 있는데,

이 무료공간이  CDN 입니다.


------------------------

1. CDN 신청방법

2. CDN 사용방법

------------------------


[CDN 신청방법]


1. 나의 서비스 관리 =>CDN 서비스 신청



[CDN 사용방법]

1. FTP PROGRAM (예: FILEZILLA )를 이용해서 본인의 CAFE 서버에 접속한다.

   접속 주소는  " 개인ID.CDN.CAFE24.COM "

   비번은 CAFE 개인계정과 동일함


2. 이미지 추가 태그

   아래 코드를 HTML에 코딩하시면, 해당이미지 "3DP1.JPG"화일이 로딩 됩니다.

   <img src="http://개인아이디.cdn3.cafe24.com/3DP1.JPG">  




 daviduino.co.kr

techtogetworld.com

 david201207.blog.me

cafe.naver.com/3dpservicedavid


IOT(사물인터넷) 웹 서비스 구축하기(WordPress 적용)  #3



미세먼지 data를 webserver 홈페지의 data 수치 list를  그래프로 나타내려고 합니다.

글의 순서는 아래와 같습니다.

홈페이지 위치는 " techtogetworld.com " 입니다. 

현재 미세먼지 측정장치 가동중이며, 홈페이지 방문하시면 data를 조회하실수 있습니다(메뉴위치 : 모바일은  화면 최 하단 ,  PC는 우측 상단)

---------------------------------------------------------------------------------------------------------

1. 조회구간의 측정data를 json type으로 변환하고, 변환된 data를 구글 차트로 보내서 그래프로 나타냄

  - 워드프레스에 php로 작성함

2. 워드프레스 page에 short code로 등록함.

3. 주메뉴에 등록함

4. data를 그래프로 나타낸 홈페이지 모습

5. 미세먼지 측정장치 모습

6. Next Step

  - 측정위치를 구글 지도에 나타냄

  - 측정기를 여러지역에 배치를 하게되면, 해당지역의 미세먼지상태를 알수 있습니다.

  - 여러지역의 미세먼지 상태를 홈페이지에서 모니터링이 가능하게 됩니다.


---------------------------------------------------------------------------------------------



조회구간의 측정data를 json type으로 변환하고, 변환된 data를 구글 차트로 보내서 그래프로 나타냄 ]

 1. 특기사항

    - php , html , java script 가 혼합되어 있는 코드입니다. 각각의 문법에 유의할 필요가 있습니다.

    - 저장위치는 워드프레스의 php 플러그인에 기록합니다. 후에 short 코드로 page에 등록합니다.

    - html, java는 워드프레스의 page에서 해석/수행이 가능하지만, php코드는 php만이 해석을 할수가 있습니다. 따라서 혼합된 코드를 

      php로 등록을 하면 문제없이 작동합니다.

    - 본 코딩에서 만큼은 자바스크립트를 js폴더에, php를 php위치에, html을 page에 각각 나누어서 작성을 하지 않는것이 좋겠습니다.

     별도로 코딩을 하게되면 data base 화일을 서로 주고받는데 문제가 발생합니다.

     따로따로 저장하지 마시고, 모든 코드를 하나로 합쳐서 php로 등록을 하는것이 편합니다.



 2. source code   

---------------------------------------------------------------------------------------------------

<?php

/*달력에서 조회구간을 선택하면, 날짜가 아래 변수로 입력이 됩니다*/

$id=$_POST['datepicker3'];

$id2=$_POST['datepicker4'];

 

/*미세먼지 측정data가 들어가는 data base에 접속을 합니다*/

$conn=mysqli_connect("localhost","user id",비밀번호,"db table", "db port");

$sql="

select * from (

SELECT dt_create, pm010, pm025, pm100

FROM  `finedust`

order by dt_create desc

limit 100000

)t_a

order by t_a.dt_create";

$result = mysqli_query($conn,$sql) ;


/* DB(DUST)의 TABLE(finedust)에 접속하여 측정결과를 읽어서, 조회구간에 해당되는 data만 배열에 저장합니다 */

  $rows=array();

  $flag=true;

  $table=array();

  $table['cols']=array(

  //  array('lable'=>'id' , 'type'=>'number'),

    array('lable'=>'dt_create','type'=>'string'),

    array('pm010'=>'pm010','type'=>'number'),

    array('pm025'=>'pm025','type'=>'number'),

    array('pm0100'=>'pm100','type'=>'number')

  );

  $rows=array();

  $date0 = new DateTime($id);

  $date2 = new DateTime($id2);

  while($r=mysqli_fetch_assoc($result)){

    $date1 = new DateTime($r['dt_create']);

    if ($date1>$date0 && $date1<$date2) {

      $temp=array();

      //$temp[]=array('v'=>(int) $r['id']);

      $temp[]=array('v'=>(string) $r['dt_create']);

      $temp[]=array('v'=>(int) $r['pm010']);

      $temp[]=array('v'=>(int) $r['pm025']);

      $temp[]=array('v'=>(int) $r['pm100']);

      $rows[]=array('c'=>$temp);

       }

    }

$table['rows']=$rows;


/* 배열에 저장된 data를 그래프용 코드(json)로 변환 */

$jsonTable=json_encode($table);

/* 여기부터는 자바 스크립트 입니다. jsonTable의 data를 구글 차트에 전달해서 그래프를 그리도록 합니다. */

?>


<script src="//www.google.com/jsapi"></script>

<script src="//www.gstatic.com/charts/loader.js"></script>

<script >

google.charts.load('43', {'packages':['corechart']});

google.charts.setOnLoadCallback(drawChart);

function drawChart() {

  var data = new google.visualization.DataTable(<?=$jsonTable?>);

  var options = {

  title: ' 현재시간까지의 측정결과 입니다.',

  curveType: 'function',

  legend: { position: 'bottom' }

  };

  var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));

  chart.draw(data, options);

  }

</script>

<div id="curve_chart" style="width:1500px; height: 600px"></div>


------------------------------------------------------------------------------------------------------


[ 워드프레스 page에 short code로 등록함]

 - source code

 ------------------------------------------------------------------------------------------

<h5>조회구간을 선택하세요, 박스를 클릭하면 달력이 나옵니다.

조회하기 버튼 클릭하면, 구간 미세먼지 측정data를 조회합니다</h5>

<h4>[미세먼지측정결과 조회]</h4>

<form action="" method="post"><input id="datepicker3" name="datepicker3" type="text" /> ~ <input id="datepicker4" name="datepicker4" type="text" />

<input type="submit" value="조회하기" /></form>&nbsp;

[xyz-ips snippet="google-chart"]


------------------------------------------------------------------------------------------------------


[주메뉴에 등록함]

 - 등록방법

   . Page를 만드시면 하기 그림 " 페이지" 항목에 나타나게 되고, 선택하고 메뉴추가 버튼을 누르고, 위치 조정하 저장하면 됩니다.



[ data를 그래프로 나타낸 홈페이지 모습]

 1. 주메뉴에서 "미세먼지 모니터링 웹 서비스"항목 선택

 2. 달력에서 날짜 선택 : 조회 시작일, 끝나는 날짜

 

 


 3 측정결과 data 그래프

  - 주황색 : 10 마이크로 메타

  - 적색 : 2.5 마이크로 메타

  - 청색 : 1.0 마이크로 메타

 





 4 측정결과 data 그래프 2

  - 미세먼지 측정 장치를 6/6일 부터 켜 놓았습니다. 현재까지 data를 조회해 보겠습니다.




5 미세먼지 측정 장치 모습

 - 캐릭터 형태로 케이싱을 만들어 봤습니다. 개인 취향에 맞추어 제작을 하면 재미있을것 같습니다.

 - 캐릭터, 로봇, 화분,액자,인형 등...

  


 

 daviduino.co.kr

techtogetworld.com

 david201207.blog.me

cafe.naver.com/3dpservicedavid


IOT(사물인터넷) 웹 서비스 구축하기(WordPress 적용)  #2



미세먼지 data를 webserver 홈페이지에 수치list로  나타나도록 하려고 합니다.

글의 순서는 아래와 같습니다.

---------------------------------------------------------------------------------------------------------

1. 달력을 이용한  조회 구간 선택( 날짜구간 선택): 2가지 방법으로 구현가능하지민, 후자가 바람직해 보입니다.

   - 방법#1 : 플러그인을 이용한 구간 선택기 만들기

   - 방법 #2 : 자바스크립트( .js )를 직접 등록하여 만들기

     . 플러그인을 설치하면, 용량을 차지하게되고, 상대적으로 홈페이지가 무겁게 된다. 그러므로 가급적이면 워드프레스 자체기능을 최대한

       이용하고, 불가피한 경우에만  플러그인을 사용하는것이 좋을듯 하다.

2. 선택된 구간의 data를 화면에 뿌리기

3. 해결해야할 문제

   - "크롬"에서  style.css를 수정해도 수정사항이 반영되지 않는 문제 ( "IE 인터넷익스플로러"에서는 잘 적용이 됩니다.)

4. 코딩 TIPS

   

----------------------------------------------------------------------------------------------------------



[ 달력을 이용한  조회 구간 선택( 날짜구간 선택) : 플러그인 사용 ]

1. 날짜선택기(달력이용)를  워드프레스 페이지 "미세먼지"에 나타내기

 - 플러그인 설치 " WP Datepicker "

    


 - 설정=> WP Datepicker 로 들어가서, setting을 한다.

   . 아래와 같이 #date-field,calender-field  라고 입력후  save changes(우측 하단)을 클릭한다.

      


   . "미세먼지 페이지"로 가서 , 아래 청색 박스와 같이 입력을 합니다. 위에서 설정한 date-field ,calender-field를  화면에 나타내기 위한 코드입니다.  

     


    <H9> 미세먼지 DATA 조회 </H9>


    조회구간을 선택하세요, 박스를 클릭하면 달력이 나옵니다. 

    <H2>From <input type="text" id="date-field" />    TO <input type="text" class="calender-field" /> </H2>


    참고 : 측정DATA

    [xyz-ips snippet="showdata"]


-  상기 그림과 같이 모든 텍스트를 입력하고 나서, 홈페이지를 재로딩하고, 날짜 박스를 클릭하면, 달력이 나오고, 달력에서 날짜를 선택할수 있다.





[ 달력을 이용한  조회 구간 선택( 날짜구간 선택) : 자바스크립트( .js )를 직접 등록하여 만들기 1 ]

  1. 자바스크립트 소스화일 작성 : datepicker.js

    -  테마의 js 폴터에 저장한다. ==> /www/wp-content/themes/twentysixteen/js

    -  datepicker.js 소스 코드 => $대신에 아래와 같이 jquary를 사용해야 합니다.

       jQuery( document ).ready(function( $ ) {

       jQuery( "#datepicker1" ).datepicker({

       dateFormat: 'yy-mm-dd'

       });

       });

  2. datepicker.js 화일을 등록한다

    - 테마의 function.php 화일에 등록을 하면, 워드프레스에 등록이 되게 된다.

    - function 화일 하단에 등록한 코드

      function datepicker_method() {

     wp_enqueue_script( 'datepicker', get_stylesheet_directory_uri() . '/js/datepicker.js', array( 'jquery' ), '버전', 'true or false' );

      }

     add_action( 'wp_enqueue_scripts', 'datepicker_method' );



  3. header.php화일에 jquary를 선언(?) 등록할 필요는 없다, 오히려 등록하면 문제가 발생할수도 있으므로, 등록하지 않는다
    - 구글링을 하다보면, 등록을 하라는 글과  하지말라는 글이 존재한다.
    - 등록을 안해도 문제가 없는것으로 봐서, 등록을 안해도 무방함.  앞으로 등록않하기로 결정함.

  5. 워드프레스 페이지나 post에 datepicker.is 를 실행하라는 코딩을 한다.
    - 코딩 방법은 아래와 같이 코딩을 하면 된다.
       Date of Birth (DOB): <input type="text" id="datepicker1"> 
       Date of Birth (DOB): <input type="text" id="datepicker2">
  7. 결과( 워드프레스 페이지)
   




[ 달력을 이용한  조회 구간 선택( 날짜구간 선택) : 자바스크립트( .js )를 직접 등록하여 만들기 2 ]

  1. 달력2개 , 세부data type적용 code도 가능

    - 아래 code 중 dateFormat 이후 코드는 없어도 무방함

  2. 자바스크립트 소스화일 작성 : datepicker.js

    -  테마의 js 폴터에 저장한다. ==> /www/wp-content/themes/twentysixteen/js

    -  datepicker.js 소스 코드 => $대신에 아래와 같이 jquary를 사용해야 합니다.

      jQuery( document ).ready(function( $ ) {

      jQuery( "#datepicker3,#datepicker4" ).datepicker({

      dateFormat: 'yy-mm-dd',

      prevText: '이전 달',

      nextText: '다음 달',

      monthNames: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'],

      monthNamesShort: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'],

      dayNames: ['일','월','화','수','목','금','토'],

      dayNamesShort: ['일','월','화','수','목','금','토'],

      dayNamesMin: ['일','월','화','수','목','금','토'],

      showMonthAfterYear: true,

      changeMonth: true,

      changeYear: true,

      yearSuffix: '년'

      });

      });

  2. datepicker.js 화일을 등록한다

    - 테마의 function.php 화일에 등록을 하면, 워드프레스에 등록이 되게 된다.

   -  2개의 달력이 필요함으로 2개를 작성함 ( 조회날짜 시작일, 끝나는 날)

    - function 화일 하단에 등록한 코드

      function datepicker_method() {

     wp_enqueue_script( 'datepicker', get_stylesheet_directory_uri() . '/js/datepicker.js', array( 'jquery' ), '버전', 'true or false' );

      }

     add_action( 'wp_enqueue_scripts', 'datepicker_method' );


  3. header.php화일에 jquary를 선언(?) 등록할 필요는 없다, 오히려 등록하면 문제가 발생할수도 있으므로, 등록하지 않는다
    - 구글링을 하다보면, 등록을 하라는 글과  하지말라는 글이 존재한다.
    - 등록을 안해도 문제가 없는것으로 봐서, 등록을 안해도 무방함.  앞으로 등록않하기로 결정함.

  4. 워드프레스 페이지나 post에 datepicker.is 를 실행하라는 코딩을 한다.
    - 코딩 방법은 아래와 같이 코딩을 하면 된다.
       <H4> [미세먼지측정결과 조회]
       <form action="" method="post">   ==> post type으로 날짜를 날리면  서버로 들어가게 되고, 후에 $post 로 해당 날짜를 다시 불러서 사용가능함.
       <input type="text" name="datepicker3" id="datepicker3"> ~
       <input type="text" name="datepicker4" id="datepicker4">
       <input type="submit" value="조회하기">  ==> 날짜 선택후 조회하기 버튼을 누르면, 날짜가 서버로 날아가게 된다.
       </form>
       </H4>


  5. 결과( 워드프레스 페이지)
   





[ 선택된 구간의 data를 화면에 뿌리기]

 아래 코드는 플러그인(xyz php code"를 이용해서 php로 등록합니다.

 적용은 페이지화면으로 와서  [xyz-ips snippet="data-to-grahp"] 로 호출/실행시킨다.

   



1.달력에서 선택한 날짜를 datepickup 이라는 이름으로 불러와서, 변수 id에 저장한다

---------------------------------

$id=$_POST['datepicker3'];

$id2=$_POST['datepicker4'];

--------------------------------

2. database의 data를 $result변수에 문자열 형태로 할당한다.

--------------------------------------------------------------

$conn=mysqli_connect("localhost","david201207",quix0712,"david201207", "3306");

$sql="

select * from (

SELECT dt_create, pm010, pm025, pm100

FROM  `finedust`

order by dt_create desc

limit 100000

)t_a

order by t_a.dt_create";

$result = mysqli_query($conn,$sql) ;

---------------------------------------------------------------

3. $result에 할당된 측정data 문자열을 배열로 ($rows) 저장한다.

   저장하는 data는 선택된 날자구간일 경우에만 저장하고, 또한 화면에 뿌려주고,

   구간 이외의 data는 skip 한다

----------------------------------------------------------------

  $rows=array();

  $flag=true;

  $table=array();

  $table['cols']=array(

  //  array('lable'=>'id' , 'type'=>'number'),

    array('lable'=>'dt_create','type'=>'string'),

    array('pm010'=>'pm010','type'=>'number'),

    array('pm025'=>'pm025','type'=>'number'),

    array('pm0100'=>'pm100','type'=>'number')

  );

  $rows=array();

  $date0 = new DateTime($id);

  $date2 = new DateTime($id2);

  while($r=mysqli_fetch_assoc($result)){

    $date1 = new DateTime($r['dt_create']);

    if ($date1>$date0 && $date1<$date2) {

      $temp=array();

      //$temp[]=array('v'=>(int) $r['id']);

      $temp[]=array('v'=>(string) $r['dt_create']);

      $temp[]=array('v'=>(int) $r['pm010']);

      $temp[]=array('v'=>(int) $r['pm025']);

      $temp[]=array('v'=>(int) $r['pm100']);

      $rows[]=array('c'=>$temp);

      echo($r['dt_create']."__[PM1.0: ".$r['pm010']."]__[PM2.5: ".$r['pm025']."]__[PM10: ".$r['pm100']."]<br>");

      }

    }

 $table['rows']=$rows;

/* 배열에 저장된 data를 그래프용 코드(json)로 변환 */

  $jsonTable=json_encode($table);

------------------------------------------------------------------------

4. 화면에 뿌려진 측정data

  - 조회기간 : 2017.6.7~2017.6.8

  - 그래프의 필요성이 다시한번 느껴지는 순간입니다.




[코딩 TIPS]

 1. 변수값 화면 프린팅

   - PRINT로 해야할경우

      ------------------------

      $date0 = new DateTime($id);

      $date2 = new DateTime($id2);

     print $date0->format("c");

     print $date2->format("c");

      ------------------------

   - ECHO로 해야할경우

     ------------------------

     $id=$_POST['datepicker3'];

     $id2=$_POST['datepicker4'];

     echo($id);

     echo($id2);

     ------------------------

   - while() 반복문은 ()안의 조건이 참일때 반복하는 반복문입니다. 그러나 데이터 베이스에서는 데이터베이스에서 가진 모든값을 불러오길 원할경우에 

     아래와 같이 자주 사용된다.

      데이터베이스의 값을 문자열로 $result로 할당하고, 이를 배열로 만들어서(mysqli_fetch_assoc) $row(배열)에 저장하고, 이를 모두 프린팅 하는 예제입니다.

     -----------------------------------------------------------------------------------------------

     while ($row= mysqli_fetch_assoc($result)) {

     echo($row['dt_create']."__[PM1.0: ".$row['pm010']."]__[PM2.5: ".$row['pm025']."]__[PM10: ".$row['pm100']."]<br>");

     -----------------------------------------------------------------------------------------------



 daviduino.co.kr

techtogetworld.com

 david201207.blog.me

cafe.naver.com/3dpservicedavid



IOT(사물인터넷) 웹 서비스 구축하기(WordPress 적용)


워드프레스로 사물인터넷 웹서버 구축하고자 합니다.

Mot 소그룹 wemakers에서 공동프로젝트로 진행했던, 미세먼지 측정장치의 측정결과를 웹 서비스하는방법에 대해 정리해 보도록 하겠습니다.

기존에 측정결과를 

 - 집안 인터넷에 연결된 "라즈베리파이"를 서버로 구축

 - 집안 인터엣에 연결된 " 노트북 " 을 서버로 구축 하는 방법에 대해서는 이전글을 통해 소개를 한바가 있습니다.

이번글에서는

 - CAFE24에 미세먼지 측정결과 서비스 서버를 구축하고, 웹프로그래밍은 워드프레스로 하도록 하겠습니다.

 - 웹 프로그래밍을 배워가면서 처음부터 끝까지 코딩으로 직접해봤지만, 맘에드는 홈페이지를 구축하기위해선  웹프로그래밍 역량+디자인감각이 중요하다는것을 다시한번 느끼게 되었습니다.

 - 결론은 웹프로그래밍을 도와주는 TOOLS 이 필요함을 느끼게 되었고, 바람님/기획실장님이 추천해주신 워드프레스를 이용하게 되었습니다.


글의순서는 아래와 같습니다.

1.워드프레스 웹 서버 만들기

2.미세먼지 DATA를 워드프레스 data base "mysql"에 저장하기

3.next step

 - mysql에 쌓인 data를 웹에서 보여주기

 - 홈페이지에 측정data service 하기


[워드프레스 웹 서버 만들기]

1. cafe24 가입

2. 워드프레스 설치하기 : 아래 청색 박스 클릭

 


3. 플러그인 설치하기 

 - 많은 플러그인중에서 우선 망보드 를 설치했습니다.

 - 홈페이지를 구축하는데 필요한 게시판,자료실등이 사용자가 원하는 대로 조정할수있도록  플렉시블 하고, 무료입니다.

 



3. 테마 설치하기

 - 많은 유료,무료 테마가 있습니다.

 - 그중에 무료테마 Twenty sixteen 테마를 선택함(홈페이지 목적,취향에 맞는 테마)

 


3. 페이지(page) 만들기

 - 페이지를 만들어 놓고, 메뉴등에 등록해서 홈페이지에 나타낼수 있습니다.

 - 만드는 방법은

   . 새페이지 추가

   . 새페이지 내용에 망보드의 아래 타입을 복사한다. 복사를 하게되면 새 페이지가 망보드의 속성을 이어받게 된다.

     즉 자료실 타입을 복사하면, 실제로 자료를 등록,삭제등을 할수있는 기능을 가진 페이지로 변하게 된다.

   . 물론 내용에 복사하지 않으면, 공란으로 남게 되고, 이 공란에 자신이 원하는 php를 프로그래밍을 하면 된다.

   . 페이지 하나에 망보드 게시판 하나씩을 만들어야만, posting한 내용이 각각 페이지에 들어가게된다.

     그렇치 않으면 하나의 post가 중복해서 페이지에 나타나게 된다.

 - 망보드 게시판 타입

      자료실: [mb_board name="gallery" style=""]

      갤러리: [mb_board name="gallery" list_type="gallery" style=""]
      캘린더: [mb_board name="gallery" list_type="calendar" style=""]
      최근 게시물: [mb_latest name="gallery" title="gallery" list_size="5" style=""]

 - 만든 페이지 모습(갤러리, 미세먼지........)

   


4. 메뉴만들기

 - 페이지로 만들어 놓은 항목들이 , 아래 메뉴만드는 화면에 "페이지"로에 나타난다.

 - 아래 페이지에 나타난 " 전면페이지, 미세먼지....."등을 선택하고, 아래 메뉴추가 버튼을 누르면, 오른쪽 메뉴구조에 등록이 된다.

 - 메뉴설정 하단의 "기본메뉴 "를 클릭 선택한다.

 - 지금 설정한 메뉴항목들이, 홈페이지 접속시 상단 기본메뉴에 나타나게 된다

  


4. 홈페이지 외관모습

 - 워드프레스로 간단한 몇가지 메뉴를 만들어 봤습니다.

 - 나머지는 테마를 설치하면(twenty sixteen)디폴트로 등록되는 내용입니다.

 - 하기 기본적인 내용에

  . 회원관리

   - 등록,탈퇴등

  . 쇼핑몰

   - 결재, 구매,상품등록은  "우커머스 테마"등에 많은 기능이 있습니다, 실제로 신용카드 등록 결재를 할수있는 기능들 입니다.

  . 필요사진등으로 화면을 꾸미고, style화일을 편집해서 구성품등을 표현해 나갈수 있습니다.

 - 이와 같이 본인이 필요한 기능을 홈페이지에 만들기 위해 , 테마, 플로그인등을 설치하고, 설정해 나가면 됩니다.

  . 경우에 따라서는 유료테마, 플러그인을 사용하는경우도 있습니다.





[미세먼지 DATA를 워드프레스 data base "mysql"에 저장하기]


1. FIRM WARE 수정하기

 . 기존의 Nodemce의 펌웨를cafe24 서버에 맞도록 수정을 합니다.

 . firmware의 기능

   -. 미세먼지 센서가 측정한 결과를 웹서버로 전송하는 역할을 합니다.

      본 화일은 본인의 cafe24 웹서버와 thingspeak라는 시중의 측정data를 호스팅 서빙하는 홈페이지로 보내줍니다. thingspeak로의 송신은 테스트목적입니다.

 . PMS7003.h는 변동사항 없습니다.

 . firmware 수정부분

  --------------------------------------------------

   const char* khost = "techtogetworld.com";

   void karaClient(int pm1_0, int pm2_5, int pm10_0){

   const int httpPort =80;

    if (!client.connect(khost, httpPort)) {

     return;

     }

    String url = "/dust/dustdata.php";

  ------------------------------------------

  . source code

PMS7003s.h

sketch_oct30a_v03.ino



2. dustdata.php 수정하기

 - dustdata.php의 기능

  . node mcu에서 미세먼지 측정 data를 웹서버로 보내면,

  . dustdata.php에서 이 data를 받아서 cafe24의 data base에 저장을 하게됩니다.

 - dustdata.php의 수정내용

  -------------------------------------------

      $servername = "localhost";

$username = "  본인의 user name을 입력한다  "; ==> "root"가 아닌, 본인의 user name을 입력하시면 됩니다 ( mysql data base "id" )

$password = "비밀번호"; ==>mysql 비밀번호

$db_name = "db name"; ==> 하나의 계정에 하나의 db가 주어진다(cafe24 포함 거의 대다수의 호스팅 업체가 동일함) , 그  db 이름을 입력한다

      if( isset($_GET['dust1_0']) && isset($_GET['dust2_5']) && isset($_GET['dust10_0']))

       {

$d010=$_GET['dust1_0'];

$d025=$_GET['dust2_5'];

$d100=$_GET['dust10_0'];

// Create connection

$mysqli = mysqli_connect(localhost, user name, 비밀번호, db name ,db port); => 본인의 내용을 입력한다.

 - source code

 dustdata.php


3. MYSQL 서버에 저장된 미세먼저 측정결과 DATA

 - CAFE24 메뉴중에서 서비스접속관리=>MYSQL 웹어드민 항목클릭하여 MYSQL에 접속한다.

   

 

 - cafe24에서 부여한 db name 아래에 field를 구성한다.

   id, dt_create , 측정결과 3개

 

 - mysql에 저장된 미세먼지 data 모습

  . 미세먼지 측정장치를 가동시킨다.

  . 일정 시간 간격으로 data가 쌓이게 된다.  




현재까지의 홈페이지 모습은

 http://techtogetworld.com/

여기를방문하시면 보실수 있습니다.



[Next step]


 아래글은 다음 회차에 이어서 posting 하겠습니다.

 - mysql에 쌓인 data를 웹에서 보여주기

 - 홈페이지에 측정data service 하기


 daviduino.co.kr

techtogetworld.com

 david201207.blog.me

cafe.naver.com/3dpservicedavid


햄스터 코딩로봇 코딩교육


오늘 MOT_Wemakers_협동조합 스터디 그룹의 정기모임을 마치고,

"햄스터 코딩로봇 교육"에서 교육을 받고왔습니다.


목적에 따라 다양한 코딩로봇의 응용이 가능해 보입니다.

 - 수많은 적용가능한 센서들.. 광센서,압력센서, 가스센서 등등...

 - 수많은 적용가능한 로봇모델 : 형태,재료등...

다양한 센서와 다양산 로봇모델로, 다양한 목적의 코딩교보재를 많들수 있을것 같습니다.



1.햄스터 로봇 작동시연

2. 설치방법/스크레치 코딩

3. 교육자료



[햄스터 로봇 작동시연]




[설치방법/스크레치 코딩]

용량관계로 링크로 올립니다.

http://hamster.school/ko/tutorial/scratch/



[교육자료]

hamster-maze.pptx


 daviduino.co.kr

techtogetworld.com

 david201207.blog.me

cafe.naver.com/3dpservicedavid


소리에 반응하는 진동기기 만들기

소리에 크기에 반응해서 진동을 하는 장치 입니다..
응용분야는 "경보기용, 방법용 , 게임용 의자, 등이 될수 있을것 같습니다 "
글의 순서는 아래와 같습니다.

1. 소리반응 진동기 시현(동영상)
2. 외관 
3. 회로도
  - 용산 샘플전자 사장님께서 그려주신 회로도입니다. 본 회로도를 기초로 회로를 완성함.
4. Firmware

[소리반응 진동기 시현(동영상)]


[외관]
1. 아두이노 미니 : 1ea
2. 진동모터 : 소형 2ea, 중형 2ea
3. 파워서플라이 : 1ea
4. 소리센서 : 1ea
   - 용산샘플전자 사장님이 개발하신 센서인데, 샘플전자에서 구매 했음
     (감도 뛰어남 : 바스락거리는 소리도 감지작동함)













[ 회로도]
 - 샘플전자 사장님께서 그려주신 회로도 입니다.
 - 소리센서의 감지신호를 아두이노 미니로 입력하고, 아두이노 출력(pwm 신호)을 TR(BD681)로 증폭시켜서 모터를 구동시키는 회로입니다.
 - TR은 작은 용량을 사용하면 동작범위롤 넘어서 작동이 불완전 해집니다. BD681은 안전적으로 작동합니다.





상기 회로도를 기초로 이글캐드(eglecad)로 구현한 회로도 입니다.
 - 회로도 원본 화일은 유첨화일 #2,3,4,5
 
 - 아두이노 핀은 5번이 맞습니다.
   펌웨어는 5번으로 되어있고, 회로도는 6번으로 되어있는데, 회로도가 잘못된겁니다.
   5번핀이 output 입니다. 5번핀으로 모터전류를 제어하는 구조 입니다.







[FIRMWARE ]


 daviduino.co.kr

techtogetworld.com

 david201207.blog.me

cafe.naver.com/3dpservicedavid


딸 손목 팔찌를 만들어 봤습니다.

딸들의 반응 괞찮았습니다 ^^

1. 제작방법 : 3D Printer
2. 재질 : 플렉서블 pla
3. 외관


 daviduino.co.kr

techtogetworld.com

 david201207.blog.me

cafe.naver.com/3dpservicedavid


라즈베리파이 케이스 프린팅



라즈베리 사용중 쇼트등 우려가 있어서, 케이스 프린팅 ==> from thingiverse 












'프로젝트 > 집안 소품 만들기' 카테고리의 다른 글

딸 "손목 팔찌" 제작  (0) 2017.05.09
텐트 프레임(봉) 보수  (0) 2017.05.09
인형 집 만들기  (0) 2017.05.09
세면대 수채 필터 만들기 |  (0) 2017.05.09
햄스터 집 만들기 |  (0) 2017.05.09

 daviduino.co.kr

techtogetworld.com

 david201207.blog.me

cafe.naver.com/3dpservicedavid



텐트 프레임(봉)이 부러져서 보수했습니다.(3d 프린팅)