Шлюз для smart bluetooth устройств

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

smart_g
Сообщения: 292
Зарегистрирован: Вт окт 17, 2017 11:29 am
Откуда: Украина, Киев
Благодарил (а): 15 раз
Поблагодарили: 33 раза

Re: Шлюз для smart bluetooth устройств

Сообщение smart_g » Чт июл 05, 2018 8:03 pm

sega6549 писал(а):
Чт июл 05, 2018 5:08 pm
всем привет нужна ваша помощь, нужно подключить к мажеру 10 датчиков Xiaomi mi Flora Monitor, как я понял есть какой то скрипт на питоне, который может опрашивать эти датчики по блютус, но скрипт не под нашу систему и мне например как человеку далекому от этого не под силу это сделать, может кто выложит готовый скрипт сюда и еще инструкцию как это все использовать, есть сервер на компе под убунтой 16. и еще вопрос уже к Сергею, почему бы не запилить под такие устройства отдельный модуль? таких устройств очень много и думаю всем было бы интересна такая возможность
лови скрипт надо доустановить к питону пакет paho
СпойлерПоказать
import paho.mqtt.publish as publish
import time
from miflora.miflora_poller import MiFloraPoller, \
MI_CONDUCTIVITY, MI_MOISTURE, MI_LIGHT, MI_TEMPERATURE, MI_BATTERY


def update(address,idx_moist,idx_temp,idx_lux,idx_cond):

poller = MiFloraPoller(address)

# reading error in poller (happens sometime, you go and bug the original author):
#
# 26231 fertility
# 136% moisture
# 4804.2 temperature
# 61149 lux

loop = 0
try:
temp = poller.parameter_value("temperature")
except:
temp = 201

while loop < 2 and temp > 200:
print("Patched: Error reading value retry after 5 seconds...\n")
time.sleep(5)
poller = MiFloraPoller(address)
loop += 1
try:
temp = poller.parameter_value("temperature")
except:
temp = 201

if temp > 200:
print("Patched: Error reading value\n")
return

# global domoticzserver

print("Mi Flora: " + address)
print("Firmware: {}".format(poller.firmware_version()))
print("Name: {}".format(poller.name()))
print("Temperature: {}°C".format(poller.parameter_value("temperature")))
print("Moisture: {}%".format(poller.parameter_value(MI_MOISTURE)))
print("Light: {} lux".format(poller.parameter_value(MI_LIGHT)))
print("Fertility: {} uS/cm?".format(poller.parameter_value(MI_CONDUCTIVITY)))
print("Battery: {}%".format(poller.parameter_value(MI_BATTERY)))

val_bat = "{}".format(poller.parameter_value(MI_BATTERY))
publish.single("/flower_care/Battery/" + address, val_bat, hostname="192.168.1.13")
# Update temp
val_temp = "{}".format(poller.parameter_value("temperature"))
publish.single("/flower_care/Temperature/" + address, val_temp, hostname="192.168.1.13")
# Update lux
val_lux = "{}".format(poller.parameter_value(MI_LIGHT))
publish.single("/flower_care/LUX/" + address, val_lux, hostname="192.168.1.13")

# Update moisture
val_moist = "{}".format(poller.parameter_value(MI_MOISTURE))
publish.single("/flower_care/Moisture/" + address, val_moist, hostname="192.168.1.13")

# Update fertility
val_cond = "{}".format(poller.parameter_value(MI_CONDUCTIVITY))
publish.single("/flower_care/Fertitily/" + address, val_cond, hostname="192.168.1.13")

time.sleep(1)

# format address, moist (%), temp (°C), lux, fertility

print("\n1: Guest Room")
update("C4:7C:8D:62:DE:4A","470","138","140","141")

print("\n2: Bad Room")
update("C4:7C:8D:63:3C:3C","471","338","339","348")

print("\n3: Cabinet")
update("C4:7C:8D:63:55:11","472","337","340","347")


