Как стать автором
Обновить

Комментарии 21

Для распознавания лиц, стоит посмотреть в сторону insightface, вполне прилично работает

Спасибо, посмотрю.

У меня вопрос: alice_has_fun.py и python можно в докер упаковать?

Можно. Нужно ли?

Это получается действительно полоумное устройство можно будет сделать без кучи датчиков, включил чайник выполнился алгоритм, лег на кровать, выключился свет на кухне, уснул перед теликом итд

Правда камеры для безопасности и анонимности надо все это дома обрабатывать, но компы достаточно мощные это не должно быть проблемой

Он вроде разово построил модель и всё. Или там что-то онлайновое в библиотеках?

Я надеюсь это только начало народных умельцев) из крипты выделились ресурсы, может на пользу обществу пойдут

Как думаете, в чем может быть причина того, что node-RED не видит колонку? Получаю ключ oauth, всё норм. Деплою, захожу обратно, список станций пуст, кнопка "обновить" ничего не делает... Убрал/добавил авторизацию, не помогло. Включена двухфакторная через яндекс.ключ, но как я понял, это может влиять только на получение токена, который получается без проблем. Устройства в одной сети.

Пробовали ip адрес колонки в режиме manual вводить?

Да, не помогает... Пробовал колонку заново регистрировать, тоже без результата...

Спасибо, но что-то так и не получилось NR подружить с моей станцией. Подозреваю, что может это из-за того, что она была активирована на другом аккаунте... Сделал распознавалку на insightface, похоже чуть лучше работает, чем у Google. Хочу подружить её с алисой через python напрямую, нашел работающий у меня вариант.

Жаль что не получилось. А можно на код с insightface глянуть?

Спасибо!

А есть ли где-нибудь протокол для локального общения с колонкой? Не как модуль для Node-Red или Home? Просто посмотреть список запросов/ответов? Или python модуль?

Интересный проект! Попробовал пока запустить с твоим кодом - основной скрипт удалось запустить (лицо определяет). А вот дальше честно не разобрался. Контейнеры поднялись успешно. Возможно, все же что-то не так сделал - сложилось впечатление, что mosquitto никакие сообщения через себя не шлет (сужу только по логам и по node-red debug, т.к. не смог подцепить MQTT брокер к работающему mosquitto), хотя(!) node-red к нему подключился успешно (зеленый индикатор подключен). Интересно разобраться в предложенной связке Python - MQTT - Node-RED - PostgreSQL.

З.ы. Отдельное спасибо за скрипт сбора датасета изображений с камеры ;-)

фрагмент лога mosquitto

2022-11-30 16:40:46 1669815646: mosquitto version 1.6.13 starting
2022-11-30 16:40:46 1669815646: Config loaded from /mosquitto/config/mosquitto.conf.
2022-11-30 16:40:46 1669815646: Opening ipv4 listen socket on port 1883.
2022-11-30 16:40:46 1669815646: Opening ipv6 listen socket on port 1883.
2022-11-30 16:40:46 1669815646: mosquitto version 1.6.13 running
2022-11-30 16:40:54 1669815654: New connection from 172.23.0.3 on port 1883.
2022-11-30 16:40:54 1669815654: New client connected from 172.23.0.3 as nodered_5bc695af4bfa1772 (p2, c1, k60).
2022-11-30 16:40:57 1669815657: New connection from 172.23.0.1 on port 1883.
2022-11-30 16:40:57 1669815657: New client connected from 172.23.0.1 as alice_fun-mqtt-574 (p2, c1, k60).
2022-11-30 16:42:28 1669815748: Client alice_fun-mqtt-574 has exceeded timeout, disconnecting.

фрагмент лога node-red (крупный фрагмент)

