Strona 2 z 2

Re: program digitemp do mierzenia temperatury

: 06 lipca 2016, 13:54
autor: wojciech_69
OK, spróbuję .

Czyli mam rozumieć że zmienna "tempX" jest tym czym w kodzie htlm "czujnikX" (zwał jak zwał, ewentualna zamiana/nazwanie zmienne) i mam rozumieć że prościej niż poprzez liczenie linii to tego nie zrobię/zmienię?

Re: program digitemp do mierzenia temperatury

: 06 lipca 2016, 14:00
autor: dedito
Można zrobić inaczej.
np. przez podmianę unikatowych stringów.

Re: program digitemp do mierzenia temperatury

: 06 lipca 2016, 14:22
autor: pawkrol
Po co ty chcesz liczyć linie? Skorzystaj z takiego edytora, aby ci pokazywał numer lini.

Re: program digitemp do mierzenia temperatury

: 06 lipca 2016, 14:32
autor: wojciech_69
pawkrol pisze:Po co ty chcesz liczyć linie? Skorzystaj z takiego edytora, aby ci pokazywał numer lini.
Wiem, że można w ten sposób odczytać numer linii. Chodzi mi ogólnie o to że w kodzie który mi podałeś:

Kod: Zaznacz cały

...
sed -i -r "16s,>[^<]*</,>${temp0}</,"  /var/www/html/temp.html
sed -i -r "21s,>[^<]*</,>${temp1}</,"  /var/www/html/temp.html
sed -i -r "31s,>[^<]*</,>${temp2}</,"  /var/www/html/temp.html
sed -i -r "41s,>[^<]*</,>${temp3}</,"  /var/www/html/temp.html

sed podmienia wartości na podstawie obliczenia w której linii się ona znajduje (16s, 21s, 31s, 41s)...
dedito pisze:Można zrobić inaczej.
np. przez podmianę unikatowych stringów.
Możesz pokazać jak to zrobić?

Re: program digitemp do mierzenia temperatury

: 06 lipca 2016, 17:18
autor: dedito
Przykład na bazie tego co @pawkrol z małymi modyfikacjami komendy sed:

Kod: Zaznacz cały

sed -i -r "s/>Czujnik 1:.*</>Czujnik 1: ${temp1}</" /var/www/html/temp.html 
W pliku html muszą być linie zawierające nazwę czujnika pomiędzy znacznikami > i <.
Przykładowo:

Kod: Zaznacz cały

...>Czujnik 1: 27.13 < ...
PS. Jestem przedszkolakiem w dziedzinie komendy sed, więc gdyby jakieś herezje się trafiły to proszę o poprawki.

Re: program digitemp do mierzenia temperatury

: 08 lipca 2016, 13:46
autor: wojciech_69
Dobra, ale teraz pojawił się kolejny problem... Czujniki/pomiar przedstawia się następująco:

Kod: Zaznacz cały

# digitemp_DS9097U -s /dev/ttyUSB0 -a -i
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Turning off all DS2409 Couplers
.....
Searching the 1-Wire LAN
28FFC476931503E9 : DS18B20 Temperature Sensor
28FF995B931504FE : DS18B20 Temperature Sensor
28FF6D5D9315044E : DS18B20 Temperature Sensor
28FF5D2693150375 : DS18B20 Temperature Sensor
ROM #0 : 28FFC476931503E9
ROM #1 : 28FF995B931504FE
ROM #2 : 28FF6D5D9315044E
ROM #3 : 28FF5D2693150375
Wrote .digitemprc
Jul 08 13:00:11 Sensor 0 C: 25.69 F: 78.24
Jul 08 13:00:12 Sensor 1 C: 25.63 F: 78.13
Jul 08 13:00:13 Sensor 2 C: 25.63 F: 78.13
Jul 08 13:00:14 Sensor 3 C: 25.63 F: 78.13
Jak będę chciał wyniki wrzucić na stronę to skąd mam wiedzieć czy czujnik umieszczony w pokoju to ten czujnik a nie czujnik z kuchni.... no bo czujniki mają swoje unikatowe numery a stosując komendy które podrzucił pawkrol nie określają który czujnik jest którym (tak by zdefiniować sobie ich nazwy)
pawkrol pisze:Dajesz polecenie:

Kod: Zaznacz cały

/usr/bin/digitemp_DS9097U -i -s /dev/usb1wire
Utworzy ci się plik z listą wykrytych czujników na magistrali.
Utwórz sobie skrypt basha, a w nim np:

Kod: Zaznacz cały

#! /bin/bash
temp0=`/usr/bin/digitemp_DS9097U  -c /root/.digitemprc -t 0 -q -o%.2C`
temp1=`/usr/bin/digitemp_DS9097U  -c /root/.digitemprc -t 1 -q -o%.2C`
temp2=`/usr/bin/digitemp_DS9097U  -c /root/.digitemprc -t 2 -q -o%.2C`
temp3=`/usr/bin/digitemp_DS9097U  -c /root/.digitemprc -t 3 -q -o%.2C`
sed -i -r "16s,>[^<]*</,>${temp0}</,"  /var/www/html/temp.html
sed -i -r "21s,>[^<]*</,>${temp1}</,"  /var/www/html/temp.html
sed -i -r "31s,>[^<]*</,>${temp2}</,"  /var/www/html/temp.html
sed -i -r "41s,>[^<]*</,>${temp3}</,"  /var/www/html/temp.html
w związku z tym skąd mam wiedzieć jak sortuje i wg. czego digitemp ustawia numery czujników? Bo np później można by było odczytać raz ile jest czujników pod którym numerem "ROM#1..." i później dopiero przypisać do nich zmienne "temp0, 1,2,3..."..

Ps. chyba że nie ma innego wyjścia tylko podłączać pojedynczo czujniki odczytywac ich numery a pozniej mieć na uwadze że ten o konkretnym numerze będzie zmienną temp2 i jest to pokój i tą zmienną w html wyświetlić/podmienić w tej linijce a inną gdzie indziej - tylko czy po restarcie czy systemu czy digitemp nie przesortuje w inny sposób tych czujników...?

Re: program digitemp do mierzenia temperatury

: 08 lipca 2016, 14:02
autor: dedito
Raczej musiałbyś identyfikować wg ROM i to już powinno wystarczyć. Potem już tylko wrzucać temperatury do html wg. ROM, a tym czy master (czyli digitemp) oznaczy czujnik jako sensor 1 czy 4 się nie przejmować.

Re: program digitemp do mierzenia temperatury

: 08 lipca 2016, 14:49
autor: pawkrol
Przecież w skrypcie który Ci podałem zawsze będziesz mieć pod zmienną np. temp0 czujnik dajmy na to z id 28FFC476931503E9.
No chyba, ze będziesz od nowa generować plik digitemprc to wtedy może się to zmienić.
A co ty zrobisz już ze zmiennymi od temp0 do temp4, to już Twoja inwencja. I co za problem dla zmiennej temp0, którą wartość sedem ładujesz do html dać w tym pliku np linie wyżej opis iż jest to wartość np z czujnika w kuchni.