mining custom_top_html:no
default debug random = 0 / type = READ / detected = READ

 

웹을 통한 원격 PC on/off 입니다. 

상용 수준은 아니지만 간단하게 사용하실분들은 참고하셔서 만드셔도 될듯 합니다.

 

* 사용환경

네트워크 : IPTIME WiFi AP 

컨트롤 보드 : 아두이노 mega 2560 + 아두이노 이더넷 Ethernet W5100 micro SD소켓 쉴드

 

사용 환경은 WiFi AP 에서 특정 포트를 포트 포워딩으로 아두이노 보드 로 지정.  

 

 

 

하기 코드는 제가 사용한 비번 관련 부분에 대해서는 수정하였으며 이제 막...동작되는 것까지만 확인된 소스입니다.

* 주의 사항

참고로 하기 코드는 http 베이스로 https 로 동작되지 않기에 의심스러운 WiFi AP 네트워크에서 사용시 악의적인 성격을 가진 사람이

tcpdump 로 정보를 갈취할 경우 갈취한 사람이 해당 사이트 이용하여 원치 않는 PC 리붓을 시킬수 있습니다.

 

* 아두이노 코드  ( 하기 부분 복사해서 사용하시면 될듯 합니다. )

/// test4.ino ////////////////////////////////////////////////////////

///*

#include <Adafruit_Sensor.h>

#include <DHT.h>

#include <DHT_U.h>

//*/

 

#include <Wire.h>

#include <SPI.h>

#include <Ethernet.h>

 

IPAddress ip(192,168,0,5);     // <========================================================

#define SERVER_PORT 8080      // <========================================================

#define DHTPIN            2         // Pin which is connected to the DHT sensor.    // <========================================================

#define SETTED_TEMPERATURE 28   // <========================================================

#define SETTED_HUMIDITY 90   // <========================================================

int Relay8=8; // Ventilator Switch relay PIN 넘버..     // <========================================================

 

 

 

 

int Relay14=14; // Switch relay PIN 넘버..     // <========================================================

int Relay15=15; // Switch relay PIN 넘버..     // <========================================================

 

 

// Uncomment the type of sensor in use:

//#define DHTTYPE           DHT11     // DHT 11 

#define DHTTYPE           DHT22     // DHT 22 (AM2302)

//#define DHTTYPE           DHT21     // DHT 21 (AM2301)

 

//#include <DHT11.h>

//int pin = A2; // 온습도센서(DHT-11) 핀 A2 부여

//DHT11 dht11(pin);

 

 

byte mac[] = { 0x74,0x69,0x69,0x2D,0x30,0x5 };

//IPAddress ip(DHCP IP주소 찾기 예제 검색후 아이피주소 입력);

// IP 주소는 " XXX,XXX,XXX,XXX " ',' 주의해주세요.

// 이더넷 라이브러리 초기화

// 사용할 IP 주소 와 포트 입력

// ('port 80' 은 HTTP 의 기본 값 입니다.):

//EthernetServer server(80);

EthernetServer server(SERVER_PORT);

String readString;

 

void client();

 

DHT_Unified dht(DHTPIN, DHTTYPE);

uint32_t delayMS;

 

//////////////////////////

uint32_t switch_dev=0;

//////////////////////////

 

void setup() {

 

  

// Open serial communications and wait for port to open:

  Serial.begin(9600);

 

  dht.begin(); // Initialize DHT device.

 

   while (!Serial) {

    ; // 포트 연결까지 기다리기. 레오나르도 에만 필요합니다.

  }

 

  // 이더넷 서버 연결 시작:

  Ethernet.begin(mac, ip);

  server.begin(); 

 

  Serial.print("server is at ");

  Serial.print(Ethernet.localIP());

  Serial.print(":");

  Serial.println(SERVER_PORT);

///*

  // Print temperature sensor details.

  sensor_t sensor;

  dht.temperature().getSensor(&sensor);

  Serial.println("------------------------------------");

  Serial.println("Temperature");

  Serial.print  ("Sensor:       "); Serial.println(sensor.name);

  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);

  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);

  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println(" *C");

  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println(" *C");

  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println(" *C");  

  Serial.println("------------------------------------");

  // Print humidity sensor details.

  dht.humidity().getSensor(&sensor);

  Serial.println("------------------------------------");

  Serial.println("Humidity");

  Serial.print  ("Sensor:       "); Serial.println(sensor.name);

  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);

  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);

  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println("%");

  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println("%");

  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println("%");  

  Serial.println("------------------------------------");

  // Set delay between sensor readings based on sensor details.

  delayMS = sensor.min_delay / 1000;

