Запилил на espruino себе мониторинг работы СРМ системы. Данные обрабатываются в json формате.
Прошивка espruino, все на JavaScript.
На будущее добавил слушатель события на кнопку flash для переключения экранов ну и сразу буду готовить корпус, шьётся эта чтука по воздуху.
Код проекта:
Код сервера:
Код пока сыроват и написан, лижбы работало, но работает! Буду ещё дорабатывать.
Прошивка espruino, все на JavaScript.
На будущее добавил слушатель события на кнопку flash для переключения экранов ну и сразу буду готовить корпус, шьётся эта чтука по воздуху.
Код проекта:
JavaScript:
var g;
var last_data = false;
function begin () {
var http = require("http");
var aktivnost_clicks = 0;
pinMode(NodeMCU.D3, 'input_pullup');
setWatch(function(e) {
console.log("Button pressed");
}, NodeMCU.D3, { repeat: true, edge: 'rising', debounce: 50 });
console.log("begin");
SPI1.setup({ sck:NodeMCU.D5, mosi:NodeMCU.D7 });
g = require("PCD8544").connect(SPI1,
NodeMCU.D2 /* RS / DC */,
NodeMCU.D8 /* CS / CE */,
NodeMCU.D1 /*RST*/, function() {
//console.log("executing with contrast " + contrast);
g.clear();
g.setContrast(0.46);
g.setRotation(2); //Flip display 180
g.drawString("Hi Esp8266",0,0);
g.drawString("Hi Esp8266",0,10);
g.drawString("Hi Esp8266",0,20);
g.drawString("Hi Esp8266",0,30);
g.drawString("Hi Esp8266",0,40);
g.drawLine(0,0,84,48);
g.drawCircle(40,40,5);
g.flip();
digitalWrite(NodeMCU.D6, 0);
wifi.connect('ss2', {password: 'lokoloko'}, function(){
print(wifi.getIP());
g.clear();
g.drawString(wifi.getIP().ip,0,20);
g.flip();
setInterval(function(){
http.get("http://61minuta.ru/admin/robot/test_esp1", function(res) {
res.on('data', function(data) {
data = JSON.parse(data);
if(last_data == false){
last_data = data;
print("nachalno");
}
g.clear();
//g.setFont6x12();
g.drawString('Clicks '+data.Clicks,0,0);
if(data.Clicks != last_data.Clicks){
if(aktivnost_clicks < 80)
aktivnost_clicks += 4 * (data.Clicks - last_data.Clicks);
}
g.drawLine(0,7, aktivnost_clicks,7);
g.drawString('Zayavok '+data.Zayavki,0,10);
if(data.Zayavki != last_data.Zayavki){
g.drawLine(0,17, 84,17);
}
g.drawString('CPU '+data.cpu+' %',0,20);
g.drawLine(0,27, data.cpu/84*100,27);
g.flip();
if(aktivnost_clicks > 1)
aktivnost_clicks -= 1;
last_data = data;
console.log(data);
});
res.on('close', function(data) {
console.log("Connection closed");
});
});
}, 4000);
});
console.log("Executed");
});
var wifi = require('Wifi');
}
E.on("init", begin);
save();
PHP:
$data = array(
'Clicks' => 22,
'Zayavki' => 33,
'cpu' => 'Error'
);
//проверяем возможность чтения виртуальной директории
if (@is_readable('/proc/stat')){
//делаем первый замер
$file_first = file("/proc/stat");
//определяем значения состояний (описаны выше)
$tmp_first = explode(" ",$file_first[0]);
$cpu_user_first = $tmp_first[2];
$cpu_nice_first = $tmp_first[3];
$cpu_sys_first = $tmp_first[4];
$cpu_idle_first = $tmp_first[5];
$cpu_io_first = $tmp_first[6];
sleep(1);//промежуток до второго замера
//делаем второй замер
$file_second = file("/proc/stat");
$tmp_second = explode(" ",$file_second[0]);
$cpu_user_second= $tmp_second[2];
$cpu_nice_second= $tmp_second[3];
$cpu_sys_second = $tmp_second[4];
$cpu_idle_second= $tmp_second[5];
$cpu_io_second = $tmp_second[6];
//определяем разницу использованного процессорного времени
$diff_used = ($cpu_user_second-$cpu_user_first)+($cpu_nice_second-$cpu_nice_first)+($cpu_sys_second-$cpu_sys_first)+($cpu_io_second-$cpu_io_first);
//определяем разницу общего процессорного времени
$diff_total = ($cpu_user_second-$cpu_user_first)+(
$cpu_nice_second-$cpu_nice_first)+($cpu_sys_second-$cpu_sys_first)+($cpu_io_second-$cpu_io_first)+($cpu_idle_second-$cpu_idle_first);
//определение загрузки cpu
$cpu = round($diff_used/$diff_total, 2)*100;
$data['cpu'] = $cpu;
}
$str_sjon = json_encode($data);
$this->output->set_output($str_sjon);
Последнее редактирование: