76

Odp: Skrypty do stacji meteo

Space99 napisał/a:

Na debianie to warto pomyśleć nad bazą w mysqlu. U siebie uruchomiłem na podstawie tych skryptów oczywiście po napisaniu skryptu aktualizującego w php.

co do skryptów bbarwik'a to szacuek za prace i udostepnienie. U siebie też testowo to uruchomiłem ale jak są jakieś błędy odczytu to wykres znika.

Czy moglbys udostepnic ?
Szukam czegos odpowiedniego cały czas z mysqlem;)

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

77 (edytowany przez Space99 2014-02-12 02:29:13)

Odp: Skrypty do stacji meteo

Testuje kilka systemów rejestracji pomiarów i wykresów a dane pobieram z 3 interfejsów z odpalonymi owfs'ami więc do każdego zestawu dopasowuje sobie dane skryptem z_owfs_do_txt.sh Na tą chwile najlepiej sprawdza się ten wspomniany z mysql'em i raczej na jego podstawie zostawie ostateczny system ale niech sobie jeszcze baza urośnie bo narazie mam 9 dni i pomiar co minute. Powyższy mój skrypcik przygotowuje też pliczek z danymi dla skryptów bbarwika (po małej przeróbce jego meteo.php)

A to moja paczka http://space99.xorg.pl/v1.tar.gz
Po stworzeniu bazy i załadowaniu struktury z paczki, pliczek aktualizujący dane sam dodaje do bazy czujniki i nazwy z pliku txt.
Ostatecznie jeszcze trzeba by tam dodać przy błędnym pomiarze załadowanie poprzedniego dobrego i narazie u mnie się to sprawdza.

Skrypty nie są mojego autorstwa i ja je tylko przerobiłem (link źródłowy podałem wcześniej).

78

Odp: Skrypty do stacji meteo

Chyba bez problemów z odczytami sie u mnie nie obedzie, odczytuje temperatury po serialu, przez DiGitempa, Ty masz przez owfs, nie problem miec owfs ale nie dam rady sobie z podmiana danych;)

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

79

Odp: Skrypty do stacji meteo

Panowie głupia sprawa ale z pewnością szybciej pomożecie Wy mi niż ja sobie sam wink
Odczytuje sobie dane z czujnika ciśnienia (BMP180).
Plik wynikowy mam taki:

Temperature: 40.70 C
Pressure:    999.54 hPa
Altitude:    115.20

Siedzę chwilę nad tym i poleceniami cut itp wink Jak wyciągnąć z tego czyste "999.54" ? smile

80

Odp: Skrypty do stacji meteo

cat plik.txt | awk '/Pressure/ {print $2}'

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

81

Odp: Skrypty do stacji meteo

Cezary jak zwykle Ci dziękuję - oczywiście sposób prosty i skuteczny wink

82

Odp: Skrypty do stacji meteo

Tzn powyższe polecenie jest dla celów poglądowych bo składniowo woła o pomstę - niepotrzebnie jest kot uśmiercany. awk '/Pressure/ {print $2}' plik.txt  po prostu, jeżeli dana jest już w pliku.

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

83 (edytowany przez krynio 2014-02-15 22:51:00)

Odp: Skrypty do stacji meteo

bbarwik napisał/a:

Jak ktoś chce sobie dodać jakąś akcje na daną temperaturę to niech skrypt meteo.php zedtuje.

    foreach($e as $v) {
        $e1 = explode(" ",$v);
        $id = $e1[0]; // Id Termometra
        $temp = $e1[2]; // Temperatura na termometrze
        ...
        $a[($id)] = $temp;
        // W tym miejscu własne skrypty
       }

Skrypty można uzależnić od $id i $temp, np.:

if($id == 2 && $temp < 20.5)
system("dowonla komenda systemowa");

Takie coś uruchomi komendę systemową jak na termometrze z id 2 będzie mniej niż 20.5 stopnia.

