Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows)

Форум самогонщиков Автоматика
1 ... 4 5 6 7 8 9 7
Petrovich69 Кандидат наук Тверь 451 254
Отв.120  25 Мая 17, 14:16
makh, по RDP пишут, что Клиенты существуют практически для всех версий Windows (включая Windows CE, Phone и Mobile), Linux, FreeBSD, Mac OS X, iOS, Android, Symbian. Меня в качестве дальнейшего развития iOS интересует, но с использованием готового мобильного клиента. В теме msg31 описывался вариант использования свободной софтины для Умного дома - вот ее бы к hdctl как мобильный клиент подключить и будет счастие!
capsolo Профессор Зелик 5.3K 1.6K
Отв.121  25 Мая 17, 14:48, через 32 мин
Petrovich69, пока можешь пользоваться
https://itunes.apple.com/...d692035811?mt=8
Petrovich69 Кандидат наук Тверь 451 254
Отв.122  25 Мая 17, 15:02, через 14 мин
capsolo, ну да, как вариант для начала. Осталось только допилить внешее управление Ардуиной из hdctl. Кстати мопед не мой - это стандартный скетч Доступной автоматики. Пришло время под себя перепиливать и затачивать.
makh Профессор Sаmara 2.1K 1.1K
Отв.123  25 Мая 17, 20:36
Оно конечно разного сделать можно, тем более при наличии открытого протокола. Только как-то слабо представляю себе зачем. В своем контексте не вижу применения такому функционалу. Передавать управление на подключенное радиоканалом устройство религия не позволит. А удаленно посмотреть цифирьки с картинками можно и попроще как-нить придумать.
Petrovich69 Кандидат наук Тверь 451 254
Отв.124  25 Мая 17, 20:46, через 10 мин
Управлять непосредственно процессом будет скетч в Ардуине автономно. На пк- дистанционный мониторинг, логгирование и визуализация процессов с возможностью ограниченного управления и аварийного останова + сервер для связи с мобильным приложением, чтобы не перегружать скетч. В мобильном приложении мониторинг основных параметров, сигнализация и аварийный останов.
makh Профессор Sаmara 2.1K 1.1K
Отв.125  25 Мая 17, 22:01
Ну не знаю. Непонятен мне профит этого покемонства.

Вобщем-то, TCP-сервер туда прикрутить можно просто и быстро. А реализацией протоколов поверх TCP пусть занимаются те, кому это надо. Имеющимися средствами, коих более чем достаточно. Записать в таком виде в 2do-список с минимальной приоритой?
Petrovich69 Кандидат наук Тверь 451 254
Отв.126  25 Мая 17, 22:41, через 40 мин
в 2do-список с минимальной приоритойmakh, 25 Мая 17, 22:01
Нужно! И приориту повысить! Улыбающийся
сообщение удалено
capsolo Профессор Зелик 5.3K 1.6K
Отв.127  30 Мая 17, 10:25
makh, я чет по-другому вышел из ситуации..Взял esp8266 за 300 рублев и поднял на ней телнет-уарт проксю. Ну и к ней девайсину по серийнику прикрутил.  Теперь отладочную инфу вижу со всех подключенных уартов и имею возможность в любой из них ченить заслать. Теоретически думаю и хдцтл если на этот телнет подрубить должно все работать...
makh Профессор Sаmara 2.1K 1.1K
Отв.128  30 Мая 17, 13:04
capsolo, как-то я мутно изложил, проблема не с отладочной инфой, а с необходимостью рассчитать какие-то значения из данных, передаваемых ардуиной, и нарисовать их, таким образом, чтоб не озадачивать ардуину этими рассчетами и васче никак ее не трогать. Т.е. запускаю сервер, произвожу рассчеты, и выдаю полученные данные в виде такого же отчета, как передает ардуинка. Потом создаю новый коннекшн с оным сервером и получаю расчетные данные в рисовательном виде.

Поиграться можно и без ардуинки:

server-test.png
Server-test. hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.

capsolo Профессор Зелик 5.3K 1.6K
Отв.129  30 Мая 17, 13:34, через 30 мин
makh, теперь понял. Типа прокладка между дуней и конечным терминалом, которая вытворяет невообразимые вещи с данными с дуни и сует их конечному терминалу.
makh Профессор Sаmara 2.1K 1.1K
Отв.130  30 Мая 17, 15:29
Именно так. Причем конечный терминал может быть удаленный.

В мобильном приложении мониторинг основных параметров, сигнализация и аварийный остановPetrovich69, 25 Мая 17, 20:46

