51

Odp: Czas na termometr

witam! podjąłem dalszą walkę z 1-wire pod OpenWrt i tym razem wykonuję pomiar napięcia z wykorzystaniem układu DS2438, oraz układu 1-Wire/Usb MP00200A. No i niestety pojawiły się problemy... Po podłączeniu DS2438 do 1-Wire, otrzymuje z digitempa temperaturę, jednak nic poza tym, nie odczytuje mi napięć, mimo że w układzie mam zasialnie pod Vdd( podciągnięte z MP00200A). To samo zasilanie dałem też pod Vad, ale ciągle podaje mi wartości -1 dla wszystkich napięć sad

root@Gargoyle:~$ digitemp_DS2490 -a -A
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Found DS2490 device #1 at 001/005
Oct 23 00:12:23 Sensor 0 VDD: -1.00 AD: -1.00 CAD: 0 C: 21.44


dodam tez ze nie dawałem rezystora podciągającego miedzy 1-wire a Vdd. Pytanie, czy dobrze wywołuje odczyt danych z układu? dlaczego ciągle dostaje te "-1" dla napięć?
http://img812.imageshack.us/img812/5135/2438c.jpg

52

Odp: Czas na termometr

To już musiał byś źródła digitempa zobaczy czy on to w ogóle obsługuje.

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

53 (edytowany przez kamillo 2011-11-11 13:10:13)

Odp: Czas na termometr

no właśnie na http://www.digitemp.com/ piszą że DS2438 jest obsługiwany. Jednak mimo to digitemp jest raczej do odczytu temperatur... Ale z tego co tutaj doczytałem w tym temacie, kilka postów wyżej to ktoś juz próbował ten układ i działa mu odczyt napięcia, tylko nie wiem czym je odczytuje... może próbować przez owfs??? tylko szkoda, bo mam juz wszystko na digitempie zrobione, wszystkie skrypty itd...

54

Odp: Czas na termometr

No i jest obsługiwany bo działa. Pytanie czy digitemp obsługuje też vcc z niego.

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

55

Odp: Czas na termometr

z digitemp raczej nie uzyskam vcc, więc próbuje z owfs. Tylko nie bardzo rozumiem jak się za niego zabrać... Tzn zainstalowałem sobie owfs, ale nie moge nigdzie znaleźć jego katalogu. Wspomagam się http://openrouter.info/index.php?option … ;Itemid=61. Tylko nie rozumiem tej części:

W OpenWrt wykorzystujemy gotowy dysk /tmp a w innym systemie dopisujemy do /etc/rc.local :

/home/user/skrypty/ramdysk.sh
mkdir /mnt/ram/owfs
/opt/owfs/bin/owfs -u /mnt/ram/owfs

skrypt ramdysk tylko gdy nie mamy /tmp w ramie (zapewne można też inaczej):

dd if=/dev/zero of=/dev/ram0 bs=1k count=32768
mkfs.ext3 -m 0 /dev/ram0 15000
mount -t ext3 /dev/ram0 /mnt/ram
chmod 0777 /mnt/ram

"stujemy gotowy dysk /tmp" - mam katalog tmp więc co tej częsci z dopisywaniem do rc.local nie wykonuje?? i dalsza część też "skrypt ramdysk tylko gdy nie mamy /tmp w ramie " więc co nie robie tego skryptu ramdysk.sh??
Z góry prosze o wyrozumiałość, bo jak narazie to nie rozumiem co i jak z owfs...

56

Odp: Czas na termometr

Po prostu zrób sobie katalog /tmp/owfs i uruchom owfs -u /tmp/owfs. W tym katalogu będziesz miał strukturę plików pochodzącą z owfs.

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

57

Odp: Czas na termometr

dzięki! mam juz katalog i pliki z odczytanymi danymi m.in. Vcc czyli to o co mi chodziło. Zrobiłem sobie teraz wstępny skrypt do prezentacji na wykresie, ale coś nie moge go ręcznie wykonać. W WinScp wywala

