Настоятельно прошу ознакомиться с уже предложенной документацией прежде чем задавать вопрос. Если информация, обсуждаемая на форуме несет в себе полезную смысловую нагрузку и будет полезна другим, то она будет закреплена в шапке (Просьба в этом мне помогать!)
1. Отформатировать SD карту (4-32 Гб) в программе SDFormatter. При форматировании в разделе «Option»указать тип формата «Quick» и формат сборки «On».
2. На отформатированную карту с помощью программы Win32DiskImage установить образ операционной системы Raspbian. Скачать образ можно здесь – https://u.to/RzT7Cw
3. Установить SD карту в слот Raspberry Pi, подключить кабель HDMI к монитору или ТВ, клавиатуру и блок питания.
4. Включить Raspberry Pi. После загрузки выбрать в меню конфигурирования системы пункт «Advanced Options» и включить режим SSH. Если меню по каким-либо причинам после загрузки системы не появилось, необходимо его вызвать командой: sudo raspi-config
5. Отключить Raspberry Pi от монитора, клавиатуры, питания и подключить его кабелем Ethernet к роутеру. Включить питание.
6. С помощью программы IPScan определить IP адрес Raspberry Pi в сети (например, 192.168.1.8)
7. Запустить программу Putty и настроить доступ к Raspberry Pi – ваш IP, порт – 22, имя пользователя – pi, пароль – raspberry.
8. Скачать архив WebIOPi на диск Raspberry Pi: $ wget https://u.to/jV0LCg (для старых версий) или: $ wget https://u.to/T61-DA (для новых версий), где x.y.z – номер версии
9. Распаковать архив WebIOPi на диск: $ tar xvzf WebIOPi-x.y.z.tar.gz
10. Выбрать распакованную папку (директорию): $ cd WebIOPi-x.y.z
Если у вас модель Pi2 или B+ то выполняем следующие действия: $ wget https://u.to/cvylDA $ patch -p1 -i webiopi-pi2bplus.patch
14. Открыть файл конфигурации WebIOPi: sudo nano /etc/webiopi/config Найти в тексте заголовок [DEVIСE]и прописывать строку: serial0 = Serial device:ttyAMA0 baudrate:9600 (для работы через UART) или: serial0 = Serial device:ttyUSB0 baudrate:9600 (для работы через USB)
15. В разделе [HTTP Server Configuration] необходимо прописать строку: doc-root = /home/pi/myproject/html
20. Создать на диске Raspberry Pi папки для хранения файлов проекта. Для этого запустить программу WinSCP (логин – root, пароль – назначенный в пункте 18). Структура вложенных папок должна иметь вид: /home/pi/myproject/html
21. Скопировать в папку html все файлы проекта с расширением *html и файл фонового рисунка fon.jpg. В качестве фона можно использовать любой рисунок, главное, что бы имел название fon.jpg.
22. Выполнить вход на сервер raspberry Pi из сети по адресу: ваш IP:8000 (логин – pi, пароль - raspberry)
Микроблог Zoolu о переделке интерфейса. Информация будет редактироваться только тут
P.S. Давайте сделаем ВМЕСТЕ форум информативным и интересным!
ВНИМАНИЕ !!! В процессе разработки системы домашней автоматизации было создано несколько различных версий. Из-за этого у многих пользователей возникает путаница - программное обеспечение применяется от одних проектов, прошивки контроллеров от других. Поэтому, перед тем как задавать вопро, внимательно ознакомьтесь с этой информацией
Сообщение отредактировал Zoolu - Четверг, 28.04.2016, 11:09
Уважаемые форумчане требуется помощь. Сделал все по инструкции Михаила, получил тестовую Web-страницу, вкладки открываются, работают. А дальше полный затык и возникло несколько вопросов: 1. Насколько я понял система опрашивается только при включенном WebIOPI, это хорошо, но для меня лучше было-бы чтобы опрос шел в фоновом режиме датчиков Raspberry PI 1 раз в 5-10 мин (если применяются дискретные входы то чаще. Контроллеры RS485 (8- 10 шт) опрашивались 1 раз в секунду с сохранением пакета в буфере в оперативе для дальнейшей обработки. Сохранять в базу данных усредненные значения допустим 1 раз в час. А WebIOPI брать данные из базы данных или из оперативы (промежуточного буфера). 2. Непонятно как обработать принятый пакет по Modbus (в смысле какой формат данных hex, bin, int, и т. д.). Можно ли обработать данные в формате byte ? Я знаю что стандарт для Modbus размер данных либо 1 бит либо 16-битный регистр. Мой контроллер на AtMega 8 и немножко больше данных передается по modbus. 3. Время на тестовой странице берется с основного компьютера с Windows а не с Raspberry PI. Может кто уже реализовал похожие алгоритмы, прошу поделиться соображениями, идеями. У меня Raspberry pi2 и система Rasbyan-jessy от 17.02.16года если не ошибаюсь. Более новая почему-то не заработала.
1. Насколько я понял система опрашивается только при включенном WebIOPI, это хорошо, но для меня лучше было-бы чтобы опрос шел в фоновом режиме датчиков Raspberry PI 1 раз в 5-10 мин (если применяются дискретные входы то чаще.
WebIOPi включен всегда. А вот запрос данных идет только когда открыта страница, генерирующая эти запрсы. Для работы в "фоновом" режиме необходим макрос на Python, запускающийся с выбранным интервалом. Пример такого макроса, запускающегося каждые 10 минут я уже приводил - http://lock.3dn.ru/news....-18-136
ЦитатаVanuha_63 ()
2. Непонятно как обработать принятый пакет по Modbus (в смысле какой формат данных hex, bin, int, и т. д.). Можно ли обработать данные в формате byte ? Я знаю что стандарт для Modbus размер данных либо 1 бит либо 16-битный регистр. Мой контроллер на AtMega 8 и немножко больше данных передается по modbus.
3. Время на тестовой странице берется с основного компьютера с Windows а не с Raspberry PI.
Без проблем можно организовать получение времени с Raspberry, опять же с помощью макросов.
ЦитатаVanuha_63 ()
Может кто уже реализовал похожие алгоритмы, прошу поделиться соображениями, идеями.
Да, многое что уже реализовано, что конкретно, см. здесь - http://lock.3dn.ru/news....-01-142. В том числе и обновлены прошивки контроллеров, работающих по Модбас. Просто сейчас все это тестирую, поэтому пока и не выкладываю на сайт.
Admin, спасибо за ответ, для меня Python и Jawa и html пока темные лошадки. Из-за нехватки времени хотелось по-быстрому подключить свой контроллер к Raspberry pi - азарт появился- вот почти можно опросить контроллер, а для движения вперед знаний маловато. Придется идти в "школу"- садится за учебники. Не боги горшки обжигают.
Admin, Вы упорно игнорируете на мой запрос, дайте хоть какую информацию
А почему Вы обращаетесь "персонально" ко мне? Форум - это коллективное обсуждение, а не вопросы исключительно к одному человеку. Здесь ведь вопрос не сугубо про какую-то мою разработку. Вы хотя бы пытались анализировать, что это за ошибка "Error 19" - No such device? Или просто выложили скрин и ждете с "моря погоды"?
ЦитатаVanuha_63 ()
Придется идти в "школу"- садится за учебники. Не боги горшки обжигают.
"Золотые слова, Юрий Венедиктович (С)" Вот только Николай этого никак понять не хочет.
Дата: Пятница, 17.06.2016, 20:58 | Сообщение # 917
Группа: Пользователи
Сообщений: 577
Статус: Offline
ЦитатаAdmin ()
А почему Вы обращаетесь "персонально" ко мне?
С датчиками я разобрался В инструкции: Raspberry Pi для домашней автоматизации. Шина I2C уберите пробел в команде:myscript = /home/pi /myproject/python/script.py Без пробела у меня все заработало
Дата: Пятница, 17.06.2016, 21:33 | Сообщение # 918
Группа: Пользователи
Сообщений: 32
Статус: Offline
Уважаемый Admin, не могу врубиться, где формируется запрос minimalmodbus для сети rs485. Я так понял что здесь @webiopi.macro def getData(): instrumentA = minimalmodbus.Instrument('/dev/ttyUSB0', 1) global i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12 try: i0 = instrumentA.read_register(0, 0) # Чтение регистров данных i1 = instrumentA.read_register(1, 0) i2 = instrumentA.read_register(2, 0) i3 = instrumentA.read_register(3, 0) i4 = instrumentA.read_register(4, 0) i5 = instrumentA.read_register(5, 0) i6 = instrumentA.read_register(6, 0) i7 = instrumentA.read_register(7, 0) i8 = instrumentA.read_register(8, 0) i9 = instrumentA.read_register(9, 0) i10 = instrumentA.read_register(10, 0) i11 = instrumentA.read_register(11, 0) i12 = instrumentA.read_register(12, 0) Мне иногда нужно опрашивать не все регистры командой "03", а часть регистров. Подскажите , пожалуйста, 1. где формируется запрос? 2. можно ли адрес слейва задавать не числом, а переменной, в которой адреса меняются по кругу. 3. Скрипт minimalmodbus выполняется весь от начала и до конца, или только тот , к которому приходит запрос с web-страницы. Где начинается ,например, @webiopi.macro def getData(): понятно, а где заканчивается непонятно. В инете не получилось найти ответ. Подскажите ,пожалуйста.
Дата: Пятница, 17.06.2016, 21:59 | Сообщение # 919
Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
ЦитатаНиколай ()
В инструкции: Raspberry Pi для домашней автоматизации. Шина I2C уберите пробел в команде:myscript = /home/pi /myproject/python/script.py
По хорошему эту инструкцию вообще нужно удалить - потому что если даже при вводе пути к файлу, человек тупо копирует пробелы..... беда!
ЦитатаVanuha_63 ()
не могу врубиться, где формируется запрос minimalmodbus для сети rs485. Я так понял что здесь @webiopi.macro def getData():
Все правильно, здесь. Но ещё раз повторюсь, хотя говорил об этом как-то раньше - макрос (@webiopi.macro) выполняться только при открытой web странице. Если Вам нужно опрашивать по RS485 устройства с заданным интервалом времени постоянно, без учета того открыт или закрыт браузер, то нужно организовать цикл, например:
def loop() ...... ...... time.sleep(ххх)
где xxx - время повтора цикла в секундах - например, как для вывода графиков - ссылку тоже приводил в сообщении #913
ЦитатаVanuha_63 ()
2. можно ли адрес слейва задавать не числом, а переменной, в которой адреса меняются по кругу
Видимо можно. Вы сами предложили решение - задать адрес переменной, и в каждом новом цикле запроса выполнять ее инкремент до заданного значения (последнего адреса), после чего перейти на первый адрес и т.д. по кругу.
ЦитатаVanuha_63 ()
3. Скрипт minimalmodbus выполняется весь от начала и до конца, или только тот , к которому приходит запрос с web-страницы. Где начинается ,например, @webiopi.macro def getData(): понятно, а где заканчивается непонятно.
minimalmodbus - это как бы не скрипт, а библиотека, а скрипты осуществляют взаимодействие с этой библиотекой. Разумеется, выполняется только тот макрос, к которому пришел запрос. По остальному см. рисунок:
Дата: Суббота, 18.06.2016, 08:11 | Сообщение # 920
Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
Хотелось бы немного рассказать о тестировании системы и выявленных недостатках на текущий момент.
Полностью опробованы все функции, описанные в этой статье - http://lock.3dn.ru/news....-01-142. Из выявленных проблем - иногда самопроизвольно сработает реле №5, управляемое от датчика освещения. Судя по журналу логов это происходит из-за сбоя приема данных по шине I2C от датчика TSL. Проблема решаема, но нужно немного доработать алгоритм скрипта. Больше проблем в "централизованном" сегменте пока не выявлено.
Теперь что касается "распределенного" сегмента (т.е. контроллеров на шине RS485): 1. Переработана прошивка метеостанции (раньше наблюдались ее частые перезагрузки при запросе данных по шине). 2. Переработана прошивка радиомодуля Выявленные проблемы: 1. Иногда "отваливается" последовательный порт ttyUSB0 (ch341-uart ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32). Судя по информации на профильных форумах, данный тип ошибки связан с недостаточным уровнем питания адаптера USB/RS485. Как вариант решения проблемы предлагают использовать дополнительный USB-hub. В общем, причина этой проблема как бы понятна. Кстати, отмечу, что с первым Raspberry Pi адаптер работает без вопросов. Поэтому, здесь ещё возможно многое зависит и от порта, и от применяемого адаптера. 2. Пару раз в процессе тестирования была получена ошибка сервера Error 500. Причина пока неизвестна. Но она стала проявляться только когда был задействован "распределенный" сегмент.
Попробовал совмещать на одной странице разные контроллеры, работающие по шине RS485. Пример такой интеграции метеостанции и радиомодуля приведен на скриншоте. Это позволяет вывести на одну страницу фактически все элементы контроля и управления дома. Но тут тоже "палка о двух концах". Дело в том, что если "запихивать" все функции на одну страницу, то она получается более "тяжеловесной", что не есть хорошо при "слабом" интернете. Да просмотр такой "насыщенной" страницы на небольшом дисплее не очень удобный.
Как лучше организовать интерфейс, вопрос спорный - или это должна быть одна общая страница (как на примере ниже), или с разбивкой по группам - освещение/управление розетками/климатконтроль/охрана и т.д., или группировка по комнатам - т.е. выводить на страницу все управление и контроль в пределах одной комнаты. А возможно есть и другие варианты. В общем, предлагаю всем подумать над этим вопросом и высказать свои предложения, желательно аргументированные.
P.S. Я с понедельника на неделю полечу в командировку в КНР, так что возможно на это время на форуме появляться не буду.