nooLite MT1132 — подключаем.

Предыдущий материал.

Подключать МТ1132 мы будем не к Ардуино, а к Raspberry Pi, с установленным на ней OpenHab.

Мы можем подключить модуль и к Ардуино, использовать пример с сайта, и поуправлять яркостью чего-нибудь. Но кто мне ответит на вопрос: для чего это можно применить?

Ранее мы к Малине ничего не подключали, сохраняя верность тому, что умный дом — это сообщество умных элементов, а не один мозг и сотня слуг. И продолжаю считать такую мысль верной.

Однако для управления освещением можно сделать исключение, и вот почему: каждый силовой блок nooLite просто обязан управляться собственным пультом. Использовать модуль есть смысл лишь тогда, когда требуется автоматическая отработка сценариев  реакции дома на какие-либо события.

Я знаю таких событий три:

  • я пришел домой (частный случай — приехал на дачу);
  • я перемещаюсь ночью по дому;
  • я ушел из дома.

Отдельное событие — включить что-то по расписанию. Но что? Подсветку на Новый Год ровно в 12 ночи. А что еще? Если мы говорим об управлении отоплением, то здесь часто бывают необходимы режимы по расписанию: снижать температуру в ночное время, во время отсутствия в рабочие дни, но nooLite пока «не заточен» под такие решения, потому что здесь идет комбинация управления по температуре и по времени.

Хорошо, начнем с электрического соединения. Малина и nooLite MT1132. Они дружат так:

mt11321

К этому моменту у нас уже установлены:

на Малине: RaspbianOpenHab, Mosquitto  (или установка как описано здесь)  и Habmin ( или установка как описано здесь).

на компьютере: WinSCP и PuTTy.

Для ардуинщика с определенным опытом две предыдущие строки выглядят кошмаром. Тем не менее, выбор делать придется. Или вы, для реализации усложняющихся проектов, начинаете учить ассемблер, чтобы ужимать и ускорять код, или вы берете платформу, не связанную с ограничением по памяти и более быструю.

Часть из вас придет к Малине и, пользуясь тучей инструкций в Интернете, попотев пару вечеров или недель, установит то, что указано выше. К тем инструкциям, добавлю и свою. Полагаю, ее следует изучить перед движением в сторону nooLite.

Ок. Если вы еще продолжаете чтение, значит указанное выше для вас не стало проблемой.

Сделаем несколько приготовлений для использования UART. Убедимся, что:

в файле /boot/cmdline.txt отсутствуют  строки строки “console=ttyAMA0,115200” и “kgdboc=ttyAMA0,115200”.

в файле /etc/inittab находится символ # перед последней строкой T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100  .

Теперь оттянем хвост Питону. Вы не знаете кто это? Это язык программирования Python, который присутствует в Малине, но почти не встречается рядом с Ардуино. Вы его не знаете? Я тоже. Но сейчас расскажу кратко: управляющие конструкции там почти такие же как в С++, а остальное… копипастим. Для наших целей знать достаточно.

Выполним команду из терминала:

sudo apt-get install python-serial

в результате чего зверь Питон научится работать с UART.

А теперь в директории / home/pi/ создадим файл noolite.py. Суть его логики была раскрыта в прошлой заметке.

#-*-coding=utf-8-*-
import serial
import sys
# Загрузили два модуля, если по-С++ - подключили две библиотеки
# Известим переменную что она - UART со скоростью 9600 
ser = serial.Serial("/dev/ttyAMA0", baudrate=9600)
#print(sys.argv[1])
# Создадим список, который заполним шаблоном значений, отправляемых в мт1132
command = [85,80,0,0,0,0,0,0,0,0,0,170]
command[5] = int(sys.argv[1]) # Это канал силового блока
tempcommand = int(sys.argv[2]) # Это комманда силовому блоку
#print(command)
# Если команда от 15 и меньше - это любая команда кроме управления яркостью.
# 6 отправлять не рекомендуется, но и в этом случае ничего страшного не произойдет,
# силовой блок просто не реагирует на такую команду  
if (tempcommand < 16): 
	command[2] = tempcommand;
# В этом случае требуется обнуление элементов [3] и [6]
	command[3] = 0;
	command[6] = 0;
# Если команда от 32 до 155 - это управление яркостью
else :
# Значит настоящая команда - 6
	command[2] = 6; 
# Элемент [3] требует установки в 1
	command[3] = 1;
# В элемент [6] передаем значение яркости.
	command[6] = tempcommand;
# Вычисляем контрольную сумму, все как на С++
check = 0
for i in range(0, 10): # Нет, не как на С++. Но смысл ясен.
	check += command[i]
check = check & 0xFF
#print(check)
command[10] = check
#print(command)
# В списках у Python содержатся на цифры, а то, что в С++ зовется char
# Чтобы там появились цифры, нужен tmpBuffer, который будет содержать необходимое 
tmpBuffer = bytearray(command)
# Отправляем команду
ser.write(tmpBuffer)
# Осовбождаем UART
ser.close()
# it works 

Проверим, что у нас получилось. Исполним команду:

python /home/pi/noolite.py 0 0

Ау, вы куда смотрели? Надо было смотреть на модуль MT1132 — на нем должен был мигнуть красный диод! И, значит,у нас уже кое-что получилось.

Пора присоединять к MT1132 силовой блок. Делаем это так:

python /home/pi/noolite.py 0 15

где 0 — номер канала, любой из диапазона 0 — 31, а 15 — команда силовому блоку на привязку.

  • силовой блок должен отреагировать вспышкой и учащенным миганием;
  • нажимаем на силовой блок еще пару раз, и он оказывается привязанным к MT132.

А теперь поиграем в освещение, отправляя на силовой блок в терминале такие команды как:

python /home/pi/noolite.py 0 2
python /home/pi/noolite.py 0 0
python /home/pi/noolite.py 0 4
python /home/pi/noolite.py 0 5

и понаблюдаем за реакцией. Однако, отправка команды, например, 75 (зажечь свет наполовину) — ничего не даст! Все потому, что вы не разрезали и не заизолировали на SU111-200 один проводок. Сделайте это по инструкции, и управление яркостью будет Вам доступно.

В итоге, вы должны повторить то, что показано на этом видео.

До следующей встречи, друзья. А встреча — здесь!

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s