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 = 0 / type = READ / detected = READ

채굴

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

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 채굴 새로 들어오시는분들! - 땡글 이용시 지켜지면 좋은 것 67 270 63118
김광부
2017.06.25
공지 TokenWatch 텔레그램 봇 베타 서비스 안내 file 4 352
관리자
2021.07.23
31469 채굴 1050ti 6way 2대 어제부터 돌린 초보입니다 해쉬값이니 뭐니 공부 열심히 해보는데 당최 이런쪽 전문이 아니니 소귀에 경읽는 기분입니다 각설하고 1대는 이더리움 :  풀해쉬 약 20 해시속도 약 80 전체 네트워크 해시 약 170   1대는 Z캐시 :  풀해시 약 20 해... 3 0 1031
경이로운자
2018.01.24
31468 채굴 이더리움 난이도.. 폭탄 다시 작용하는건가요..? 좀 심하다 싶을정도로 뛰어버리네요... 난이도폭탄일까요?ㅠㅠ 350해시로 0.04 이더가 안나오길레..휴.. 5 file 0 1966
메르시
2018.01.24
31467 채굴 티클모아태산이라~~^^ 그래픽카드를 못구해 슬롯만 덩그러니 비어있는 본체들을 보고있자니   심심도하고 답답도하고 굴러다니던 gtx730으로 &quot;티클모아태산&quot; 놀이 하는중입니다.   채굴기 늘리려 VGA찾아다니며 장바구니까진 넣어보지만 선... 14 file 0 1397
목포장사장
2018.01.24
31466 리눅스 우분투 + vega56 + 클레이모어 오류   우분투에 vega56을 장착하고 그래픽 드라이버까지 설치를 했는데 zcash를 클레이 모어로 캘려고 했는데   계속 오류만 뜨면서 않되네요 &quot;No AMD OPENCLGPUs found, exit&quot;라고 뜨면서 작동을 않하는데 왜이런지 모르... 13 0 1067
대성
2018.01.24
31465 채굴 1080ti로 채굴기 조립하려라는데 제조사별 성능 질문드립니다. 1080ti로 채굴기 조립하려라는데 제조사별 모델이 다양하던데요..(약간의 가겨차도 있구요) 채굴 성능은 비슷한지 궁금합니다. 그리고 냉각팬도 2개짜리 3개짜리가 있던데 이것도 성능에 영향을 주는건지도 궁금합니... 5 0 1003
토토네
2018.01.24
31464 채굴 창원 의창구 채굴장 직원 구함 창원 의창구 지역에 채굴장 직원 구합니다. 컴퓨터 관련 관리자 구합니다. 자세한 내용은 연락 주시면 상담 하겠습니다^^ 010-6450-6491 정실정 1 1 1429
아톰대장님
2018.01.24
31463 채굴 무선랜카드를 써도 안정적일까요? 채굴기에 무선랜카드를 사용해도 안정적으로 채굴이 될지 의문입니다. 일단 특별히 안될건 없어보이는데 무선랜카드 사용해 보신분 있을까요?   질문과 상관없이 USB무선랜카드 추천좀..                       -----... 8 0 1329
좀짱
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 822
Yirang
2018.01.24
31460 채굴 HP DL580G5/G7 Server Power 사용해보세요.   안녕하세요...   8way 구성이면 700w 두개로 가능한데 12way가 되면 power가 부족하면 다음제품으로 사용하시면 power쉽게 늘릴 수 있습니다.   기본구성은 500W 짜리 가장 저렴한 파워를 하나 사시구요, 나머지는... 2 file 0 1007
아유블루
2018.01.24
31459 채굴 비프음 8번 도움좀 주세요 ㅠㅠ 지금 내장 그래픽에 선물려놓고... 라이저 카드 다 뽑은 다음에.. 컴퓨터 키면 비프음이 8번 울리네요.    이거 메인보드 불량일까요?                       ------------------------------------- 꼬리말 * 게시글... 8 0 2666
버거거킹
2018.01.24
31458 채굴 오버셋팅, 가게 공간 질문드려요..   가게를 하고있는데 아래공간이 아까워서 어떻게 활용할까하다가 여기를 채굴로 사용할수있나 하고 글 올려봅니다.. 그리고 아래 오버셋팅 zcash 1080ti로 한대에 한대씩 돌리는중인데 제대로 돌리고 있는게 맞을까... 14 file 0 919
letspot
2018.01.24
31457 채굴 채린입니다... 채굴코인 지갑이동 문의드립니다.       마플허에서 채굴한 지캐시를 환전할려고합니다.   지갑을  빗썸에 만들어 놔서 그쪽으로 이동시켜야할거같은데   전에 제가 잘못본건지 모르겠는데   어떤분은 지캐시를 이더리움으로 변경해서 출금(?) 이런걸 ... 4 0 543
dandymonkey
2018.01.24
31456 채굴 폴로닉스 버려야겠네요. 몇일 지갑 점검뜨더니....오늘 점검 없어졌길래 0.2 zec보냈는데 안들어옴.   지갑 점검전에 코인이 몇개 누락되었길래 티켓보낸것도 해결안됨.   내가 모르는 사이에 이런경우가 많을거같은데   같은시간 비트렉스로... 2 0 997
짜장
2018.01.24
31455 채굴 가게에서 일반용 갑 저압을 사용하고 있습니다.   안녕하세요 전기쪽은 완전 무뇌한 이라 여쭈어 봅니다.   계약전력은 8킬로 입니다.   저번달 사용량 939kwh 요금은 159160원 입니다.   현재 1050ti 1대 사용중이고 다음주 안에 1대 더 들일 생각입니다.   1050ti... 4 0 1835
스틱스
2018.01.24
31454 채굴 정상인가요? 마풀에 750ti 80개 그래픽카드 모네르 돌리고있습니다.해시속도가20~21이렇게 나오는데 정상인건가여?이렇게 하루 돌려도 하루 0.2도 안됩니다.문제가 있나요ㅜㅜ 3 0 564
봉길이당
2018.01.24
31453 채굴 알리익스 파워 1600w 주문후 몇일만에 바로 오네요 가격은 ㅋㅋ 86000원 구입하세요 24 0 1449
이박사
2018.01.24
31452 채굴 1070 1080 파워구성 질문드려요.     현재 듀얼파워 사용중입니다.   시소닉850w골드     커세어 750w브론즈  두개사용중입니다. 전력배분은 850w에 메인물려놓고 3개 연결중입니다                  750w에 1080 2개 1070 1개 연결 사용중입니다. 보... 2 0 531
누구냐넌
2018.01.24
31451 채굴 80ti 6way PSU 질문입니다 1000w 두개로 사용중입니다. 새로 들인 채굴기가 가끔.. 아주아주 가끔 뻗는 증상이 있습니다. 그래픽카드 오버 문제면 커맨드창에 빨강 글씨로 나오면서 에러 뿜어내는데 아예 전원이 떨어졌다가 다시 재부팅되버립... 7 0 644
E9A876F
2018.01.24
31450 채굴 밀폐형으로 채굴장 구축시 화재 위험은 없을까요? 안녕하세요. 쌩광부입니다. 현재 오픈형으로 개인 채굴장 운영중인데요. 작년 여름에 온도 관리가 쉽지 않더라구요. 시로코펜에 에어컨까지 풀로 가동하고 45도 전후였습니다. 그래서 올 여름 대비해서 밀폐형으로 변... 11 0 1523
쌩광부
2018.01.24
목록
Board Pagination Prev 1 ... 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 ... 3204 Next
/ 3204
default debug random = 0 / type = READ / detected = READ