- PVSM.RU - https://www.pvsm.ru -
Опишу один из способов как можно мониторить «ферму» и удалённо перезагружать в случае если она зависла, «отвалилась» видеокарта или программа для майнинга, пропал интернет, завис роутер.
Преимущества GSM-розетки:
Недостатки других систем по мониторингу:

Вся идея мониторинга работает если Вы майните на пуле и пул отдаёт статистику работы вашей «фермы».
Смысл работы мониторинга:
Скрипт работает, круглосуточно, в Google Drive и каждую минуту опрашивает Ваш пул. Как только скрипт получит Вашу скорость равную нулю H/sec, сразу вышлет СМС на розетку для перезагрузки «фермы». Всё работает без вашего участия.
Все СМС Бесплатны!
На примере криптовалюты KARBO (карбованец), с алгоритмом CryptoNight и пула krb.sberex.com
Заходим на drive.google.com [3] и создаём новый скрипт Google Apps Script:

Прописываем данный код:

function response(n) {
// Меняем на свой кошелек
var wallet = 'KcdYnF6rxxKEw7pvFWqNCh3yhpFD6sfvtCuTakxpWZSQCs3sTrvBLfK4TLMxZnRd';
try {
// Адресс Вашего пула для парсинга статистики
var html = UrlFetchApp.fetch('http://home.sberex.com:7006/stats_address?address=' + wallet, {muteHttpExceptions:true});
} catch (e) {
if (n < 2)
response(++n);
else
send_sms('sberex.com+недоступен+3+раза');
return false;
}
try {
return JSON.parse(html.getContentText());
} catch (e) {
// Logger.log(response);
send_sms('error+sberex.com:+'+html.getResponseCode());
return false;
}
}
function sberex() {
var JSONresponse = response(0);
if (!JSONresponse)
return;
var dateLastShare = Utilities.formatDate(new Date(JSONresponse.stats.lastShare*1000), Session.getScriptTimeZone(), "HH:mm");
var hashrate = JSONresponse.stats.hashrate;
var cacheHashrate = CacheService.getScriptCache().get('hesh');
if (hashrate && cacheHashrate == 'undefined') {
send_sms('YES_KRB+' + dateLastShare);
CacheService.getScriptCache().put('time', 0);
}
if (!hashrate && cacheHashrate != 'undefined') {
send_sms_mining_off();
send_sms('NOT_KRB+' + dateLastShare);
// send_sms_mining('Vkl');
}
if (!hashrate && cacheHashrate == 'undefined') {
var cacheTime = CacheService.getScriptCache().get('time');
if (cacheTime) ++cacheTime;
else
cacheTime = 0;
if (cacheTime != 0 && cacheTime % 10 == 0)
send_sms('NOT_KRB+%3E' + cacheTime + 'min+' + dateLastShare);
CacheService.getScriptCache().put('time', cacheTime);
}
CacheService.getScriptCache().put('hesh', hashrate);
}
function sberex_day() {
var JSONresponse = response(0);
if (!JSONresponse) return;
var payments = JSONresponse.charts.payments;
var hashrate = JSONresponse.charts.hashrate;
var day = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "dd") - 1;
var pay = 0,
hash = 0;
for (var i = 0; i < payments.length; i++) {
if (Utilities.formatDate(new Date(payments[i][0]*1000), Session.getScriptTimeZone(), "dd") == day)
pay += payments[i][1] / 1000000000000;
}
for (var i = 0; i < hashrate.length; i++) {
hash += hashrate[i][1];
}
hash = (hash / hashrate.length).toFixed(0);
send_sms(pay + '+KRB+выплата+за+' + day + '+(~+' + hash + '+H/sec)');
}
function send_sms(m) { // для отправки смс на ваш телефон (меняем на свой тел.)
UrlFetchApp.fetch('https://platform.clickatell.com/messages/http/send?apiKey=iY3rdSUbRj6b4E356g==&to=380981075040&content=' + m);
}
function send_sms_mining_off() { // Отключает розетку. Меняем на телефон для розетки
try {
var html = UrlFetchApp.fetch('https://platform.clickatell.com/messages/http/send?apiKey=iY3rdSUbRj6b4E36g==&to=380661075040&content=%231111LOAD0');
var mesID = JSON.parse(html.getContentText()).messages[0].apiMessageId;
if (mesID)
CacheService.getScriptCache().put('mesID', mesID, 21600);
else
send_sms('Не+отправлена+СМС+для+отключения+майнинга');
} catch (e) {
send_sms_mining_off();
}
}
function doGet(e) { // Получаем ответ что розетка отключилась, и включаем её. меняем на телефон для розетки
var status = e.parameter.status;
var mesID = CacheService.getScriptCache().get('mesID');
if (e.parameter.status == 'RECEIVED_BY_RECIPIENT' && mesID == e.parameter.messageId)
UrlFetchApp.fetch('https://platform.clickatell.com/messages/http/send?apiKey=iY3rdSUbRj6b4E36g==&to=380661075040&content=%231111LOAD1');
}
В коде соответственно меняете свои данные, это кошелек, телефон и адрес пула.
Внимание! Адрес пула это не тот который Вы видите в браузере, а его необходимо найти, для этого на странице статистики нажимаем ctrl+shift+i и в появившемся окошке выбираем Network.
Находим ту часть запроса который обращается за статистикой на сервер. У каждого пула он свой, но ответы всегда приходят в стандартном JSON формате. Для Карбованца, он одинаков для любого пула. Вот этот ответ и «разбирает» скрипт на гугл диске, каждую минуту.

После того ка вы поменяли в коде данные на свои значения, его необходимо активировать и развернуть как веб приложение, для этого выберите любую функцию из скрипта и запустите её:

Нажмите «Предоставить разрешение» и выберите аккаунт:

Нажмите «Разрешить»:

Теперь разверните как «Веб-приложение», нажмите в меню «Публикация»:

Настройте как показано на скриншоте ниже:

Скопируйте текущий URL веб-приложения, в дальнейшем он пригодиться.
Теперь добавим Триггера, которые будут срабатывать каждую минуту, и раз в день с отчётом (по желанию). Выбираем такие функции и настраиваем по скриншоту:

На этом настройка скрипта окончена, приступим к СМС.
Регистрируемся на clickatell.com. Заходим в личный кабинет и добавляем два телефона. Для отчетности Ваш телефон и тот, что в розетки. Ресурс Сlickatell позволяет отправлять полностью бесплатно смс на три своих номера, которые вы зарегистрируете у них, в неограниченном количестве. Теперь настроим АПИ для рассылки смс, идём сюда [4] и настраиваем АПИ, вам будет присвоен ключ API.

На этом настройка мониторинга «фермы» окончена. вставляйте СИМ карту в GSM-розетку, включайте ферму. Можно протестировать работу розетки, запустив функцию в скрипте send_sms_mining_off(). Розетка должна отключиться и через несколько секунд включиться, при этом отправиться оповещение на Ваш телефон.
P.S. Вот уже третий месяц, не было ни одного случая, что б надо было в ручную перезагрузить, или запустить ферму!
Автор: apinetua
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/279315
Ссылки в тексте:
[1] gmail: https://geektimes.com/users/gmail/
[2] clickatell.com: https://www.clickatell.com/
[3] drive.google.com: https://drive.google.com/drive/my-drive
[4] сюда: https://portal.clickatell.com/#/integrations/sms
[5] Источник: https://geektimes.com/post/300561/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox
Нажмите здесь для печати.