тут три датчика
За это сообщение автора smart_g поблагодарил:
sega6549 (Пн июл 09, 2018 8:54 am)
Рейтинг: 1.16%
Ubuntu Server 16.04 LTS, OpenWRT 1-wire, SonOFF, MYSensors, MiHome, Yeelight, MiFlower
sega6549
Сообщения: 530
Зарегистрирован: Чт авг 20, 2015 11:32 am
Откуда: Ярославль
Благодарил (а): 61 раз
Поблагодарили: 75 раз
Контактная информация:

Re: Шлюз для smart bluetooth устройств

Сообщение sega6549 » Пн июл 09, 2018 8:56 am

smart_g писал(а):
Чт июл 05, 2018 8:03 pm
sega6549 писал(а):
Чт июл 05, 2018 5:08 pm
всем привет нужна ваша помощь, нужно подключить к мажеру 10 датчиков Xiaomi mi Flora Monitor, как я понял есть какой то скрипт на питоне, который может опрашивать эти датчики по блютус, но скрипт не под нашу систему и мне например как человеку далекому от этого не под силу это сделать, может кто выложит готовый скрипт сюда и еще инструкцию как это все использовать, есть сервер на компе под убунтой 16. и еще вопрос уже к Сергею, почему бы не запилить под такие устройства отдельный модуль? таких устройств очень много и думаю всем было бы интересна такая возможность
лови скрипт надо доустановить к питону пакет paho
СпойлерПоказать
import paho.mqtt.publish as publish
import time
from miflora.miflora_poller import MiFloraPoller, \
MI_CONDUCTIVITY, MI_MOISTURE, MI_LIGHT, MI_TEMPERATURE, MI_BATTERY


def update(address,idx_moist,idx_temp,idx_lux,idx_cond):

poller = MiFloraPoller(address)

# reading error in poller (happens sometime, you go and bug the original author):
#
# 26231 fertility
# 136% moisture
# 4804.2 temperature
# 61149 lux

loop = 0
try:
temp = poller.parameter_value("temperature")
except:
temp = 201

while loop < 2 and temp > 200:
print("Patched: Error reading value retry after 5 seconds...\n")
time.sleep(5)
poller = MiFloraPoller(address)
loop += 1
try:
temp = poller.parameter_value("temperature")
except:
temp = 201

if temp > 200:
print("Patched: Error reading value\n")
return

# global domoticzserver

print("Mi Flora: " + address)
print("Firmware: {}".format(poller.firmware_version()))
print("Name: {}".format(poller.name()))
print("Temperature: {}°C".format(poller.parameter_value("temperature")))
print("Moisture: {}%".format(poller.parameter_value(MI_MOISTURE)))
print("Light: {} lux".format(poller.parameter_value(MI_LIGHT)))
print("Fertility: {} uS/cm?".format(poller.parameter_value(MI_CONDUCTIVITY)))
print("Battery: {}%".format(poller.parameter_value(MI_BATTERY)))

val_bat = "{}".format(poller.parameter_value(MI_BATTERY))
publish.single("/flower_care/Battery/" + address, val_bat, hostname="192.168.1.13")
# Update temp
val_temp = "{}".format(poller.parameter_value("temperature"))
publish.single("/flower_care/Temperature/" + address, val_temp, hostname="192.168.1.13")
# Update lux
val_lux = "{}".format(poller.parameter_value(MI_LIGHT))
publish.single("/flower_care/LUX/" + address, val_lux, hostname="192.168.1.13")

# Update moisture
val_moist = "{}".format(poller.parameter_value(MI_MOISTURE))
publish.single("/flower_care/Moisture/" + address, val_moist, hostname="192.168.1.13")

# Update fertility
val_cond = "{}".format(poller.parameter_value(MI_CONDUCTIVITY))
publish.single("/flower_care/Fertitily/" + address, val_cond, hostname="192.168.1.13")

time.sleep(1)

# format address, moist (%), temp (°C), lux, fertility

print("\n1: Guest Room")
update("C4:7C:8D:62:DE:4A","470","138","140","141")

print("\n2: Bad Room")
update("C4:7C:8D:63:3C:3C","471","338","339","348")

print("\n3: Cabinet")
update("C4:7C:8D:63:55:11","472","337","340","347")


