Error listen eaddrinuse address already in use 51826

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/c559ddf5e5d49d0ce9ffcad...

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 совсем не нужно иметь графический интерфейс системы или подключать монитор. Ссылка на образ

Образ raspbian для homebridge

Перед тем, как что-то записывать на флешку, лучше её отформатировать программой SD Formatter. Например, если флеш-карта уже была загрузочной, то средства windows её отформатировать не смогут.

форматирование перед записью образа

Дальше понадобится программа для создания образов на флешку. Я обычно использую UNETBOOTIN, но также пробовал ETCHER Установки не требует, весит немного, пользоваться просто — указываете образ, имя sd-карты, и нажимаете «ок».

unetbottin образ raspbian на флеш карту

Etcher конечно выглядит по современнее, но смысл один.

etcher закачиваем образ на загрузочную флешку

Как вы помните, я скачал минимальную версию без десктопа, да и монитор мне подключать лень. К сожалению, поддержка SSH в последних версиях была выпилена, но её несложно добавить обратно. Пока карточка с образом ещё в компьютере, создайте в корне файл без расширения с именем «SSH». Система при загрузке в одноплатном компьютере сама поймёт, что надо включить SSH и удалит этот файл.

SSH на raspberry pi без монитора

Теперь загружаем 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

И проверяем версии.

Версии пакетов npm и json для установки homebridge

Устанавливаем Homebridge.

sudo apt-get install libavahi-compat-libdnssd-dev
sudo npm install -g --unsafe-perm homebridge

И тестово запускаем его.

Прямо в консоли вы увидите работоспособность сервиса. Бридж уже можно добавлять в телефон, но не торопитесь.

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 высветился автоматически.

добавляем homebridge на iphone

Вводим код, который мы создавали в файле (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. Порт уже используется, а вы снова хотите его открыть. Вначале закройте программу, которая использует этот порт, а потом запускайте ваш скрипт. Не исключено, что ваш же скрипт его и использует, просто вы пытаетесь запустить скрипт второй раз, а первый ещё не закрыли.

Ну и если читать не умеете, хотя бы гуглом научитесь пользоваться.

Содержание

  1. Comments
  2. SubZane commented Aug 13, 2017
  3. This comment has been minimized.
  4. SubZane commented Aug 17, 2017
  5. 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

существуют два шага, чтобы решить эту проблему

  1. Свободный в настоящее время используемый номер порта
  2. выбрать другой номер порта для текущей программы

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
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
homekit.JPG (36.84 КБ) 3491 просмотр
homekit2.JPG
homekit2.JPG (68.55 КБ) 3491 просмотр
homekit3.JPG
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
homekit4.JPG (36.05 КБ) 3461 просмотр

Cover image for Fixing nodemon 'Error: listen EADDRINUSE: address in use'

Matt Heindel

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.

Понравилась статья? Поделить с друзьями:
  • Error listen eaddrinuse address already in use 3001
  • Error listen eaddrinuse address already in use 3000 ubuntu
  • Error listen eacces permission denied
  • Error list was not declared in this scope
  • Error list visual studio