Petrovich69, так напиши http-сервер и поимей вышеописанный функционал на любой платформе в бровзере. Вытащить в песочницу битмапы графиков? .)
Petrovich69 Кандидат наук Тверь 451 254
Отв.131  30 Мая 17, 15:40, через 11 мин
Вытащить в песочницу битмапы графиков?makh, 30 Мая 17, 15:29
Желательно с примером.. В ближайшее время буду прикручивать ардуину по ТСР, а дальше с сервером и мобильным приложением сын обещал помочь разобраться - он радио- и интернет-станции удаленно поднимает и админит. Сказал что фигня вопрос, все получится!
makh Профессор Sаmara 2.1K 1.1K
Отв.132  01 Июня 17, 15:29
Пестня об экшнскрипте #2
дисплей-объекты просто некуда присунуть, напримерmakh, 27 Марта 17, 20:39
Это я как-то скоропостижно сказанул. Простите кто может. На самом деле, очень даже есть куда.

В нашей песочнице самый старенький и простенький API флэшплеера 9-й версии. Потому-что полноценный SDK+JRE весит гиг, если не больше, паковать с out-of-the-box софтиной нереально. Тем не менее, если базового функционала не хватает для реализации хотелок, есть возможность попользоваться всеми благами air фреймворка версии 4.0 -- системными окнами, процессами, sqlite, дисплей-объектами, тисипи-серверами, UDP-сокетами, видеокамерами, сетевыми стримами, и прочая и прочая. Там много. Там есть удивительных свистоперделок.

с примеромPetrovich69, 30 Мая 17, 14:40
В аттаче пример программы, которая умеет: читать-писать файлсистему; открыть системное окно, присунуть в него дисплей-объектов, дать им немножко жить своей жизнью; ну и, громко сказано, http-сервер.

На первой картинке скрин работы программы. В красных рамочках два функциональных блока, реализация которых потребует доработки песочницы, все остальное из коробки. Как сделаю -- вынесу в первое сообщение и распишу функционал на примерах. На второй картинке настройки для работы с документацией (runtime <=air-4, product none).

air-4.0.png
Air-4. hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.
air-4.0-man.png
Air-4. hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.


Но неудобно, жутко неудобно писать много букав в хоть и раскрашенном, но все же крайне примитивном текстовом редакторе. Чтобы руки не болели, надо брать специально заточенный IDE, который API знает и большую часть кода сам пишет, и расписывать событийно-объектную модель нужного уровня абстракции и портабельности уже по-серьезному. И подгружать мозги в песочницу таким же образом, как в примере из аттача.
makh Профессор Sаmara 2.1K 1.1K
Отв.133  05 Июня 17, 12:55
hdctl-0.1-patch-20170605
Итак, обещанное обновление. Исправлено несколько несущественных ошибок и добавлен новый функционал в програмной песочнице.

1. Можно пользоваться объектами из рантайма (air-4.0 framework), что радикально расширяет возможности программы.
2. Добавлена директива препроцессора source-path, позволяющая подключать пакеты исходников с файловой системы.
3. Добавлены опциональные пользовательские методы exit и close, вызываемые при окончании работы программы и закрытии окна консоли соответственно.

Таблетка тут -- http://hdc.hol.es/hdctl/hdctl-0.1-patch-20170605.zip, далее последует несколько постов с примерами использования всех этих благ по мотивам выше по ветке озвученных хотелок.
makh Профессор Sаmara 2.1K 1.1K
Отв.134  05 Июня 17, 13:19, через 25 мин
Програмный доступ к графикам
Предположим, что надо выдавать график по HTTP в бровзер, например.

Первым делом для этого надо создать конфигурацию графика, обычным образом, Graph->Create и т.д., настроив там список отображаемых источников данных и другие визуальные дела. Поскольку данный функционал есть в рантайме, берем оттуда готовое и пользуемся:
import flash.utils.*;

var rrdgraph_cn_async:Function;
/**
* rrdgraph_cn_async (conf_name:String, start:String, end:String, width:uint, height:uint, output_handler:Function, ...args) : void
*
* @param conf_name          имя [конфигурации] графика, из спиcка Graphs
* @param start              начало отображаемого интервала времени, подробно о синтаксе в мануалах RRDTool
* @param end                конец отображаемого интервала времени
* @param width              ширина в пикселях
* @param height             высота в пикселях
* @param output_handler     обработчик результата, сюда выдаст бинарик PNG или ошибку
* @param ...args            опциональные аргументы для передачи в output_handler
*/