тут три датчика
Спасибо, тоесть необходимо только адрес поменять будет, а добавить новые датчики можно просто добавлением новых строчек? print("\n3: Cabinet")
update("C4:7C:8D:63:55:11","472","337","340","347")
Тут можно задать вопрос по MajorDoMo VK
Канал по MajorDoMo youtube
smart_g
Сообщения: 292
Зарегистрирован: Вт окт 17, 2017 11:29 am
Откуда: Украина, Киев
Благодарил (а): 15 раз
Поблагодарили: 33 раза

Re: Шлюз для smart bluetooth устройств

Сообщение smart_g » Пн июл 09, 2018 10:06 am

sega6549 писал(а):
Пн июл 09, 2018 8:56 am
smart_g писал(а):
Чт июл 05, 2018 8:03 pm
sega6549 писал(а):
Чт июл 05, 2018 5:08 pm
всем привет нужна ваша помощь, нужно подключить к мажеру 10 датчиков Xiaomi mi Flora Monitor, как я понял есть какой то скрипт на питоне, который может опрашивать эти датчики по блютус, но скрипт не под нашу систему и мне например как человеку далекому от этого не под силу это сделать, может кто выложит готовый скрипт сюда и еще инструкцию как это все использовать, есть сервер на компе под убунтой 16. и еще вопрос уже к Сергею, почему бы не запилить под такие устройства отдельный модуль? таких устройств очень много и думаю всем было бы интересна такая возможность
лови скрипт надо доустановить к питону пакет paho
СпойлерПоказать
import paho.mqtt.publish as publish
import time
from miflora.miflora_poller import MiFloraPoller, \
MI_CONDUCTIVITY, MI_MOISTURE, MI_LIGHT, MI_TEMPERATURE, MI_BATTERY


def update(address,idx_moist,idx_temp,idx_lux,idx_cond):

poller = MiFloraPoller(address)

# reading error in poller (happens sometime, you go and bug the original author):
#
# 26231 fertility
# 136% moisture
# 4804.2 temperature
# 61149 lux

loop = 0
try:
temp = poller.parameter_value("temperature")
except:
temp = 201

while loop < 2 and temp > 200:
print("Patched: Error reading value retry after 5 seconds...\n")
time.sleep(5)
poller = MiFloraPoller(address)
loop += 1
try:
temp = poller.parameter_value("temperature")
except:
temp = 201

if temp > 200:
print("Patched: Error reading value\n")
return

# global domoticzserver

print("Mi Flora: " + address)
print("Firmware: {}".format(poller.firmware_version()))
print("Name: {}".format(poller.name()))
print("Temperature: {}°C".format(poller.parameter_value("temperature")))
print("Moisture: {}%".format(poller.parameter_value(MI_MOISTURE)))
print("Light: {} lux".format(poller.parameter_value(MI_LIGHT)))
print("Fertility: {} uS/cm?".format(poller.parameter_value(MI_CONDUCTIVITY)))
print("Battery: {}%".format(poller.parameter_value(MI_BATTERY)))

val_bat = "{}".format(poller.parameter_value(MI_BATTERY))
publish.single("/flower_care/Battery/" + address, val_bat, hostname="192.168.1.13")
# Update temp
val_temp = "{}".format(poller.parameter_value("temperature"))
publish.single("/flower_care/Temperature/" + address, val_temp, hostname="192.168.1.13")
# Update lux
val_lux = "{}".format(poller.parameter_value(MI_LIGHT))
publish.single("/flower_care/LUX/" + address, val_lux, hostname="192.168.1.13")

# Update moisture
val_moist = "{}".format(poller.parameter_value(MI_MOISTURE))
publish.single("/flower_care/Moisture/" + address, val_moist, hostname="192.168.1.13")

# Update fertility
val_cond = "{}".format(poller.parameter_value(MI_CONDUCTIVITY))
publish.single("/flower_care/Fertitily/" + address, val_cond, hostname="192.168.1.13")

time.sleep(1)

# format address, moist (%), temp (°C), lux, fertility

print("\n1: Guest Room")
update("C4:7C:8D:62:DE:4A","470","138","140","141")

