|
Связь с внешним миром Modbus, RS232, RS485, Lon и другое. |
|
Опции темы | Поиск в этой теме |
03.02.2020, 12:57 | #1 |
Новичок
Регистрация: Feb 2017
Сообщения: 13
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Набросал проект для SMH4 который позволяет передавать данные из блока "mem" в "'эти ваши интернеты".
Функционал прост: Берем из "mem" и передаем на http://xxx.xxx.xxx.xxx:1324/ Получаем JSON похожий на: Код:
[ { "Name": "mem_long", "Value": "641234", "LastChange": "2020-02-07 23:37:30", "Info": { "Hint": "Коммент!!!)", "Direction": "out", "Type": "long" } }, { "Name": "mem_real", "Value": "634.3155", "LastChange": "2020-02-07 23:37:30", "Info": { "Hint": "", "Direction": "out", "Type": "real" } } ] По мере возможности буду добавлять функционал. Пожелания и предложения приветствуются. Установка: 1) бинарник размещаем в папке /projects/ 2) даем права на выполнение (chmod +x ./SMH4SHM1) 3) прописываем имя бинарника в файлы start.after и restart.before Все пункты можно выполнить (с помощью double commander) Если необходима подробная инструкция сообщайте. P.S. версия тестовая для боевого применения не рекомендуется. Кроме того если теперь есть возможность сервить файл /projects/public/index.html по адресу http://ххх.ххх.ххх.ххх:1324/index.html. Пример во вложении(необходимо в файлах в пере мест заменить "localhost" на ip контроллера). Последний раз редактировалось Arsie, 10.02.2020 в 10:55 |
03.02.2020, 13:24 | #2 |
Senior Member
Регистрация: Aug 2013
Сообщения: 3 791
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Shared memory - Web
|
03.02.2020, 13:32 | #3 |
Новичок
Регистрация: Feb 2017
Сообщения: 13
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Shared memory - Web
|
03.02.2020, 14:15 | #4 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Shared memory - Web
Скулайт-то зачем? Он уже есть в контроллере)
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
03.02.2020, 14:19 | #5 |
Новичок
Регистрация: Feb 2017
Сообщения: 13
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Shared memory - Web
|
04.02.2020, 14:05 | #6 |
Новичок
Регистрация: Dec 2016
Сообщения: 13
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Shared memory - Web
Можно скрины web интерфейса?(нет под рукой контроллера)
Исходники будут? |
05.02.2020, 18:30 | #7 | ||
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Shared memory - Web
Цитата:
Цитата:
Подтягиваются программисты на GoLang потихоньку :-) |
||
05.02.2020, 18:51 | #8 |
Сотрудник Сегнетикс
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 341
Благодарил(а): 0 раз(а)
Поблагодарили:
255 раз(а) в 251 сообщениях
|
Ответ: Shared memory - Web
Подозреваю на основе ваших примеров делалось)
__________________ Если ничто другое не помогает, прочтите, наконец, инструкцию |
05.02.2020, 19:19 | #9 | |||
Senior Member
Регистрация: Aug 2013
Сообщения: 3 791
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Shared memory - Web
Цитата:
Я вообще себя к быдлокодерам отношу, но для обозначенной задачи 100-200 килобайт выше крыши. Или автор что-то недоговаривает. Цитата:
Задачка то собрать шмемы в array и в http выплюнуть. Цитата:
|
|||
05.02.2020, 19:48 | #10 | |||
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Shared memory - Web
Цитата:
Цитата:
В конце концов, это всего лишь прототип, у которого есть важное качество -- он есть :-) Цитата:
Размер бинарника = A + B * размер исходника, где B < 1. Добавлено через 26 минут В конце концов, мой прототип шлюза SHMEM -- MQTT (этот) дал на выходе файл 6 мегабайт :-) Последний раз редактировалось Gel, 05.02.2020 в 20:02 |
|||
06.02.2020, 16:19 | #11 | ||||
Senior Member
Регистрация: Aug 2013
Сообщения: 3 791
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Shared memory - Web
Цитата:
Примерно 4 килобайта. Цитата:
Привык использовать встроенное. Цитата:
Кстати ещё и с интересными идеями импорта журналов. Цитата:
|
||||
06.02.2020, 18:44 | #12 | ||
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Shared memory - Web
Цитата:
Код:
Размер, Кб Библиотека --------------------------------- 60 php-common 10953 libc6 11 php-fpm 4338 php7.0-cli 245 libedit2 4612 php7.0-common 4357 php7.0-fpm 3983 libmagic1 2800 tzdata 127 libapparmor1 655 libpcre3 3406 libssl1.0.0 156 zlib1g 2130 libxml2 67 php7.0-json 1466 php7.0-mbstring 223 php7.0-opcache 191 ucf 63 php7.0-readline 166 nginx-common 868 nginx-light И на фоне 40 мегабайт, даже ранее выложенные 13 мегабайт смотрятся вполне неплохо :-) Цитата:
|
||
06.02.2020, 19:24 | #13 | ||
Senior Member
Регистрация: Aug 2013
Сообщения: 3 791
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Shared memory - Web
Цитата:
Ну так и к вашим бинарникам можно весь линукс притянуть. Они далеко не автономны. Указанное Вами уже используется контроллером. Цитата:
|
||
06.02.2020, 20:02 | #14 | ||
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Shared memory - Web
Цитата:
Не надо верить в сказку, что программа в 4 килобайта каким-то магическим образом может обеспечить тот же набор функций, что и программа в 13 мегабайт. За программой в 4 килобайта стоит большое дерево зависимостей, причем их набор функций заметно перевешивает набор функций специализированного бинарного файла меньшего размера, чем суммарный размер этих зависимостей. Специализированный бинарный файл со статической линковкой (который носит все нужно с собой) не зависит от внешних прикладных библиотек. А PHP-программа без наличия всего этого дерева прикладных библиотек -- просто бесполезный набор байт. Цитата:
|
||
07.02.2020, 01:17 | #15 | |||||
Senior Member
Регистрация: Aug 2013
Сообщения: 3 791
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Shared memory - Web
Весьма растяжимое понятие. Особенно когда эти библиотеки уже используются установленной системой.
Цитата:
Цитата:
Маленькая птичка по мне так лучше большого таракана. Цитата:
Цитата:
Цитата:
Копилятор под линуксом X86 знать ничего не знал об операционке целевой машинки. Так что не надо о динамической линковке. А прототип ТС использовать точно не буду. Содержит неизвестный сервер неизвестно как настроенный. Лезет в базу неизвестно зачем, а в ней все данные SMConfig-а. Да мало ли что там ещё в этих мегабайтиках прячется. |
|||||
07.02.2020, 09:36 | #16 | |||||
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Shared memory - Web
Цитата:
Используя несколько 4-килобайтовых программ вы можете попытаться сэкономить на дисковой памяти, но можете потерять в потреблении оперативной памяти и скорости работы, удобстве разворачивания и прочее. Для примера использования библиотек можно взять запускаемый файл /usr/bin/php5: Код:
root@localhost:/# ldd /usr/bin/php5 linux-vdso.so.1 (0xbec6d000) libcrypt.so.1 => /lib/arm-linux-gnueabihf/libcrypt.so.1 (0xb6f1a000) libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0xb6ef7000) libresolv.so.2 => /lib/arm-linux-gnueabihf/libresolv.so.2 (0xb6ed7000) libonig.so.2 => /usr/lib/arm-linux-gnueabihf/libonig.so.2 (0xb6e8c000) libcrypto.so.1.0.0 => /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0 (0xb6d67000) libssl.so.1.0.0 => /usr/lib/arm-linux-gnueabihf/libssl.so.1.0.0 (0xb6d1f000) libdb-5.3.so => /usr/lib/arm-linux-gnueabihf/libdb-5.3.so (0xb6bfd000) libqdbm.so.14 => /usr/lib/libqdbm.so.14 (0xb6bc6000) libbz2.so.1.0 => /lib/arm-linux-gnueabihf/libbz2.so.1.0 (0xb6baa000) libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0xb6b4e000) librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb6b38000) libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6ac3000) libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb6ab0000) libnsl.so.1 => /lib/arm-linux-gnueabihf/libnsl.so.1 (0xb6a90000) libxml2.so.2 => /usr/lib/arm-linux-gnueabihf/libxml2.so.2 (0xb69a6000) libgssapi_krb5.so.2 => /usr/lib/arm-linux-gnueabihf/libgssapi_krb5.so.2 (0xb696c000) libkrb5.so.3 => /usr/lib/arm-linux-gnueabihf/libkrb5.so.3 (0xb68d5000) libk5crypto.so.3 => /usr/lib/arm-linux-gnueabihf/libk5crypto.so.3 (0xb68a0000) libcom_err.so.2 => /lib/arm-linux-gnueabihf/libcom_err.so.2 (0xb688d000) libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb679f000) /lib/ld-linux-armhf.so.3 (0x7f64d000) libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb677c000) liblzma.so.5 => /lib/arm-linux-gnueabihf/liblzma.so.5 (0xb6753000) libkrb5support.so.0 => /usr/lib/arm-linux-gnueabihf/libkrb5support.so.0 (0xb673c000) libkeyutils.so.1 => /lib/arm-linux-gnueabihf/libkeyutils.so.1 (0xb6729000) Мой пример со шлюзом в MQTT статически слинкован и не использует внешних библиотек от слова совсем, включает полную отладочную информацию и занимает 6.3 мегабайта. Программа автора темы имеет динамическую линковку и подтягивает такие библиотеки: Код:
root@localhost:/# ldd ~/SMH4SHM1 linux-vdso.so.1 (0xbef6c000) libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb6fd6000) libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6fb2000) libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6ec4000) /lib/ld-linux-armhf.so.3 (0x7f5ec000) Цитата:
Цитата:
Цитата:
Цитата:
Берем простую программку: Код:
#include <stdio.h> int main(int argc, char **argv) { printf("Hello, world!"); return 0; } Последний раз редактировалось Gel, 07.02.2020 в 10:02 |
|||||
07.02.2020, 12:30 | #17 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Shared memory - Web
Кстати, PHP на контроллере стоит версии 5. А актуальная версия, вообще-то, 7.4.2.
И что делать в этом случае, если у меня программа для PHP 7? |
07.02.2020, 12:47 | #18 | ||||||
Senior Member
Регистрация: Aug 2013
Сообщения: 3 791
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Shared memory - Web
Цитата:
Цитата:
Тогда все варианты пойдут на помойку Цитата:
Мой 2Gi так рапортует. Код:
HTTP/1.1 200 OK Date: Fri, 07 Feb 2020 08:09:29 GMT Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.7f mod_fastcgi/2.4.6 X-Powered-By: PHP/5.3.5 Цитата:
Цитата:
Добавлено через 7 минут Цитата:
Код:
Linux SMH2Gi-iMX27 2.6.29.1-rt4 #7 PREEMPT RT Tue Jan 10 12:25:24 MSK 2017 armv5tejl |
||||||
07.02.2020, 14:03 | #19 | |||
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Shared memory - Web
Это не убеждение, это объективная реальность.
Цитата:
Цитата:
Цитата:
|
|||
07.02.2020, 17:33 | #20 |
Новичок
Регистрация: Feb 2017
Сообщения: 13
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Shared memory - Web
Всем добрый вечер!) Я топикстартер и у меня нет проблем с мегабайтами! С начал я очень переживал что мои программы такие жирные! Все время хотел уменьшить в них мегабайты но у меня не получалось... В результате у меня началась депрессия... я начал пить... мой брак трещал по швам! Но я сумел смерится с этим недостатком и понял что это часть моей индивидуальность! С тех пор я больше не думаю о своих мегабайтиках и они меня совсем не беспокоят!
Добавлено через 11 минут На самом деле для меня была новость обнаружить что подобные наработки уже существуют! И я бы с радостью ими воспользовался, но мне пришлось изобретать велосипед. Добавлено через 15 минут Программа автора темы имеет динамическую линковку и подтягивает такие библиотеки: Код:
root@localhost:/# ldd ~/SMH4SHM1 linux-vdso.so.1 (0xbef6c000) libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb6fd6000) libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6fb2000) libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6ec4000) /lib/ld-linux-armhf.so.3 (0x7f5ec000) Степень моей компетенции позволила всего лишь использовать cGo. У этого подхода есть единственный плюс. И это моя способность заставить работать его. В будущем я попробую взять за основу Ваши наработка для работы с шмемами. А еще я немного подправил свою наработку и добавил функционала немного! Как мне перезалить программу в первое сообщение? Последний раз редактировалось sinkevich, 07.02.2020 в 17:54 Причина: просто |
07.02.2020, 18:02 | #21 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 170
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Shared memory - Web
Прикрепите в новом сообщении. ТП со временем заметит и перенесёт в первое сообщение)
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
08.02.2020, 11:38 | #22 |
Senior Member
Регистрация: Nov 2017
Сообщения: 561
Благодарил(а): 3 раз(а)
Поблагодарили:
38 раз(а) в 30 сообщениях
|
Ответ: Shared memory - Web
Примеры с кодом лучше обрамлять тегами CODE, тогда они будут более читаемыми:
Код:
[ { "Name": "mem_long", "Value": "641234", "LastChange": "2020-02-07 23:37:30", "Info": { "Hint": "Коммент!!!)", "Direction": "out", "Type": "long" } }, { "Name": "mem_real", "Value": "634.3155", "LastChange": "2020-02-07 23:37:30", "Info": { "Hint": "", "Direction": "out", "Type": "real" } } ] |
Благодарность от: |
23.02.2020, 11:05 | #23 |
Новичок
Регистрация: Feb 2017
Сообщения: 13
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Shared memory - Web
Всем добрый день! Доработал немного проект!
1. Переписал работу с shmem без использования cGo. Спасибо Gel, подсмотрел в его проекте. 2. Изменения: • появилось свойство "GUID" Код:
[ { "Name": "bool_1", "Value": "1", "LastChange": "2020-02-18 04:57:02", "Info": { "GUID": "49916D355A88473C91A0256E73B56EDD", "Hint": "", "Direction": "out", "Type": "bool" } }, { "Name": "bool_0", "Value": "0", "LastChange": "2020-02-18 04:57:02", "Info": { "GUID": "32BFCF1EEB33456BA455BD35A7E64BA8", "Hint": "", "Direction": "out", "Type": "bool" } },... ] Появился API: • GET http://xxx.xxx.xxx.xxx:1324/vars вернет все переменные ◦ direction фильтр по полю «Direction» ▪ тип: массив значений ▪ пример: Код:
/vars?direction=in,out /vars?direction=in ▪ тип: массив значений ▪ пример: Код:
/vars?type=bool /vars?type=int,long ▪ тип: массив значений ▪ описание: вернет переменные входящие в список ▪ пример: Код:
/vars?valIn=23.5 /vars?valIn=1.34,43 ▪ тип: массив значений ▪ описание: вернет переменные не входящие в список ▪ пример: Код:
/vars?valNin=23.5 /vars?valNin=1.34,43 ▪ тип: значение ▪ описание: вернет переменные >, >=,<,<= значения соответственно ▪ пример: Код:
/vars?valGt=23.5 /vars?valGt=1.34&valLte=51.8 ▪ тип: значение ▪ описание: вернет переменные до и после значения соответственно ▪ пример: Код:
/vars?timeAft="2020-02-18 04:51:02"&timeBef="2020-02-18 04:57:33" ◦ тип: массив значений ◦ вернет все переменные в с соответствующим GUID ◦ пример Код:
/vars/49916D355A88473C91A0256E73B56EDD /vars/49916D355A88473C91A0256E73B56EDD,32BFCF1EEB33456BA455BD35A7E64BA8 ▪ пример: Код:
/vars/49916D355A88473C91A0256E73B56EDD,32BFCF1EEB33456BA455BD35A7E64BA8?valGt=23.5 GET Код:
http://xxx.xxx.xxx.xxx:1324/vars?timeAft="2020-02-17 04:57:02"&type=real,long&valGte=100&direction=out ◦ тип: значение ◦ устанавливает значение соответствующей переменной c "direction=in" ◦ пример: Код:
curl -X PUT -H "Content-Type: application/json" -d '{"val":"56.3"}' http://xxx.xxx.xxx.xxx:1324/vars/6CF597064EBF41649800A9AE605752A2 Последний раз редактировалось Arsie, 25.02.2020 в 21:23 Причина: Поправил пару багов) |
24.02.2020, 20:22 | #24 |
Новичок
Регистрация: Dec 2014
Сообщения: 22
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Shared memory - Web
А в планах не было сделать это OpenSource разработкой? Устроить комьюнити с гитом и пушами, делать плюшки всем миром?
|
25.02.2020, 20:11 | #25 |
Новичок
Регистрация: Feb 2017
Сообщения: 13
Благодарил(а): 2 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Shared memory - Web
|