//*/

  pinMode(Relay8, OUTPUT);

 

  pinMode(Relay14, OUTPUT);

  pinMode(Relay15, OUTPUT);

  //////////////////////////

  digitalWrite(Relay14, HIGH); // <=== Low level trigger 릴레이 케이스.

  // digitalWrite(Relay14, LOW); // <=== High level trigger 릴레이 케이스.

  digitalWrite(Relay15, HIGH); // <=== Low level trigger 릴레이 케이스.

  // digitalWrite(Relay15, LOW); // <=== High level trigger 릴레이 케이스.

}

 

 

void loop() {

///*

  // Delay between measurements.

  delay(delayMS);

  // Get temperature event and print its value.

  sensors_event_t event;

//*/

 

  EthernetClient client = server.available();

  if (client) {

    Serial.println("new client detected!!");

    // an http request ends with a blank line

    boolean currentLineIsBlank = true;

    char c = 0x00;

    while (client.connected()) {

      if (client.available()) {

        //char c = client.read();

        c = client.read();

        //Serial.write(c);

 

        // if you've gotten to the end of the line (received a newline

        // character) and the line is blank, the http request has ended,

        // so you can send a reply

 

        ////////////////////////////////////////////////

        //read char by char HTTP request

        if (readString.length() < 100) {

          //store characters to string

          readString += c;

          Serial.print(c);

         }

        ////////////////////////////////////////////////

 

        if (c == '\n' && currentLineIsBlank) {

          Serial.println("test1");

          // send a standard http response header

          client.println("HTTP/1.1 200 OK");

          client.println("Content-Type: text/html");

          client.println("Connnection: close");

          client.println();

          client.println("<!DOCTYPE HTML>");

          client.println("<html>");

          // 브라우저 5초마다 새로고침

          if (readString.indexOf("?pw_1powerreset=xxx") >0){

          } else if (readString.indexOf("?pw_2powerreset=xxx") >0){

          } else {

            //client.println("<meta http-equiv=\"refresh\" content=\"5\">");

            client.println("<meta http-equiv=\"refresh\" content=\"10\">");    // <========================================================

          }

 

           ///////////////////////////////////////////////

           //client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");

           //client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");

           //client.println("<link rel='stylesheet' type='text/css' href='http://randomnerdtutorials.com/ethernetcss.css' />");

           //client.println("<link rel='stylesheet' type='text/css' href='https://drive.google.com/file/d/1y3dAAuyWUN2v2tn0Gh7mVEkE8llM4qI9/view?usp=sharing' />");

           ///////////////////////////////////////////////

 

          client.println("<title>");

          client.print("Welcome Mining room by ARDUINO");

          client.println("</title>");

 

            int A;

            float temp =0;

            float humi = 0;

//*

            //////////////////////////////////////////////

            dht.temperature().getEvent(&event);

            if (isnan(event.temperature)) {

              Serial.println("Error reading temperature!");

            } else {

              temp = event.temperature;

              Serial.print("Temperature: ");

              Serial.print(event.temperature);

              Serial.println(" *C");

              //////////////////////////

              if(event.temperature > SETTED_TEMPERATURE) {

                digitalWrite(Relay8, HIGH);

              } else {

                digitalWrite(Relay8, LOW);

              }

              //////////////////////////

            }

            dht.humidity().getEvent(&event);

            if (isnan(event.relative_humidity)) {

              Serial.println("Error reading humidity!");

            }

            else {

              humi = event.relative_humidity;

              Serial.print("Humidity: ");

              Serial.print(event.relative_humidity);

              Serial.println("%");

              //////////////////////////

              if(event.relative_humidity > SETTED_HUMIDITY) {

                //digitalWrite(Relay, HIGH);

              } else {

                //digitalWrite(Relay, LOW);

              }

              //////////////////////////

            }

//*/

            

            //int read( float& humidity, float& temperature);

            //if((A=dht11.read(humi, temp))==0) {

          // 온습도센서(DHT-11)로부터 값 출력

            //Serial.println("test2");

            //Serial.print(temp);       

            //}

            //////////////////////////////////////////////

 

          client.println("<center>");

          client.println("<h1>");

          client.print("Mining Room Monitor");

 

          client.println("</h1>");

          client.println("<h2>");

          client.print("Mining Room Temperature and Humidity status.");

          client.println("</h2>");

          client.println("<h4>");

          client.print("Temperature : ");

          client.print(temp);

          client.print("<sup>0</sup>");

          client.print("C");

          client.println("<br />");

          client.print("Humidity : ");

          client.print(humi);

          client.print("%");

          client.println("<br />");

 

          client.print("Ventilator status : ");

          if(digitalRead(Relay8) == 1) {

            client.print("On");

          } else {

            client.print("Off");

          }

          client.println("<br />");

 

          client.println("</h4>");

          client.println("</center>");

 

          client.println("<br />");

          // auto 한/영 변환 자유로움

          // active  한글기본, 한/영 변환이 자유로움

          // inactive 영문기본, 한/영 변환이 자유로움

          // disabled  영문기본, 한/영 변환이 안됨, 영문/숫자만 입력 가능.

          // <input type="text" name="" value="" style="ime-mode:active;">

          //client.println("<input type=\"submit\" value=\"#1_PowerReset\" />");

 

          client.print("<form>");

          client.print("Password : ");

          client.println("<input type=\"password\" placeholder=\"Password\" name=\"pw_1powerreset\" value=\"\" style=\"ime-mode:disabled;\"><br />");

          client.println("<input type=\"submit\" value=\"worker110_PowerReset\" onclick=\"history.back(-1)\" />");

          client.println("<br />");

          client.print("</form>");

          client.println("<br />");

 

          client.print("<form>");

          client.print("Password : ");

          client.println("<input type=\"password\" placeholder=\"Password\" name=\"pw_2powerreset\" value=\"\" style=\"ime-mode:disabled;\"><br />");

          client.println("<input type=\"submit\" value=\"worker111_PowerReset\" onclick=\"history.back(-1)\" />");

          client.println("<br />");

          client.print("</form>");

          client.println("<br />");

 

          client.println("</html>");

          break;

        }

        if (c == '\n') {

          currentLineIsBlank = true;

          //Serial.println("test3");

        } 

        else if (c != '\r') {

          currentLineIsBlank = false;

          //Serial.println("test4");

        }

      } else {

        //Serial.println("test5");

      }

    }

    //브라우저 데이터 받는 시간 

    delay(1);

    //연결 종료:

    client.stop();

    Serial.println("client disonnected");

 

     ///////////////////////////////////////////////////

     //if HTTP request has ended

     if (c == '\n') {

       Serial.print("readString : ");

       Serial.println(readString); //print to serial monitor for debuging

 

       if (readString.indexOf("?pw_1powerreset=xxx") >0){

           digitalWrite(Relay14, LOW); // <=== Low level trigger 릴레이 케이스.

   //digitalWrite(Relay14, HIGH); // <=== High level trigger 릴레이 케이스.

           delay(2000); // 2 secs..

           digitalWrite(Relay14, HIGH); // <=== Low level trigger 릴레이 케이스.

           //digitalWrite(Relay14, LOW); // <=== High level trigger 릴레이 케이스.

       } else if (readString.indexOf("?pw_2powerreset=xxx") >0){

           digitalWrite(Relay15, LOW); // <=== Low level trigger 릴레이 케이스.

   //digitalWrite(Relay15, HIGH); // <=== High level trigger 릴레이 케이스.

           delay(2000); // 2 secs..

           digitalWrite(Relay15, HIGH); // <=== Low level trigger 릴레이 케이스.

           //digitalWrite(Relay15, LOW); // <=== High level trigger 릴레이 케이스.

       }

 

 

 

       //clearing string for next read

        readString="";

     }

     ///////////////////////////////////////////////////

 

    

  } else {

 

    //*

    Serial.println("client not detected!!");

 

    dht.temperature().getEvent(&event);

    if (isnan(event.temperature)) {

      Serial.println("Error reading temperature!");

    } else {

      Serial.print("Temperature: ");

      Serial.print(event.temperature);

      Serial.println(" *C");

      //////////////////////////

      if(event.temperature > SETTED_TEMPERATURE) {

        digitalWrite(Relay8, HIGH);

      } else {

        digitalWrite(Relay8, LOW);

      }

      //////////////////////////

    }

    dht.humidity().getEvent(&event);

    if (isnan(event.relative_humidity)) {

      Serial.println("Error reading humidity!");

    }

    else {

      Serial.print("Humidity: ");

      Serial.print(event.relative_humidity);

      Serial.println("%");

      //////////////////////////

      if(event.relative_humidity > SETTED_HUMIDITY) {

        //digitalWrite(Relay, HIGH);

      } else {

        //digitalWrite(Relay, LOW);

      }

      //////////////////////////

    }

 

    Serial.print("Ventilator status : ");

    if(digitalRead(Relay8) == 1) {

      Serial.print("On");

    } else {

      Serial.print("Off");

    }

    Serial.println(".");

    //*/

 

  }

  //Serial.println("=============================");

 

}

