Dziękuje za pomoc smile
Mam uwagę do skryptu. Nie działa w nim polecenie: "port = ${DEVPATH##*.}"
Jak zmieniłem na "port=${DEVPATH##*.}" to jest OK.
Może drobiazg, ale dla osoby, która nie zna się na skryptach to znalezienie takiego błędu to sukces smile
Dzięki za pomoc, szczególnie że jest to projekt dla mamy... a to klient bardzo wymagający, szczególnie jak coś przestaje działać.

Pozdrawiam,
M.

Witam,

Do WDR-3600 podłączyłem:
1) USB1 -> Modem Huawei 1752C
2) USB2 -> konwerter USB <> 1-wire

Moim problemem jest to, że urządzenia zamieniają się portami ttyUSBX, gdzie X=0,1,2.
Znalazłem artykuł http://eko.one.pl/?p=openwrt-linkidoportowszeregowych
Skrypt:
-----
if [ "$DEVTYPE" = "usb_interface" ] && [ "$ACTION" = "add" ]; then
        for tty in /sys/$DEVPATH/ttyUSB*; do
            [ -d "$tty" ] || continue
            OLDD=${tty##*/}

            # to jest HUAWEI 1752C #1
            if [ "x$PRODUCT" = "x12d1/141b/0" ]; then
                NEWD="modem_"${DEVPATH##*.}
                rm /dev/$NEWD
                ln -s /dev/$OLDD /dev/$NEWD
            fi

            # to jest MERA-PROJEKT USB <> 1-wire
            if [ "x$PRODUCT" = "x403/6001/600" ]; then
                NEWD="mera_usb_1wire_"${DEVPATH##*.}
                rm /dev/$NEWD
                ln -s /dev/$OLDD /dev/$NEWD
            fi

        done
fi
-----
Skrypt działa poprawnie, ponieważ:
ls -la:
lrwxrwxrwx    1 root     root            12 Mar  7 19:46 mera_usb_1wire_0 -> /dev/ttyUSB0
lrwxrwxrwx    1 root     root            12 Mar  7 19:46 modem_0 -> /dev/ttyUSB1
lrwxrwxrwx    1 root     root            12 Mar  7 19:46 modem_1 -> /dev/ttyUSB2

Jeśli /etc/config/network jest w postaci:
-----
config interface 'wan'
    option auto '1'
    option proto '3g'
    option device '/dev/ttyUSB1'
    option apn 'internet'
    option service 'umts'
    option mobile_isp 'Poland - Play'
    option pincode '6786'
-----
to modem bez żadnych problemów łączy się z internetem.
Jeśli wpiszemy alias /dev/modem_1 to modem przestaje działać:
-----
config interface 'wan'
    option auto '1'
    option proto '3g'
    option device '/dev/modem_0'
    option apn 'internet'
    option service 'umts'
    option mobile_isp 'Poland - Play'
    option pincode '6786'
-----
Przy tej konfiguracji modem nie łączy się z internetem.

Pytania do Was:
1) Co zrobić by modem dobrze działał po wpisaniu aliasu do pliku network? Chyba, że w inny sposób można rozwiązać problem zmiany ttyUSBX przy podłączaniu urządzeń.
2) Czy w skrypcie: "if [ "x$PRODUCT" = "x12d1/141b/0" ]; then" można zastosować znaki naskujące np: "*". W 99% przypadków modem jest rozpoznawany jako 12d1/141b/0, ale w 1% przypadków jest to x12d1/1416/0 i wobec tego czy można zastosować "x12d1*"?

Pozdrawiam,
Michał

3

(3 odpowiedzi, napisanych Termometr)

Dzięki za pomoc smile

Skrypt:
#!/bin/sh
T0=$(digitemp_DS9097U -q -s /dev/ttyUSB0 -t 0 -o "'%R', '%.2F'")
T1=$(digitemp_DS9097U -q -s /dev/ttyUSB0 -t 1 -o "'%R', '%.2F'")
mysql -h xxx.home.pl -u x1 -p... -D x1  -e "insert into digitemp (SerialNumber, Fahrenheit) values ($T0), ($T1)"

Działa dobrze.
Teraz jeszcze pozostało skonfigurowanie Internetu przez modem GSM i będzie wszystko działać.

Teraz potrzebowałem na szybko urządzenie rejestrującego temperaturę. Później pobawię się digitemp i innymi czujnikami jakie można podłączyć do routera.

Pozdrawiam,
M.

4

(3 odpowiedzi, napisanych Termometr)

Witam,

Mam zamiar uruchomić termometr na routerze WDR-3600. Skorzystałem z instrukcji opisanej na stronie: http://gru.one.pl/601/digitemp-i-zapis-do-mysql/

Założenia projektu:
1) strona www i mysql znajduje się na zewnątrz na home.pl
2) na działce mam router WDR-3600 + DS18B20
3) router wykonuje pomiar temperatury i zapisuje dane w bazie na home.pl
4) połączenie do internetu za pomocą SIM od PLAY'a
5) pomiar temperatury co 5 minut

Punkt 1 wykonałem: http://uzaleznieniapomoc.waw.pl/ (domena jest dla testów, taką miałem)
Punkty 2, 4 przetestowałem, działają smile
Punkt 5 - myślę, że tu nie będzie problemu. Dodanie skryptu do crona.

Moim problemem jest punkt 3.
Chciałem przerobić skrypt:
----
#!/bin/sh
SQL='insert into temperatura (numer_seryjny, temperatura) values ('`digitemp_DS2490 -q -a -o"%R,%.2C" | grep -v Found`');'
psql -q -h host -d baza -U user -c "$SQL"
----
który znajduje się na stronie: http://eko.one.pl/?p=Termometr#usb
Na home.pl mam bazę MySQL, a nie Postgres. Próbowałem użyć komendy mysql, ale to nie działa:
---
mysql -h .... -u .... -p....
use digitemp
insert into digitemp (SerialNumber, Fahrenheit) values, (\! digitemp_DS9097U -q -s /dev/ttyUSB0 -t 1 -o "'%R', '%.2F'")
---
Samo: "insert into digitemp (SerialNumber, Fahrenheit) values, ('1234567890ABCDEFG', '22.43');" działa.
Samo: "\! digitemp_DS9097U -q -s /dev/ttyUSB0 -t 1 -o "'%R', '%.2F'"" działa

Nie wiem jak wynik z komendy digitemp przekazać do komendy sql'a. W ostatecznym rezultacie potrzebuje skrypt, który:
1) wykonuje pomiar z kilku czujników
2) łączy się z mysql na home.pl
3) wrzuca dane do tabeli digitemp - dwie zmienne: ID czujnika i wartość temperatury w F.

Moja wiedza ogranicza się tylko w niewielikim zakresie do linux'a i mysql. Wszelkie napotkane problemy rozwiązywałem za pomocą google. Nad tym problemem siedzę już trzeci wieczór. Znalazłem wiele skryptów w perl, php, ale nie potrafię ich dostosować do moich potrzeb i uruchomić na OpenWrt.

Dziękuję za pomoc.
Pozdrawiam,
Michał