print("\n2: Bad Room")
update("C4:7C:8D:63:3C:3C","471","338","339","348")

print("\n3: Cabinet")
update("C4:7C:8D:63:55:11","472","337","340","347")


тут три датчика
Спасибо, тоесть необходимо только адрес поменять будет, а добавить новые датчики можно просто добавлением новых строчек? print("\n3: Cabinet")
update("C4:7C:8D:63:55:11","472","337","340","347")
Да, надо найти свои устройства BLE сканером и заменить в скрипте mac адреса и добавить нужное количество устройств. Оригинальный скрипт на форуме 4pda под домотикс. На первой странице этой темы ссылка на еще один скрипт по датчикам miflora
За это сообщение автора smart_g поблагодарил:
sega6549 (Пн июл 09, 2018 12:21 pm)
Рейтинг: 1.16%
Ubuntu Server 16.04 LTS, OpenWRT 1-wire, SonOFF, MYSensors, MiHome, Yeelight, MiFlower
sega6549
Сообщения: 530
Зарегистрирован: Чт авг 20, 2015 11:32 am
Откуда: Ярославль
Благодарил (а): 61 раз
Поблагодарили: 75 раз
Контактная информация:

Re: Шлюз для smart bluetooth устройств

Сообщение sega6549 » Пн июл 09, 2018 12:21 pm

smart_g писал(а):
Пн июл 09, 2018 10:06 am
sega6549 писал(а):
Пн июл 09, 2018 8:56 am
smart_g писал(а):
Чт июл 05, 2018 8:03 pm
sega6549 писал(а):
Чт июл 05, 2018 5:08 pm
всем привет нужна ваша помощь, нужно подключить к мажеру 10 датчиков Xiaomi mi Flora Monitor, как я понял есть какой то скрипт на питоне, который может опрашивать эти датчики по блютус, но скрипт не под нашу систему и мне например как человеку далекому от этого не под силу это сделать, может кто выложит готовый скрипт сюда и еще инструкцию как это все использовать, есть сервер на компе под убунтой 16. и еще вопрос уже к Сергею, почему бы не запилить под такие устройства отдельный модуль? таких устройств очень много и думаю всем было бы интересна такая возможность
лови скрипт надо доустановить к питону пакет paho
СпойлерПоказать
import paho.mqtt.publish as publish
import time
from miflora.miflora_poller import MiFloraPoller, \
MI_CONDUCTIVITY, MI_MOISTURE, MI_LIGHT, MI_TEMPERATURE, MI_BATTERY


def update(address,idx_moist,idx_temp,idx_lux,idx_cond):

poller = MiFloraPoller(address)

# reading error in poller (happens sometime, you go and bug the original author):
#
# 26231 fertility
# 136% moisture
# 4804.2 temperature
# 61149 lux

loop = 0
try:
temp = poller.parameter_value("temperature")
except:
temp = 201

while loop < 2 and temp > 200:
print("Patched: Error reading value retry after 5 seconds...\n")
time.sleep(5)
poller = MiFloraPoller(address)
loop += 1
try:
temp = poller.parameter_value("temperature")
except:
temp = 201

if temp > 200:
print("Patched: Error reading value\n")
return

# global domoticzserver

print("Mi Flora: " + address)
print("Firmware: {}".format(poller.firmware_version()))
print("Name: {}".format(poller.name()))
print("Temperature: {}°C".format(poller.parameter_value("temperature")))
print("Moisture: {}%".format(poller.parameter_value(MI_MOISTURE)))
print("Light: {} lux".format(poller.parameter_value(MI_LIGHT)))
print("Fertility: {} uS/cm?".format(poller.parameter_value(MI_CONDUCTIVITY)))
print("Battery: {}%".format(poller.parameter_value(MI_BATTERY)))

val_bat = "{}".format(poller.parameter_value(MI_BATTERY))
publish.single("/flower_care/Battery/" + address, val_bat, hostname="192.168.1.13")
# Update temp
val_temp = "{}".format(poller.parameter_value("temperature"))
publish.single("/flower_care/Temperature/" + address, val_temp, hostname="192.168.1.13")
# Update lux
val_lux = "{}".format(poller.parameter_value(MI_LIGHT))
publish.single("/flower_care/LUX/" + address, val_lux, hostname="192.168.1.13")