function init()
{
 rrdgraph_cn_async = getDefinition('rrdtool.util::rrdgraph_cn_async') as Function;
 try {
   // построить график из конфигурации G1, за последних пять минут, 500*300 пикселей,
   // бинарик выдать в методу graph_output, туда же вторым аргументом выдать время начала операции
   rrdgraph_cn_async('G1', -360, -1, 500, 300, graph_output, getTimer());
 } catch (error) {
   if (error.errorID == 1) print('нет такой конфигурации графика');
   if (error.errorID == 2) print('нет ни одного DS [с включенным логом] в конфигурации графика');
 }
 return 0;
}

private function graph_output(out, time)
{
 print('rrdgraph_cn_async done in ' + (getTimer() - time) + ' ms.');
 if (out is ByteArray) // картинка PNG бинарик
 {
   print('size: ' + out.length + ' bytes.');
   print('head: ' + String(out).substr(0, 4));
   // далее делаем с бинариком что было задумано...
 }
 else print(out); // out is Error (rrdgraph stderror output)
}
makh Профессор Sаmara 2.1K 1.1K
Отв.135  05 Июня 17, 14:03, через 45 мин
Системные окошки и дисплей-объекты
С помощью объектов NativeWindow и NativeWindowInitOptions можно открыть системное окно и насовать в него всевозможной графики.
import flash.display.*;
import flash.events.*;
import flash.text.*;

var window, textfield, counter = 100, exit_flag;

function init()
{
 // получаем нужные классы из рантайма
 var NativeWindow = getDefinition('flash.display::NativeWindow');
 var NativeWindowInitOptions = getDefinition('flash.display::NativeWindowInitOptions');

 // создаем инстанцию окна
 window = new NativeWindow(new NativeWindowInitOptions);

 // подключаем обработчик события закрытия окна оператором
 window.addEventListener(Event.CLOSE, window_close);

 // задаем параметры окна
 window.width = 400;
 window.height = 200;
 window.title = 'Окошко';

 // задаем параметры корневого дисплей-объекта окна
 window.stage.align = StageAlign.TOP_LEFT;
 window.stage.scaleMode = StageScaleMode.NO_SCALE;

 // добавляем туда несколько цветных прямоугольников
 window.stage.addChild(new Bitmap(new BitmapData(100, 100, true, 0x8000ff00)));  
 window.stage.addChild(new Bitmap(new BitmapData(100, 100, true, 0x80ffff00))).x = 25;
 window.stage.addChild(new Bitmap(new BitmapData(200, 100, true, 0x8000ffff))).x = 75;

 // создаем, конфигурируем, и добавляем туда же динамическое текстовое поле
 textfield = new TextField;
 textfield.autoSize = TextFieldAutoSize.LEFT;
 textfield.defaultTextFormat = new TextFormat('_typewriter', 100);
 window.stage.addChild(textfield);

 window.activate();   // открываем окно

 return loop;
}

function loop ()
{
 textfield.text = --counter;
 return !exit_flag && counter ? loop : 0;
}

function window_close (event)
{
 exit_flag = true; // преждевременным закрытием окна завершим работу программы
}

// можно было бы закрыть окно сразу после завершения программы (exit),
// но мы закроем его вместе с консолью (close), если не было закрыто ранее оператором
//function exit (code)
//{
//  window.close();
//}
function close ()
{
 window.removeEventListener(Event.CLOSE, window_close);
 window.close();
}
makh Профессор Sаmara 2.1K 1.1K
Отв.136  05 Июня 17, 14:55, через 52 мин
Виртуальный контроллер
При необходимости поиметь в пригодном для рисования графиков виде некие рассчетные данные, например подкорректированные показания градусников, дельты, и т.д., можно применить следующий подход: написать тисипи-сервер, который будет генерировать стандартные отчеты с нужными данными, и стандартным же образом к нему подключиться. Чтоб не возиться с подключением градусников, для примера просто генерируем три ничего не значащих источника данных:
import flash.events.*;

var server, port = 5555, clients = [];

function init()
{
 // получаем класс из рантайма
 var ServerSocket = getDefinition('flash.net::ServerSocket');

 // создаем и запускаем сервера
 server = new ServerSocket;
 server.bind(port);
 server.listen();
 server.addEventListener(Event.CONNECT, client_connect);

 print(server + ' listening for incoming connections on TCP port ' + port);

 heartbeat = 1000;
 return loop;
}
function loop ()
{
 // генерируем данные
 var ts = new Date().time / 10000;
 var s = Math.sin(ts), c = Math.cos(ts), t = Math.tan(s - c);
 // посылаем отчет всем подключенным клиентам
 report (s.toFixed(3), c.toFixed(3), t.toFixed(3));

 return loop; // loop forever
}

