makh, по RDP пишут, что Клиенты существуют практически для всех версий Windows (включая Windows CE, Phone и Mobile), Linux, FreeBSD, Mac OS X, iOS, Android, Symbian. Меня в качестве дальнейшего развития iOS интересует, но с использованием готового мобильного клиента. В теме msg31 описывался вариант использования свободной софтины для Умного дома - вот ее бы к hdctl как мобильный клиент подключить и будет счастие!
capsolo, ну да, как вариант для начала. Осталось только допилить внешее управление Ардуиной из hdctl. Кстати мопед не мой - это стандартный скетч Доступной автоматики. Пришло время под себя перепиливать и затачивать.
makh
Профессор
Sаmara
2.1K 1K
Отв.123 25 Мая 17, 20:36
Оно конечно разного сделать можно, тем более при наличии открытого протокола. Только как-то слабо представляю себе зачем. В своем контексте не вижу применения такому функционалу. Передавать управление на подключенное радиоканалом устройство религия не позволит. А удаленно посмотреть цифирьки с картинками можно и попроще как-нить придумать.
Petrovich69
Кандидат наук
Тверь
451 254
Отв.124 25 Мая 17, 20:46 (через 10 мин)
Управлять непосредственно процессом будет скетч в Ардуине автономно. На пк- дистанционный мониторинг, логгирование и визуализация процессов с возможностью ограниченного управления и аварийного останова + сервер для связи с мобильным приложением, чтобы не перегружать скетч. В мобильном приложении мониторинг основных параметров, сигнализация и аварийный останов.
makh
Профессор
Sаmara
2.1K 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 1K
Отв.128 30 Мая 17, 13:04
capsolo, как-то я мутно изложил, проблема не с отладочной инфой, а с необходимостью рассчитать какие-то значения из данных, передаваемых ардуиной, и нарисовать их, таким образом, чтоб не озадачивать ардуину этими рассчетами и васче никак ее не трогать. Т.е. запускаю сервер, произвожу рассчеты, и выдаю полученные данные в виде такого же отчета, как передает ардуинка. Потом создаю новый коннекшн с оным сервером и получаю расчетные данные в рисовательном виде.
Поиграться можно и без ардуинки:
Server-test. hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.
capsolo
Профессор
Зелик
5.3K 1.6K
Отв.129 30 Мая 17, 13:34 (через 30 мин)
makh, теперь понял. Типа прокладка между дуней и конечным терминалом, которая вытворяет невообразимые вещи с данными с дуни и сует их конечному терминалу.
makh
Профессор
Sаmara
2.1K 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 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. hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.Air-4. hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.
Но неудобно, жутко неудобно писать много букав в хоть и раскрашенном, но все же крайне примитивном текстовом редакторе. Чтобы руки не болели, надо брать специально заточенный IDE, который API знает и большую часть кода сам пишет, и расписывать событийно-объектную модель нужного уровня абстракции и портабельности уже по-серьезному. И подгружать мозги в песочницу таким же образом, как в примере из аттача.
Итак, обещанное обновление. Исправлено несколько несущественных ошибок и добавлен новый функционал в програмной песочнице.
1. Можно пользоваться объектами из рантайма (air-4.0 framework), что радикально расширяет возможности программы. 2. Добавлена директива препроцессора source-path, позволяющая подключать пакеты исходников с файловой системы. 3. Добавлены опциональные пользовательские методы exit и close, вызываемые при окончании работы программы и закрытии окна консоли соответственно.
Предположим, что надо выдавать график по 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 1K
Отв.135 05 Июня 17, 14:03 (через 45 мин)
Системные окошки и дисплей-объекты
С помощью объектов NativeWindow и NativeWindowInitOptions можно открыть системное окно и насовать в него всевозможной графики.
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);
// создаем, конфигурируем, и добавляем туда же динамическое текстовое поле textfield = new TextField; textfield.autoSize = TextFieldAutoSize.LEFT; textfield.defaultTextFormat = new TextFormat('_typewriter', 100); window.stage.addChild(textfield);
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 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. hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.
Viktor61
Новичок
Ростов
4 2
Отв.137 07 Июня 17, 16:51
Добрый день. Я делал систему мониторинга знакомому на русской SCADA системе, в качестве контроллера использовал ардуино нано, 3 датчики ds и один датчик давления аналоговый, связь с компьютером осуществлял по MODBUS, скаду использовал симплайт она на 16 тегов бесплатная. Плюсы: пишутся архивы (можно вывести за любой период времени как графики так и протокол), минимальная цена, видеокадры можно нарисовать любые, на ютубе есть видео (не знаю можно ли добавлять сюда ссылку). Мне кажется немного удобней будет и прикольно почти промышленный объект, картинку вроде загрузил
Безымянный.png hdctl -- мониторинг, управление и автоматизация с помощью ПК (софт для Windows). Автоматика.
makh
Профессор
Sаmara
2.1K 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 не суть важно больше пяти устройств в нашем деле и не надо. Так что все Ваши аргументы против я бы сказал эфимерны, от пиетета к слову промышленный Вот, профессор в топку ваши ардуины, понимаю ИМХО ПТУ-шника профессоров не колышат, но всё таки зачем Вы себя мучаете как при старом режиме...