• Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal

Вся активность

Этот поток обновляется автоматически   

  1. Вчера
  2. Пока, к сожалению, никакой информации нет.
  3. На каком чипе и какая цена? Из за высокой стоимости док станций, получается очень дорогое решение. Омега2 и повердок дороже одноплатника оранж-пи-3g-iot с интегрированным 3g модемом.
  4. Последняя неделя
  5. Огонь!!!!!!
  6. Всем привет! Onion анонсировал новую версию одноплатного компьютера Omega2 - Omega2 Pro! Новый одноплатник будет содержать 8 Гб внутреннего хранилища, 512 Мб оперативной памяти, а также инструмент для управления батареей и USB терминал. С нетерпением ждём новостей!
  7. В то время как сама Omega2 представляет собой полноценный компьютер с памятью, хранилищем и операционной системой, зачастую для взаимодействий с ним требуется дополнительный компьютер, будь то доступ к командной строке или OnionOS. Для выполнения небольших одноразовых действий это вполне нормально, но если вы решите повторить алгоритм действий сразу для нескольких Omega2 (например, единовременное подключение к WiFi), то процесс обещает быть утомительным. Благодаря новым возможностям автоматического запуска USB-накопителя на Omega2 можно решить эту проблему. Если USB-накопитель содержит правильно настроенный сценарий автоматического запуска, Omega2 автоматически выполнит его сразу после подключения накопителя. По сути автозапуск через USB позволяет не использовать компьютер для компиляции определенного кода или скрипта, что повышает гибкость разработки и значительно экономит ваше время. Плюсом данного метода является ещё и то, что USB накопитель сохраняет свои обычные функции и может быть использован по своему стандартному назначению, как и прежде. Рассмотрим подробнее как это работает. Что вам понадобится: USB-накопитель Omega2 Док-станция расширения Расширение OLED дисплея Автозапуск через USB поддерживается на Omega2, начиная с версии v0.2.1 b199 и выше. Чтобы перейти на новейшую прошивку, подключитесь к командной строке и выполните следующую команду: Предупреждение. Когда выполняется обновление, сохраняются только файлы из папок /root и /etc. До обновления создайте резервную копию ваших файлов на Omega2, если вы не хотите потерять какие-либо данные. После обновления ваша Омега будет оборудована для работы с USB-накопителями, настроенными для автоматического запуска! Настройка USB-накопителя для автоматического запуска Чтобы настроить USB-накопитель для автоматического запуска, вам просто нужно создать и заполнить два файла на диске: файл учетных данных и файл скрипта автоматического запуска . Файл учетных данных Файл учетных данных является механизмом безопасности, гарантирующим, что только авторизованные пользователи могут использовать автоматический запуск USB (задумка в том, чтобы посторонние не могли загружать автозапуском свои скрипты). Файл учетных данных должен быть назван auth.txt и должен находиться в корневом каталоге USB-накопителя. Он должен содержать имя пользователя и пароль для устройства Omega2, с которым будет использоваться USB-накопитель. Для Omega2 с учетными данными по умолчанию, в которых указано имя пользователя “root” и пароль “onioneer”, файл будет выглядеть так: Это все! Если файл учетных данных отсутствует или содержит неправильный пароль - сценарий автоматического запуска не будет запущен! Скрипт автозапуска Скрипт автоматического запуска - это сценарий, который будет автоматически выполняться при подключении USB-накопителя. Скрипт автозапуска должен быть назван autorun.sh и должен находиться в корневом каталоге USB-накопителя. Что касается содержимого скрипта, то это зависит от вас! Поскольку сценарий автоматического запуска находится на USB-накопителе, то вы можете иметь несколько USB-накопителей с разными сценариями, и затем запускать их в любой последовательности. Если сценарий автоматического запуска не работает, то проблема может быть в следующем: Файл учетных данных отсутствует или неправильно указан Файл учетных данных содержит неверные учетные данные Скрипт автоматического запуска отсутствует или неправильно указан Сценарий автозапуска имеет синтаксическую ошибку Автозапуск в действии Когда USB-накопитель настроен для автоматического запуска, подключите его к USB-порту Omega USB, а Омега сделает всё сама. Когда Omega2 обнаруживает наличие сценария автоматического запуска, она начнет мигать светодиодом. Когда скрипт автозапуска полностью загрузится, светодиод вернется к включению. Вот autorun.sh код из приведенного выше примера: #!/bin/sh echo "_ _ _ _ _ " > /dev/ttyS0 echo "| | | | ___| | | ___ | | " > /dev/ttyS0 echo "| |_| |/ _ \ | |/ _ \| | " > /dev/ttyS0 echo "| _ | __/ | | (_) |_| " > /dev/ttyS0 echo "|_| |_|\___|_|_|\___/(_)_ _ _ _ " > /dev/ttyS0 echo "| | | / ___|| __ ) / \ _ _| |_ ___ _ __ _ _ _ __ | | |" > /dev/ttyS0 echo "| | | \___ \| _ \ / _ \| | | | __/ _ \| '__| | | | '_ \| | |" > /dev/ttyS0 echo "| |_| |___) | |_) | / ___ \ |_| | || (_) | | | |_| | | | |_|_|" > /dev/ttyS0 echo "\___/|____/|____/ /_/ \_\__,_|\__\___/|_| \__,_|_| |_(_|_)" > /dev/ttyS0 echo "" > /dev/ttyS0 oled-exp -i write "`date`\n\nHello!\nUSB Autorun!!" Взять его вы также можете на GitHub Также не забудьте вписать свои учетные данные Omega2 в файл auth.txt . Применение автозапуска в ваших проектах Несколько идей о том, как вы можете использовать автозапуск USB для автоматизации взаимодействия с вашими Omega2: Настройка пула Omega для подключения к сети Wi-Fi, а затем установка определенного набора пакетов; Использование в роли триггера для запуска программы или скрипта; Настройка Omega для запуска конкретной программы - например, установка Python , клонирование Git-repo, а затем настройка Омеги для запуска программы из repo при запуске; Передача показаний с датчика, фотографий или определенных данных из файловой системы Omega2 на USB-накопитель; Всем спасибо за внимание и удачной компиляции
  8. Ранее
  9. Привет! Кто где закупает омегу, ардуино, транзисторы, резисторы и прочие полезности? Какой магаз намба ван?))
  10. Забавно звучит, правда? Но, я тут ни при чём... они первые начали
  11. как команда LEDE выпустила релиз OpenWrt 18.06? (первый стабильный после слияния OpenWrt/LEDE) А что так навали? После LEDE 17.01 назвали бы LEDE 18.06
  12. Нет, конечно! Делал. Просто, уже стоял в дверном проеме в опочивальню Морфея, поэтому, очередной раз сделав комбинацию махинаций, не запомнил последовательность. Делал именно по вашей инструкции. Сегодня разобрабрался. Достаточно таких действий: 1. git clone https://github.com/OnionIoT/source.git <dist folder> 2. ./scripts/feeds update -a 3. ./scripts/feeds install wifi-warp-core 4. git checkout .config 5. make menuconfig Не с проекта, а с сайта. Забыл поставить кавычки к слову "родной". Я имел в виду, что что там выложены командой LEDE предварительно собранные образы для разных архитектур. В частности, вот бинарники под нашу архитектуру https://downloads.openwrt.org/releases/18.06.1/targets/ramips/mt76x8/, а вот конкретно под платформу Омега2+ https://downloads.openwrt.org/releases/18.06.1/targets/ramips/mt76x8/openwrt-18.06.1-ramips-mt76x8-omega2p-squashfs-sysupgrade.bin Как раз таки удивляет не его отсутствие, а то, что WiFi омеги нормально работает с опенсорсным драйвером. С год назад было много жалоб на то, что WiFi нестабилен, после чего в марте сего года появилась "заплатка" в виде пакета wifi-warp-core.
  13. Вы ничего не делали, а пакет сам вдруг появился? Напоминает “Восстание машин” Решил не терять время на долгую сборку, просто повторяю опыт по конфигурации клонирую реп git clone https://github.com/OnionIoT/source.git omega2 захожу в директорию cd omega2 сразу обновляю индексы у фидов ./scripts/feeds update -a устанавливаю пакет wifi-warp-core ./scripts/feeds install wifi-warp-core зная, что пакет wifi-warp-core не виден в make menuconfig откатываю локальные изменения сначала смотрю статус git status On branch lede-17.01 Your branch is up-to-date with 'origin/lede-17.01'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: .config no changes added to commit (use "git add" and/or "git commit -a") да, действительно, есть изменения, откатываю их git checkout . ещё раз смотрю статус git status On branch lede-17.01 Your branch is up-to-date with 'origin/lede-17.01'. nothing to commit, working directory clean выполняю make menuconfig и вижу пакет Onion->WiFi-><*> wifi-warp-core Что означает для Омеги слово "родным бинарником" с проекта OpenWrt? Производитель Онион и репы для омеги тоже онионовские есть, или идет речь о другой омеге? Почему у вас вызывает удивление отсутствие проприетарных пакетов ониона в опенсорсной сборке? И для чего этот пакет (wifi-warp-core) там нужен, если он работает с драйверами ониона? Если так рассуждать то и пакеты других производителей (skylab, widora, hi-link…), которые делают модули на том же медиатеке, тоже должны попасть в “родные”?
  14. Настала необходимость собрать собственный образ ОС. Попробовал запустить menuconfig по вашему рецепту... ничего не выходит. Нет в меню Onion->WiFi пакета wifi-warp-core, хотя, в ./feed/onion.index, .config и в ./package/onion/ есть его описание, и исходники. Это какие-то танцы с бубном. Вчера перед сном удалось таки, чтобы этот пакет появился в конфигураторе... как это произошло буду разбираться сегодня. И ещё, попробовал я прошить Омегу родным бинарником с сайта openWRT, версия 18.06.01. Там только базовые утилиты, но ОС отлично работает. Единственное, надо в файле /etc/config/wireless везде в опции disabled поставить '0', а затем поднять линк командой wifi. После этого WiFi начинает работать. Пакета wifi-warp-core я там не обнаружил, работает без него.
  15. но нет. проработало почти сутки и отвалилось от роутера. не факт что проблема омеги, поскольку надо перегружать роутер. но с остальными устройствами такого нет. однако завалялся у меня wifi мост, буду пробовать с ним
  16. Добавил омеге внешнюю антенну - стало работать стабильно.
  17. oupgrade -l -f так делается обновление что-то с моим zyxel не очень дружит омега. иногда отваливается, и помогает только перезагрузка роутера. а точка доступа омеги работает стабильно
  18. Когда меняем роутер (подключаемся то к одному то к другому), каждый раз скрипт править будем для другого ip адреса? не кошерно как то получается . Если роутер работает дефалтовым шлюзом, может просто пинговать как раз его? сначала получим адрес шлюза, а потом пинганем #!/bin/sh default_gateway=$(ip route show | grep 'default' | awk '{print $3}') if [ -z "$default_gateway" ]; then echo "default gateway is not found" else ping -c 1 $default_gateway fi
  19. не совсем иногда отваливается от роутера. при перезагрузке роутера - коннект восстанавливается. С другими устройствами такого не наблюдается. пока что сделал скрипт: if ping -c 1 192.168.1.1 >> /dev/null then echo Connected >> /dev/null else echo "WiFi not connect. Reconect..." ifdown wlan sleep 3 ifup wlan fi и добавил его в cron каждую минуту. буду наблюдать
  20. В директории /usr/lib/python3.6 нужно создать файл onionGpio.py и вставить в него этот код: import sys __version__ = "0.1" _EXIT_SUCCESS = 0 _EXIT_FAILURE = -1 GPIO_BASE_PATH = '/sys/class/gpio' GPIO_EXPORT = GPIO_BASE_PATH + '/export' GPIO_UNEXPORT = GPIO_BASE_PATH + '/unexport' GPIO_PATH = GPIO_BASE_PATH + '/gpio%d' GPIO_VALUE_FILE = 'value' GPIO_DIRECTION_FILE = 'direction' GPIO_ACTIVE_LOW_FILE = 'active_low' _GPIO_INPUT_DIRECTION = 'in' _GPIO_OUTPUT_DIRECTION = 'out' _GPIO_OUTPUT_DIRECTION_LOW = 'low' _GPIO_OUTPUT_DIRECTION_HIGH = 'high' _GPIO_ACTIVE_HIGH = 0 _GPIO_ACTIVE_LOW = 1 class OnionGpio: """Base class for sysfs GPIO access""" def __init__(self, gpio, verbose=0): self.gpio = gpio self.path = GPIO_PATH%(self.gpio) self.verbose = verbose if self.verbose > 0: print ('GPIO%d path: %s'%(self.gpio, self.path)) def _initGpio(self): """Write to the gpio export to make the gpio available in sysfs""" with open(GPIO_EXPORT, 'w') as fd: fd.write(str(self.gpio)) fd.close() return _EXIT_SUCCESS return _EXIT_FAILURE def _freeGpio(self): """Write to the gpio unexport to release the gpio sysfs instance""" with open(GPIO_UNEXPORT, 'w') as fd: fd.write(str(self.gpio)) fd.close() return _EXIT_SUCCESS return _EXIT_FAILURE # value functions def getValue(self): """Read current GPIO value""" # generate the gpio sysfs instance status = self._initGpio() if status == _EXIT_SUCCESS: gpioFile = self.path + "/" + GPIO_VALUE_FILE value = 0 with open(gpioFile, 'r') as fd: value = fd.read() fd.close() # release the gpio sysfs instance status = self._freeGpio() return value return _EXIT_FAILURE def setValue(self, value): """Set the desired GPIO value""" ret = _EXIT_FAILURE # generate the gpio sysfs instance status = self._initGpio() if status == _EXIT_SUCCESS: gpioFile = self.path + "/" + GPIO_VALUE_FILE with open(gpioFile, 'w') as fd: fd.write(str(value)) fd.close() ret = _EXIT_SUCCESS # release the gpio sysfs instance status = self._freeGpio() return ret return _EXIT_FAILURE # direction functions def getDirection(self): """Read current GPIO direction""" # generate the gpio sysfs instance status = self._initGpio() if status == _EXIT_SUCCESS: gpioFile = self.path + "/" + GPIO_DIRECTION_FILE direction = _EXIT_FAILURE # read from the direction file with open(gpioFile, 'r') as fd: direction = fd.read() fd.close() # release the gpio sysfs instance status = self._freeGpio() return direction return _EXIT_FAILURE def _setDirection(self, direction): """Set the desired GPIO direction""" ret = _EXIT_FAILURE # check the direction argument if direction != _GPIO_INPUT_DIRECTION and direction != _GPIO_OUTPUT_DIRECTION and direction != _GPIO_OUTPUT_DIRECTION_LOW and direction != _GPIO_OUTPUT_DIRECTION_HIGH: return _EXIT_FAILURE # generate the gpio sysfs instance status = self._initGpio() if status == _EXIT_SUCCESS: gpioFile = self.path + "/" + GPIO_DIRECTION_FILE # write to the direction file with open(gpioFile, 'w') as fd: fd.write(direction) fd.close() ret = _EXIT_SUCCESS # release the gpio sysfs instance status = self._freeGpio() return ret return _EXIT_FAILURE def setInputDirection(self): ret = self._setDirection(_GPIO_INPUT_DIRECTION) return ret def setOutputDirection(self, initial=-1): argument = _GPIO_OUTPUT_DIRECTION if initial == 0: argument = _GPIO_OUTPUT_DIRECTION_LOW elif initial == 1: argument = _GPIO_OUTPUT_DIRECTION_HIGH ret = self._setDirection(argument) return ret # active-low functions def getActiveLow(self): """Read if current GPIO is active-low""" # generate the gpio sysfs instance status = self._initGpio() if status == _EXIT_SUCCESS: gpioFile = self.path + "/" + GPIO_ACTIVE_LOW_FILE activeLow = _EXIT_FAILURE with open(gpioFile, 'r') as fd: activeLow = fd.read() fd.close() if self.verbose > 0: print ('onionGpio:getActiveLow:: Reading %s file ... Read %s'%(gpioFile, activeLow)) # release the gpio sysfs instance status = self._freeGpio() return activeLow return _EXIT_FAILURE def _setActiveLow(self, activeLow): """Set the desired GPIO direction""" ret = _EXIT_FAILURE # generate the gpio sysfs instance status = self._initGpio() if status == _EXIT_SUCCESS: gpioFile = self.path + "/" + GPIO_ACTIVE_LOW_FILE if activeLow == _GPIO_ACTIVE_HIGH or activeLow == _GPIO_ACTIVE_LOW: with open(gpioFile, 'w') as fd: if self.verbose > 0: print ('onionGpio:_setActiveLow:: Writing %s to %s file'%(str(activeLow), gpioFile)) fd.write(str(activeLow)) fd.close() ret = _EXIT_SUCCESS # release the gpio sysfs instance status = self._freeGpio() # note: active_low setting is reset when the gpio sysfs interface is released! return ret return _EXIT_FAILURE def setActiveHigh(self): ret = self._setActiveLow(_GPIO_ACTIVE_HIGH) return ret def setActiveLow(self): ret = self._setActiveLow(_GPIO_ACTIVE_LOW) return ret Не забудьте сохранить. Теперь вы можете пользоваться библиотекой onionGpio на Python 3.
  21. Выложите, пожалуйста, измененный файл под Python 3 в этой теме, чтобы другие могли его просто скачать, а не переделывать сами вручную.
  22. Я не ошибся в названии модуля. Я делал по инструкции: https://docs.onion.io/omega2-docs/gpio-python-module.html. Только заменил python-light на python3. PS Я уже решил проблему. Взял файл данной библиотеки от python 2.7 и переделал для python 3, как указано здесь: https://community.onion.io/topic/2590/oniongpio-for-python3/4.
  23. Вы уверены, что при импорте указали название модуля правильно? Возможно он называется не "onionGpio", а "pyOnionGpio"? Скорее всего у вас ошибка в названии модуля при вызове его в Python 3.
  24. Всем привет! Мне понадобилось поработать с контактами GPIO на Omega-2+. Программирую на Python3. Установил модуль: root@Omega-D90D:~# opkg install python3 pyOnionGpio Package python3 (3.6.0-2) installed in root is up to date. Installing pyOnionGpio (0.2-1) to root... Downloading http://repo.onion.io/omega2/packages/onion/pyOnionGpio_0.2-1_mipsel_24kc.ipk Installing python-base (2.7.14-5) to root... Downloading http://downloads.lede-project.org/releases/17.01-SNAPSHOT/packages/mipsel_24kc/packages/python-base_2.7.14-5_mipsel_24kc.ipk Configuring python-base. Configuring pyOnionGpio. Импортировал модуль: import onionGpio Но при запуске программы через Python3 возникает ошибка: ModuleNotFoundError: No module named 'onionGpio' Подскажите, это я где-то косячу, или проблема в другом?
  25. Если бутлоадер жив, то и доставать не требуется. Убить его можно по неосторожности, но тогда можно сдуть крышку (на первых омегах и крышки то небыло), клипсой зацепиться за флеш и считать. Я на skw92 модулях так и делал
  26. Ясно, вы работаете над коммерческим проектом. Я рекомендую вам использовать отдельный раздел, тогда ОС, действительно останется жива после "затирания до дыр" и хоть часть данных можно будет вынуть при работающей на Омеге ОС. При неработающей ОС это сделать намного сложнее, поскольку жесткий диск, как из компьютера не достанешь Ну и соответственно в зависимости от того в чем вы собираетесь хранить данные вы можете регулировать длительность жизни вашего устройства.
  27. Вопрос не чем пользоваться (базами, файлами и и.п.), а на каком разделе устройства, имеет ли смысл выносить данные на отдельный раздел или нет? Установка дополнительного внешнего накопителя sd-карта usb-флеш, существенно увеличивают стоимость изделия, что не приемлемо. При наличии доступа в сеть, данные и так синхронизируются, но есть обязательное требование - хранить данные N-дней
  1. Загрузить больше активности