2022-11-30 16:40:48 30 Nov 16:40:48 - [info]
2022-11-30 16:40:48
2022-11-30 16:40:48 Welcome to Node-RED
2022-11-30 16:40:48 ===================
2022-11-30 16:40:48
2022-11-30 16:40:48 30 Nov 16:40:48 - [info] Node-RED version: v3.0.2
2022-11-30 16:40:48 30 Nov 16:40:48 - [info] Node.js version: v16.16.0
2022-11-30 16:40:48 30 Nov 16:40:48 - [info] Linux 5.15.49-linuxkit x64 LE
2022-11-30 16:40:49 30 Nov 16:40:49 - [info] Loading palette nodes
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] Dashboard version 3.2.3 started at /ui
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] Settings file : /data/settings.js
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] Context store : 'default' [module=memory]
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] User directory : /data
2022-11-30 16:40:54 30 Nov 16:40:54 - [warn] Projects disabled : editorTheme.projects.enabled=false
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] Flows file : /data/flows.json
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] Server now running at http://127.0.0.1:1880/
2022-11-30 16:40:54 30 Nov 16:40:54 - [warn]
2022-11-30 16:40:54
2022-11-30 16:40:54 ---------------------------------------------------------------------
2022-11-30 16:40:54 Your flow credentials file is encrypted using a system-generated key.
2022-11-30 16:40:54
2022-11-30 16:40:54 If the system-generated key is lost for any reason, your credentials
2022-11-30 16:40:54 file will not be recoverable, you will have to delete it and re-enter
2022-11-30 16:40:54 your credentials.
2022-11-30 16:40:54
2022-11-30 16:40:54 You should set your own key using the 'credentialSecret' option in
2022-11-30 16:40:54 your settings file. Node-RED will then re-encrypt your credentials
2022-11-30 16:40:54 file using your chosen key the next time you deploy a change.
2022-11-30 16:40:54 ---------------------------------------------------------------------
2022-11-30 16:40:54
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] Starting flows
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [alice-local-out:STATION VOice] XK00000000000000515800003be983c2
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [alice-local-out:STATION VOice] Status: {"color":"red","text":"disconnected"}
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [alice-local-out:STATION VOice] XK00000000000000515800003be983c2
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [alice-local-out:STATION VOice] Status: {"color":"red","text":"disconnected"}
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [alice-local-station:My Yandex Station] {"active":false,"from":"0","to":"1440","phrase":"","dayNumber":1}
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [alice-local-station:My Yandex Station] {"active":false,"from":"0","to":"1440","phrase":"","dayNumber":2}
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [alice-local-station:My Yandex Station] {"active":false,"from":"0","to":"1440","phrase":"","dayNumber":3}
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [alice-local-station:My Yandex Station] {"active":false,"from":"0","to":"1440","phrase":"","dayNumber":4}
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [alice-local-station:My Yandex Station] {"active":false,"from":"0","to":"1440","phrase":"","dayNumber":5}
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [alice-local-station:My Yandex Station] {"active":false,"from":"0","to":"1440","phrase":"","dayNumber":6}
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [alice-local-station:My Yandex Station] {"active":false,"from":"0","to":"1440","phrase":"","dayNumber":0}
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [alice-local-station:My Yandex Station] Send registration for XK00000000000000515800003be983c2
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [yandex-login:SVETLAKOV.ART] Recieved parameters {"connection":true,"sheduler":[{"active":false,"from":"0","to":"1440","phrase":"","dayNumber":1},{"active":false,"from":"0","to":"1440","phrase":"","dayNumber":2},{"active":false,"from":"0","to":"1440","phrase":"","dayNumber":3},{"active":false,"from":"0","to":"1440","phrase":"","dayNumber":4},{"active":false,"from":"0","to":"1440","phrase":"","dayNumber":5},{"active":false,"from":"0","to":"1440","phrase":"","dayNumber":6},{"active":false,"from":"0","to":"1440","phrase":"","dayNumber":0}],"network":{"mode":"manual","fixedAddress":"192.168.1.60","fixedPort":"1961"}} for station id XK00000000000000515800003be983c2
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [yandex-login:SVETLAKOV.ART] New element in registration buffer. Current buffer size is 1
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [alice-local-out:STATION VOice] XK00000000000000515800003be983c2
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [alice-local-out:STATION VOice] Status: {"color":"red","text":"disconnected"}
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] Started flows
2022-11-30 16:40:54 30 Nov 16:40:54 - [info] [mqtt-broker:mosquitto docker] Connected to broker: mqtt://mosquitto_alice:1883
2022-11-30 16:40:55 30 Nov 16:40:55 - [error] [postgresql:select cases] error: relation "cases" does not exist
2022-11-30 16:40:55 30 Nov 16:40:55 - [error] [postgresql:select phrases by case] error: relation "phrases" does not exist
2022-11-30 16:45:55 30 Nov 16:45:55 - [error] [postgresql:select phrases by case] error: relation "phrases" does not exist
2022-11-30 16:50:55 30 Nov 16:50:55 - [error] [postgresql:select phrases by case] error: relation "phrases" does not exist
2022-11-30 16:55:55 30 Nov 16:55:55 - [error] [postgresql:select phrases by case] error: relation "phrases" does not exist
2022-11-30 17:00:55 30 Nov 17:00:55 - [error] [postgresql:select phrases by case] error: relation "phrases" does not exist

фрагмент лога postgres

2022-11-30 16:40:49
2022-11-30 16:40:49 PostgreSQL Database directory appears to contain a database; Skipping initialization
2022-11-30 16:40:49
2022-11-30 16:40:49 2022-11-30 13:40:49.502 UTC [1] LOG: starting PostgreSQL 15.1 (Debian 15.1-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
2022-11-30 16:40:49 2022-11-30 13:40:49.502 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
2022-11-30 16:40:49 2022-11-30 13:40:49.502 UTC [1] LOG: listening on IPv6 address "::", port 5432
2022-11-30 16:40:49 2022-11-30 13:40:49.508 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2022-11-30 16:40:49 2022-11-30 13:40:49.541 UTC [30] LOG: database system was shut down at 2022-11-30 13:40:37 UTC
2022-11-30 16:40:49 2022-11-30 13:40:49.580 UTC [1] LOG: database system is ready to accept connections
2022-11-30 16:40:55 2022-11-30 13:40:55.248 UTC [34] ERROR: relation "cases" does not exist at character 15
2022-11-30 16:40:55 2022-11-30 13:40:55.248 UTC [34] STATEMENT: select * from cases;
2022-11-30 16:40:55 2022-11-30 13:40:55.351 UTC [35] ERROR: relation "phrases" does not exist at character 20
2022-11-30 16:40:55 2022-11-30 13:40:55.351 UTC [35] STATEMENT: select phrase from phrases where case_id=1; 2022-11-30 16:50:55 2022-11-30 13:50:55.032 UTC [47] ERROR: relation "phrases" does not exist at character 20 2022-11-30 16:50:55 2022-11-30 13:50:55.032 UTC [47] STATEMENT: select phrase from phrases where case_id=1; 2022-11-30 17:00:55 2022-11-30 14:00:55.043 UTC [59] ERROR: relation "phrases" does not exist at character 20 2022-11-30 17:00:55 2022-11-30 14:00:55.043 UTC [59] STATEMENT: select phrase from phrases where case_id=$1;

скрин сообщений отладки node-red

Судя по скрину таблицы в Postgres, не создались попробуйте заново проинициализировать контейнер с БД или руками запустить в нем скрипт создания storage/db_init/db_init.sql. Так как доходит до этого этапа то цепочка python->mqtt->nodered работает. В таблице phrases как раз хранятся фразы которые Алиса будет произносить.

Отлично! Спасибо за пример!

Как раз изучаю подобное) плюсик в карму)))

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории