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

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

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

  1. Последняя неделя
  2. Забавно звучит, правда? Но, я тут ни при чём... они первые начали
  3. как команда LEDE выпустила релиз OpenWrt 18.06? (первый стабильный после слияния OpenWrt/LEDE) А что так навали? После LEDE 17.01 назвали бы LEDE 18.06
  4. Нет, конечно! Делал. Просто, уже стоял в дверном проеме в опочивальню Морфея, поэтому, очередной раз сделав комбинацию махинаций, не запомнил последовательность. Делал именно по вашей инструкции. Сегодня разобрабрался. Достаточно таких действий: 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.
  5. Вы ничего не делали, а пакет сам вдруг появился? Напоминает “Восстание машин” Решил не терять время на долгую сборку, просто повторяю опыт по конфигурации клонирую реп 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…), которые делают модули на том же медиатеке, тоже должны попасть в “родные”?
  6. Настала необходимость собрать собственный образ ОС. Попробовал запустить 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 я там не обнаружил, работает без него.
  7. Ранее
  8. но нет. проработало почти сутки и отвалилось от роутера. не факт что проблема омеги, поскольку надо перегружать роутер. но с остальными устройствами такого нет. однако завалялся у меня wifi мост, буду пробовать с ним
  9. Добавил омеге внешнюю антенну - стало работать стабильно.
  10. oupgrade -l -f так делается обновление что-то с моим zyxel не очень дружит омега. иногда отваливается, и помогает только перезагрузка роутера. а точка доступа омеги работает стабильно
  11. Когда меняем роутер (подключаемся то к одному то к другому), каждый раз скрипт править будем для другого 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
  12. не совсем иногда отваливается от роутера. при перезагрузке роутера - коннект восстанавливается. С другими устройствами такого не наблюдается. пока что сделал скрипт: 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 каждую минуту. буду наблюдать
  13. В директории /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.
  14. Выложите, пожалуйста, измененный файл под Python 3 в этой теме, чтобы другие могли его просто скачать, а не переделывать сами вручную.
  15. Я не ошибся в названии модуля. Я делал по инструкции: 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.
  16. Вы уверены, что при импорте указали название модуля правильно? Возможно он называется не "onionGpio", а "pyOnionGpio"? Скорее всего у вас ошибка в названии модуля при вызове его в Python 3.
  17. Всем привет! Мне понадобилось поработать с контактами 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' Подскажите, это я где-то косячу, или проблема в другом?
  18. Если бутлоадер жив, то и доставать не требуется. Убить его можно по неосторожности, но тогда можно сдуть крышку (на первых омегах и крышки то небыло), клипсой зацепиться за флеш и считать. Я на skw92 модулях так и делал
  19. Ясно, вы работаете над коммерческим проектом. Я рекомендую вам использовать отдельный раздел, тогда ОС, действительно останется жива после "затирания до дыр" и хоть часть данных можно будет вынуть при работающей на Омеге ОС. При неработающей ОС это сделать намного сложнее, поскольку жесткий диск, как из компьютера не достанешь Ну и соответственно в зависимости от того в чем вы собираетесь хранить данные вы можете регулировать длительность жизни вашего устройства.
  20. Вопрос не чем пользоваться (базами, файлами и и.п.), а на каком разделе устройства, имеет ли смысл выносить данные на отдельный раздел или нет? Установка дополнительного внешнего накопителя sd-карта usb-флеш, существенно увеличивают стоимость изделия, что не приемлемо. При наличии доступа в сеть, данные и так синхронизируются, но есть обязательное требование - хранить данные N-дней
  21. Существует бесплатная База Данных PostgreSQL для различных ОС, включая Windows и Open WRT. Она конечно не имеет всех возможностей в Open WRT, но ее вполне можно использовать для хранения данных. Ее можно установить на флешку и тогда не придется обращаться к конкретным кластерам и секторам накопителя. Это позволит продлить жизнь флешке (SD карте, если у вас Omega 2+) даже проведением элементарной дефрагментацией, хотя и без нее флешка проживет дольше чем если обращаться к секторам памяти и кластерам напрямую. И, для обеспечения сохранности данных (в случае если флешка все-таки сдохнет) можно раз в определенный период синхронизировать Базу Данных с Базой Данных, например на вашем домашнем компьютере.
  22. Собственно вопрос, где хранить данные которые меняются? Для хранения статических конфигурационных параметров, которые меняются только в процессе настройки, оверлей самое подходящее место, но в процессе эксплуатации раз в сутки необходимо сохранять некие данные. Поскольку ресурс spi flash по количеству циклов записи ограничен, решил вынести хранение этих данных на отдельном разделе. Если отдельный раздел из за постоянных записей (в течении N-лет) будет "затерт до дыр" то раздел с firmware по прежнему останется живым. Вот и думаю стоит оно того или нет. Может оставить всё на оверлее? Хочу услышать мнение.
  23. Идея не плохая, да и с программой в принципе заморачиваться не придётся т.к. всё написано в документации к ADC Expansion. Попробую закупить пару микросхем.
  24. На ADC Expansion стоит ADS1115, как и на ардуиновском модуле. Может попробовать с ним?
  25. Действительно, почему-то картинка не загружается. Я прикрепил её к этому сообщению. Я не провит питона. Насколько я понял, сначала надо указать регистры [55H] Затем прочитать память [AAH] И наконец отправить команду на преобразование [3CH] Я сам не очень пойму, какие команды должен вводить. Про них написано в даташите стр. 6-10, но я всё равно не могу разобраться. Ссылка на даташит Там приводится вот эта команда: (TA1=(T7:T0), TA2=(T15:T8)) Но я не понимаю, что в ней и для чего.
  26. Здравствуйте. Не могу открыть вашу схему. В смысле картинка не прогружается. Вы хотите использовать скрипты? Не желаете питоном воспользоваться для решения этой задачи? И какую конкретно команду вам нужно ввести?
  27. Всем привет. Я хочу подключить к моей Omega-2+ аналогово цифровой преобразователь DS2450 по шине 1-wire. Подключаю по этой схеме: В качестве аналогового датчика использую фоторезистор. Первое, что я делаю, это регистрирую мастер 1-wire: insmod w1-gpio - Custom bus0 = 0,19,0 Затем я проверяю соединение: cat /sys/devices/w1_bus_master1/w1_master_slave_counт 1 Вывод адресов подключенных устройств: cat / sys / devices / w1_bus_master1 / w1_master_slaves 20-0000000a2208 Прежде чем читать данные из этого АЦП, я должен сначала настроить каналы. Для этого мне нужно ввести определенную команду, но я не знаю, как это сделать. Я писал на официальный форум omega, а также в техподдержку Onion и Maxim Integrated, но нигде мне не помогли. Последняя надежда на ваш форум. PS. Я знаю, что Onion выпустила модули АЦП к Omega-2, но DS2450 у меня есть в наличии, да и сами модули не дешёвые. Если уж и здесь вы не знаете, как мне помочь, то хотябы подскажите способы подключения других микросхем АЦП. Спасибо. cat / sys / devices / w1_bus_master1 / w1_master_slaves 20-0000000a2208
  1. Загрузить больше активности