Chcę wstawić włączanie i wyłączanie przekaźnika USB zależnie od temperatury, termometr Id=2.
załóżmy że:
- jeżeli temperatura jest większa lub równa 20 stopni to ma się wykonać polencie /usr/lib/gargoyle/usbrelay.sh off 1
- jeżeli temperatura jest mniejsza niż 20 stopni to ma się wykonać polencie /usr/lib/gargoyle/usbrelay.sh on 1
Mój skrypt meteo.php tak wygląda:

<?php
    $path = "/meteo/dane/"; // Sciezka gdzie bedzie zapisywalo dane, domyslnie /www/meteo/
    system("digitemp_DS9097U -s /dev/ttyUSB0 -a -i > meteo2.txt && mv meteo2.txt meteo.txt");
    ini_set( 'date.timezone', 'Europe/Berlin' );
    $a = array();
    $e = explode("Sensor ",file_get_contents("meteo.txt")); unset($e[0]);
    foreach($e as $v) {
        $e1 = explode(" ",$v);
        $id = $e1[0]; // Id Termometra
        $temp = $e1[2]; // Temperatura na termometrze
        if(file_exists($path.$id.".txt"))
            file_put_contents($path.$id.".txt",",[".time(NULL)."000,".$temp."]",FILE_APPEND);
        else
            file_put_contents($path.$id.".txt","[".time(NULL)."000,".$temp."]",FILE_APPEND);        
        $a[($id)] = $temp;
    }
    file_put_contents($path."last.txt",serialize($a)); // ostatnie dane
?>

Patrzę na to co napisał bbarwik i nie do końca wiem jak to zrobić, mam inną lokalizację plików niż bbarwik, nie wiem czy ma to znaczenie ?

Lub tym sposobem:

wabikboy napisał/a:

Skrypt sterujący przekaźnikiem  to raptem kilka linijek kodu o ile wystarczy Wam rozdzielczość co jeden stopień  smile np.

#!/bin/sh
temeperatura=`cat /plik_z_temperaturami.txt | tail -1 | cut -d "." -f 1`

if [ "$temperatura" -lt "21" ] ; then
polecenie włączenia dla przekaźnika
else
polecenie wyłączenia dla przekaźnika
fi

w/w kod to tylko przykład więc trzeba zmodyfikować odczyt temperatury w zależności od zawartości pliku z temperaturami.

Mój plik z temperaturą Id=2 ma lokalizację /meteo/dane/2.txt

a jego forma zapisu to:

[1386007808000,22.06],[1386008408000,22.13],[1386009008000,21.94]

Jak powinien wyglądać skrypt?

Krynio

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

84

Odp: Skrypty do stacji meteo

Cezary napisał/a:

Tzn powyższe polecenie jest dla celów poglądowych bo składniowo woła o pomstę - niepotrzebnie jest kot uśmiercany. awk '/Pressure/ {print $2}' plik.txt  po prostu, jeżeli dana jest już w pliku.

Na tą chwilę mam tak:

pi@raspberrypi ~ $ cat /var/meteo/baro
#!/bin/bash

#odczytywanie cisnienia z czujnika BMP180
cisnienie=$(python /home/pi/BMP180/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085/Adafruit_BMP085_example.py | awk '/Pressure/ {print $2}')

#dodawanie naglowka z fikcyjna data
echo -n "Feb 00 00:00:00 Sensor 8 C: " >> /var/www/meteo/meteo.txt

#dodawanie cisnienia
echo -n $cisnienie >> /var/www/meteo/meteo.txt

I rezultat jest z grubsza taki:
http://byrrt.dl.pl/meteo/?id=8

Oczywiście wszystko na szybko, ledwo co odpaliłem i nie było czasu na jakąkolwiek zmianę.. Będzie czas to będę kombinował jakoś lepiej.. Puki co zbiera sobie dane jak trzeba smile

85

Odp: Skrypty do stacji meteo

Naprawdę nie chciało Ci się przenieść tego Adafruit_BMP085_example.py to jakiegoś prostszego katalogu? smile

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

86

Odp: Skrypty do stacji meteo

Komenda mv za długa;)

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

87

Odp: Skrypty do stacji meteo

Hehe nawet nie pomyślałem.. Do teraz nie miałem czasu aby się tym zająć wink