Polecenie '"./tempera.sh"'
zawiodło zwracając kod wyniku 127 oraz komunikat błędu
-ash: ./tempera.sh: not found.

58

Odp: Czas na termometr

Końce linii masz windows a nie unix. Albo zrób to w normalnym edytorze który to potrafi albo w vi (obsługę masz na eko.one.pl)

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

59

Odp: Czas na termometr

nie rozumiem o które końce chodzi?? mój skryp umieściem sobie w /www i wygląda tak:

#!/bin/bash

RRD=/mnt/hdd1/pomiary.rrd
TOOL='/usr/bin/rrdtool'
NOW=`date -u +%s`
TEMP=`sed 's/^[ ]*//' /tmp/owfs/26.8E0CEB000000/temperature`

$TOOL update $RRD $NOW:$TEMP;

rrdtool graph /mnt/hdd1/temp12.gif -t 'Temperatura' \
-A -w 600 -h 200 --vertical-label 'Temperatura [C]' -Y -s end-24h -E \
DEF:t=$RRD:temp_out:AVERAGE LINE1:t#00af00:Temperatura \
DEF:tmax=$RRD:temp_out:MAX DEF:tmin=$RRD:temp_out:MIN \
'GPRINT:t:LAST:Ostatni pomiar\: %2.1lf C\j' \
'GPRINT:tmin:MIN:Minimum \: %2.1lf C' \
'GPRINT:tmax:MAX:Maximum \: %2.1lf C\j';


mv -f /mnt/hdd1/temp12.gif /mnt/hdd1/atemp12.gif


else

echo"aaa";

"zrób to w normalnym edytorze który to potrafi " tzn jakim? a nie chodzi tutaj o zrobienie pliku/skryptu wykonywalnym?? Jak to powinienem prawidłowo zrobić, bo nie wiem czy tu cos źle nie zrobiłem.

60

Odp: Czas na termometr

uniksowym lub notepad++. Wykonywalnym to swoją drogą. Otwórz ten plik z vi i zobacz czy na końcu masz ^M - to są windowsowe końce linii. A tak swoją drogą masz basha zainstalowanego?

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

61

Odp: Czas na termometr

powracam do tematu. Otwarłem sobie skrypt przez vi i nie widze w nim lini windowsowych.

root@Gargoyle:~$ vi /www/tempera.sh
#!/bin/bash

RRD=/mnt/hdd1/pomiary.rrd
TOOL='/usr/bin/rrdtool'
NOW=`date -u +%s`
TEMP=`sed 's/^[ ]*//' /tmp/owfs/26.8E0CEB000000/temperature`

$TOOL update $RRD $NOW:$TEMP;

rrdtool graph /mnt/hdd1/temp12.gif -t 'Temperatura' \
-A -w 600 -h 200 --vertical-label 'Temperatura [C]' -Y -s end-24h -E \
DEF:t=$RRD:temp_out:AVERAGE LINE1:t#00af00:Temperatura \
DEF:tmax=$RRD:temp_out:MAX DEF:tmin=$RRD:temp_out:MIN \
'GPRINT:t:LAST:Ostatni pomiar\: %2.1lf C\j' \
'GPRINT:tmin:MIN:Minimum \: %2.1lf C' \
'GPRINT:tmax:MAX:Maximum \: %2.1lf C\j';


mv -f /mnt/hdd1/temp12.gif /mnt/hdd1/atemp12.gif


else

- /www/tempera.sh 1/23 4%

basha nie miałem, ale już mam zainstalowany. Teraz przy ręcznej próbie wykonania skryptu w WinScp wywala mi:

