Удаленная перезагрузка фермы для майнинга - Зайцев Я - Флудилка
^ В верх

Зайцев.Я

Не стесняйтесь звонить даже за советом...


Войти
x
x

Новости

  • 1
  • 2
  • 3
  • 4
  • 5
Prev Next

Материалы по CCNA R&S

15-12-2015 Hits:3448 Новости Александр

Материлы по изучению CCNA Routing and Switching   Cisco Packet Tracer 6.2 for Windows Student Version   Видео материалы: ICND 1ч.   ICND 2ч.   ICND 3ч.   ICND...

Пишем программы для веба

04-12-2015 Hits:18666 Новости Александр

Пишем программы для веба Начиная писать программы для веба, многие начинающие программисты сталкиваются с такой ошибкой. Они рассматривают систему браузер-сервер, как...

Лабораторные работы

30-11-2015 Hits:6524 Новости Александр

 Лабораторные работы CCNA R&S   Теория - конечно очень нужная вещь , но без практики ни чего не запомнишь , ниже ссылки...

Добавляем звуки при наведении мыши или клике на меню

10-11-2015 Hits:16975 Новости Александр

Добавляем звуки при наведении мыши или клике на меню И так - всё просто , звук является частью дизайна и способность...

Обсуждение Virtumart 2

20-02-2015 Hits:5049 Новости Александр

 По моему мнению которое скорей всего субъективно - Virtumart 2 в отношении отображения цен сделан мягко говоря - коряво. И дабы...

www.radiobells.com #radiobells_script_hash

Флудилка

Обсуждение Joomla , Virtuemart 2 , Cisco IOS , Asterisk , PHP

  • Категории
    Категории Страница отображения списка категорий системы блогов сайта.
Добавлено : Дата: в разделе: Разные заметки

Удаленная перезагрузка фермы для майнинга

Устройство удаленной перезагрузки фермы

 

Так как это сейчас актуально  , пришлось сделать механизм для удаленной перезагрузки зависшей фермы к которому можно подключиться с любого компа в той же локальной сети (например с соседней фермы). 

Само устройство состоит из платы Wemos D1 и релейного модуля на 4 реле , хотя количество реле можно увеличить до 12 , по сути ограничение только в количестве выходов GPIO на плате Wemos.

 wemosrelay

Платы вставляються друг в друга (релейный модуль сверху Wemos) , нормально разомкнутые контакты реле подключаються к материнской плате фермы паралельно кнопке включения (PwrSw).

Выходы GPIO для такого релейного модуля будут соответствовать:

1 реле - GPIO 13

2 реле - GPIO 12

3 реле - GPIO 14

4 реле - GPIO 4

 

Вообще включать\выключать с помощью него можно все что угодно - свет,розетки,чайники,вентиляторы и т.п. в пределах 10 ампер на одно реле.

IP-адрес который получило устройство можно узнать любым сканером сети или зайдя на роутер в раздел "Клиенты DHCP" и советую сопоставить мак-адрес устройства какому нибудь ip-адресу что бы оно все время получало один и тот же айпишник.

 

Собственно сам скеч:

 

#include <ESP8266WiFi.h>

#include <ESP8266mDNS.h>

#include <ESP8266WebServer.h>

#include <WiFiClient.h>

// GPIO, куда подключено реле

int rele1 = 13;

int rele2 = 12;

int rele3 = 14;

int rele4 = 4;

bool PowerRele1  = true; //Состояние реле после подачи питания 

bool PowerRele2  = true;

bool PowerRele3  = true;

bool PowerRele4  = true;

// Имя хоста

const char* host = "REMOTE2";

// параметры вашей WiFi сети. (Те что всегда вводите на тел. и планшете)

const char* ssid = "Имя сети WiFi";

const char* password = "Пароль от сети WiFi";

ESP8266WebServer server(80);

void setup() {

  pinMode(rele1 , OUTPUT);

  digitalWrite(rele1 , PowerRele1);

  pinMode(rele2 , OUTPUT);

  digitalWrite(rele2 , PowerRele2);

  pinMode(rele3 , OUTPUT);

  digitalWrite(rele3 , PowerRele3);

  pinMode(rele4 , OUTPUT);

  digitalWrite(rele4 , PowerRele4);

 

// Подлючение к WiFi

  WiFi.mode(WIFI_AP_STA);

  WiFi.begin(ssid, password);

  if(WiFi.waitForConnectResult() == WL_CONNECTED){

// Запускаем сервер

     MDNS.begin(host);

     server.on ( "/", HTTP_handleRoot );

     server.onNotFound ( HTTP_handleRoot );

     server.begin();      

  }

}