88

Odp: Skrypty do stacji meteo

instaluje wszystko tak jak w poradniku bbrawika ale gdy odpalam index.php to mam bład:

Warning: Invalid argument supplied for foreach() in /www/index.php on line 12

co to może być ?

TP Link MR 3420 v2

89

Odp: Skrypty do stacji meteo

a co jest w 12 lini index.php ?

a masz dobrą lokalizacje plików ?

domyślna była /www/meteo/index.php  i w tym katalogu powinny być pliki txt termometrów



a ja mam prośbę do kogoś kto ogarnia php

chcę dołączyć checkboxa do sterowania ( włączania-wyłączania )

if($id == 2 && $temp < 20.5)
system("dowonla komenda systemowa");
,

90

Odp: Skrypty do stacji meteo

<input type="checkbox" name="jakas_nazwa">


if (isset($_POST['jakas_nazwa'])) {

   // kod do wykonania
}

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

91

Odp: Skrypty do stacji meteo

Dominik-S napisał/a:

a co jest w 12 lini index.php ?

a masz dobrą lokalizacje plików ?

domyślna była /www/meteo/index.php  i w tym katalogu powinny być pliki txt termometrów

linia 12:

foreach(unserialize(file_get_contents("last.txt")) as $i => $t) {

lokalizacja taka jak domyślnie - meteo.php na root a reszta tam gdzie serwer www

dodałem zadanie do crona aby odpalał meteo.php ale nie widzę,  żadnych efektów - czy pliki txt powinny się same stworzyć, czy zadanie crona to tylko uzupełnienie stworzonych już przeze mnie plików txt ? (last.txt, meteo.txt i meteo2.txt)

jeśli sam wydam polecenie

digitemp_DS9097U - a

to mam odczyt temperatury więc zakładam, ze mam dobrze podłączony czujnik - co jeszcze powinienem zrobić aby działało tak jak należy ?

TP Link MR 3420 v2

92

Odp: Skrypty do stacji meteo

Index.php powinien być w katalogu /www/meteo . Nie masz przypadkiem bezpośrednio w /www ?

93

Odp: Skrypty do stacji meteo

przeniosłem wszystko do meteo ale dalej:

Warning: Invalid argument supplied for foreach() in /www/meteo/index.php on line 12
TP Link MR 3420 v2

94

Odp: Skrypty do stacji meteo

gdzie znajduje się plik "last.txt" ??

bo masz problem z tablicą

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

95

Odp: Skrypty do stacji meteo

last.txt mam w /www/meteo/

czy pliki txt powinny powstać same w ramach odpalonego w cornie meteo.php czy powinienem stworzyć je "ręcznie" ?
last.txt stworzyłem sam bo php krzyczało wcześniej, ze brakuje mu tego pliku...

TP Link MR 3420 v2

96

Odp: Skrypty do stacji meteo

last.txt nie może być utworzony ręcznie, ma zwierać dane, podobnie jak inne pliki. I są one tworzone przez skrypt który wołasz ręcznie lub w cronie.

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

97

Odp: Skrypty do stacji meteo

meteo.php mam w root dodałem zadanie do crona

*/10 * * * * /usr/bin/php-cli /root/meteo.php

ale pomimo tego nie uruchamia mi się skrypt - co może być nie tak ?

mam zainstalowane lighhttpd + php wg. tego poradnika - http://openrouter.info/forum/viewtopic. … amp;t=1236
digitemp stworzył plik konfiguracyjny wg.

# digitemp_DS9097U -a -i
TP Link MR 3420 v2

98

Odp: Skrypty do stacji meteo

No to wpisz w konsoli /usr/bin/php-cli /root/meteo.php i zobacz czy działa

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

99

Odp: Skrypty do stacji meteo

jeśli wpisze w konsoli to działa ;-)
nie działa mi w takim razie zadanie w cronie i nie odświeża mi co 10 minut - jakiś pomysł ?

TP Link MR 3420 v2

100

Odp: Skrypty do stacji meteo

Tak, zrób  cd /root; /usr/bin/php-cli /root/meteo.php w cronie.

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