Page 5 of 5 FirstFirst ... 345
Results 61 to 67 of 67

Thread: Метеостанции Oregon Scientific + роутер (wmr, wview & etc.)

  1. #61
    Коллеги, приветствую!
    wview поборол!

    Основной интерфейс (погодный):
    Name:  1.jpg
Views: 512
Size:  209.3 KB

    Интерфейс управления:
    Name:  2.jpg
Views: 534
Size:  85.4 KB

    Подробности позже.

  2. #62
    Join Date
    Nov 2006
    Location
    Russia, Moscow
    Posts
    3,640
    Quote Originally Posted by ryzhov_al View Post
    По wmr-oregon 0.4. Сборка беспроблемная, но запуск тут же вызывает:
    Code:
    # wmrd
    - WMR: (weather identifer shared memory) initialization failed
    
    - ftok : No such file or directory
    В этом месте, прямо при инициализации, в коде константа WMR_UTIL_C_TXT_1 = "(weather identifer shared memory) initialization failed". Удивительно, что при запуске под strace этой ошибки нет. Ч.д? Бросить потому, что в uClibc нет поддержки shared memory?
    Не, это он падает на попытке открыть свой собственный бинарник - пробуй при запуске всегда указывать полный путь к wmrd, там не универсально используется argv[0].

    P.S. С каких это пор в uClibc нет поддержки IPC, если она разрешена в ядре?

    brightred
    Ну просил же - забудь про sudo!!! Не нужен при кросс-компиляции root ни при каком раскладе!

    Вижу что не заменился Makefile - не отрабатывает секция для COMPILE = mips

  3. #63
    Quote Originally Posted by lly View Post
    Не, это он падает на попытке открыть свой собственный бинарник - пробуй при запуске всегда указывать полный путь к wmrd, там не универсально используется argv[0].
    Шайтан.
    Code:
    admin@RT-N66U:/tmp/mnt/SDCARD/tmp# /opt/sbin/wmrd
    - Weather Logger for (c) Oregon Scientific USB protocol
    - Version: 0.4 Den68 ASCII/SQL/RRD/SNMP - building: Wed Jan 23 01:11:03 MSK 2013
    - For help, type -h.
    
    - USB: Opening Oregon Scientific USB device...
    
    Ctrl+C
    - USB: Failed to init device, exiting.
    
    - Exit if pid: 13799 main pid: 13799
    - Caught signal, cleaning up
    
    - PID remove OK
    
    - /opt/sbin/wmrd EXIT Succesfull
    - WMR: hid_close failed with return code 10
    Добавил в репозиторий.

    brightred, с вас отчёт.

  4. #64
    Join Date
    Nov 2006
    Location
    Russia, Moscow
    Posts
    3,640
    Quote Originally Posted by ryzhov_al View Post
    Шайтан.
    В идеале надо допинать автора чтобы он или документировал эту "фичу" или дописал универсально - или argv[0] + getcwd(), или подобно Finding current executable's path... Но мне лениво

  5. #65
    Quote Originally Posted by lly View Post
    Не, это он падает на попытке открыть свой собственный бинарник - пробуй при запуске всегда указывать полный путь к wmrd, там не универсально используется argv[0].

    P.S. С каких это пор в uClibc нет поддержки IPC, если она разрешена в ядре?

    brightred
    Ну просил же - забудь про sudo!!! Не нужен при кросс-компиляции root ни при каком раскладе!
    Да я пробовал и с sudo и без.. Но потом подумал а вдруг..

    Quote Originally Posted by ryzhov_al View Post
    Шайтан.
    Code:
    admin@RT-N66U:/tmp/mnt/SDCARD/tmp# /opt/sbin/wmrd
    - Weather Logger for (c) Oregon Scientific USB protocol
    - Version: 0.4 Den68 ASCII/SQL/RRD/SNMP - building: Wed Jan 23 01:11:03 MSK 2013
    - For help, type -h.
    
    - USB: Opening Oregon Scientific USB device...
    
    Ctrl+C
    - USB: Failed to init device, exiting.
    
    - Exit if pid: 13799 main pid: 13799
    - Caught signal, cleaning up
    
    - PID remove OK
    
    - /opt/sbin/wmrd EXIT Succesfull
    - WMR: hid_close failed with return code 10
    Добавил в репозиторий.

    brightred, с вас отчёт.
    Спасибо, принято. Сделаю.
    Last edited by Omega; 30-08-2013 at 20:19. Reason: 2 posts merged

  6. #66

    wview on RT-N66U Entware - краткий отчет

    Коллеги, приветствую!
    Как обещал, пишу краткий отчет по запуску wview.

    1) Ставим wview и необходимые зависимости. На память не помню, но все что нужно, присуствует в репозитории. Ставим sqlite3.
    2) Далее создаем базу /opt/etc/wview/wview-conf.sdb используя скрипт wview-conf.sql из той же директории
    3) Создаем базу /tmp/opt/var/wview/archive/wview-archive.sdb используя скрипт /opt/etc/wview/wview-archive.sql
    3) Запускаем wviewconfig и долго и муторно отвечаем на вопросы в интерактивном режиме. На что обратить внимание:

    - рекомендую заранее узнать широту и долготу расположения вашей метеостанции (все цифры после запятой) и высоту над уровнем моря в футах

    - переменная Where to store generated html and graphics files: PARAMETER: HTMLGEN_IMAGE_PATH - это директория, куда будет генерироваться сайт с погодными данными, не перепутайте ее с нижеследующей переменной (они так же не должны совпадать) - линк на нее нужно будет потом разместить где-то в doc root вашего веб сервера

    - переменная Where to find HTML template files: PARAMETER: HTMLGEN_HTML_PATH - это директория, куда утилита wviewhtmlconfig положит выбранный вами шаблон сайта (см. ниже)

    - НЕ НУЖНО МЕНЯТЬ ДЕФОЛТОВЫЙ ПАРОЛЬ. Вы его всегда сможете поменять после через веб-интерфейс


    4) Запускаем wviewhtmlconfig, генерим нужный шаблон.

    5) Стартовый скрипт в дистрибутиве не идет, я сделал свой из имеющихся в дистрибутиве примеров. Вот он. Правьте пути, если нужно в начале. Так же в стартовой части я закомментировал запуск демонов, которые я не использую:

    Code:
    #!/bin/sh
    CONF_DIRECTORY=/opt/etc/wview
    WVIEW_DATA_DIR=/opt/var/wview
    WVIEW_INSTALL_DIR=/opt/bin
    RUN_DIRECTORY=/tmp/opt/var/wview
    
    export LANG='en_US.UTF-8'
    export LC_ALL='en_US.UTF-8'
    
    
    #
    # Name:          wview - init.d script for busybox wview
    # Process Names: radmrouted wviewd htmlgend wviewftpd wvalarmd
    #                wvcwopd wviewsshd wvhttpd
    # Config:        /etc/wview/*.conf
    # Pidfiles:      /var/wview/*.pid
    #
    
    RADROUTER_BIN=$WVIEW_INSTALL_DIR/radmrouted
    test -x $RADROUTER_BIN || exit 1
    WVIEWD_FILE=`cat $CONF_DIRECTORY/wview-binary`
    WVIEWD_BIN=$WVIEW_INSTALL_DIR/$WVIEWD_FILE
    test -x $WVIEWD_BIN || exit 2
    HTMLD_BIN=$WVIEW_INSTALL_DIR/htmlgend
    test -x $HTMLD_BIN || exit 3
    FTPD_BIN=$WVIEW_INSTALL_DIR/wviewftpd
    test -x $FTPD_BIN || exit 4
    SSHD_BIN=$WVIEW_INSTALL_DIR/wviewsshd
    test -x $SSHD_BIN || exit 5
    ALARMD_BIN=$WVIEW_INSTALL_DIR/wvalarmd
    test -x $ALARMD_BIN || exit 6
    CWOPD_BIN=$WVIEW_INSTALL_DIR/wvcwopd
    test -x $CWOPD_BIN || exit 7
    HTTP_BIN=$WVIEW_INSTALL_DIR/wvhttpd
    SQLD_BIN=$WVIEW_INSTALL_DIR/wviewsqld
    PMOND_BIN=$WVIEW_INSTALL_DIR/wvpmond
    test -x $PMOND_BIN || exit 10
    
    WVIEWD_PID=$RUN_DIRECTORY/wviewd.pid
    HTMLD_PID=$RUN_DIRECTORY/htmlgend.pid
    FTPD_PID=$RUN_DIRECTORY/wviewftpd.pid
    SSHD_PID=$RUN_DIRECTORY/wviewsshd.pid
    ALARMD_PID=$RUN_DIRECTORY/wvalarmd.pid
    CWOPD_PID=$RUN_DIRECTORY/wvcwopd.pid
    HTTP_PID=$RUN_DIRECTORY/wvhttpd.pid
    SQLD_PID=$RUN_DIRECTORY/wviewsqld.pid
    RADROUTER_PID=$RUN_DIRECTORY/radmrouted.pid
    PMOND_PID=$RUN_DIRECTORY/wvpmond.pid
    
    wait_for_time_set() {
        THOUSAND=1000
        CURRVAL=`date +%s`
        while [ "$CURRVAL" -lt "$THOUSAND" ]; do
            sleep 1
            CURRVAL=`date +%s`
        done
    }
    
    kill_running_processes() {
            if [ -f $RADROUTER_PID ]; then
                    echo "radlib router pid file $RADROUTER_PID exists - killing existing process"
                    kill -15 `cat $RADROUTER_PID`
                    rm -f $RADROUTER_PID
            fi
            if [ -f $WVIEWD_PID ]; then
                    echo "wviewd pid file $WVIEWD_PID exists - killing existing process"
                    kill -15 `cat $WVIEWD_PID`
                    rm -f $WVIEWD_PID
            fi
            if [ -f $HTMLD_PID ]; then
                    echo "htmlgend pid file $HTMLD_PID exists - killing existing process"
                    kill -15 `cat $HTMLD_PID`
                    rm -f $HTMLD_PID
            fi
            if [ -f $FTPD_PID ]; then
                    echo "wviewftpd pid file $FTPD_PID exists - killing existing process"
                    kill -15 `cat $FTPD_PID`
                    rm -f $FTPD_PID
            fi
            if [ -f $SSHD_PID ]; then
                    echo "wviewsshd pid file $SSHD_PID exists - killing existing process"
                    kill -15 `cat $SSHD_PID`
                    rm -f $SSHD_PID
            fi
            if [ -f $ALARMD_PID ]; then
                    echo "wvalarmd pid file $ALARMD_PID exists - killing existing process"
                    kill -15 `cat $ALARMD_PID`
                    rm -f $ALARMD_PID
            fi
            if [ -f $CWOPD_PID ]; then
                    echo "wvcwopd pid file $CWOPD_PID exists - killing existing process"
                    kill -15 `cat $CWOPD_PID`
                    rm -f $CWOPD_PID
            fi
            if [ -f $HTTP_PID ]; then
                    echo "wvhttpd pid file $HTTP_PID exists - killing existing process"
                    kill -15 `cat $HTTP_PID`
                    rm -f $HTTP_PID
            fi
            if [ -f $PMOND_PID ]; then
                    echo "wvpmond pid file $PMOND_PID exists - killing existing process"
                    kill -15 `cat $PMOND_PID`
                    rm -f $PMOND_PID
            fi
    }
    
    case "$1" in
      start)
            kill_running_processes
    
            wait_for_time_set
    
            echo "Starting wview daemons:"
    
            if [ -x $RADROUTER_BIN ]; then
                $RADROUTER_BIN 1 $RUN_DIRECTORY
            else
                echo "Cannot find $RADROUTER_BIN - exiting!"
                exit 10
            fi
            sleep 1
            $WVIEWD_BIN
            sleep 1
            $HTMLD_BIN
    #       $ALARMD_BIN
    #       $CWOPD_BIN
    #       $HTTP_BIN
    #       $FTPD_BIN
    #       $SSHD_BIN
        $PMOND_BIN
        ;;
      start-trace)
            kill_running_processes
    
            echo "Starting wview daemons (tracing to $RUN_DIRECTORY):"
            echo "Warning: traced processes run very slowly and may effect performance."
    
            if [ -x $RADROUTER_BIN ]; then
                $RADROUTER_BIN 1 $RUN_DIRECTORY
            else
                echo "Cannot find $RADROUTER_BIN - exiting!"
                exit 10
            fi
            sleep 1
            strace -o $RUN_DIRECTORY/$WVIEWD_FILE.trace $WVIEWD_BIN -f &> /dev/null &
            sleep 1
            strace -o $RUN_DIRECTORY/htmlgend.trace $HTMLD_BIN -f &> /dev/null &
            strace -o $RUN_DIRECTORY/wvalarmd.trace $ALARMD_BIN -f &> /dev/null &
            strace -o $RUN_DIRECTORY/wvcwopd.trace $CWOPD_BIN -f &> /dev/null &
            strace -o $RUN_DIRECTORY/wvhttpd.trace $HTTP_BIN -f &> /dev/null &
            strace -o $RUN_DIRECTORY/wviewftpd.trace $FTPD_BIN -f &> /dev/null &
            strace -o $RUN_DIRECTORY/wviewsshd.trace $SSHD_BIN -f &> /dev/null &
            strace -o $RUN_DIRECTORY/wvpmond.trace $PMOND_BIN -f &> /dev/null &
            ;;
      stop)
            echo "Shutting down wview daemons..."
            if [ -f $PMOND_PID ]; then
                kill -15 `cat $PMOND_PID`
            fi
            if [ -f $HTTP_PID ]; then
                kill -15 `cat $HTTP_PID`
            fi
            if [ -f $CWOPD_PID ]; then
                kill -15 `cat $CWOPD_PID`
            fi
            if [ -f $ALARMD_PID ]; then
                kill -15 `cat $ALARMD_PID`
            fi
            if [ -f $SSHD_PID ]; then
                kill -15 `cat $SSHD_PID`
            fi
            if [ -f $FTPD_PID ]; then
                kill -15 `cat $FTPD_PID`
            fi
            if [ -f $HTMLD_PID ]; then
                kill -15 `cat $HTMLD_PID`
            fi
            if [ -f $WVIEWD_PID ]; then
                kill -15 `cat $WVIEWD_PID`
            fi
            sleep 1
            if [ -f $RADROUTER_PID ]; then
                kill -15 `cat $RADROUTER_PID`
            fi
        ;;
      restart)
            $0 stop  && sleep 2
            $0 start
        ;;
      *)
            echo "Usage: $0 {start|start-trace|stop|restart}"
            exit 1
    esac
    
    exit 0
    Теперь можно стартовать wview!

    Статусные сообщения и сообщения об ошибках можно увидет в syslog.

    Сайт сгенерирован в директорию, задаваемую параметром HTMLGEN_IMAGE_PATH. Сделав линк на нее из doc root вашего вебсервера можно смотреть страничку с погодой через браузер.

    6) ХОЗЯЙКЕ НА ЗАМЕТКУ.
    Чтобы показания станции корректно считывались, нужно использовать локаль en_US.UTF-8. В случае использования русской локали wview путает десятичные запятые и запятые, которые используются как разделители.

    7) Чтобы использовать веб-интерфейс для конфигурирования vwiew, необходимо разархивировать исходники и скопировать директорию wviewmgmt в doc root вашего вебсервера. Веб интерфейс запускается по ссылке http://[адрес вашего вебсервера]/wviewmgmt/login.php.

    Для корректной работы wviewmgmt требуется файл functions.php, которого в исходниках нет, зато есть functions.php.sh, который легким движением руки превратится в нужный нам functions.php, если в его начало добавить следующие строки:

    Code:
    <?php
    
    function GetBinaryPrefix()
    {
        $WVIEW_BINARY_PREFIX = "/opt";
        return $WVIEW_BINARY_PREFIX;
    }
    
    function GetConfigPrefix()
    {
        $WVIEW_CONFIG_PREFIX = "/opt/etc";
        return $WVIEW_CONFIG_PREFIX;
    }
    
    function GetDataPrefix()
    {
    $WVIEW_DATA_PREFIX = "/opt/var";
    return $WVIEW_DATA_PREFIX;
    }

    ЗАМЕТКИ НА ПОЛЯХ

    Я не очень поял как использовать встренный вебсервер для отображения погоды, поэтому водрузил апач. Чтобы апач заработал с php, я, в конец httpd.conf вставил следующие строки:

    Code:
    # CUSTOM: Add PHP 5 parsing (via CGI) handler and action
    ScriptAlias /local-bin /opt/bin
    AddHandler application/x-httpd-php5 php
    Action application/x-httpd-php5 /local-bin/php-cgi
    <Directory "/opt/bin">
        Order allow,deny
        Allow from all
    </Directory>
    php5 должен поддерживать PDO, поэтому необходимо установить соотвествующие пакеты и расскоментировать соотв. строку в php.ini

    Вроде все.

    Задавайте вопросы.

  7. #67
    Quote Originally Posted by ryzhov_al View Post
    Добавил в репозиторий.

    brightred, с вас отчёт.
    Приветствую!

    Вроде бы запустился:
    Code:
    admin@RT-N66U:/tmp/opt/sbin# /opt/sbin/wmrd -s -d -c /opt/etc/wmr/wmr.conf
    - Weather Logger for (c) Oregon Scientific USB protocol
    - Version: 0.4 Den68 ASCII/SQL/RRD/SNMP - building: Wed Jan 23 01:11:03 MSK 2013 
    - For help, type -h.
    
    - USB: Opening Oregon Scientific USB device...
    device identification of HIDInterface 001/004[0]:
      dev_handle:    0x0041e0e0
      device:        0x00422380
      location:      001/004
      product:       Universal Bridge
    - USB: Device found on: 001/004[0]
    
    Config (/opt/etc/wmr/wmr.conf) defenition:
    - Daemon mode:		1
    - SysLog Enable:	1
    - Lock file path:	/var/lock/wmrd.lock
    - SQL Enable:		1
    - SQL Base path:	/opt/var/wmr/weather.db
    - File Log Enable:	0
    - File Log path:	/opt/var/wmr/weather.log
    - RRD graphic Enable:	1
    - RRD exec path:	/opt/bin/rrdtool
    - RRD save path:	/opt/var/wmr
    - UPD Enable:		0
    - UPD time:		10
    - UPD exec path:	/opt/etc/wmr/script_update
    - Rotate exec path:	/opt/sbin/wmr_logrotate.sh
    - Alarm Enable:		0
    - Alarm exec path:	/opt/sbin/wmr_alarm.sh
    - SNPM Enable:		0
    - Debug Enable:		1
    
    - Sensor correct:
    		temp:		0 0 0 0 0 0 0 0 0 0
    		humidity:	0 0 0 0 0 0 0 0 0 0
    		water:		0 0 0 0
    		pressure:	0
    		wind:		0
    		rain:		0
    		uv:		0
    - Sensor alarm (min/max):
    		temp min:	0 0 0 0 0 0 0 0 0 0
    		temp max:	0 0 0 0 0 0 0 0 0 0
    		humidity min:	0 0 0 0 0 0 0 0 0 0
    		humidity max:	0 0 0 0 0 0 0 0 0 0
    		water min:	0 0 0 0
    		water max:	0 0 0 0
    		pressure:	0/0
    		wind:		0/0
    		rain:		0/0
    		uv:		0/0
    - Sensor data standart:
    		temp:		0
    		pressure:	5
    		wind:		0
    		rain:		0
    		water:		0
    		uv:		0
    
    Config SNMP defenition:
    - Server port:		161
    - Cmmunity:		public
    - Location:		195220,Russia,Sainkt-Petersburg,ul.Lermontova
    - Longtitude:		30.38
    - Latitude:		60.00
    - Contact E-mail:		my@email.ru
    - Contact Phone:	78120000000
    - Contact Skype:	myweather
    - Contact ICQ:		12345678
    - Contact WWW:		www.myweather.com
    
    - DAEMON: mode started...
    
    - Exit if pid: 14399 main pid: 14399
    Станцию вроде увидел но базы не обновляет и похоже не получает данные со станции.

    Может у кого есть идеи как проверить - идет что-то со станции или нет?


    Вот еще что нашел - может в этом дело:
    Версия 0.4, помарки в коде:
    Файл wmr.c строку 656 нужно раскоментировать иначе не будет нормально старотовать, попутно закоментировать break.
    В Makefile в секции install указан файл wmr_create_graph_rrd.sh но его нет, зато есть wmr_create_graph.sh Думаю нужно переименовать.
    С другой стороны вроде wmrd запускается....

Page 5 of 5 FirstFirst ... 345

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •