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ń 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