mining custom_top_html:no
default debug random = 2 / 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 = 0 / type = READ / detected = READ

채굴

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

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 채굴 새로 들어오시는분들! - 땡글 이용시 지켜지면 좋은 것 68 276 64329
김광부
2017.06.25
공지 [공동구매] PCI-E 4way 확장카드 1배속/4배속 (10/18~10/25, 한정수량 300개) 30 updatefile 3 1001
공구관리자
2021.10.18
31464 채굴 창원 의창구 채굴장 직원 구함 창원 의창구 지역에 채굴장 직원 구합니다. 컴퓨터 관련 관리자 구합니다. 자세한 내용은 연락 주시면 상담 하겠습니다^^ 010-6450-6491 정실정 1 1 1434
아톰대장님
2018.01.24
31463 채굴 무선랜카드를 써도 안정적일까요? 채굴기에 무선랜카드를 사용해도 안정적으로 채굴이 될지 의문입니다. 일단 특별히 안될건 없어보이는데 무선랜카드 사용해 보신분 있을까요?   질문과 상관없이 USB무선랜카드 추천좀..                       -----... 8 0 1339
좀짱
2018.01.24
31462 리눅스 인텔 "CPU보안패치 일단 적용하지 마라"   http://m.news.naver.com/read.nhn?oid=092&amp;aid=0002130160&amp;sid1=105&amp;mode=LSD   인텔 보안패치에도 결함이 있어서 인텔이 직접 보안패치를 설치하지 말라고 발표했네요;;; 그럼 또 해킹에 노출이... ... 3 0 1078
잇기자
2018.01.24
31461 채굴 GA-B250 12WAY 짜리 보드를 구할 수 있을거 같은데       VAT포함 17만원이면 적정가인가요?? 채린이라 잘모릅니다 ^^;               ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에.   비트코인 암호화... 6 0 823
Yirang
2018.01.24
31460 채굴 HP DL580G5/G7 Server Power 사용해보세요.   안녕하세요...   8way 구성이면 700w 두개로 가능한데 12way가 되면 power가 부족하면 다음제품으로 사용하시면 power쉽게 늘릴 수 있습니다.   기본구성은 500W 짜리 가장 저렴한 파워를 하나 사시구요, 나머지는... 2 file 0 1023
아유블루
2018.01.24
31459 채굴 비프음 8번 도움좀 주세요 ㅠㅠ 지금 내장 그래픽에 선물려놓고... 라이저 카드 다 뽑은 다음에.. 컴퓨터 키면 비프음이 8번 울리네요.    이거 메인보드 불량일까요?                       ------------------------------------- 꼬리말 * 게시글... 8 0 2754
버거거킹
2018.01.24
31458 채굴 오버셋팅, 가게 공간 질문드려요..   가게를 하고있는데 아래공간이 아까워서 어떻게 활용할까하다가 여기를 채굴로 사용할수있나 하고 글 올려봅니다.. 그리고 아래 오버셋팅 zcash 1080ti로 한대에 한대씩 돌리는중인데 제대로 돌리고 있는게 맞을까... 14 file 0 919
letspot
2018.01.24
31457 채굴 채린입니다... 채굴코인 지갑이동 문의드립니다.       마플허에서 채굴한 지캐시를 환전할려고합니다.   지갑을  빗썸에 만들어 놔서 그쪽으로 이동시켜야할거같은데   전에 제가 잘못본건지 모르겠는데   어떤분은 지캐시를 이더리움으로 변경해서 출금(?) 이런걸 ... 4 0 544
dandymonkey
2018.01.24
31456 채굴 폴로닉스 버려야겠네요. 몇일 지갑 점검뜨더니....오늘 점검 없어졌길래 0.2 zec보냈는데 안들어옴.   지갑 점검전에 코인이 몇개 누락되었길래 티켓보낸것도 해결안됨.   내가 모르는 사이에 이런경우가 많을거같은데   같은시간 비트렉스로... 2 0 997
짜장
2018.01.24
31455 채굴 가게에서 일반용 갑 저압을 사용하고 있습니다.   안녕하세요 전기쪽은 완전 무뇌한 이라 여쭈어 봅니다.   계약전력은 8킬로 입니다.   저번달 사용량 939kwh 요금은 159160원 입니다.   현재 1050ti 1대 사용중이고 다음주 안에 1대 더 들일 생각입니다.   1050ti... 4 0 1841
스틱스
2018.01.24
31454 채굴 정상인가요? 마풀에 750ti 80개 그래픽카드 모네르 돌리고있습니다.해시속도가20~21이렇게 나오는데 정상인건가여?이렇게 하루 돌려도 하루 0.2도 안됩니다.문제가 있나요ㅜㅜ 3 0 565
봉길이당
2018.01.24
31453 채굴 알리익스 파워 1600w 주문후 몇일만에 바로 오네요 가격은 ㅋㅋ 86000원 구입하세요 24 0 1484
이박사
2018.01.24
31452 채굴 1070 1080 파워구성 질문드려요.     현재 듀얼파워 사용중입니다.   시소닉850w골드     커세어 750w브론즈  두개사용중입니다. 전력배분은 850w에 메인물려놓고 3개 연결중입니다                  750w에 1080 2개 1070 1개 연결 사용중입니다. 보... 2 0 532
누구냐넌
2018.01.24
31451 채굴 80ti 6way PSU 질문입니다 1000w 두개로 사용중입니다. 새로 들인 채굴기가 가끔.. 아주아주 가끔 뻗는 증상이 있습니다. 그래픽카드 오버 문제면 커맨드창에 빨강 글씨로 나오면서 에러 뿜어내는데 아예 전원이 떨어졌다가 다시 재부팅되버립... 7 0 645
E9A876F
2018.01.24
31450 채굴 밀폐형으로 채굴장 구축시 화재 위험은 없을까요? 안녕하세요. 쌩광부입니다. 현재 오픈형으로 개인 채굴장 운영중인데요. 작년 여름에 온도 관리가 쉽지 않더라구요. 시로코펜에 에어컨까지 풀로 가동하고 45도 전후였습니다. 그래서 올 여름 대비해서 밀폐형으로 변... 11 0 1530
쌩광부
2018.01.24
31449 채굴 라이져카드가 비쌀 이유가 있나요?? 그래픽카드야..메모리나 반도체같은 기술집약적 제품이라서 물량에 따라 가격이 올라갈수도 있다고 보지만..라이져카드 2-3천원하던게 지금 7천원 이상으로 올라가서 내려올줄 모르네요 글카가 안풀려서 자연스럽게 ... 5 1 1161
70804웨이
2018.01.24
31448 채굴 라이저 카드 살때 이런 제품은 꼭 거르세요. 일단 라이저 자체 전원 공급하는 방식에는 여러 가지가 있는데요, 그 중에 크게 두가지가 있습니다. 1) 4핀으로 공급받음 2) 6핀 pci- pcie to sata 젠더- 파워 사타 케이블로 공급받음 제가 채굴기를 새로 조립하는... 11 file 0 1857
메르시
2018.01.24
31447 채굴 A3 쓰시는 분들 어떤 채굴풀 사용 하시나요?     앤트풀에서 아직 시아코인 풀을 안열어서 다른걸 이용하려고 하는데 해시트레이는 SiaMining 이 제일 높더라고요? 그런데 이게 가입 방식이 아니라 실시간으로 채굴 상태를 확인할 수가 없어서 이런풀은 모니터링... 3 0 1110
오징어
2018.01.24
31446 채굴 pci-e 확장 부품 이런 것도 있더라구요.                   1번 사진의 경우는 회원분들도 많이 쓰시는거 같던데 그 외에도 비슷한 것들이 있더라구요. 이런 것이 리소스 부족 등의 호환에 문제가 없다면, 채굴기 만드는데 비용을 절약(메인보드, 시퓨, SSD,... 18 file 0 1561
던체
2018.01.24
31445 채굴 라이저카드 부족! 현재 주문 했는대 아직 도착을 안했어요. 메인보드에 그래픽장착하고 나머지 라이저카드 꼽아써도되죠?? 전부 라이저카드 사용할 필요는 읍자나요? 2 0 889
나도간다앙
2018.01.24
목록
Board Pagination Prev 1 ... 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 ... 3350 Next
/ 3350
default debug random = 0 / type = READ / detected = READ