function exit ()
{
 // отключаем всех клиентов
 for each (var client in clients) client.close();
 try {
   server.close(); // и останавливаем сервер
 } catch (error) {
   print(error);
 }
}

private function report (sin, cos, tan)
{
 for each (var client in clients)
 {
   client.writeUTFBytes('{SIN<' + sin + ' COS<' + cos + ' TAN<' + tan + '}');
   client.flush();
 }
}

private function client_connect (event)
{
 var client = event.socket;
 client.addEventListener(Event.CLOSE, client_close);
 clients.push(client);
 print('open client connection ' + client_info(client));
}

private function client_close (event)
{
 var client = clients.splice(clients.indexOf(event.target), 1)[0];
 client.removeEventListener(Event.CLOSE, client_close);
 print('close client connection ' + client_info(client));
}

private function client_info (s)
{
 return s.remoteAddress + ':' + s.remotePort + '->' + s.localAddress + ':' + s.localPort;
}

Скрин работы приведенного кода:

sine-server.png
Sine-server. hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.
Viktor61 Новичок Ростов 4 2
Отв.137  07 Июня 17, 16:51
Добрый день. Я делал систему мониторинга знакомому на русской SCADA системе, в качестве контроллера использовал ардуино нано, 3 датчики ds и один датчик давления аналоговый,  связь с компьютером осуществлял по MODBUS, скаду использовал симплайт она на 16 тегов бесплатная. Плюсы: пишутся архивы (можно вывести за любой период времени как графики так и протокол), минимальная цена, видеокадры можно нарисовать любые, на ютубе есть видео (не знаю можно ли добавлять сюда ссылку). Мне кажется немного удобней будет и прикольно почти промышленный объект, картинку вроде загрузил     
Безымянный.png
Безымянный.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.
makh Профессор Sаmara 2.1K 1.1K
Отв.138  07 Июня 17, 17:59
почти промышленный объектViktor61, 07 Июня 17, 16:51
Каждой задаче в своем контексте свое оптимальное решение. Тут попроще, и совсем бесплатно. Основная задача все-таки разработка и эксперименты. Чтоб на коленке из говна и палок, и быстро, без гимора с пользовательскими интерфейсами и неведомыми среднестатистическому пользователю промышленными IO, железом, и драйверами. При этом также пишутся архивы и строятся графики за любой период времени, а API также позволяет рисовать и анимировать нарисованное, пестни петь, сетью на любом уровне пользоваться, и т.д., вплоть до видеостримов, digital sound processing, и подгрузки своих шейдеров в графическое железо.
Кайл Брахловский Бакалавр Москва 53 4
Отв.139  07 Июня 17, 18:20, через 22 мин
Чтоб на коленке из говна и палок, и быстро, без гимора с пользовательскими интерфейсами и неведомыми среднестатистическому пользователю промышленными IO, железом, и драйверами.makh, 07 Июня 17, 17:59
Вот эти листы с программным кодом Вы называете безгиморным говном с палками, да 99,99% самогонщиков под страхом смертной казни там ничего не разберут, причём никогда в жизни. Промышленный интерфейс заточен под то, чтобы технолог после ПТУ мог внедрить. А Ваш код двумя высшими и аспирантурой попахивает.
Это софт, теперь железо, ваши ардуины и прочие нано-говно платы, изготовлены с использованием бытовых микросхем работоспособность от 0 С, а страна у нас холодная кое-где в июне ещё на лыжах катаются. Вынесет такое говнопалочное уст-во самогонщик Нижнего-Тагила в гараж даже в +5, разумеется если ему кто-то вумный компильнёт этот аццкий код в экзешник, а оно раз и дуба даст. Тогда как промышленные микрухи от -10 чувствуют себя как чукчи в холодилнике (греются они там;) поскольку рассчитаны на работу от -20С.
 Теперь про IO - фикивознает что Вы имели ввиду, если адреса, то от 1 до 255 сложновато конечно пальцев не хватает но осилить можно. Драйвера, нет там таких, упразднили их в 1979 году чтобы мозг рабочему народу не засерать, вместо них
те самые адреса с 1 по 255, а может 256 не суть важно больше пяти устройств в нашем деле и не надо. Так что все Ваши аргументы против я бы сказал эфимерны, от пиетета к слову промышленный Подмигивающий
 Вот, профессор в топку ваши ардуины, понимаю ИМХО ПТУ-шника профессоров не колышат, но всё таки зачем Вы себя мучаете как при старом режиме...