[API, DIY или Сделай сам, Голосовые интерфейсы] Вентилятор для zwift с алисой
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Всем привет. Хочу заранее извинится за корявось решений, кода и изготовления. Во-первых, у меня очень кривые руки, во-вторых, стараюсь сделать с минимальными усилиями и из того, что есть под рукой, — главное чтоб работало стабильно и выполняло нужные функции.
Цель: тренируюсь регулярно на велосипеде, а зимой тренировки проходят дома на велостанке (кстати, он тоже у меня самодельный и это другая история) для обдува практически все, кто так тренируется, используют вентилятор.
У меня вот такой, простой напольный с тремя кнопками скорости.
Нашел его схему:
.
Так как опыта работы с ассинхроными двигателями у меня нет и что будет при одновременном включении двух разных обмоток одновременно я решил не рисковать и не допускать такого поэтому реле подключил следующим образом:
Одно реле включает вентилятор второе переключает скорости.
Получается использую две скорости первую и третью и остается возможность использования вентилятора в ручном режиме на второй скорости.
Блок реле использовал такой:
Контроллер использовал ESP8266:
Прошивал в Arduino IDE.
Код простейший:
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define OUTPUT1 5
#define OUTPUT2 0
char auth[] = "Здесь ваш код авторизации который придет на почту после регистрации на Blynk";
char ssid[] = "имя вашей сети вай фай";
char pass[] = "пароль вашей сети вай фай";
BLYNK_WRITE(V1)
{
int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable
digitalWrite(OUTPUT1, pinValue);
// process received value
}
BLYNK_WRITE(V2)
{
int pinValue = param.asInt();
digitalWrite(OUTPUT2, pinValue);
}
void setup()
{
pinMode(OUTPUT1, OUTPUT);
pinMode(OUTPUT2, OUTPUT);
digitalWrite(OUTPUT1, HIGH );
digitalWrite(OUTPUT2, HIGH );
Blynk.begin(auth, ssid, pass);
// You can also specify server:
}
void loop()
{
Blynk.run();
}
Главное получить свой код char auth[] = «Здесь ваш код авторизации который придет на почту после регистрации на Blynk»;
для управления можно использовать ссылки
blynk-cloud.com’вашкодавторизации’/update/V1?value=1 для отключения первого реле
blynk-cloud.com’вашкодавторизации’/update/V1?value=0 для включения первого реле
аналогично для второго
blynk-cloud.com’вашкодавторизации’/update/V2?value=1 blynk-cloud.com’вашкодавторизации’/update/V2?value=0
Первоначально использовал данное устройство и еще несколько дома для простого управления через интернет различными приборами. Так же эти ссылки можжно использовать с Алисой через навык “Домовенок кузя” работает корректно включает и отключает различные устройства.
Получается если остановится на этом уровне можно сделать умную розетку с алисой по стоимости деталей 250 рублей и в ней будет 2 канала и еще на МК будет куча свободных выводов.
Продолжаем дальше. Вентилятор работает включается выключается и т.д. но хотелось еще большей автоматизации. Изначально думал в направлении получения данных напрямую в микроконтроллер с датчика мощности. Даже начал изучать протокол ANT+ но сложности возникли с модулем ANT+ они вроде есть в продаже но какие то дорогие, пока до покупки не дошли руки и тут я случайно наткнулся на приложение на питоне zwift-client, которое умеет получать данные из моего аккаунта. Для установки $ pip install zwift-client Немного почитал про питон и научился считывать свои данные, написал небольшой скрипт:
import time
import requests
from zwift import Client
username = 'ваш логин звифта'
password = 'ваш пароль'
player_id = ваш ид в звите
client = Client(username, password)
world = client.get_world(1)
world.player_status(player_id)
i=1
change1=1
change2=1
powVKL=185
venrabota0='https://blynk-cloud.com/вашидентификаторблинка/update/V1?value=1'
venspeed0='https://blynk-cloud.com/вашидентификаторблинка/update/V1?value=0'
venrabota1='https://blynk-cloud.com/вашидентификаторблинка/update/V2?value=0'
venspeed1='https://blynk-cloud.com/вашидентификаторблинка/update/V2?value=1'
requests.get(venrabota0, verify=False)
requests.get(venspeed0, verify=False)
print('вентилятор выключен')
while i<10:
poweruser=world.player_status(player_id).power
cadenceuser=world.player_status(player_id).cadence
heartrateuser=world.player_status(player_id).heartrate
speeduser=world.player_status(player_id).speed//1000000
print('мощность: '+str(poweruser))
print('каденс: '+str(cadenceuser))
print('пульс: '+str(heartrateuser))
print('скорость: '+str(speeduser))
if change1==1 and speeduser>1:
requests.get(venrabota1, verify=False)
change1=0
if change1==0 and speeduser<1:
requests.get(venrabota0, verify=False)
change1=1
if change2==1 and poweruser>powVKL:
requests.get(venspeed1, verify=False)
change2=0
if change2==0 and poweruser<=powVKL:
requests.get(venspeed0, verify=False)
change2=1
time.sleep(1) # Delay for 1 minute (60 seconds)
В нем считываются мои данные и при начале движения включается вентилятор а при мощности больше 185 ВТ включается повышенная скорость.
В принципе вроде все. На самом деле решение незаконченное есть еще куча идей для его дальнейшего развития и для игры (изменения скорости вращения вентилятора при попадании в драфт) и мысль выводить информацию о своих параметрах мощность каденс скорость на вращающихся лопастях, управлением этим и другими устройствами напрямую с часов и т.д. никогда конца не будет.
===========
Источник:
habr.com
===========
Похожие новости:
- [Мессенджеры, JavaScript, Программирование, VueJS] Как создать приложение-чат за двадцать минут (перевод)
- [Разработка веб-сайтов, JavaScript, Программирование] Как анимировать элемент «details» с помощью WAAPI (перевод)
- [Программирование микроконтроллеров, Разработка на Raspberry Pi, DIY или Сделай сам, Здоровье] Затерянные в тумане, или Увлекательные приключения в мире АПР *
- [Разработка робототехники, Учебный процесс в IT, Разработка под Arduino, Робототехника, DIY или Сделай сам] Начать заниматься роботами должно быть просто
- [Maps API, Big Data, Email-маркетинг] Геомаркетинг как инструмент повышения качества проектов
- [Java, NoSQL, Big Data, Машинное обучение, Natural Language Processing] Кластеризация и классификация больших Текстовых данных с помощью машинного обучения на Java. Статья #1 — Теория
- [Open source, Java, API, Apache, Natural Language Processing] Краткий обзор системы Apache NlpCraft
- [Производство и разработка электроники, Умный дом, DIY или Сделай сам] Выбор элементной базы для аккумуляторного питания небольшого устройства
- [Open source, Go, Интернет вещей, DIY или Сделай сам] (Не)очередной MQTT телеграм бот для IoT
- [Прототипирование, Разработка под Arduino, Производство и разработка электроники, DIY или Сделай сам] Отладочная плата для Arduino Nano 2 часть
Теги для поиска: #_api, #_diy_ili_sdelaj_sam (DIY или Сделай сам), #_golosovye_interfejsy (Голосовые интерфейсы), #_svoimi_rukami (своими руками), #_umnyj_dom (умный дом), #_arduino (ардуино), #_api, #_diy_ili_sdelaj_sam (
DIY или Сделай сам
), #_golosovye_interfejsy (
Голосовые интерфейсы
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:43
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Всем привет. Хочу заранее извинится за корявось решений, кода и изготовления. Во-первых, у меня очень кривые руки, во-вторых, стараюсь сделать с минимальными усилиями и из того, что есть под рукой, — главное чтоб работало стабильно и выполняло нужные функции. Цель: тренируюсь регулярно на велосипеде, а зимой тренировки проходят дома на велостанке (кстати, он тоже у меня самодельный и это другая история) для обдува практически все, кто так тренируется, используют вентилятор. У меня вот такой, простой напольный с тремя кнопками скорости. Нашел его схему: . Так как опыта работы с ассинхроными двигателями у меня нет и что будет при одновременном включении двух разных обмоток одновременно я решил не рисковать и не допускать такого поэтому реле подключил следующим образом: Одно реле включает вентилятор второе переключает скорости. Получается использую две скорости первую и третью и остается возможность использования вентилятора в ручном режиме на второй скорости. Блок реле использовал такой: Контроллер использовал ESP8266: Прошивал в Arduino IDE. Код простейший: #define BLYNK_PRINT Serial
#include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> #define OUTPUT1 5 #define OUTPUT2 0 char auth[] = "Здесь ваш код авторизации который придет на почту после регистрации на Blynk"; char ssid[] = "имя вашей сети вай фай"; char pass[] = "пароль вашей сети вай фай"; BLYNK_WRITE(V1) { int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable digitalWrite(OUTPUT1, pinValue); // process received value } BLYNK_WRITE(V2) { int pinValue = param.asInt(); digitalWrite(OUTPUT2, pinValue); } void setup() { pinMode(OUTPUT1, OUTPUT); pinMode(OUTPUT2, OUTPUT); digitalWrite(OUTPUT1, HIGH ); digitalWrite(OUTPUT2, HIGH ); Blynk.begin(auth, ssid, pass); // You can also specify server: } void loop() { Blynk.run(); } Главное получить свой код char auth[] = «Здесь ваш код авторизации который придет на почту после регистрации на Blynk»; для управления можно использовать ссылки blynk-cloud.com’вашкодавторизации’/update/V1?value=1 для отключения первого реле blynk-cloud.com’вашкодавторизации’/update/V1?value=0 для включения первого реле аналогично для второго blynk-cloud.com’вашкодавторизации’/update/V2?value=1 blynk-cloud.com’вашкодавторизации’/update/V2?value=0 Первоначально использовал данное устройство и еще несколько дома для простого управления через интернет различными приборами. Так же эти ссылки можжно использовать с Алисой через навык “Домовенок кузя” работает корректно включает и отключает различные устройства. Получается если остановится на этом уровне можно сделать умную розетку с алисой по стоимости деталей 250 рублей и в ней будет 2 канала и еще на МК будет куча свободных выводов. Продолжаем дальше. Вентилятор работает включается выключается и т.д. но хотелось еще большей автоматизации. Изначально думал в направлении получения данных напрямую в микроконтроллер с датчика мощности. Даже начал изучать протокол ANT+ но сложности возникли с модулем ANT+ они вроде есть в продаже но какие то дорогие, пока до покупки не дошли руки и тут я случайно наткнулся на приложение на питоне zwift-client, которое умеет получать данные из моего аккаунта. Для установки $ pip install zwift-client Немного почитал про питон и научился считывать свои данные, написал небольшой скрипт: import time
import requests from zwift import Client username = 'ваш логин звифта' password = 'ваш пароль' player_id = ваш ид в звите client = Client(username, password) world = client.get_world(1) world.player_status(player_id) i=1 change1=1 change2=1 powVKL=185 venrabota0='https://blynk-cloud.com/вашидентификаторблинка/update/V1?value=1' venspeed0='https://blynk-cloud.com/вашидентификаторблинка/update/V1?value=0' venrabota1='https://blynk-cloud.com/вашидентификаторблинка/update/V2?value=0' venspeed1='https://blynk-cloud.com/вашидентификаторблинка/update/V2?value=1' requests.get(venrabota0, verify=False) requests.get(venspeed0, verify=False) print('вентилятор выключен') while i<10: poweruser=world.player_status(player_id).power cadenceuser=world.player_status(player_id).cadence heartrateuser=world.player_status(player_id).heartrate speeduser=world.player_status(player_id).speed//1000000 print('мощность: '+str(poweruser)) print('каденс: '+str(cadenceuser)) print('пульс: '+str(heartrateuser)) print('скорость: '+str(speeduser)) if change1==1 and speeduser>1: requests.get(venrabota1, verify=False) change1=0 if change1==0 and speeduser<1: requests.get(venrabota0, verify=False) change1=1 if change2==1 and poweruser>powVKL: requests.get(venspeed1, verify=False) change2=0 if change2==0 and poweruser<=powVKL: requests.get(venspeed0, verify=False) change2=1 time.sleep(1) # Delay for 1 minute (60 seconds) В нем считываются мои данные и при начале движения включается вентилятор а при мощности больше 185 ВТ включается повышенная скорость. В принципе вроде все. На самом деле решение незаконченное есть еще куча идей для его дальнейшего развития и для игры (изменения скорости вращения вентилятора при попадании в драфт) и мысль выводить информацию о своих параметрах мощность каденс скорость на вращающихся лопастях, управлением этим и другими устройствами напрямую с часов и т.д. никогда конца не будет. =========== Источник: habr.com =========== Похожие новости:
DIY или Сделай сам ), #_golosovye_interfejsy ( Голосовые интерфейсы ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:43
Часовой пояс: UTC + 5