# Update moisture
val_moist = "{}".format(poller.parameter_value(MI_MOISTURE))
publish.single("/flower_care/Moisture/" + address, val_moist, hostname="192.168.1.13")

# Update fertility
val_cond = "{}".format(poller.parameter_value(MI_CONDUCTIVITY))
publish.single("/flower_care/Fertitily/" + address, val_cond, hostname="192.168.1.13")

time.sleep(1)

# format address, moist (%), temp (°C), lux, fertility

print("\n1: Guest Room")
update("C4:7C:8D:62:DE:4A","470","138","140","141")

print("\n2: Bad Room")
update("C4:7C:8D:63:3C:3C","471","338","339","348")

print("\n3: Cabinet")
update("C4:7C:8D:63:55:11","472","337","340","347")


тут три датчика
Спасибо, тоесть необходимо только адрес поменять будет, а добавить новые датчики можно просто добавлением новых строчек? print("\n3: Cabinet")
update("C4:7C:8D:63:55:11","472","337","340","347")
Да, надо найти свои устройства BLE сканером и заменить в скрипте mac адреса и добавить нужное количество устройств. Оригинальный скрипт на форуме 4pda под домотикс. На первой странице этой темы ссылка на еще один скрипт по датчикам miflora
и все же почему бы модуль не запилить? или это нереально?
Тут можно задать вопрос по MajorDoMo VK
Канал по MajorDoMo youtube
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Шлюз для smart bluetooth устройств

Сообщение directman66 » Вс июл 15, 2018 10:50 am

Друзья, начало положено. Написал небольшую инструкцию по подключению BLE MI FLORA PLANT к МД через ESP32

https://connect.smartliving.ru/profile/ ... og126.html

Планы на будущее:
1) вывод информации на экран LORA
2) добавить поддержку весов GASON S4 https://ru.aliexpress.com/item/GASON-S4 ... 33edRjkCT4
3) добавить поддерку чайника XIAOMI.
За это сообщение автора directman66 поблагодарили (всего 3):
sega6549 (Вс июл 15, 2018 11:13 am) • Igor.P (Вт июл 17, 2018 10:16 am) • ypiter2006 (Ср июл 18, 2018 7:09 pm)
Рейтинг: 3.49%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
kurs
Сообщения: 43
Зарегистрирован: Пн сен 05, 2016 10:42 am
Благодарил (а): 31 раз
Поблагодарили: 3 раза

Re: Шлюз для smart bluetooth устройств

Сообщение kurs » Ср июл 18, 2018 1:11 pm

вот для Чайника Redmond RK-G210S SkyKettle вот былобы круто сделать
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Шлюз для smart bluetooth устройств

Сообщение directman66 » Ср июл 18, 2018 7:08 pm

Я купил чайник сяоми, наверно он будет когда-нибудь добавлен тоже. У Редмонда вроде в отличии от сяоми есть режим удаленного включения и есть датчик наличия воды. Но выглядит куда менее надежно.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
kurs
Сообщения: 43
Зарегистрирован: Пн сен 05, 2016 10:42 am
Благодарил (а): 31 раз
Поблагодарили: 3 раза

Re: Шлюз для smart bluetooth устройств

Сообщение kurs » Чт июл 19, 2018 11:52 am

работает уже 2 года и красиво светится
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Шлюз для smart bluetooth устройств

Сообщение olehs » Чт июл 19, 2018 11:58 am

kurs писал(а):
Чт июл 19, 2018 11:52 am
работает уже 2 года и красиво светится
так а ESP32 у вас есть?
kurs
Сообщения: 43
Зарегистрирован: Пн сен 05, 2016 10:42 am
Благодарил (а): 31 раз
Поблагодарили: 3 раза

Re: Шлюз для smart bluetooth устройств

Сообщение kurs » Чт июл 19, 2018 12:03 pm

есть
пока одна для тестов
Ответить