Temat: OpenWrt + Digitemp + MySQL na home.pl

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ł

2

Odp: OpenWrt + Digitemp + MySQL na home.pl

Odczytaj wynik z digitempa, wstaw to do zmiennej:

T=$(digitemp_DS9097U -q -s /dev/ttyUSB0 -t 1 -o "'%R', '%.2F'")

A później zapisz do bazy

mysql -u ... -p -e 'insert intp ... values ('$T')' digitemp

Nie wiem czemu założyłeś że mysql ma takie same parametry jak psql w wywołaniu. Wszystkie polecenia możesz przecież wywołać z konsoli żeby sprawdzić czy i jak działają.

Inna sprawa - digitemp posiada wsparcie dla mysql i wystarczy sobie tylko przekompilować wersję ze wsparciem dla mysql.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: OpenWrt + Digitemp + MySQL na home.pl

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

Odp: OpenWrt + Digitemp + MySQL na home.pl

Przydaja sie moje poradniki widze ;]

RB760iGS + RB260GS / Ryzen 5 2660 / 16G DDR4 / MiniITX - Inea 1G (https://i.imgur.com/TLbJVDw.png)
RB951-2HnD / Celeron J1900 / 4G DDR3 / MiniITX - Satpol 100M