Pull to refresh

Comments 11

Вот программа то как раз и интересна, особенно в моменте анализа твитов. Если не сложно, осветите пожалуйста.
Там всё просто, твиты не анализируются, а считается их количество. Например:
Создаём запрос с ключевыми словами «счастлив+OR+счастлива+OR+ура+OR+взволнована+OR+отлично+OR+супер», добавляем ему координаты места, радиус поиска и язык. И начинаем считывать по одному твиту до тех пор, пока дата публикации твита не превысит два часа (twitter API возвращает json со всей информацией о найденом твите). Последний твит отбрасываем и получаем количество твитов с заданным «настроением» за последнии два часа.
В этом случае светильник не умный, показывает настроение не города а одного из мессенжеров твиттера и то не точно.
Да, всё верно — этот прибор нельзя назвать умным в полном смысле этого слова. Однако, от обычного светильника его отличает наличие wifi и способность самостоятельно определять какой цвет сейчас подходит лучше всего.
Точность определения настроения по твиттеру может быть под вопросом, но я думаю, что в больших городах твиттер даёт вполне объективную оценку. Протестировано во время матчей нашей сборной на чемпионате мира по футболу :)
Что-то посмотрел на железо, посмотрел на софт и возникло много вопросов.
Алюминиевые уголки с торчащими разнокалиберными винтами выглядят совершенно ужасно. Понятно, что термоклей к оргстеклу не липнет, но им же ассортимент клеев не исчерпывается.
Вместо RGB светодиодов куда проще использовать WS2812B на готовых круглых печатных платах — можно задать любой цвет и монтаж их простейший.
И зачем здесь вообще NodeMCU? ESP прекрасно программируются из среды ардуино непосредственно.
Посмотрел код и несколько удивился. Однообразные конструкции вида:
if (SERIAL_FULL)
Serial.println("Colour display mode. The sequence is:");

Смотрим — что такое SERIAL_FULL:
github.com/esp8266/Arduino/blob/master/cores/esp8266/HardwareSerial.h
enum SerialMode {
SERIAL_FULL = UART_FULL,
SERIAL_RX_ONLY = UART_RX_ONLY,
SERIAL_TX_ONLY = UART_TX_ONLY
};

github.com/esp8266/Arduino/blob/master/cores/esp8266/uart.h
#define UART_FULL 0
Хм.
Функция moodIndx2colour ввела меня в ступор. Через switch делать выбор цвета от индекса? А почему не задать простейший массив цветов?
Это только так, очень поверхностно глянул.
Винты использовал те, что были в наличии, они все одинаковые.
Проблему с ESP я обозначил. По деньгам получается примерно одинаково: ардуино нано (китайская) 350р + esp8266 100р = 450р.
nodemcu (китайский) = 500р, и намного удобнее в использовании.
По коду можно найти очень много вопросов — я не программист и буду рад любым советам по улучшению и оптимизации. SERIAL_FULL — проcто флаг вывода отладочной информации в сериал порт, объявлен в основном файле twitterProject.ino
// debug print settings
#define SERIAL_FULL false
#define SERIAL_COMPACT true

За наводку на WS2812B спасибо.
Это можно сделать проще (и чуть логичнее), если использовать препроцессор.
#define BE_VERBOSE
...
#ifdef BE_VERBOSE
Serial.println("debug info");
#endif

Когда нужно — расскомментируете строку с #define, а когда не нужно — комментируете.
К слову, каждый раз писать ifdef неудобно. Иногда оборачивают функции для отладки. Например вот для Arduino (не тестировал). Только придётся продумать уровни подробности (в лоб будет добавление ещё обёрток, но думаю можно изысканней).
ардуино нано (китайская) 350р + esp8266 100р = 450р.

Так а зачем nano то? ESP8266 прекрасно работает без Nano — достаточно купить переходник USB-UART и всё. Понятно — когда нужна «жирная» периферия, но в данном случае весь обмен по WiFi — нужен всего один свободный пин на WS2812B и всё.
SERIAL_FULL — проcто флаг вывода отладочной информации в сериал порт, объявлен в основном файле twitterProject.ino

А, понятно. Переопределение системных констант — не очень хорошая идея. Лучше как-то иначе обозвать.
нужен всего один свободный пин на WS2812B и всё.

Разумно, мне как-то в голову не пришло (шаблонное мышление — все дырки затыкать ардуино). Спасибо, возьму на заметку.

Посмотрите сюда: https://github.com/tretyakovsa/Sonoff_WiFi_switch, там много всего понавешено, но есть неплохое управление светодиодами, и все это может работать на одной esp. Но там используются WS2811/WS2812

Sign up to leave a comment.

Articles