///////////////////////////////////////////////////////////

 

 

 

파워선 + 와 Reset + 둘을 묶어 주고 파워선 - , Reset - 를 묶어주어서 스위치 하나를 달아주면서 

각 + , - 선 두가닥을 릴레이 쪽으로 빼줍니다..  

스위치를 달아준것은 수동으로 reset 혹은 power on 을 위해서 입니다.

( 파워선과 Reset 버튼을 동시에 인가 시키게 되면 꺼져 있던 피씨는 켜지며 켜져있던 피씨는 reset 이 되게 됩니다. )

- 제가 사용하는 보드들은 그러했는데요.. 다른 보드들도 모두 동일한지는 모르겠습니다... 

 

참고로 피씨의 On/Off 상태는 Power LED 쪽에 5V 가 인가가 되어 있습니다.

해당 부분에 전선으로 빼서 Digital Input 으로 읽으면 피씨의 On/Off 상태도 웹에 표시해줄수 있을 것으로 생각 됩니다. 

- 아직 해당 부품 택배가 안와서... 해당 부분 테스트 전입니다..

 20180121_002931.jpg

 

20180124_011152.jpg

 

20180124_011243.jpg

 

20180124_011346.jpg

 

 

참고로 하기 8개 짜리 릴레이 제품은 비추 입니다..