Polecenie '"./tempera.sh"'
zawiodło zwracając kod wyniku 2 oraz komunikat błędu
ERROR: opening '/mnt/hdd1/pomiary.rrd': No such file or directory
ERROR: opening '/mnt/hdd1/pomiary.rrd': No such file or directory
mv: cannot rename '/mnt/hdd1/temp12.gif': No such file or directory
./tempera.sh: line 22: syntax error near unexpected token `else'
./tempera.sh: line 22: `else'.

I jeszcze jedno. Dlaczego po ponownym uruchomieniu znika mi katalog /tmp/owfs i musze go od nowa za każdym razem tworzyć.

62

Odp: Czas na termometr

Teraz skrypt działa ale jest po prostu zły - masz else bez if, tak samo jak inicjalizacji baz rrd, której widocznie nie wykonałeś.

A katalog musisz robić bo owfs go sam nie robi, a wymaga podania istniejącego.

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

63

Odp: Czas na termometr

no tak kilka błędów przez przeoczenie. If-a nie było a baze rrd przypadkiem nazwałem rdd (literówka) i jej nie widział. Błędów mniej, ale teraz mi wywala

Polecenie '"./tempera.sh"'
zawiodło zwracając kod wyniku 2 oraz komunikat błędu
./tempera.sh: line 31: syntax error: unexpected end of file.

64

Odp: Czas na termometr

Znaku końca linii pewnie nie masz na końcu pliku

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

65

Odp: Czas na termometr

jest ; wiec znak konca lini jest, chyba ze o co innego Ci chodzi. Kod wygląda tak

#!/bin/bash

RRD=/root/pomiary.rrd
TOOL='/usr/bin/rrdtool'
NOW=`date -u +%s`
TEMP=`sed 's/^[ ]*//' /tmp/owfs/26.8E0CEB000000/temperature`

#petla
if [ -n "$TEMPOUT" ];

then


$TOOL update $RRD $NOW:$TEMP;

rrdtool graph /mnt/hdd1/temp12.gif -t 'Temperatura' \
-A -w 600 -h 200 --vertical-label 'Temperatura [C]' -Y -s end-24h -E \
DEF:t=$RRD:temp_out:AVERAGE LINE1:t#00af00:Temperatura \
DEF:tmax=$RRD:temp:MAX DEF:tmin=$RRD:temp_out:MIN \
'GPRINT:t:LAST:Ostatni pomiar\: %2.1lf C\j' \
'GPRINT:tmin:MIN:Minimum \: %2.1lf C' \
'GPRINT:tmax:MAX:Maximum \: %2.1lf C\j';


mv -f /mnt/hdd1/temp12.gif /mnt/hdd1/temp12.gif


else

echo"aaa";

66

Odp: Czas na termometr

Brak entera na końcu. Ale i tak ten skrypt jest zły, fi na końcu brakuje.

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

67

Odp: Czas na termometr

ok dzięki wykres już jest, teraz zrobie sobie dla napięcia zasilania i później do tego w php zegar smile rozumiem że zanim zaczne próbować pisać skrypt w php to należy zainstalować php na routerze (opisane na eko.one) ??? i jeszcze jedna sprawa. Chciałbym żeby po każdym uruchomieniu routera katalog /tmp/owfs sam się robił i od razu uruchamiał. Czyli chyba najprosciej dodać odpowiednie komendy do rc.local??? można prosić o podpowiedź jak miałoby to wyglądać? wiem że uruchamianie ma być 

owfs -u /tmp/owfs

a jakiej komendy użyć najpierw żeby zrobił się katalog /tmp/owfs ???

68

Odp: Czas na termometr

mkdir -p /tmp/owfs

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

69

Odp: Czas na termometr

no i znowu będe potrzebował pomocy. Podjąłem moją pierwszą przygodę z php, korzystając już z przykładów stacji meteo z zegarami w php. Chciałbym też wygenerować taki zegar dla mojego pomairu napięcia. Zainstalowałem php na routerze i zrobiłem nowy skypt o zawartości:

