51

Odp: Kolejny termometr, ale troszkę inaczej

Powiem szczerze - zaczyna się to komplikować - ale nikt nie mówił, że będzie łatwo.
1. Czy mogłbyś przybliżyć coś nieco na temat "Więc zrób sobie stronę php ktora w GET przyjmie parametry i wrzuca to do bazy"  - googluje już na ten temat smile
2. Mając zew. ip można by postawić bazę w domu - ale właśnie, mając zew. ip którego nie mam. Więc pozostaje opcja 1.

52 (edytowany przez tygrysss 2015-08-07 14:20:57)

Odp: Kolejny termometr, ale troszkę inaczej

Na podstawie strony - http://www.kess.snug.pl/?sid=10&pid=42
zrobiłem smile Zmieniłem z POST na GET - dodaje się do bazy danych elegancko.
Mianowicie - bartex.cba.pl/get/dane.php  Możesz kolego sprawdzić działanie.

Natomiast dziwne jest dzialanie tego wget:
root@Biszkopcik:~# Connecting to bartex.cba.pl (85.17.73.180:80)
null                 100% |*******************************|  1779   0:00:00 ETA
$$$$$$$$$$$$$$
root@Biszkopcik:~# help
Built-in commands:
------------------
        . : [ [[ alias bg break cd chdir command continue echo eval exec
        exit export false fg getopts hash help jobs kill let local printf
        pwd read readonly return set shift source test times trap true
        type ulimit umask unalias unset wait

[2]+  Done                       wget -O /dev/null http://bartex.cba.pl/imie=test
root@Biszkopcik:~#
W miejscu $$ moge wciskac cokolwiek a na koniec i tak jest: Done                       wget -O /dev/null http://bartex.cba.pl/

I nie dodaje rekordu. Wpisując w przeglądarkę np: http://bartex.cba.pl/?imie=test&email=testowy123321
Rekord się dodaje

53

Odp: Kolejny termometr, ale troszkę inaczej

Hmm wget jest z tego co widzę do pobierania a nie wysyłania? Nie wiem jak go użyć by wysyłał dane z czujników do bazy (czas, id czujnika, temp)

54

Odp: Kolejny termometr, ale troszkę inaczej

wget -O /dev/null "http://bartex.cba.pl/get/jakisplik.php?imie=test...."

Weż url w "" bo shell & interpretuje po swojemu. Wyobraź sobie że w ten sposób pobierasz stronę www wgetem czyli robisz geta. A strona to interpretuje i dostaje dwa argumenty.

Trochę podstaw Ci brakuje.

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

55

Odp: Kolejny termometr, ale troszkę inaczej

Oki - działa smile
Tego sposobu nie mogę wykorzystać:
#!/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)"

Wiadomo - nie wpiszę nic do bazy.

Jak zatem wartości $T0 i $T1 wpisać?
Wymyśliłem tak:
Utworzę tabelę z 3 rekordami czas (typ danych: text), id(text), temp(double).
I pojedynczo będę wpisywał do niej np.:
wget -O /dev/null "http://bartex.cba.pl/get/jakisplik.php? … ;temp=23,6"

Ok tylko jak zrobić żeby wpisywało automatycznie? Nie chodzi o crona, ale podstawiało za czas, id, temp bieżące wartości? W mysql dawaliśmy &t0 i &t1 a tu?

56

Odp: Kolejny termometr, ale troszkę inaczej

Tak samo:

wget -O /dev/null "http://bartex.cba.pl/get/jakisplik.php?temp=$t0"
wget -O /dev/null "http://bartex.cba.pl/get/jakisplik.php?temp=$t1"

shell sam zmienne zamieni. Wykonaj to jako sh -x /nazwa/tego/skryptu a zobaczysz co wychodzi w poleceniach.

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

57

Odp: Kolejny termometr, ale troszkę inaczej

Cezary, obecna składnia wygląda tak:
http://bartex.cba.pl/get/jakisplik.php? … ;temp=23.6

Po wykonaniu :wget -O /dev/null "http://bartex.cba.pl/get/jakisplik.php?temp=$t0" nic się nie dodaje - podejrzewam błąd składni. Po prostu $t0 nie odpowiada rekordom które są w bazie.

Podejrzewam, że robiąc po prostu jeden rekord w tabeli jako tekst powyższe polecenie by działało.

58

Odp: Kolejny termometr, ale troszkę inaczej

Pokaz wynik sh -x /nazwa/skryptu/który/zrobiłeś.

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

59

Odp: Kolejny termometr, ale troszkę inaczej

Nie robiłem skryptu - wklepuje ręcznie.
Najpierw:
T0=$(digitemp_DS9097U -q -s /dev/ttyUSB0 -t 0 -o "'%R', '%.2F'")
a potem:
wget -O /dev/null "http://bartex.cba.pl/get/jakisplik.php?temp=$T0

w takim połączeniu wydaje mi się, że również powinno działać? Bo to ręcznie wprowadzane komendy a nie skrypt

60

Odp: Kolejny termometr, ale troszkę inaczej

Zrób to w skrypcie jednym jak pisałem.

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

61

Odp: Kolejny termometr, ale troszkę inaczej

Proszę bardzo:  sh -x wyslij.sh
+ digitemp_DS9097 -q -s /dev/ttyUSB0 -t 0 -o '%R', '%.2F'
+ T0='10D815CC02080022', '99.05'
+ digitemp DS9097 -q -s /dev/ttyUSB0 -t 0 -o '%R', '%.2F'
wyslij.sh: line 1: digitemp: not found
+ T1=
+ wget -O /dev/null http://bartex.cba.pl/get/test.php?dane='10D815CC02080022', '99.05'
Connecting to bartex.cba.pl (85.17.73.180:80)
null                 100% |*******************************|  1818   0:00:00 ETA
+ wget -O /dev/null http://bartex.cba.pl/get/test.php?dane=
Connecting to bartex.cba.pl (85.17.73.180:80)
null                 100% |*******************************|  1779   0:00:00 ETA


Zrobiłem specjalnie nową tabelę przyjmującą tylko text. Więc powinno spokojnie pójść. Wpisując w przeglądarce: http://bartex.cba.pl/get/test.php?dane=testowanie

Wszytsko działa

62

Odp: Kolejny termometr, ale troszkę inaczej

No widzisz - bo źle zmienną T0 robisz i to nie jest poprawny url dla niego

#!/bin/sh
T0=$(digitemp_DS9097U -q -s /dev/ttyUSB0 -t 0 -o "%.2C")
wget -O /dev/null "http://bartex.cba.pl/get/test.php?dane=$T0"
Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

63

Odp: Kolejny termometr, ale troszkę inaczej

PS. W drugiej linii nie masz _

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

64

Odp: Kolejny termometr, ale troszkę inaczej

Korzystałem z poradnika innego - eko.one.pl
W takim razie w jaki sposób mam zrobić te zmienną?
Narazie mam 1 rekord w bazie danych - jednak czy będę mógł dzięki temu wyciągnąć poszczególne wartości czasu id i temperatury?
Czy lepiej już teraz na etapie projektowania wyglądu zmiennej T0 zrobic w bazie danych jak mówiłem wcześniej czyli 3 rekordy: id czas temp?

65 (edytowany przez tygrysss 2015-08-06 10:49:06)

Odp: Kolejny termometr, ale troszkę inaczej

sh -x wyslij.sh
+ digitemp_DS9097 -q -s /dev/ttyUSB0 -t 0 -o '%R', '%.2F'
+ T0='10D815CC02080022', '99.39'
+ digitemp_DS9097 -q -s /dev/ttyUSB0 -t 0 -o '%R', '%.2F'
+ T1='10D815CC02080022', '99.28'
+ wget -O /dev/null http://bartex.cba.pl/get/test.php?dane='10D815CC02080022', '99.39'
Connecting to bartex.cba.pl (85.17.73.180:80)
null                 100% |*******************************|  1818   0:00:00 ETA
+ wget -O /dev/null http://bartex.cba.pl/get/test.php?dane='10D815CC02080022', '99.28'
Connecting to bartex.cba.pl (85.17.73.180:80)
null                 100% |*******************************|  1818   0:00:00 ETA


dodałem _, ale odczytuje tylko z jednego czujnika hmm
Ps. Zmieniłem na stopnie Celc. Zmieniając 2F na 2C. - działa

66

Odp: Kolejny termometr, ale troszkę inaczej

Kombinuje :

Cos działa:
# sh -x wyslij.sh
+ digitemp_DS9097 -q -s /dev/ttyUSB0 -t 0 -o %.2C
+ T0=38.31
+ digitemp_DS9097 -q -s /dev/ttyUSB0 -t 0 -o '%R', '%.2C'
+ T1='10D815CC02080022', '38.38'
+ wget -O /dev/null http://bartex.cba.pl/get/test.php?dane=38.31
Connecting to bartex.cba.pl (85.17.73.180:80)
null                 100% |*******************************|  1809   0:00:00 ETA
+ wget -O /dev/null http://bartex.cba.pl/get/test.php?dane='10D815CC02080022', '38.38'
Connecting to bartex.cba.pl (85.17.73.180:80)
null                 100% |*******************************|  1818   0:00:00 ETA
root@Biszkopcik:~#

Temperatura pojawiła się w bazie danych smile Malymi kroczkami do przodu

67

Odp: Kolejny termometr, ale troszkę inaczej

Ty naprawdę w ogóle nie czytasz. Oba polecenia czytają tylko jeden czujnik (-t 0). Zmień na -t 1 to będziesz miał drugi.

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

68

Odp: Kolejny termometr, ale troszkę inaczej

Ok zmienione - działa smile Kompletnie zapomniałem o tym pparametrze.
Natomiast Chciałbym zrobić tak jak mowiłem.
Tablica temperatura a w niej 3 rekordy, a nie 1 jak obecnie. oddzielnie czas id temp.
W chwili obecnej dziala wpisuje do bazy: 10D815CC02080022,38.88
10FD0BCC020800A1,29.50
Super ! smile
Jednak jak zmodyfikować wget (polecenie) by wyglądało to mneij więcej tak:
http://bartex.cba.pl/get/jakisplik.php? … ;temp=33.3

wget -O /dev/null http://bartex.cba.pl/get/jakisplik.php? … &temp=...
Bo w chwili obecnej dopisuje mi to po przecinku.
Hmm a może w
digitemp_DS9097 -q -s /dev/ttyUSB0 -t 0 -o '%R', '%.2C'

zrobię tak:
digitemp_DS9097 -q -s /dev/ttyUSB0 -t 0 -o 'id=%R', 'temp=%.2C'

Sprawdzam i napiszę smile

69

Odp: Kolejny termometr, ale troszkę inaczej

Ps. Jaki przełącznik w digitemp odpowiada za czas?

70

Odp: Kolejny termometr, ale troszkę inaczej

Tak, przecież sam to właśnie tak formatujesz...

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

71

Odp: Kolejny termometr, ale troszkę inaczej

No proszę, przeczytaj w końcu manual do digitempa.

The case of the token is important! The default format string is: "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F" which gives you an output of: May 24 21:25:43 Sensor 0 C: 23.66 F: 74.59

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

72

Odp: Kolejny termometr, ale troszkę inaczej

Super wszytsko wpisuje się do bazy smile
Problem pozostał tylko z rokiem parametr %y zwraca tylko 15 a nie 2015. Tak ma być czy jest inny parametr?
Teraz spróbuje dodać to do Crona smile

73

Odp: Kolejny termometr, ale troszkę inaczej

%Y

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

74

Odp: Kolejny termometr, ale troszkę inaczej

Mam pytanie odnośnie ścieżki dostepu - skrypt wyslij.sh utworzyłem w głównym?(chyba) katalogu.
po podaniu ls mam:
root@Biszkopcik:~# ls
wyslij.sh

więc polecenie i ścieżka będzie wyglądało następująco:
*/1 * * * * /usr/bin/wyslij.sh
?

75

Odp: Kolejny termometr, ale troszkę inaczej

/root/wyslij.sh

Jak byś utworzył w /usr/bin to by był w /usr/bin.

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