Умная розетка BLE MK116B — www.mokosmart.com
MK116B — это продукт серии MOKO MK116, он имеет тот же размер и корпус, что и наша умная розетка MK116 WIFI, самая большая разница — тип беспроводной связи.
MK116B реализует многофункциональность с помощью соединения Bluetooth, превращает подключенное электрическое устройство в умный, управляемое устройство, и может работать как счетчик мощности и энергии с чрезвычайно высокой точностью.
Функциональная блок-схема
- Подключитесь к своему мобильному приложению, чтобы управлять вилкой и получать данные об энергии и мощности
- Работа со шлюзом Bluetooth, рекламные данные будут загружены на ваш облачный сервер
параметр
Bluetooth | Bluetooth 4.2 |
Чип Bluetooth | NRF52832 |
Входное напряжение | 100AC- 240AC 50/60 Гц |
Максимальная загрузка | 10А |
Рабочая Температура | 0 ºC ~ 40 ºC ( 32° F ~ 104 ° F ) |
Рабочая влажность | 10%~ 90%, Без конденсации |
Тип штекера | Тип I |
Размеры(Длина, ширина, высота) | 95мм x 43,5 мм x 59 мм |
сертификация | SAA & RCM |
Разнесенный чертеж
Сделайте каждую деталь идеальной, продолжать улучшать дизайн
- И PCBA, и корпус изготовлены из безопасных материалов.
- Совместим с другими способами беспроводной связи
заявка
Контроль бытовой техники
Контроль промышленного оборудования
Реальная экономия энергии
Зарядка мотоциклов
Автомобильная зарядка
Управление энергией
ИНДИВИДУАЛЬНЫЙ СЕРВИС
- Поддержка индивидуальной прошивки, прошить кастомную прошивку во время изготовления
- Поддержка настроенного оборудования с Zigbee, Z-волна и другой беспроводной тип
- Настройка упаковки: индивидуальная этикетка, наклейка с логотипом и коробки
- SDK для измерения мощности и схемы доступны для клиентов для разработки прошивки
- Поддержка Android& IOS API для разработки приложений
- Профессиональные инженеры предоставляют услуги сертификатов:
Клиенты могут напрямую получить вашу собственную сертификацию, передаваемую существующими сертификатами MOKO.
Также подайте заявку на получение определенных сертификатов, требуемых клиентами.
СОПУТСТВУЮЩИЕ ТОВАРЫ
MK106 Bluetooth шлюз Шлюз MKG-мини MKGW1 BLE WiFi GatewayТехническая спецификация
Руководство пользователя
SDK измерения мощности
Компания
Товары
Интернет вещей
Ресурсы
ISO9001ISO14001ISO13485Бакалавр наукULЭТОТFCCMOKOSMART
Как известный гигант-поставщик решений LOT, MOKOSmart может гарантировать, что ваш проект станет ведущим в отрасли. Выберите нас, чтобы предоставить вам услуги OEM или ODM.
СВЯЗАТЬСЯ С НАМИ
Facebook-площадь YouTube Linkedin щебет
Copyright 2022◎МОКОСМарт #1 Решение Smart-Private Private Label в Китае
Bluetooth умная розетка Xiaomi ZNCZ01ZM
Лень берет постепенный верх и количество движений, особенно ненужных, хочется сократить всё больше. Шлюзы Gateway v2 подключены к обычным розеткам, плюс розетки для телевизоров тоже были установлены обычные, но иногда, редко, но всё же возникает необходимость залезть и перезапустить шлюз, а для связки TV + Android player есть мысль сделать небольшую автоматизацию.
На пробу взял розетки Xiaomi ZNCZ01ZM. Эти розетки работают по протоколу bluetooth и для интеграции устройства с умным домом необходим шлюз Xiaomi Gateway 3, который можно интегрировать с системой автоматизации Home Assistant.
- Описание
- Использование в MiHome
- Автоматизация в MiHome
- Использование в Home Assistant
- Автоматизация в Home Assistant
- Итог
Описание
Розетки поставляются в стандартных для Xiaomi белых коробках с изображением того что внутри.
В комплекте поставляется:
- Розетка
- Эстетическая накладка
- Болты крепления
Розетка выполнена под стандартный китайский подрозетник 86х86 мм. В обычные круглые подрозетники, которые устанавливаются в наших квартирах, данная розетка не поместится, необходимо менять на китайский.
Совет! Если вы делаете ремонт, то установите квадратные подрозетники сразу, в них прекрасно и без проблем устанавливаются евророзетки. При необходимости розетку или выключатель можно легко заменить. К минусам использования квадратных подрозеткинов можно отнести большую трудоемкость на их установку и то, что для блоков евророзеток или выключателей придется покупать рамки для каждого устройства т.к. расстояние между ними будет больше чем для круглых подрозетников. Себе ставил как на картинке ниже, они отлично соединяются в блоки, но красные уши пришлось по углам подпиливать, т.к. посадочные места в розетках Xiaomi немного меньше, Китай…
Технические характеристики розетки:
- Напряжение 250V
- Ток 10A
- Максимальная нагрузка 2500W
Внешне устройство похоже на ZigBee версию розетки, но претерпело некоторые изменения. Теперь передняя панель полностью закрывается декоративной накладкой, у ZigBee версии была декоративная рамка по периметру закрывающая крепежные болты.
Клеммы крепления проводов в розетке теперь находятся сзади, а болты фиксирующие провода сверху. На мой взгляд это удобнее т.к. теперь не надо крутить розетку чтобы зафиксировать или отключить провода. В версии ZigBee крепление было наоборот, провода вставлялись сверху, а фиксирующие болты сзади.
Использование в MiHome
Не подключенная к умному дому розетка горит оранжевым диодом (слева на картинке), подключенная синим (справа на картинке). ZigBee версия мигала синим диодом если была не подключена, при подключении синий диод горел постоянно.
Для подключения к MiHome переводим розетку в режим обнаружения зажав кнопку на несколько секунд, оранжевый диод на кнопке начнет мигать. В телефоне включаем Bluetooth, запускаем MiHome, нажимаем «+» в правом верхнем углу, в выпадающем меню выбираем «Добавить устройство».
В списке обнаруженных устройств выбираем подключаемую розетку. Далее стандартная процедура, держим телефон рядом с подключаемым устройством, дожидаемся, когда розетка будет инициализирована, указываем расположение и понятно называем ее.
Переходим в плагин Xiaomi Gateway 3, раздел «Дочерние устройства Bluetooth», через какое-то время розетка должна появиться в списке, а на главном экране MiHome появится плитка устройства.
Плагин управления мало чем отличается от розетки версии ZigBee. Основной экран показывает текущее состояние и потребление подключенной нагрузки, из управления кнопка включения/отключения, можно настроить таймер отключения и расписание. Если устройство подключено к шлюзу, то информация об этом показана в верхней части плагина.
Настройки устройства тоже не сильно отличаются от настроек розеток ZigBee, можно изменить изображение на подходящее подключенному устройству, изменить порог отключения розетки при перегрузке, настроить автоматическое отключение розетки при падении нагрузки ниже определенного значения (например, отключение если телефон подключенный к розетке полностью зарядился), отключить светодиод на кнопке. При подключении устройства к шлюзу показывается уровень сигнала.
В остальных настройках интересного ничего нет. Указывается понятное имя устройства, ограниченное тридцатью символами, место расположение устройства, доверить управление розеткой из приложения кому ни будь из домочадцев. Но, в отличие от ZigBee розеток, появился пункт «Проверить наличие обновлений».
Да, теперь ПО розетки можно обновить! С одной стороны, это хорошо, т.к. производитель может исправить недочеты, всплывшие во время эксплуатации, с другой стороны у меня дома около сорока умных розеток обновлять каждый раз их все удовольствия будет доставлять мало.
Автоматизация в MiHome
Для участия розетки в сценариях умного дома необходимо чтобы она была подключена к шлюзу, например, Xiaomi Gateway 3. В сценариях автоматизации розетка может выступать как условием, так и действием. В условиях устройство имеет четыре триггера:
- Если розетка включена
- Если розетка выключена
- Если потребляемая мощность подключенного источника менее
- Если потребляемая мощность подключенного источника более
Установка значения уровня потребляемой мощности осуществляется путем выбора из допустимых значений в диапазоне 1W-2500W с шагом один ватт, установка значения в 1111W может занять какое-то время — «Крутите Шура, крутите. ..». Но на практике, думаю, установка значения мощности вам не потребуется, автоматизации, триггеры которых завязаны на мощность почти не работают. «Почти» только потому, что если зайти в плагин розетки, то он запросит информацию о потреблении, после такого принудительного обновления сработает автоматизация, подпадающая под соответствующие условия. За пару месяцев тестирования этих розеток информация о потребляемой мощности сама не приехала на шлюз ни разу. Возможно, что эту досадную неприятность исправят, но судя по жалобам оставленных в интернете производитель игнорирует данную проблему.
В действиях выполняемыми устройством можно выбрать одно из трех значений
- Включить розетку
- Выключить розетку
- Свитч, перевод розетки в противоположное состояние от текущего (если розетка включена, то она будет выключена и наоборот)
Использование в Home Assistant
Для взаимодействия устройства с Home Assistant необходим шлюз Xiaomi Gateway 3 и настроенная интеграция от AlexxIT. Как интегрировать Xiaomi Gateway 3 подробно описано в статье: Xiaomi Gateway 3 — подключение к Home Assistant.
В Home Assistant для розетки доступны следующие элементы управления:
- Установка порога отключения розетки при перегрузке и включение/отключение данной функции
- Включение/отключение светодиода на кнопке
Из сенсоров доступна только информация о потреблении подключенной нагрузки. Но проблемы здесь те же что и в MiHome, информация о потреблении обновляется только после открытия карточки розетки в MiHome, из чего я могу сделать вывод: розетка сама не отправляет на шлюз данные о потреблении.
Автоматизация в Home Assistant
Триггеры устройства доступные в Home Assistant
- Изменение потребляемой мощности подключенного потребителя
- Розетка включена
- Розетка выключена
- Светодиод на кнопке розетки включен
- Светодиод на кнопке розетки выключен
- Защита от перегрузки включена
- Защита от перегрузки выключена
На первый взгляд список триггеров побольше чем в MiHome, но последние четыре достаточно сомнительные в использовании, а первый как я писал выше практически не рабочий.
В автоматизациях устройства доступны следующие действия
- Включить розетку
- Выключить розетку
- Свитч, перевод розетки в противоположное состояние от текущего (если розетка включена, то она будет выключена и наоборот)
- Включить светодиод на кнопке
- Выключить светодиод на кнопке
- Свитч светодиода
- Включить защиту от перегрузки
- Выключить защиту от перегрузки
- Свитч защиты от перегрузки
- Установить мощность потребления, при которой будет срабатывать защита от перегрузки
Стоить отметить, что включенная защита от перегрузки срабатывает только для установленных пользователем значений, при не установленных или отключенных этих параметрах защита будет срабатывать на значении более 2500W, но это не точно 🙂
Итог
В заключении скажу, что на мой взгляд, розетки ZigBee лучше, они не лишены недостатков, у меня они через какое-то время начинали отваливаться при подключении ZigBee2MQTT, смена свистков, протоколов и прошивок не помогала, но они стабильно работают при подключении через шлюз Xiaomi, а использование шлюза Gateway 2 поддерживается нативно практически всеми системами автоматизации.
Если от розетки требуется только управление, например, она включает увлажнитель по датчику влажности, то данное устройство будет работать без проблем. Но если необходимо делать более сложные сценарии, где необходимо снимать показания мощности, то данная розетка не подойдет.
4.1.1. BluetoothSocket — основная документация PyBluez
4.1.1. BluetoothSocket — основная документация PyBluezTodo
Добавить документацию по методам BluetoothSocket.
- класс
блютуз.
BluetoothSocket
( proto= Базы:
Объект
Сокет Bluetooth, представляющий одну конечную точку соединения Bluetooth.
Параметры: proto ( int ) — Протокол, который будет использовать сокет. Возможные варианты: HCI, L2CAP, RFCOMM или SCO. По умолчанию используется RFCOMM.
Примечание
RFCOMM — единственный протокол, доступный для систем Windows и macOS.
-
принять
() Принять соединение.
Возврат: Кортеж, содержащий BluetoothSocket
и адрес Bluetooth.Тип возврата: кортеж Поднимает: BluetoothError
— При неудачной попытке принять соединение.
-
привязать
( адрес-порт ) Привязать сокет к локальному адресу и порту.
Параметры: addrport ( tuple ) — Кортеж вида (address str, port int) Поднимает: BluetoothError
— При неудачной попытке привязать сокет.
-
закрыть
( *args , **kwargs )
-
подключить
( *args , **kwargs )
-
connect_ex
( *аргументы , **кваргс )
-
дубликат
() Дубликат розетки
Возвраты: Новый BluetoothSocket
подключен к тому же системному ресурсу.Тип возврата: BluetoothSocket
-
семейство
-
файлно
( *аргументы , **kwargs )
-
get_l2cap_options
( носок , mtu ) Получает параметры L2CAP для указанного сокета L2CAP. Варианты: omtu, imtu, flush_to, mode, fcs, max_tx, txwin_size.
-
getpeername
( *args , **kwargs )
-
getsockname
( *args , **kwargs )
-
getsockopt
( *args , **kwargs )
-
gettimeout
( *args , **kwargs )
-
слушать
( *args , **kwargs )
-
makefile
( *args , **kwargs )
-
прототип
-
получено
( *аргументы , **кваргс )
-
recvfrom
( *args , **kwargs )
-
отправить
( *args , **kwargs )
-
sendall
( *args , **kwargs )
-
отправить на
( *args , **kwargs )
-
set_l2cap_mtu
( носок , мту ) Настраивает MTU для указанного сокета L2CAP. Этот метод должен быть вызывается с обеих сторон соединения, чтобы оно работало! MTU по умолчанию с которого начинаются все соединения L2CAP, составляет 672 байта.
mtu должно находиться в диапазоне от 48 до 65535 включительно.
-
set_l2cap_options
( носок , варианты ) Задает параметры L2CAP для указанного сокета L2CAP. Список опций должен быть в том же формате, что и get_l2cap_options().
-
setblocking
( *args , **kwargs )
-
setl2capsecurity
( *args , **kwargs )
-
setockopt
( *args , **kwargs )
-
settimeout
( *args , **kwargs )
-
выключение
( *args , **kwargs )
-
тайм-аут
-
тип
-
Читать документы v: последний
- Версии
- последний
- стабильный
- Загрузки
- HTML
- epub
- При прочтении документов
- Дом проекта
- Строит
Бесплатный хостинг документов предоставляется Read the Docs.
android — Не удается снова открыть новый разъем Bluetooth
После закрытия разъема Bluetooth я пытаюсь открыть новый таким же образом, но Android сообщает мне, что разъем закрыт.
Это поток моего сервера для соединения Bluetooth:
частный внутренний класс AcceptBLThread : Thread() { частный вал mmServerSocket: BluetoothServerSocket? ленивый { bluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord( соединениеBLName, UUID.fromString(connectionUUID) ) } переопределить веселый бег () { // Продолжайте слушать, пока не возникнет исключение или не будет возвращен сокет. isAwaitingForBLConnectionVal = истина Log.i(тег, "Ожидание соединения BL") в то время как (isAwaitingForBLConnectionVal) { сокет val: BluetoothSocket? = попробуй { mmServerSocket?.accept() } поймать (e: IOException) { Log.e (тег, «Ошибка метода accept() сокета», e) isAwaitingForBLConnectionVal = false нулевой } сокет?. также { управлятьConnectedSocket(это) mmServerSocket?.close() isAwaitingForBLConnectionVal = false если (settings.isSlaveIndoorMeasurementsEnabled) { ожиданиеForBLConnection() } } } } // Закрывает сокет соединения и завершает поток. весело отменить () { пытаться { mmServerSocket?.close() исблмастерконнектедвал = ложь если (settings.isSlaveIndoorMeasurementsEnabled) { ожиданиеForBLConnection() } Log.i (тег, «Главное устройство отключено») Log.i(тег, "Закрытый серверный сокет") } поймать (e: IOException) { Log.e (тег, «Не удалось закрыть сокет подключения», e) } } @Suppress("MoveVariableDeclarationIntoWhen") частное развлечение manageConnectedSocket(socket: BluetoothSocket) { исблмастерконнектедвал = истина val inStream = socket. inputStream val outStream = socket.outputStream буфер val = массив байтов (1024) var numBytes: Целое если (сокет.isConnected) { Log.i(тег, "Главное устройство подключено") } еще { Log.i(тег, "Ошибка подключения главного устройства") } // Продолжайте слушать InputStream, пока не возникнет исключение. пока (правда) { // Чтение из InputStream. числобайт = попытка { inStream.read(буфер) } поймать (e: IOException) { Log.d(tag, "Входной поток был отключен", e) перерыв } если (количество байтов == 1) { val commandType = BluetoothCommands.from(buffer.toInt()) когда (тип команды) { BluetoothCommands. START_INDOOR -> { } BluetoothCommands.STOP_INDOOR -> { } BluetoothCommands.SEND_DATA_TO_MASTER -> { } BluetoothCommands.ON_MASTER_DISCONNECTED -> { Log.i(тег, "Событие главного отключенного BL") Обработчик (Looper.getMainLooper()). postDelayed ({ если (settings.isSlaveIndoorMeasurementsEnabled && !isAwaitingForBLConnectionVal) { ожиданиеForBLConnection() } }, 1000) } } } } } }
Это мой поток из клиентского соединения:
частный внутренний класс ConnectBLThread( val устройство: BluetoothDevice, val connectionCallback: BLCallback? ) : Нить() { частный сокет val: BluetoothSocket? ленивым (LazyThreadSafetyMode. NONE) { device.createRfcommSocketToServiceRecord(UUID.fromString(connectionUUID)) } переопределить веселый бег () { bluetoothAdapter.cancelDiscovery() сокет?.let {сокет -> пытаться { Log.i(tag, "Подключение к ведомому устройству") // Подключаемся к удаленному устройству через сокет. Этот вызов блокирует // до тех пор, пока он не завершится успешно или не вызовет исключение. сокет.connect() // Попытка подключения удалась. Выполнять работу, связанную с // соединение в отдельном потоке. управлятьConnectedSocket(сокет) } поймать (кроме исключения) { Log.i (тег «Не удалось подключиться к ведомому устройству») connectionCallback?.onConnectionError(device.address) } } } // Закрывает клиентский сокет и завершает поток. весело отменить () { пытаться { сокет?.outputStream?.write( BluetoothCommands.ON_MASTER_DISCONNECTED.value.toByteArray() ) Обработчик (Looper.getMainLooper()). postDelayed ({ сокет?.close() connectionCallback?.onDisconnected(device.address) },500) } поймать (e: IOException) { Log.e(tag, "Не удалось закрыть клиентский сокет", e) } } частное развлечение manageConnectedSocket(socket: BluetoothSocket) { Log.i(тег, "Подключение к ведомому устройству успешно") slaveSockets[device.address] = сокет connectionCallback?.onConnectedSuccessful() } }
Я хочу иметь флажок, когда я подключаюсь к устройству или когда нет. Но после снятия этого флажка я не могу снова подключиться. Я вызываю метод «cancel()» в ConnectBLThread, он вызывает сокет
?.