"기진곰"님 덕분에 POST 방식도 공부해서 앞으로 추가될 변수 생각해 기존 GET방식을 POST 방식으로 잘 바꿨습니다.
질문좀 드리고자 합니다. 시간 괜찮으시다면 해결 방안을 말씀해 주시면 고맙겠습니다.
현재 PHP에서는 POST 값을 받아서 테이블이름이 value 인 db에 삽입하고 그와 동시에 테이블이름이 setup 인 db에서 0이 아닌 값만 찾아 echo로 출력하여 아두이노로 받는 방식으로
아두이노에서 서버기능을 제거할 생각입니다. 사유는 while 문 딜레이 제거?
그런데, 아무리 해봐도 php에서 echo를 아두이노에서 받지 못합니다...
header도 추가했는데 사진처럼 ? 뒤집힌 모양만 println이 아닌 print 로 출력되구요..
아래는 각 파일별 소스코드 입니다.
communication.php (PHP)
<?php $connect = new mysqli(<hidden>); $datetime = $_POST['datetime']; $room_t = $_POST['room_t'];$room_h = $_POST['room_h'];$room_hic = $_POST['room_hic'];$room_index = $_POST['room_index'];$room_lux = $_POST['room_lux']; $roomtemp = $_POST['roomtemp'];$roomhumi = $_POST['roomhumi'];$roomhic = $_POST['roomhic'];$roomindex = $_POST['roomindex'];$roomlux = $_POST['roomlux']; $window_l = $_POST['window_l'];$window_s = $_POST['window_s'];$window_v = $_POST['window_v'];$window_ov = $_POST['window_ov'];$window_e = $_POST['window_e']; $outdoor_t = $_POST['outdoor_t'];$outdoor_h = $_POST['outdoor_h'];$outdoor_hic = $_POST['outdoor_hic'];$outdoor_index = $_POST['outdoor_index']; $outdoortemp = $_POST['outdoortemp'];$outdoorhumi = $_POST['outdoorhumi'];$outdoorhic = $_POST['outdoorhic'];$outdoorindex = $_POST['outdoorindex']; $pad_t = $_POST['pad_t'];$pad_h = $_POST['pad_h'];$pad_hic = $_POST['pad_hic'];$pad_s = $_POST['pad_s'];$pad_r = $_POST['pad_r'];$pad_low = $_POST['pad_low'];$pad_high = $_POST['pad_high']; $padtemp = $_POST['padtemp'];$padhumi = $_POST['padhumi'];$padhic = $_POST['padhic']; $boiler_t = $_POST['boiler_t'];$boiler_h = $_POST['boiler_h'];$boiler_s = $_POST['boiler_s'];$boiler_r = $_POST['boiler_r'];$boiler_low = $_POST['boiler_low'];$boiler_high = $_POST['boiler_high']; $boilertemp = $_POST['boilertemp'];$boilerhumi = $_POST['boilerhumi']; $gas5 = $_POST['gas5'];$boiler5 = $_POST['boiler5'];$gas7 = $_POST['gas7'];$boiler7 = $_POST['boiler7']; $detectflag = $_POST['detectflag']; $connect->query("insert into value(datetime, room_t, roomtemp, room_h, roomhumi, room_hic, roomhic, room_index, roomindex, room_lux, roomlux, detectflag, window_s, window_l, window_v, window_ov, window_e, outdoor_t, outdoortemp, outdoor_h, outdoorhumi, outdoor_hic, outdoorhic, outdoor_index, outdoorindex, pad_s, pad_r, pad_t, padtemp, pad_h, padhumi, pad_hic, padhic, pad_low, pad_high, boiler_s, boiler_r, boiler_t, boilertemp, boiler_h, boilerhumi, boiler_low, boiler_high, gas5, boiler5, gas7, boiler7) values('$datetime', '$room_t', '$roomtemp', '$room_h', '$roomhumi', '$room_hic', '$roomhic', '$room_index', '$roomindex', '$room_lux', '$roomlux', '$detectflag', '$window_s', '$window_l', '$window_v', '$window_ov', '$window_e', '$outdoor_t', '$outdoortemp', '$outdoor_h', '$outdoorhumi', '$outdoor_hic', '$outdoorhic', '$outdoor_index', '$outdoorindex', '$pad_s', '$pad_r', '$pad_t', '$padtemp', '$pad_h', '$padhumi', '$pad_hic', '$padhic', '$pad_low', '$pad_high', '$boiler_s', '$boiler_r', '$boiler_t', '$boilertemp', '$boiler_h', '$boilerhumi', '$boiler_low', '$boiler_high', '$gas5', '$boiler5', '$gas7', '$boiler7')"); $sql = "SELECT window_s, pad_s, boiler_s, pad_low, pad_high, boiler_low, boiler_high FROM setup ORDER BY datetime DESC LIMIT 1"; $result = mysqli_query($connect, $sql); while ($row = mysqli_fetch_array($result)) { if ($row['window_s'] > 0) echo "ws=".$row['window_s']; if ($row['pad_s'] > 0) echo "ps=".$row['pad_s']; if ($row['boiler_s'] > 0) echo "bs=".$row['boiler_s']; if ($row['pad_low'] > 0) echo "pl=".$row['pad_low']; if ($row['pad_high'] > 0) echo "ph=".$row['pad_high']; if ($row['boiler_low'] > 0) echo "bl=".$row['boiler_low']; if ($row['boiler_high'] > 0) echo "bh=".$row['boiler_high']; } header("HTTP/1.1 200 OK"); header("Content-Type: text/html; charset=UTF-8"); ?>
communication.ino (아두이노)
if (millis() - senddelay >= 2999) { client.stop(); if (client.connect(domain, 80)) { String sendvalue = "datetime=20"; sendvalue += int(year); sendvalue += "."; sendvalue += int(month); sendvalue += "."; sendvalue += int(date); sendvalue += "."; sendvalue += int(hours); sendvalue += ":"; sendvalue += int(minutes); sendvalue += ":"; sendvalue += int(seconds); sendvalue += "&room_t="; sendvalue += int(floor(room_t)); sendvalue += "."; sendvalue += int((room_t - int(floor(room_t))) * 100); sendvalue += "&room_h="; sendvalue += int(floor(room_h)); sendvalue += "."; sendvalue += int((room_h - int(floor(room_h))) * 100); sendvalue += "&room_hic="; sendvalue += int(floor(room_hic)); sendvalue += "."; sendvalue += int((room_hic - int(floor(room_hic))) * 100); sendvalue += "&room_index="; sendvalue += int(floor(room_index)); sendvalue += "."; sendvalue += int((room_index - int(floor(room_index))) * 100); sendvalue += "&room_lux="; sendvalue += int(floor(room_lux)); sendvalue += "."; sendvalue += int((room_lux - int(floor(room_lux))) * 100); sendvalue += "&detectflag="; sendvalue += detectflag; sendvalue += "&window_s="; sendvalue += EEPROM.read(6); sendvalue += "&window_l="; sendvalue += window_l; sendvalue += "&window_e="; sendvalue += EEPROM.read(7); sendvalue += "&window_v="; sendvalue += int(floor(window_v)); sendvalue += "."; sendvalue += int((window_v - int(floor(window_v))) * 100); sendvalue += "&window_ov="; sendvalue += EEPROM.read(8); sendvalue += "."; sendvalue += EEPROM.read(9); sendvalue += "&outdoor_t="; sendvalue += int(floor(outdoor_t)); sendvalue += "."; sendvalue += int((outdoor_t - int(floor(outdoor_t))) * 100); sendvalue += "&outdoor_h="; sendvalue += int(floor(outdoor_h)); sendvalue += "."; sendvalue += int((outdoor_h - int(floor(outdoor_h))) * 100); sendvalue += "&outdoor_hic="; sendvalue += int(floor(outdoor_hic)); sendvalue += "."; sendvalue += int((outdoor_hic - int(floor(outdoor_hic))) * 100); sendvalue += "&outdoor_index="; sendvalue += int(floor(outdoor_index)); sendvalue += "."; sendvalue += int((outdoor_index - int(floor(outdoor_index))) * 100); sendvalue += "&pad_s="; sendvalue += EEPROM.read(2); sendvalue += "&pad_r="; sendvalue += digitalRead(heatrelay); sendvalue += "&pad_t="; sendvalue += int(floor(pad_t)); sendvalue += "."; sendvalue += int((pad_t - int(floor(pad_t))) * 100); sendvalue += "&pad_h="; sendvalue += int(floor(pad_h)); sendvalue += "."; sendvalue += int((pad_h - int(floor(pad_h))) * 100); sendvalue += "&pad_hic="; sendvalue += int(floor(pad_hic)); sendvalue += "."; sendvalue += int((pad_hic - int(floor(pad_hic))) * 100); sendvalue += "&pad_low="; sendvalue += EEPROM.read(0); sendvalue += "&pad_high="; sendvalue += EEPROM.read(1); sendvalue += "&boiler_s="; sendvalue += EEPROM.read(5); sendvalue += "&boiler_r="; sendvalue += digitalRead(boilerrelay); sendvalue += "&boiler_t="; sendvalue += int(floor(boiler_t)); sendvalue += "."; sendvalue += int((boiler_t - int(floor(boiler_t))) * 100); sendvalue += "&boiler_h="; sendvalue += int(floor(boiler_h)); sendvalue += "."; sendvalue += int((boiler_h - int(floor(boiler_h))) * 100); sendvalue += "&boiler_low="; sendvalue += EEPROM.read(3); sendvalue += "&boiler_high="; sendvalue += EEPROM.read(4); sendvalue += "&gas5="; sendvalue += int(floor(gas5.readSensor())); sendvalue += "."; sendvalue += int((gas5.readSensor() - int(floor(gas5.readSensor()))) * 100); sendvalue += "&boiler5="; sendvalue += int(floor(boiler5.readSensor())); sendvalue += "."; sendvalue += int((boiler5.readSensor() - int(floor(boiler5.readSensor()))) * 100); sendvalue += "&gas7="; sendvalue += int(floor(gas7.readSensor())); sendvalue += "."; sendvalue += int((gas7.readSensor() - int(floor(gas7.readSensor()))) * 100); sendvalue += "&boiler7="; sendvalue += int(floor(boiler7.readSensor())); sendvalue += "."; sendvalue += int((boiler7.readSensor() - int(floor(boiler7.readSensor()))) * 100); sendvalue += "&roomtemp="; sendvalue += roomtemp; sendvalue += "&roomhumi="; sendvalue += roomhumi; sendvalue += "&roomhic="; sendvalue += roomhic; sendvalue += "&roomindex="; sendvalue += roomindex; sendvalue += "&roomlux="; sendvalue += roomlux; sendvalue += "&outdoortemp="; sendvalue += outdoortemp; sendvalue += "&outdoorhumi="; sendvalue += outdoorhumi; sendvalue += "&outdoorhic="; sendvalue += outdoorhic; sendvalue += "&outdoorindex="; sendvalue += outdoorindex; sendvalue += "&padtemp="; sendvalue += padtemp; sendvalue += "&padhumi="; sendvalue += padhumi; sendvalue += "&padhic="; sendvalue += padhic; sendvalue += "&boilertemp="; sendvalue += boilertemp; sendvalue += "&boilerhumi="; sendvalue += boilerhumi; client.println F("POST /communication.php HTTP/1.1"); client.println F("Host: <HIDDEN>"); client.println F("Content-Type: application/x-www-form-urlencoded"); client.print F("Content-Length: "); client.println(sendvalue.length()); client.println(); client.println(sendvalue); char c = client.read(); Serial.write(c); } senddelay = millis(); }
감사합니다.
방금 예제의 client_repeating 에서 돌려봤는데 정상출력이 됩니다..?
그럼 더더욱 이해가 되질 않습니다..
.....