TONGLING 이라는 하나짜리 릴레이는 의도한 바와 정확히 일치 했습니다..

다중 릴레이는 TONGLING 이라는 거 사용한 다른 제품들 더 테스트 진행하려 합니다...

20180124_011406.jpg

 

20180124_012321.jpg

 

 

 

하기 패스워드 창에 입력후 버튼 누르면 피씨를 On 시키거나 켜져 있는 경우 reset 을 시키게 됩니다.

습도가 21% .... --,,,,

Screenshot_20180124-011317.png

 

 

 

 

 

방 무진장 건조하네요.. --,,

.... 저는 이만.. 내일을 위해 이제 잠자리로.....

 

 

 

 

 

 

 

 

 

 

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

꼬리말

* 게시글 내용 삭제레벨 강등

* 질문은 각 주제별 게시판에.

 

비트코인 암호화화폐 커뮤니티 땡글~ 땡글~

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

16
댓글 38
default debug random = 1 / type = READ / detected = READ

채굴

코인 채굴에 관한 게시판입니다.

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 채굴 새로 들어오시는분들! - 땡글 이용시 지켜지면 좋은 것 61 update 259 61171
김광부
2017.06.25
31453 채굴 알리익스 파워 1600w 주문후 몇일만에 바로 오네요 가격은 ㅋㅋ 86000원 구입하세요 24 0 1422
이박사
2018.01.24
31452 채굴 1070 1080 파워구성 질문드려요.     현재 듀얼파워 사용중입니다.   시소닉850w골드     커세어 750w브론즈  두개사용중입니다. 전력배분은 850w에 메인물려놓고 3개 연결중입니다                  750w에 1080 2개 1070 1개 연결 사용중입니다. 보... 2 0 528
누구냐넌
2018.01.24
31451 채굴 80ti 6way PSU 질문입니다 1000w 두개로 사용중입니다. 새로 들인 채굴기가 가끔.. 아주아주 가끔 뻗는 증상이 있습니다. 그래픽카드 오버 문제면 커맨드창에 빨강 글씨로 나오면서 에러 뿜어내는데 아예 전원이 떨어졌다가 다시 재부팅되버립... 7 0 642
E9A876F
2018.01.24
31450 채굴 밀폐형으로 채굴장 구축시 화재 위험은 없을까요? 안녕하세요. 쌩광부입니다. 현재 오픈형으로 개인 채굴장 운영중인데요. 작년 여름에 온도 관리가 쉽지 않더라구요. 시로코펜에 에어컨까지 풀로 가동하고 45도 전후였습니다. 그래서 올 여름 대비해서 밀폐형으로 변... 11 0 1510
쌩광부
2018.01.24
31449 채굴 라이져카드가 비쌀 이유가 있나요?? 그래픽카드야..메모리나 반도체같은 기술집약적 제품이라서 물량에 따라 가격이 올라갈수도 있다고 보지만..라이져카드 2-3천원하던게 지금 7천원 이상으로 올라가서 내려올줄 모르네요 글카가 안풀려서 자연스럽게 ... 5 1 1160
70804웨이
2018.01.24
31448 채굴 라이저 카드 살때 이런 제품은 꼭 거르세요. 일단 라이저 자체 전원 공급하는 방식에는 여러 가지가 있는데요, 그 중에 크게 두가지가 있습니다. 1) 4핀으로 공급받음 2) 6핀 pci- pcie to sata 젠더- 파워 사타 케이블로 공급받음 제가 채굴기를 새로 조립하는... 11 file 0 1839
메르시
2018.01.24
31447 채굴 A3 쓰시는 분들 어떤 채굴풀 사용 하시나요?     앤트풀에서 아직 시아코인 풀을 안열어서 다른걸 이용하려고 하는데 해시트레이는 SiaMining 이 제일 높더라고요? 그런데 이게 가입 방식이 아니라 실시간으로 채굴 상태를 확인할 수가 없어서 이런풀은 모니터링... 3 0 1107
오징어
2018.01.24
31446 채굴 pci-e 확장 부품 이런 것도 있더라구요.                   1번 사진의 경우는 회원분들도 많이 쓰시는거 같던데 그 외에도 비슷한 것들이 있더라구요. 이런 것이 리소스 부족 등의 호환에 문제가 없다면, 채굴기 만드는데 비용을 절약(메인보드, 시퓨, SSD,... 18 file 0 1519
던체
2018.01.24
31445 채굴 라이저카드 부족! 현재 주문 했는대 아직 도착을 안했어요. 메인보드에 그래픽장착하고 나머지 라이저카드 꼽아써도되죠?? 전부 라이저카드 사용할 필요는 읍자나요? 2 0 888
나도간다앙
2018.01.24
31444 채굴 채굴업이 많이 힘든가봐요... 중고 채굴기 쏟아지네.... 그럼 vga도 안정을 찾으려나? 16 0 2517
용돈버는풍이
2018.01.24
31443 채굴 컬러풀 H81 BTC보드 롬파일 올립니다. 컬러풀 H81 BTC 메인보드에서 6way가 안되는 문제를 해결하기 위한 롬입니다. 예전에 땡글에서 받은 바이오스는 최신판이 아니여서 제가 칼라풀 최신판을 올립니다.   파일은 RAR 파일이니 변경해서 쓰시면 되고 기타... 6 file 3 1255
광부아재@
2018.01.24
31442 채굴 접지 관련 궁금한게 있습니다.   채굴장이 상가인데 콘센트나 배전반에 접지선 자체가 없네요.   접지 물어보니 접지봉 구해서 직접 하라는데.. 위치가 전기선 따기 좀 어려운곳이라서요.   근데 전화선이 하나 들어오는데   검색해보니 TV선에 접... 0 751
채굴늅늅
2018.01.24
31441 채굴 상가 임대하신 분들 전기 사용료 질문입니다. 일반 상가에 입주해서 채굴하시는 분들은 전기사용료를 어떻게 내시나요?   1. 한전에 직접 사업자 명의로 낸다. (이렇게 하면 한전에서 고지서와 함께 기본료 와 사용전력량에 따른 시즌별 전력량 요금으로 내겠죠.)... 2 0 1616
초보초보
2018.01.24
31440 채굴 채굴용 파워 궁금~    1080그래픽 카드 7개 연결해서 구성중인데요   파워서플라이를 &quot;FSP AURUM PT1200W&quot; 이제품 2개 듀얼로 연결해서 사용해도 괜찮을까요?                      ------------------------------------- 꼬리말 * 게... 8 0 1064
장지동
2018.01.24
31439 채굴 채굴업 이미지가 너무 안좋네요. 제발 이러지좀 맙시다.           산업용 전기 농업용 전기 훔쳐쓰지 말고,   회사 전기 내꺼 아니라고 채굴기 갖다놓지 말고,   채굴장 얻었으면 월세와 관리비 밀리지 말고 떳떳하게 낼거 내고    당당하게 채굴 좀 합시다.             ... 35 file 35 10584
상승기류
2018.01.24
31438 채굴 안녕하세요 이번에 채굴장을 차리려고 하는데 조언 부탁드립니다. 채굴장을 차릴 공간은 180평 정도인데   제가 아무것도 모르는 상태여서 시스템 구축이라던가 등등 이런걸 몰라서 그러는데   초보가 처음에 볼만한 글이나 링크 자료가 있으면 링크라도 한번 부탁드리겠습니다.     ... 28 0 1341
쟤꾸
2018.01.24
31437 채굴 이엠텍 rx480 8g 세팅 알바 구합니다. 쪽지 주신분들 감사합니다.   한분이 오늘 수정 가능하시다고 하셔서 오늘 저녁에 뵙기로 했습니다.   관심 감사합니다.   ===================================================================   이엠텍 rx480 8g ... 5 0 957
민석
2018.01.24
31436 채굴 Audio Device on High Definiton Audio Bus 드라이버 설치하나요? 검색으로 알아보니   이게 그래픽카드에 붙어있는 오디오 장치라는데    드라이버 설치하면 없어진답니다   그런데 혹시나 채굴기 셋팅에 변수가 되지 않을까 싶어서 냅두고 있는데   설치해야하나요?   밑에 PCI 단... 2 file 0 472
럭스
2018.01.24
31435 채굴 바이칼 자이언트B로는 이더리움 캐봤자 별로 안좋죠?               ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에.   비트코인 암호화화폐 커뮤니티 땡글~ 땡글~ ----------... 2 0 1769
감사드림
2018.01.24
31434 채굴 그냥 뻘소리 한번 씁니당..ㅎㅎ 부모님 가게에 설치된 채굴기가 두개 있는데...   그중 하나를 오버클럭하다가 컴터가 꺼져버렸네요;;   그래서 부모님한테 코드 아예 걍 뽑았다 꼽아달라했는데..   꺼진컴터는 wol로 잘 복구되고..   잘되던 컴터가... 7 0 941
나보면토끼
2018.01.24
목록
Board Pagination Prev 1 ... 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 ... 2988 Next
/ 2988
default debug random = 0 / type = READ / detected = READ