Jump to content

iFinder

Forum Members
  • Posts

    175
  • Joined

  • Last visited

Posts posted by iFinder

  1. Появление проблемы не заставило себя долго ждать: среда Node-Red вчера запустилась, но сегодня выяснилось, что все созданные ранее потоки исчезли.

    Причина оказалась в следующем.

    При первичной установке Node-Red её рабочая папка оказалась здесь: 

    Но когда вчера в скрипте, запускающем Node-Red при загрузке, мы указали путь к этой папке:

    А надо было указывать саму папку: /opt/root/.node-red

    Поэтому надо запускать либо так:

    node-red-pi -u /opt/root/.node-red --max-old-space-size=128 >> $LOG &

    либо так:

    node-red -u /opt/root/.node-red >> $LOG &

     

  2. 2 минуты назад, TheBB сказал:

    могу позапускать и `node-red` (хоть и делал это не раз "в поисках истины"), но сути не поменяет - не использую "node" (for testing only)

    Ну если Вы не видите разницы, то вероятнее всего она точно не актуальна.

    Остаюсь на `node-red`. Начал её использовать, остался доволен и поэтому буду продолжать.

    Если возникнут проблемы обязательно отпишусь.

  3. 23 часа назад, TheBB сказал:

    ~ # cat /opt/etc/init.d/S99node-red | grep node-red-pi

    node-red-pi -u /opt/root --max-old-space-size=128 >> $LOG & ~ #

    Ну чтобы уж совсем закрыть вопрос, а почему Вы у себя запускаете именно node-red-pi, а не node-red ?

  4. 29 минут назад, TheBB сказал:

    да, надо указать путь к "... use specified user directory..."

    Протестировал на своём

    node-red -u /opt/root >> $LOG &

    и Node-Red запустился !

    50 минут назад, iFinder сказал:

    Но у меня вот так (только что ещё раз попробовал):

    
    ~ # node-red -h
    
    
    
    
    ^C
    ~ #

    Тоже получилось, только надо было подождать несколько секунд !

     

  5. 24 минуты назад, TheBB сказал:
    2 часа назад, iFinder сказал:

    запускать node-red-pi, но с дополнительными параметрами:

    можете и так

    
    node-red -u /opt/root >> $LOG &

    Так получается, что причина отсутствия запуска при загрузке не в том, что надо запускать

    node-red-pi   с параметром  --max-old-space-size=128 >> $LOG &

    а в том, чтобы указывать путь:  node-red -u /opt/root >> $LOG &

    Я правильно Вас понял ?

  6. 4 минуты назад, TheBB сказал:
    20 минут назад, iFinder сказал:

    Я не знал, что надо набирать --help, а когда набирал -h она меня посылала.

    ну-у-у, я не знаю... )))

    Но у меня вот так (только что ещё раз попробовал):

    ~ # node-red -h


    ^C
    ~ #
     

    ~ # node-red -h
    
    
    
    
    ^C
    ~ #

     

  7. 9 минут назад, TheBB сказал:
    2 часа назад, iFinder сказал:

    7. Может не стоит делать ставку на Keenetic как базу для надёжной работы NodeRed ?

    можно установить лишь экспериментальным путём

    Ну тогда буду дальше пробовать - очень уж складно всё в одном устройстве сочетается:

    Роутер + 8 WiFi-сетей + MQTT-брокер + Node-RED + MQTT-клиент + BASH-скрипты (отчитываются через MQTT-клиент) + Удалённый запуск BASH-скриптов MQTT-клиентом + GSM-модем (в планах для SMS-управления) + USB-стик (в планах для работы с ZigBee-устройствами)

    За 3 недели было два серьёзных сбоя, но не по вине Node-RED или Keenetic:

    1. Флэшка отказала

    2. Перестал подключаться к MQTT-брокеру: На кнопках командах по неопытности установил параметр Retain и тем самым зацикливалась отработка команд

  8. 7 минут назад, TheBB сказал:
    2 часа назад, iFinder сказал:

    Но тогда почему вручную сразу после запуска удаётся запустить node-red ?

    авторизованы в системе и установлены переменные окружения (оч.оч.оч. кратко)

    Но тогда и 

    node-red-pi -u /opt/root --max-old-space-size=128 >> $LOG &

    не должно запускаться !

  9. 5 минут назад, TheBB сказал:

    чтение справки может творить чудеса )))

    Я не знал, что надо набирать --help, а когда набирал -h она меня посылала.

    Так что это не от лени

  10. В инете нашёл о node-red-pi:

    Память Raspberry Pi относительно мала, поэтому Node-RED на этой платформе нужно запускать при помощи команды «node-red-pi».
    Она позволяет запустить Node-RED вместе с дополнительным аргументом, задающим, с какого момента Node.js начнет освобождать неиспользованную память.
    То есть вместе с командой «node-red-pi» нужно указать флаг «--max-old-space-size»:
        node-red-pi --max-old-space-size=256

    Получается памяти для неё маловато !

    А вот, что у меня на Giga III после запуска вручную node-red:

    ~ # free -h
                  total        used        free      shared  buff/cache   available
    Mem:         254832      163364       14504         152       76964       70164
    Swap:        262140         424      261716
    ~ #

    Даже сегодняшний флагман KEENETIC Ultra, белый [kn-1810] имеет столько же памяти, что и мой Giga III.

    5. A файл подкачки SWAP Linux не поможет ?

    6. А сжатие Zram ?

    7. Может не стоит делать ставку на Keenetic как базу для надёжной работы NodeRed ?

    Но если не стоит, то будет очень жаль, так как здесь получаем всё в одном !

  11. Правильно ли я понимаю, что надо сделать как у Вас и вместо:

    #node-red-pi --max-old-space-size=128 >> $LOG2 &
    node-red >> $LOG2 &

    запускать node-red-pi, но с дополнительными параметрами:

    node-red-pi -u /opt/root --max-old-space-size=128 >> $LOG &
    #node-red >> $LOG2 &

    Но тогда почему вручную сразу после запуска удаётся запустить node-red ?

  12. Предпринимая попытки добиться загрузки node-red при запуске Entware:

    1. Переименовал скрипт в S99node-red, чтобы он запускался последним

    2. Установил задержку 20 сек. на запуск, чтобы вообще всё успело запуститься

        start)
            if pgrep ^node-red$ > /dev/null
            then
                echo "node-red уже запущен."
            else
                echo "" >> $LOG2
                echo "     Node-RED service start: $DateLOG" >> $LOG2
                #node-red-pi --max-old-space-size=128 >> $LOG2 &
                #node-red >> $LOG2 &
                sleep 20
                node-red &
                logger "S30node-red: node-red Start."
                echo "$DateLOG   S30node-red:   node-red выполняется с выводом в Журнал $LOG2." >> $LOG
                echo "S30node-red:   node-red выполняется с выводом в Журнал $LOG2."
            fi
        ;;

    Но ничего не помогает.

    В журнале и в файле отладки никаких следов.

  13. Заодно ещё пара вопросов:

    1. Установил пакет xmlstarlet. В перечне установленных присутствует, но при любом вызове сообщается, что не найден.

    Например:

    ~ #  xmlstarlet -v
    -sh: xmlstarlet: not found
    ~ #
    

    Пакет jq стал без проблем:

    ~ # jq -v
    jq: Unknown option -v
    Use jq --help for help with command-line options,
    or see the jq manpage, or online docs  at https://stedolan.github.io/jq
    ~ #

    Почему и что делать ?

    2. В описании Keenetic нашёл, что через активный USB-хаб можно подключать несколько внешних дисков.

    А можно ли подключать USB-диск с Entware через активный USB-хаб ?

    3. А будет ли работать Entware, установленная на карту памяти, которая вставлена в GSM-модем ?

    Заранее благодарен за ответы

  14. В 17.10.2019 в 09:26, TheBB сказал:

    #!/bin/sh LOG=/opt/var/log/node-red.log #Load up node red when called case "$1" in start) if pgrep ^node-red$ > /dev/null then echo "Node-RED already running." else echo "Starting Node-Red.." touch $LOG echo "" >> $LOG echo "Node-RED service start: "$(date) >> $LOG node-red-pi --max-old-space-size=128 >> $LOG & echo "Logging to "$LOG fi ;; stop) echo "Stopping Node-Red.." pkill -SIGINT ^node-red$ sleep 2 echo "" >> $LOG echo "Node-RED service stop: "$(date) >> $LOG ;; restart) echo "Restarting Node-Red.." $0 stop sleep 2 $0 start echo "Restarted." ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac

    При первой перезагрузке Keenetic с момента установки Entware выяснилось, что сервис node-red не запускается.

    С помощью логгирования в Журнале выяснилось, что сам скрипт 

    В 17.10.2019 в 09:26, TheBB сказал:

    для примера, пусть он будет `S99node-red`

    при загрузке запускает node-red, но сам node-red не запускается.

    Вручную всё работает. На размышления наводит строка ручного запуска из htop: "/opt/bin/node  /opt/bin/node-red/".

    Оба указанных файла в указанных папках присутствуют.

    Может при запуске надо Node вначале запускать ?

    Подскажите пожалуйста, что делать ?

    htop.jpg

  15. В 03.11.2019 в 18:53, Roman Bazalevsky сказал:

    Но вообще это тема для соседнего форума, а не для "готовых рецептов", мне кажется.

    Конечно, это я по невнимательности.

  16. 2 часа назад, dmi3gm сказал:

    внутри сети пользуюсь запросом без авторизации

    1. А как у Вас Keenetic подготовлен ?

    2. Как я понимаю вы описали JSON-массив. И что с ним делать ?

    Я только начинаю осваивать POST-запросы в Node-RED...

  17. В 23.11.2018 в 22:08, VladimirTs сказал:

    Просмотрел, но там явно указано:

    Цитата

    Для выполнения команд действия потребуется POST http-запрос, который здесь еще не описан.

    Так что, самого интересного там пока нет.

  18. Приветствую всех !

    Есть пакет mosquitto_sub, который после запуска выдаёт в консоль сообщения, которые приходят от MQTT-брокера на подписанные им топики:

    ~ # mosquitto_sub -q 1 -t "WiFi/+/+/Команда/#" -v -u test -P test
    WiFi/Служебная/5/Команда Вкл.
    WiFi/Служебная/2,4/Команда Откл.
    WiFi/Домашняя/5/Команда Вкл.
    WiFi/Домашняя/2,4/Команда Откл.
    ^C
    ~ #

    для остановки надо нажать Ctrl+C.

    Что надо сделать, чтобы некий скрипт считывал строки, которые выдаёт пакет mosquitto_sub в консоль ?

     

  19. В 26.02.2018 в 16:07, Александр Рыжов сказал:

    Есть универсальный RESTful интерфейс, позволяющий выполнять любые доступные команды простым POST HTTP-запросом. Если лень копаться в документации, то нужный запрос можно подсмотреть в режиме разработчкика, нажав при открытом веб-интерфейсе в браузере F12.

    Ссылка доступные команды НЕ работает, что делать ?

  20. Здравствуйте !

    Поставил себе на Keenetic среду Node-RED, которая может выполнять нечто похожее, что и все описанные сервисы и тоже умеет посылать HTTP-запросы.

    Но т.к. она находится в локальной сети, собственно говоря на одном и том же адресе, то настройки доступа к rci будут отличаться от тех, что описаны в шапке темы.

    Подскажите, что нужно сделать на Keenetic, чтобы к нему можно было подключиться, авторизоваться и делать запросы на rci ?

  21. Особая благодарность keenet07 и r13. Подсказанные ими ключевые моменты сделали возможным написание версии скрипта, обрабатывающего все возможные варианты нажатия кнопок Keenetic.

    Вот, что получилось:

    Скрытый текст

     

    #!/opt/bin/bash
    # Версия 14 (определяется состояния WiFi-сети и через 2 'case in' делается переключение)


    # ====== Определяем переменные
    WiFi_ID="WifiMaster0/AccessPoint1"    #0 = Домашняя, 1 = Гостевая, 2 = Рабочая
    WiFi_Type="Гостевая"
    #echo -e WiFi_ID=$WiFi_ID


    # ====== Записываем в журнал Keenetic для истории и отладки
    #logger "PressButtons: button=$button"   # Варианты: RESET, WLAN, FN1, FN2
    #logger "PressButtons: action=$action"   # Варианты: click, double-click, hold
    #logger "PressButtons: button=$button  action=$action"


    case "$button" in
    # ++++++ Нажата Кнопка WLAN - Анализируем тип нажатия
    "WLAN" )
        case "$action" in
        # +++ Нажатие короткое - ?????
        "click" )
            #echo -e button=WLAN  action=click
            ;;
        # +++ Нажатие двойное - ?????
        "double-click" )
            #echo -e button=WLAN  action=double-click
            ;;
        # +++ Нажатие долгое - ?????
        "hold" )
            #echo -e button=WLAN  action=hold
            ;;
        esac
        ;;


    # ++++++ Нажата кнопка FN1 - Анализируем тип нажатия
    "FN1" )
        case "$action" in
        # +++ Нажатие короткое - Переключаем нужную WiFi-сеть
        "click" )
            #echo -e button=FN1  action=click
            # == Получение состояния нужной WiFi-сети
            State=`ndmq -p 'show interface '$WiFi_ID -P state`
            echo -e State=$State
            # ++ WiFi-сеть Включена - Отключаем
            if [ "$State" == "up" ]
            then
                ndmq -x -p "interface "$WiFi_ID" down"
                logger "PressButtons: "$WiFi_Type" WiFi-сеть отключена коротким нажатием кнопки FN1."
            # ++ WiFi-сеть Отключена - Включаем
            else
                ndmq -x -p "interface "$WiFi_ID" up"
                logger "PressButtons: "$WiFi_Type" WiFi-сеть включена коротким нажатием кнопки FN1."
            fi
            ;;
        # +++ Нажатие двойное - ?????
        "double-click" )
            #echo -e button=FN1  action=double-click
            ;;
        # +++ Нажатие долгое - ?????
        "hold" )
            #echo -e button=FN1  action=hold
            ;;
        esac
        ;;


    # ++++++ Нажата кнопка FN2 - Анализируем тип нажатия
    "FN2" )
        case "$action" in
        # +++ Нажатие короткое - ?????
        "click" )
            #echo -e button=FN2  action=click
            ;;
        # +++ Нажатие двойное - ?????
        "double-click" )
            #echo -e button=FN2  action=double-click
            ;;
        # +++ Нажатие долгое - ?????
        "hold" )
            #echo -e button=FN2  action=hold
            ;;
        esac
        ;;
    esac

     


     

    • Thanks 1
×
×
  • Create New...