Опишу один из способов как можно мониторить «ферму» и удалённо перезагружать в случае если она зависла, «отвалилась» видеокарта или программа для майнинга, пропал интернет, завис роутер.
Преимущества GSM розетки:
- Автоматическая перезагрузка «фермы», даже если она «жестко» зависла.
- Вы будите проинформированы о перезагрузке фермы. Даже если у Вас в этот момент отсутствует интернет на мобильном. Вам приходит обыкновенная СМС.
- Google Drive — всегда работает в «облаке», без вашего участия, проверенно более 5 лет.
- Цена вопроса ~ 800 грн. + 1 грн в год. (за любой тариф от Киевстара)
Недостатки других систем по мониторингу:
- Программный WATCHDOG — кто бы что не говорил, но… зависает!
- USB WATCHDOG — не отсылает оповещение, бывает не перезагружает если по какой-то причине закрылся «майнер».
- Wi-Fi умные розетки автоматически не перезагрузят систему. Необходимо на них заходить и в ручную отключать и включать. При условии что у неё не «отвалился» интернет и не завис роутер.
Вся идея мониторинга работает если Вы майните на пуле и пул отдаёт статистику работы вашей «фермы».
- Регистрируемся в Google.com или используем готовую учётную запись @gmail.com. Бесплатно!
- Регистрируемся на clickatell.com — это для отправки СМС на Вашу розетку. Бесплатно!
- Покупаем GSM розетку (~ 800 грн.) Хорошо зарекомендовали себя «GSM Розетка SOKOL» . Достаточно 1й версии SOKOL-GS1. Или другую доступную GSM розетку, которая работает через СМС команды.
Смысл работы мониторинга:
Скрипт работает, круглосуточно, в Google Drive и каждую минуту опрашивает Ваш пул. Как только скрипт получит Вашу скорость равную нулю H/sec, сразу вышлет СМС на розетку для перезагрузки «фермы». Всё работает без вашего участия.
Все СМС Бесплатны!
Обслуживание тарифного плана для GSM розетки — 1 грн. в год. Самый дешевый для Украины, это Киевстар, достаточно любой тариф пополнять на 1 грн. в год и Ваш номер будет сохранён. Этого достаточно для приёма СМС. Розетка не задействована для отправки СМС и исходящих звонков. Но это можно настроить и тариф должен это поддерживать, но данная функция совсем не обязательна.
Настройка Скрипта для Гугл диска
На примере криптовалюты KARBO (карбованец), с алгоритмом CryptoNight и пула http://krb.sberex.com
Заходим на drive.google.com и создаём новый скрипт Google Apps Script
Прописываем данный код
Текст скрипта. Скачать текст скрипта.
function response(n) {
// Меняем на свой кошелек
var wallet = 'KcdYnF6rxxKEw7pvFWqNCh3yhpFD6sfvtCuTakxpWZSQCs3sTrvBLfK4TLMxZnRdMgdcK3oPxuoSiPE4KwtLQkq4AnPXHZx';
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=iY3rdSUbRj6b4E35kXjS6g==&to=380981075040&content=' + m);
}
function send_sms_mining_off() { // Отключает розетку. Меняем на телефон для розетки
try {
var html = UrlFetchApp.fetch('https://platform.clickatell.com/messages/http/send?apiKey=iY3rdSUbRj6b4E35kXjS6g==&to=3806610750406&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=iY3rdSUbRj6b4E35kXjS6g==&to=380661075040&content=%231111LOAD1');
}