Any idea what this can be about? (I’m not 100% sure if this is related to your plugin) but I’m only using it in the config
My config: https://gist.github.com/SubZane/c559ddf5e5d49d0ce9ffcadf8cb9cae5
events.js:163
throw er; // Unhandled ‘error’ event
^
Error: listen EADDRINUSE :::51826
at Object.exports._errnoException (util.js:1050:11)
at exports._exceptionWithHostPort (util.js:1073:20)
at Server.setupListenHandle [as _listen2] (net.js:1259:14)
at listenInCluster (net.js:1307:12)
at Server.listen (net.js:1406:7)
at EventedHTTPServer.listen (/usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/util/eventedhttp.js:60:19)
at HAPServer.listen (/usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:158:20)
at Bridge.Accessory.publish (/usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:486:16)
at Server._publish (/usr/lib/node_modules/homebridge/lib/server.js:114:16)
at Server. (/usr/lib/node_modules/homebridge/lib/server.js:372:14)
at /usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/util/once.js:16:19
at TelldusLive.loginAsync.then.then.accessories (/usr/lib/node_modules/homebridge-telldus/index.js:121:6)
at tryCatcher (/usr/lib/node_modules/homebridge-telldus/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/usr/lib/node_modules/homebridge-telldus/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/usr/lib/node_modules/homebridge-telldus/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/usr/lib/node_modules/homebridge-telldus/node_modules/bluebird/js/release/promise.js:614:10)
The aforementioned killall -9 node
, suggested by Patrick works as expected and solves the problem but you may want to read the edit part of this very answer about why kill -9
may not be the best way to do it.
On top of that you might want to target a single process rather than blindly killing all active processes.
In that case, first get the process ID (PID) of the process running on that port (say 8888):
lsof -i tcp:8888
This will return something like:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 57385 You 11u IPv6 0xac745b2749fd2be3 0t0 TCP *:ddi-tcp-1 (LISTEN)
Then just do (ps — actually do not. Please keep reading below):
kill -9 57385
You can read a bit more about this here.
EDIT: I was reading on a fairly related topic today and stumbled upon this interesting thread on why should i not kill -9
a process.
Generally, you should use kill -15 before kill -9 to give the target process a chance to clean up after itself. (Processes can’t catch or ignore SIGKILL, but they can and often do catch SIGTERM.) If you don’t give the process a chance to finish what it’s doing and clean up, it may leave corrupted files (or other state) around that it won’t be able to understand once restarted.
So, as stated you should better kill the above process with:
kill -15 57385
EDIT 2: As noted in a comment around here many times this error is a consequence of not exiting a process gracefully. That means, a lot of people exit a node command (or any other) using CTRL+Z. The correct way of stopping a running process is issuing the CTRL+C command which performs a clean exit.
Exiting a process the right way will free up that port while shutting down. This will allow you to restart the process without going through the trouble of killing it yourself before being able to re-run it again.
This quick article shows you how to solve a common error you might confront when working with Node.js.
The Problem
When developing a Node.js application (with Express.js), I sometimes fall into the following problem:
Error: listen EADDRINUSE: address already in use :::3000
Full error message:
Error: listen EADDRINUSE: address already in use :::3000
at Server.setupListenHandle [as _listen2] (node:net:1380:16)
at listenInCluster (node:net:1428:12)
at Server.listen (node:net:1516:7)
at Function.listen (/Users/goodman/Desktop/Projects/kindacode/api/node_modules/express/lib/application.js:635:24)
at server (/Users/goodman/Desktop/Projects/kindacode/api/src/index.ts:60:7)
at bootstrap (/Users/goodman/Desktop/Projects/kindacode/api/src/index.ts:73:3)
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
code: 'EADDRINUSE',
errno: -48,
syscall: 'listen',
address: '::',
port: 3000
}
The console message indicates that I am trying to run my app with a port being used by some program. This happens after my app crashes. Behind the scene, it’s very likely that there is a terminal window hiding out in the background that is still running the app. If you encounter the same problem as mine, don’t panic. Below is the solution.
The Solution
What we have to do is really simple: kill the process that is running on the port. Execute the command below:
npx kill-port 3000
If you need to free a port other than 3000, run the command above on that port. It’s also possible to terminate multiple ports at once:
npx kill-port 3000 4000 5000 6000 7000
Another solution that can solve this problem, as well as many others, is just restarting your computer (you even don’t have to do that in this situation).
That’s it. Further reading:
- Node.js: Turn a Relative Path into an Absolute Path
- Nodemon: Automatically Restart a Node.js App on Crash
- 2 Ways to Set Default Time Zone in Node.js
- 7 Best Open-Source HTTP Request Libraries for Node.js
- Node.js: Use Async Imports (Dynamic Imports) with ES Modules
You can also check out our Node.js category page for the latest tutorials and examples.
В одной из прошлых статей мы сделали устройство на базе ESP8266, которым можно управлять с устройств Apple, с помощью приложения «Дом». Официально поддерживаемых устройств очень мало, а сторонние легко подключать с помощью HomeBridge, который можно сделать на одноплатном компьютере, например Raspberry Pi. Кстати, в качестве испытуемого я взял самый первый старинный экземпляр c 512мб ОЗУ — по идее, нам же много мощности не надо. Все примеры сделаны для 3 версии компьютера и до последнего я сомневался, заведётся ли это ПО. А что вообще такое HomeBridge? — это сервер, написанный на NodeJS, который эмулирует API HomeKit и позволяет подключать к умному дому Apple не сертифицированные устройства (т.е. всё будет намного дешевле).
Я перепробовал несколько инструкций с рунета, но все они либо старые, либо упускают какие-то шаги. Быстрая установка из 4 команд с гитхаб у меня также не заработала, и я пошёл по длинному пути зарубежного сайта .instructables.com (в итоге рабочему). Сначала нужно скачать образ системы для компьютера. Я выбрал самый минимальный, ведь для homebridge совсем не нужно иметь графический интерфейс системы или подключать монитор. Ссылка на образ
Перед тем, как что-то записывать на флешку, лучше её отформатировать программой SD Formatter. Например, если флеш-карта уже была загрузочной, то средства windows её отформатировать не смогут.
Дальше понадобится программа для создания образов на флешку. Я обычно использую UNETBOOTIN, но также пробовал ETCHER Установки не требует, весит немного, пользоваться просто — указываете образ, имя sd-карты, и нажимаете «ок».
Etcher конечно выглядит по современнее, но смысл один.
Как вы помните, я скачал минимальную версию без десктопа, да и монитор мне подключать лень. К сожалению, поддержка SSH в последних версиях была выпилена, но её несложно добавить обратно. Пока карточка с образом ещё в компьютере, создайте в корне файл без расширения с именем «SSH». Система при загрузке в одноплатном компьютере сама поймёт, что надо включить SSH и удалит этот файл.
Теперь загружаем Raspberry PI и подключаем сетевым патч-кордом в роутер. Смотрим в любой программе сканере адрес, который получил наш компьютер. У меня это 192.168.1.30
Теперь запускаем putty, и переключаем режим на SSH, вводим адрес, который мы узнали в сканере и жмём кнопку «ОК».
Система запросит логин, который будет PI, а далее пароль — raspberry. Это значения по умолчанию
Затем нам придётся вводить много команд, и иногда долго ждать. Сначала обновим систему.
sudo apt-get update sudo apt-get upgrade
Этот шаг вроде не обязателен, ведь по умолчанию NPM и NodeJS не установлен, но я на всякий случай выполнил эти команды.
sudo apt --auto-remove purge npm sudo apt --auto-remove purge nodejs
Затем устанавливаем актуальные версии этих пакетов.
sudo apt install nodejs curl -L https://www.npmjs.com/install.sh | sudo sh
И проверяем версии.
Устанавливаем Homebridge.
sudo apt-get install libavahi-compat-libdnssd-dev sudo npm install -g --unsafe-perm homebridge
И тестово запускаем его.
Прямо в консоли вы увидите работоспособность сервиса. Бридж уже можно добавлять в телефон, но не торопитесь.
Сначала нужно закончить все настройки, для этого создадим следующий файл.
sudo nano ~/.homebridge/config.json
Копируем в новый файл следующий текст. В поле username удалите последовательность XX: XX: XX: XX: XX: XX и введите свой MAC адрес. Проще всего его также подсмотреть в программе advanced IP scanner, которой мы смотрели адрес raspberry на первых шагах. PIN код я также поменял на свой, главное соблюдать последовательность тире.
{ "bridge": { "name": "HomeBridge", "username": "XX:XX:XX:XX:XX:XX", "port": 51826, "pin": "031-45-154" }, "description": "Your description here", "accessories": [ ], "platforms": [ ] }
Чтобы сохранить файл, нажмите CTRL + O, а затем CTRL + X для выхода. Или сразу CTRL + X и затем подтвердите сохранение кнопкой Y + enter. Тем временем нужно сделать ещё один файл.
sudo nano /etc/default/homebridge
Куда сохраняем следующий текст.
# Defaults / Configuration options for homebridge # The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others) HOMEBRIDGE_OPTS=-U /var/homebridge # If you uncomment the following line, homebridge will log more # You can display this via systemd’s journalctl: journalctl -f -u homebridge # DEBUG=*
Эти и следующие действия мы делаем для автоматического запуска сервиса, при рестарте компьютера. Вы же не хотите запускать сервис вручную каждый раз, как выключат свет. Создаём третий файл.
sudo nano /etc/systemd/system/homebridge.service
Копируем текст и сохраняем файл.
[Unit] Description=Node.js HomeKit Server After=syslog.target network-online.target [Service] Type=simple User=homebridge EnvironmentFile=/etc/default/homebridge ExecStart=/usr/bin/homebridge $HOMEBRIDGE_OPTS Restart=on-failure RestartSec=10 KillMode=process [Install] WantedBy=multi-user.target
После этого нужно сделать следующую цепочку действий. Команд много, но ждать выполнения почти не придётся, этот блок не отнимет у вас много времени.
sudo useradd --system homebridge sudo mkdir /var/homebridge sudo cp ~/.homebridge/config.json /var/homebridge/ sudo cp -r ~/.homebridge/persist /var/homebridge sudo chmod -R 0777 /var/homebridge sudo systemctl daemon-reload sudo systemctl enable homebridge sudo systemctl start homebridge
Перезагружаем компьютер
И проверяем статус сервиса — должно быть active и выделено зелёным.
systemctl status homebridge
Теперь уже можно добавить и в телефон. Не забудьте включить wi-fi и присоединиться к той-же сети. В программе ДОМ (HOME) нажимаем добавить аксессуар, у меня новый bridge высветился автоматически.
Вводим код, который мы создавали в файле (PIN) и соглашаемся, что устройство не сертифицировано и не безопасно.
Теперь во вкладке homebridge мы можем видеть наше устройство.
Осталось сделать последнюю деталь (по желанию) — установить графический интерфейс, который можно открыть по ip-адресу. Для этого установим UI-X для Homebridge.
sudo npm install -g --unsafe-perm homebridge-config-ui-x
Откроем файл
И в самый конец допишем следующую строку.
homebridge ALL=(ALL) NOPASSWD: ALL
Сохраняем и переходим к следующему файлу, с которым мы уже работали.
sudo nano /etc/default/homebridge
В конце строки HOMEBRIDGE_OPTS=-U /var/homebridge добавляем пробел и дописываем «-I». Должно получиться так.
Ну и последний редактируемый файл
sudo nano /var/homebridge/config.json
В блок platforms вписываем следующий код. Должно получиться как на скриншоте.
{ "platform": "config", "name": "Config", "port": 8080, "sudo": true, "restart": "sudo -n systemctl restart homebridge", "log": { "method": "systemd", "service": "homebridge" } }
Перезагружаем.
Вспоминаем свой адрес и добавляем порт :8080.
Видим интерфейс, где логин и пароль будет admin (можно поменять)
Приятный и понятный интерфейс. Кстати, работает на самой первой модели Raspberry! Даже процессор и память не нагружены по полной.
В следующих статья мы нагрузим бридж разными датчиками и протестируем работу более плотно.
На чтение 6 мин. Просмотров 57 Опубликовано 15.12.2019
Я уже несколько раз все перепроверил, но не вижу где эта ошибка.
Вроде все правильно, и раньше все работало, а как начал экспериментировать с аутентификацией, она появилась и не хочет пропадать.
Как мне её исправить?
- Вопрос задан более двух лет назад
- 465 просмотров
Там же написано: EADDRINUSE. Порт уже используется, а вы снова хотите его открыть. Вначале закройте программу, которая использует этот порт, а потом запускайте ваш скрипт. Не исключено, что ваш же скрипт его и использует, просто вы пытаетесь запустить скрипт второй раз, а первый ещё не закрыли.
Ну и если читать не умеете, хотя бы гуглом научитесь пользоваться.
Содержание
- Comments
- SubZane commented Aug 13, 2017
- This comment has been minimized.
- SubZane commented Aug 17, 2017
- 30 ответов:
Copy link Quote reply
Any idea what this can be about? (I’m not 100% sure if this is related to your plugin) but I’m only using it in the config
events.js:163
throw er; // Unhandled ‘error’ event
^
Error: listen EADDRINUSE . 51826
at Object.exports._errnoException (util.js:1050:11)
at exports._exceptionWithHostPort (util.js:1073:20)
at Server.setupListenHandle [as _listen2] (net.js:1259:14)
at listenInCluster (net.js:1307:12)
at Server.listen (net.js:1406:7)
at EventedHTTPServer.listen (/usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/util/eventedhttp.js:60:19)
at HAPServer.listen (/usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:158:20)
at Bridge.Accessory.publish (/usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:486:16)
at Server._publish (/usr/lib/node_modules/homebridge/lib/server.js:114:16)
at Server. (/usr/lib/node_modules/homebridge/lib/server.js:372:14)
at /usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/util/once.js:16:19
at TelldusLive.loginAsync.then.then.accessories (/usr/lib/node_modules/homebridge-telldus/index.js:121:6)
at tryCatcher (/usr/lib/node_modules/homebridge-telldus/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/usr/lib/node_modules/homebridge-telldus/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/usr/lib/node_modules/homebridge-telldus/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/usr/lib/node_modules/homebridge-telldus/node_modules/bluebird/js/release/promise.js:614:10)
Copy link Quote reply
I just learned that EADDRINUSE means that homebridge is already running on the same address.
Если я запускаю сервер с портом 80, и я пытаюсь использовать xmlHTTPrequest я получаю эту ошибку: Error: listen EADDRINUSE
почему это проблема для nodejs, если я хочу сделать запрос, в то время как я запускаю сервер на порту 80? Для webbrowsers это не проблема: я могу заниматься серфингом в интернете, пока сервер работает.
30 ответов:
EADDRINUSE означает, что номер порта, который listen() пытается привязать сервер к уже используется.
так, в вашем случае, там должен быть запущен сервер на порту 80 уже.
если у вас есть другой веб-сервер работает на этом порту вы должны поместить узел.js за этим сервером и прокси-сервер через него.
вы должны проверить для listening событие, как это, чтобы увидеть, если сервер действительно слушает:
что действительно помогло мне было:
но это убьет системный процесс.
вы можете проверить, если он работал.
вышеуказанного killall -9 node , предложенный Патриком работает как ожидалось и решает проблему, но вы можете прочитать часть редактирования этого самого ответа о том, почему kill -9 может не быть лучший способ сделать это.
кроме того, вы можете захотеть нацелиться на один процесс, а не слепо убивать все активные процессы.
в этом случае сначала получите идентификатор процесса (PID) процесса, запущенного на этом порту (скажем 8888):
это вернет что-то вроде:
тогда просто сделайте (ps-На самом деле не. Пожалуйста, продолжайте читать ниже):
вы можете прочитать немного больше об этом здесь.
EDIT: Я читал на тему сегодня и наткнулся на эту интересную ветку на почему бы и нет kill -9 процесс.
как правило, вы должны использовать убить -15 до убить -9 чтобы дать целевому процессу шанс очистить после себя. (Процессы не могут поймать или игнорировать SIGKILL, но они могут и часто ловят SIGTERM.) Если вы не дадите процессу шанс закончить то, что он делает, и очистить, он может оставить поврежденные файлы (или другое состояние) вокруг того, что он не сможет понять после перезапуска.
Итак, как указано, вы должны лучше убить выше процесс с:
EDIT 2: как отмечено в комментарии здесь много раз эта ошибка является следствием не выход из процесса изящно. Это означает, что многие люди выходят из команды узла (или любой другой) с помощью CTRL+Z. Правильным способом остановки запущенного процесса является выдача CTRL+C команда, которая выполняет чистый выход.
выход из процесса право путь освободит этот порт при выключении. Это позволит вам перезапустить процесс, не проходя через проблемы убить его самостоятельно, прежде чем иметь возможность повторно запустить его снова.
* * перед понижением-пожалуйста, прочитайте ответ. ЭТО АКТУАЛЬНО! Если вы собираетесь понизить это, оставьте комментарий, почему вы думаете, что это не актуально.
просто голова вверх, Skype иногда прослушивает порт 80 и поэтому вызывает эту ошибку, если вы пытаетесь прослушать порт 80 С узла.JS или любое другое приложение.
вы можете отключить это поведение в Skype, перейдя к параметрам и нажав кнопку Дополнительно — > подключение -> использовать порт 80 (снимите флажок это)
вы должны попробовать убить процесс, который прослушивает порт 80.
Killall убьет все запущенные приложения узла. Возможно, ты не захочешь этого делать. С помощью этой команды вы можете убить только одно приложение, которое слушает на известном порту.
при использовании unix попробуйте эту команду:
pkill node перед запуском скрипта следует выполнить задание.
еще одна вещь, которая может дать эту ошибку, — это два HTTP-сервера в одном коде узла. Я обновлял некоторые Экспресс 2, чтобы выразить 3 код, и было это.
и, это вызвало эту ошибку.
ваше приложение уже работает на этом порту 8080 . Используйте этот код, чтобы убить порт и запустить свой код снова
это работает для меня (я использую mac). Выполните эту команду
lsof -PiTCP -sTCP:LISTEN
это будет отображать список портов, которые использует ваш syetem. Найди PID что ваш узел работает
и работать kill -9 [YOUR_PID]
EADDRINUSE означает, что порт(который мы пытаемся слушать в узел) уже используется. Для того, чтобы преодолеть, мы должны определить, какой процесс работает с этим портом.
например, если мы пытаемся слушать наше приложение узла в порту 3000. Нам нужно проверить, используется ли этот порт уже каким-либо другим процессом.
что приведенная выше команда дает ниже результат.
теперь у вас есть идентификатор процесса(25315), убейте этот процесс.
Примечание: это решение для пользователей Linux.
причина ошибки: вы пытаетесь использовать занят port number
существуют два шага, чтобы решить эту проблему
- Свободный в настоящее время используемый номер порта
- выбрать другой номер порта для текущей программы
Windows
Mac
вы можете попробовать netstat
для OSX El Capitan и новее (или если ваш netstat не поддерживает -p), используйте lsof
если это не решит вашу проблему, Mac пользователи могут обратиться к полному обсуждению этой проблемы найти (и убить) процесс блокировки порта 3000 ВКЛ Мак
Модератор: immortal
-
vova-kit
- Сообщения: 32
- Зарегистрирован: Ср фев 13, 2019 11:33 am
- Откуда: Ставрополь
-
Благодарил (а):
12 раз -
Поблагодарили:
2 раза
Re: [Бридж] Apple HomeKit и MajorDoMo
Подскажите как побороть ошибку в homebridge?
Error: listen EADDRINUSE: address already in use :::51826
at Server.setupListenHandle [as _listen2] (net.js:1270:14)
at listenInCluster (net.js:1318:12)
at Server.listen (net.js:1405:7)
at EventedHTTPServer.listen (/usr/lib/node_modules/homebridge/node_modules/h ap-nodejs/lib/util/eventedhttp.js:60:19)
at HAPServer.listen (/usr/lib/node_modules/homebridge/node_modules/hap-nodej s/lib/HAPServer.js:158:20)
at Bridge.Accessory.publish (/usr/lib/node_modules/homebridge/node_modules/h ap-nodejs/lib/Accessory.js:607:16)
at Server._publish (/usr/lib/node_modules/homebridge/lib/server.js:127:16)
at Server.run (/usr/lib/node_modules/homebridge/lib/server.js:96:10)
at module.exports (/usr/lib/node_modules/homebridge/lib/cli.js:43:10)
at Object.<anonymous> (/usr/lib/node_modules/homebridge/bin/homebridge:17:22 )
Emitted ‘error’ event at:
at emitErrorNT (net.js:1297:8)
at process._tickCallback (internal/process/next_tick.js:63:19)
at Function.Module.runMain (internal/modules/cjs/loader.js:757:11)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
Raspberry PI 3B+, ESP8266, Xiaomi, Broadlink, SonOFF, Magic Home
-
Ivan
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
-
Благодарил (а):
49 раз -
Поблагодарили:
325 раз
Re: [Бридж] Apple HomeKit и MajorDoMo
Сообщение
Ivan » Вс мар 24, 2019 7:25 pm
Не работает димирование и установка цвета для rgb устройства
Вкл/выкл работает
-
anatoliyrnd
- Сообщения: 18
- Зарегистрирован: Сб мар 16, 2019 6:13 pm
-
Благодарил (а):
0 -
Поблагодарили:
0
Re: [Бридж] Apple HomeKit и MajorDoMo
Сообщение
anatoliyrnd » Вт мар 26, 2019 6:13 pm
Есть еще вопросик. Ест ли в Home Kit аксессуар типа замок? Если да то как его сделать в mjmd ?
на ESPшке (WFiot) сделал типа управление реле с автоматическим отключением через 1 сек. , для управления электромеханическим замком. Вот только в приложении «ДОМ» он как представлен как «свет», как-то не комильфо открывать калитку командой «сири включи замок».
-
workpage
- Сообщения: 427
- Зарегистрирован: Чт авг 24, 2017 9:38 am
-
Благодарил (а):
51 раз -
Поблагодарили:
86 раз - Контактная информация:
Re: [Бридж] Apple HomeKit и MajorDoMo
Сообщение
workpage » Вт мар 26, 2019 6:34 pm
anatoliyrnd писал(а): ↑
Вт мар 26, 2019 6:13 pm
Есть еще вопросик. Ест ли в Home Kit аксессуар типа замок? Если да то как его сделать в mjmd ?
на ESPшке (WFiot) сделал типа управление реле с автоматическим отключением через 1 сек. , для управления электромеханическим замком. Вот только в приложении «ДОМ» он как представлен как «свет», как-то не комильфо открывать калитку командой «сири включи замок».
Присоединяюсь к вопросу. «Включи ворота» звучит не лучше
-
anatoliyrnd
- Сообщения: 18
- Зарегистрирован: Сб мар 16, 2019 6:13 pm
-
Благодарил (а):
0 -
Поблагодарили:
0
Re: [Бридж] Apple HomeKit и MajorDoMo
Сообщение
anatoliyrnd » Вт мар 26, 2019 8:04 pm
Отвечу частично себе и workpage.
У homekit есть как замок так и гаражные ворота это точно.
- vorotahomekit.jpg (112.33 КБ) 3621 просмотр
Осталось понять как добавить эти аксессуар в homebridge и mjmd.
А еще есть разделы — камера, полив, ресивер, окна.
-
workpage
- Сообщения: 427
- Зарегистрирован: Чт авг 24, 2017 9:38 am
-
Благодарил (а):
51 раз -
Поблагодарили:
86 раз -
Контактная информация:
Re: [Бридж] Apple HomeKit и MajorDoMo
Сообщение
workpage » Вт мар 26, 2019 8:08 pm
Это всего лишь вопрос программирования. Глупо покупать дорогие железки, если и так всё работает.
-
anatoliyrnd
- Сообщения: 18
- Зарегистрирован: Сб мар 16, 2019 6:13 pm
-
Благодарил (а):
0 -
Поблагодарили:
0
Re: [Бридж] Apple HomeKit и MajorDoMo
Сообщение
anatoliyrnd » Ср мар 27, 2019 12:22 am
workpage писал(а): ↑
Вт мар 26, 2019 8:08 pm
Это всего лишь вопрос программирования. Глупо покупать дорогие железки, если и так всё работает.
Так я об этом и говорю, как добавить в mjmd точнее в homebridg аксессуар «замок» , трочнее чтоб можно было выбрать что это не реле , а замок. И тогда сири будет понимать что это замок, и реагировать на слово «открыть» « закрыт» а уже алгоритм в конечном устройстве реализовать как кому надо.
Я привел пример выше на картинке, что если есть такие аксесуары, то и голосовые команды типа «открыть замок» или «открыть ворота» потдерживаются, там даже пиктограмма на телефоне ввиде ворот.
В нодеред попробовал эти аксессуары, замок не нашел а вот дверь — имеет 100 позиций от полностью закрыто до полностью открыто (0-100%), а вот аксессуар ворота два положения — открыто либо закрыто. И команды сири воспринимает как и полагается («открой ворота» — открывает, открой двери — открывает на 100%, и т.д.) .
-
yden
- Сообщения: 141
- Зарегистрирован: Пн авг 22, 2016 10:03 am
-
Благодарил (а):
28 раз -
Поблагодарили:
5 раз
Re: [Бридж] Apple HomeKit и MajorDoMo
Сообщение
yden » Пт апр 12, 2019 5:28 pm
Добрый.
Плиз подскажите. Мдм свежая версия, ubuntu server 16.04. Установил на убунту homebridge, работает москит. В mdm прописал топики для моста. В Дом ios завел аксессуар mdm — завелся.
Проблемы:
1. Если на убунту вручную запустить homebridge — то в Дом аксессуар mdm становится активным, но после перезагрузки мост не стартует. Хотя по ссылке https://www.o3industries.se/raspberry-p … omebridge/ в шапке темы автозагрузку настраивал.
2. в плагине homekit mdm строка Homebridge Service status: пуста.
3. завел простые устройства — релюшку — тип Освещение. Ее в Дом в аксессуарах нет.
Что я накосячил?
благодарю
- homekit.JPG (36.84 КБ) 3491 просмотр
- homekit2.JPG (68.55 КБ) 3491 просмотр
- homekit3.JPG (34.47 КБ) 3490 просмотров
-
workpage
- Сообщения: 427
- Зарегистрирован: Чт авг 24, 2017 9:38 am
-
Благодарил (а):
51 раз -
Поблагодарили:
86 раз - Контактная информация:
Re: [Бридж] Apple HomeKit и MajorDoMo
Сообщение
workpage » Пт апр 12, 2019 5:44 pm
Такая же проблема. После перезагрузки сервера приходится рукам набирать sudo service homebridge restart
Если найдешь решение — напиши
-
yden
- Сообщения: 141
- Зарегистрирован: Пн авг 22, 2016 10:03 am
-
Благодарил (а):
28 раз -
Поблагодарили:
5 раз
Re: [Бридж] Apple HomeKit и MajorDoMo
Сообщение
yden » Сб апр 13, 2019 6:40 pm
Говорит что служба активна, но что-то с правами или ролями.
- homekit4.JPG (36.05 КБ) 3461 просмотр
Matt Heindel
Posted on Jul 8, 2021
• Updated on Jul 12, 2021
Has this ever happened to you?
You go to start up your server with npm start
and you get the below error message
$ npm start
> cruddy-todos@1.0.0 start /home/mc_heindel/HackReactor/hr-rfp54-cruddy-todo
> npx nodemon ./server.js
[nodemon] 2.0.6
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node ./server.js`
events.js:292
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::3000
at Server.setupListenHandle [as _listen2] (net.js:1318:16)
at listenInCluster (net.js:1366:12)
at Server.listen (net.js:1452:7)
at Function.listen (/home/mc_heindel/HackReactor/hr-rfp54-cruddy-todo/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/home/mc_heindel/HackReactor/hr-rfp54-cruddy-todo/server.js:79:5)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
Emitted 'error' event on Server instance at:
at emitErrorNT (net.js:1345:8)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
code: 'EADDRINUSE',
errno: -98,
syscall: 'listen',
address: '::',
port: 3000
}
[nodemon] app crashed - waiting for file changes before starting...
Enter fullscreen mode
Exit fullscreen mode
Luckily there is a solution!
This error occurs when a process is already running on the port you’re trying to use. All you need to do is kill that process. In this case, since the port we want to use is 3000
we could simply paste and execute the below code in our terminal.
kill -9 $(lsof -t -i:3000)
Enter fullscreen mode
Exit fullscreen mode
This will kill the process running on port 3000 and you should be good to start your server with npm start
like usual.
Save this command for future use
If this happens often, it’s a great idea to add an alias to bash for reuse anytime. The below code is a function that accepts a port number to kill and when saved can be reused for any port number.
killport() { kill -9 $(lsof -t -i:"$@"); } # kill process on specified port number
Enter fullscreen mode
Exit fullscreen mode
The quick and easy way to save
Simply execute the below command and the killport
function will be available every time you open bash. Just remember to restart your terminal for the saved function to be loaded after first adding it.
echo 'killport() { kill -9 $(lsof -t -i:"$@"); } # kill process on specified port number' >> ~/.bashrc
Enter fullscreen mode
Exit fullscreen mode
Below is an example of how the newly defined killport
function can be used to kill a process on port 3000.
killport 3000
Enter fullscreen mode
Exit fullscreen mode
The slightly more advanced way to save
To save this function alongside your other bash aliases and configurations you just need to add the below code to ~/.bashrc
or ~/.bash_aliases
which can be accomplished using vim ~/.bashrc
and pasting in the code snippet.
killport() { kill -9 $(lsof -t -i:"$@"); } # kill process on specified port number
Enter fullscreen mode
Exit fullscreen mode
In this tutorial, we are going to learn about how to solve the Error: listen EADDRINUSE: address already in use
in Node.js.
When we run a development server of react
or other apps, sometimes we will see the following error in our terminal.
Error: listen EADDRINUSE: address already in use 127.0.0.1:3000
at Server.setupListenHandle [as _listen2] (net.js:1306:16)
at listenInCluster (net.js:1354:12)
at GetAddrInfoReqWrap.doListen [as callback] (net.js:1493:7)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:65:10)
Emitted 'error' event on Server instance at:
at emitErrorNT (net.js:1333:8)
at processTicksAndRejections (internal/process/task_queues.js:81:21) {
code: 'EADDRINUSE',
errno: 'EADDRINUSE',
syscall: 'listen',
address: '127.0.0.1',
port: 3000
}
This error tells us, the port number we are trying to run a server is already in use.
To solve this error, we need to close the program that is using this port or try to use a different port.
If you don’t know, which program is using that port then you can use the following command to kill the all node processes currently running.