<?php
header('Content-Type: image/png');
$img = imagecreatefrompng('strzalka_th.png');
$img2 = imagecreatefrompng('tlo.png');
$col = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
$width = 300;
$height = 300;
$xa = 430;
$ya = 430;
$tlo = imagecreatetruecolor($width, $height);
$tlo = imagecolorallocatealpha($tlo, 255, 255, 255, 100);
$plik=fopen("/tmp/owfs/26.8E0CEB000000/VDD", "r");
$higro=fgets($plik, 10);
fclose($plik);
###tester
#$higro=80;
###
$angle = -360/133*($higro-43.89);
#obracanie strzałki
$coltrans = imagecolorallocatealpha($img, 255, 255, 255, 100);
$img = imagerotate($img, $angle, $coltrans);
imagesavealpha($img, true);
$xb = $xa*abs(sin(deg2rad($angle)))+$xa*abs(cos(deg2rad($angle)));
$yb = $xb;
$punktx = ($xb-$width)/2+0;
$punkty = ($yb-$height)/2+0;
imagecopy($img2, $img, 0, 0, $punktx, $punkty, 300, 300);
imagesavealpha($img2, true);
imagepng($img2);
?>

jednak przy próbie odpalenia wywala błędy...

Polecenie '"./tempera_php.sh"'
zawiodło zwracając kod wyniku 2 oraz komunikat błędu
./tempera_php.sh: line 1: can't open ?php: no such file
./tempera_php.sh: line 2: syntax error: unexpected word (expecting ")").

obrazki strzałki i tła mam w tym samym katalogu co skrypt php. Prosze o wyrozumiałość, ponieważ to moja pierwsza przygoda z php smile

70

Odp: Czas na termometr

php ./tempera_php.sh, skąd system ma wiedzieć że to w php jest napisane?

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

71

Odp: Czas na termometr

moze od początku. Przede wszystkim czy musze mieć postawioną stronke www na routerze? Bo mam stronke ale na innym serwerze. A tu troche się zagalopowałem. Ten skrypt powinien się znajdować z kodzie mojej stronki? Bo sama zmiana nazwy skrytpu z tempera_php.sh na tempera.php chyba nic nie daje żeby system wiedział że to jest napisane w php?

72

Odp: Czas na termometr

Nie, nie musisz. Po prosty wywołaj php i jako argument podaj mu nazwę tego skryptu.

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

73

Odp: Czas na termometr

ok czyli jako argument daję mu adres dokładnie gdzie znajduje się skrypt, w moim przypadku: src="192.168.1.1/tempera.php" tylko że nadal wywala mi te błedy przy ręcznej próbie odpalenia skryptu... zmieniłem mu nazwę na php ale nie wiem czy o to Ci chodziło, z tym ze system go nie widzi. Nadal są te same błędy co wyżej pisałem

74

Odp: Czas na termometr

Przecież Ci napisałem... Jako normalny plik w systemie a nie 192.168.1.1. Jak Ci to do głowy przyszło?

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

75 (edytowany przez kamillo 2011-11-26 23:07:12)

Odp: Czas na termometr

po kilku godzianach zabawy mam juz zegary w php smile okazało sie że w ogóle mi php nie działało na routerze, bo cos pomieszałem, ale zrobiłem od nowa w/g poradnika z php i wszystko śmiga. Teraz mam jeszcze pytanie jak "ulżyć" routerowi, bo dosyc go to obciąża. Doczytałem o wget-cie. Tylko nie do końca rozumie jak to działa. Tzn robie coś takiego:

wget -c http://192.1681.1.1:81/index.php -P /www1

i jak to działa? widze ze zmienia mi sie tylko waga pliku php i wykres na stronce dalej długo sie ładuje.

Przy okazji jeszcze jedno pytanie. Jak uruchamiać prawidłowo serwer lighttpd z każdym uruchomieniem routera, bo widze po resecie że już nie działał. Dodałem sobie

/etc/init.d/lighttpd start

do rc.local ale nie zadziałało...