void loop() {

  server.handleClient();

   delay(50);

}

void HTTP_handleRoot(void) {

  bool statrele1 = false;

  bool statrele2 = false;

  bool statrele3 = false;

  bool statrele4 = false;

// Реле 1

  if( server.hasArg("statrele1") ){

     if( strncmp(server.arg("statrele1").c_str(),"1",1) == 0 )

     statrele1 = true;

  }

  else {

     statrele1 = PowerRele1;

  }

// Реле 2

    if( server.hasArg("statrele2") ){

    if( strncmp(server.arg("statrele2").c_str(),"1",1) == 0 )

     statrele2 = true;

  }

  else {

     statrele2 = PowerRele2;

  }

  // Реле 3

  if( server.hasArg("statrele3") ){

     if( strncmp(server.arg("statrele3").c_str(),"1",1) == 0 )

     statrele3 = true;

  }

  else {

     statrele3 = PowerRele3;

  }

  // Реле 4

  if( server.hasArg("statrele4") ){

     if( strncmp(server.arg("statrele4").c_str(),"1",1) == 0 )

     statrele4 = true;

  }

  else {

     statrele4 = PowerRele4;

  }

 

  

// Формируем HTML страницу

  String out = "";

  out =

"<html>\

  <head>\

    <meta charset=\"utf-8\" />\

    <title>ФЕРМЫ</title>\

    <style>\

      body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\

    </style>\

  </head>\

  <body>\

";

// Для реле 1

  if( statrele1 ){

      out+="\

    <hr width=100 size=30 align=left color=red><h2><a href=\"/?statrele1=0\">Перезагрузить 1 ферму</a></h3>\

    ";

  }

  else {

      out+="\

    <hr width=100 size=30 align=left color=green><h2><a href=\"/?statrele1=1\">Перезагрузить 1 ферму</a></h3>\

    ";           

  }

  // Для реле 2

  if( statrele2 ){

      out+="\

    <hr width=100 size=30 align=left color=red><h2><a href=\"/?statrele2=0\">Перезагрузить 2 ферму</a></h3>\

    ";

  }

  else {

      out+="\

    <hr width=100 size=30 align=left color=green><h2><a href=\"/?statrele2=1\">Перезагрузить 2 ферму</a></h3>\

    ";           

  }

// Для реле 3

  if( statrele3 ){

      out+="\

    <hr width=100 size=30 align=left color=red><h2><a href=\"/?statrele3=0\">Перезагрузить 3 ферму</a></h3>\

    ";

  }

  else {

      out+="\

    <hr width=100 size=30 align=left color=green><h2><a href=\"/?statrele3=1\">Перезагрузить 3 ферму</a></h3>\

    ";           

  } 

  // Для реле 4

  if( statrele4 ){

      out+="\

    <hr width=100 size=30 align=left color=red><h2><a href=\"/?statrele4=0\">Перезагрузить 4 ферму</a></h3>\

    ";

  }

  else {

      out+="\

    <hr width=100 size=30 align=left color=green><h2><a href=\"/?statrele4=1\">Перезагрузить 4 ферму</a></h3>\

    ";           

  }

 

   // Общее

   out+= "\

  </body>\

</html>";

   server.send ( 200, "text/html", out );

     

      // Для реле 1

   if( statrele1 != PowerRele1 ){

      PowerRele1 = statrele1;

      digitalWrite(rele1 , PowerRele1);

     

   }

         // Для реле 2

    if( statrele2 != PowerRele2 ){

      PowerRele2 = statrele2;

      digitalWrite(rele2 , PowerRele2);

     

   }

    // Для реле 3

   if( statrele3 != PowerRele3 ){

      PowerRele3 = statrele3;

      digitalWrite(rele3 , PowerRele3);

     

   }

    // Для реле 4

   if( statrele4 != PowerRele4 ){

      PowerRele4 = statrele4;

      digitalWrite(rele4 , PowerRele4);

     

   }

  

         // Скобку оставить!

}

Поставьте свой рейтинг этой записи блога:
0

Комментарии

  • Никаких комментариев пока не было создано. Будьте первым комментатором.

Оставить комментарий

Гость
Гость Воскресенье, 22 Октябрь 2017