151 (edytowany przez xury 2014-11-18 20:17:30)

Odp: Skrypty do stacji meteo

No to przecież o tym piszę.
Jeśli odejmiesz odczytaną ostatnią datę (np z ostatniej godziny) od aktualnej (nie zaktualizowanej daty) to otrzymasz liczbę ujemną. I to już nam mówi, że data aktualna data jest zła.
Przykładowy timestamp z 1970 roku: 65070 odebrany z basha
Przykładowy dzisiejszy timestamp: 1416420270 z pliku 0.txt

if [ $stamp_z_basza > $ostatni_z pliku ] ;then
   echo 'ok'
else
   echo 'nie ok'
fi

Mogę ci napisać kod do meteo.php co będzie ci zapisywał ostatni timestamp  do pliku.

152

Odp: Skrypty do stacji meteo

Ok ok nie zgodność rozumienia smile

W każdym bądź razie niech @Jaack określi czy w php czy bash smile to się sklei gotowe rozwiązanie

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

153 (edytowany przez xury 2014-11-19 12:40:51)

Odp: Skrypty do stacji meteo

Wpadłem na bardzo prosty sposób na zabezpieczenie przed nieaktualną datą.
Oto zmodyfikowany plik meteo.php

<?php
    $path = "/www/meteo/"; // Sciezka gdzie bedzie zapisywalo dane, domyslnie /www/meteo/
    system("digitemp_DS9097U -a > meteo2.txt && mv meteo2.txt meteo.txt");
    ini_set( 'date.timezone', 'Europe/Berlin' );
    $timestamp1 = file_get_contents($path."timestamp.txt"); // czas ostatniego zapisu
    if ( time(NULL) < $timestamp1 ) {
    die;  // Jeśli aktualny czas jest mniejszy niż ten zapisany to nic nie rób
    }
    $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
    file_put_contents($path."timestamp.txt",time(NULL)); // ostatnia data zapisu
?>

Jedyna ważna uwaga. Skrypt nie sprawdza czy istnieje plik timestamp.txt
Jeśli go nie ma to nigdy nie zadziała.
Po podmianie meteo.php trzeba go wygenerować na konsoli np:

 date +%s > /www/meteo/timestamp.txt 

154

Odp: Skrypty do stacji meteo

Ale temat poszedł pod moją nieobecność big_smile
Czas jest zapisywany, jak już pewnie z kodu powyżej wyczaiłeś w takim formacie:
[1416349960000,te.mp]
Gdzie ciąg cyfr to czas w sekundach od słynnego 1.1.1970 i temperatura z kropką oddzielającą jedności od dziesiętnych.
Kolejne temperatury oddzielane są przecinkiem między nawiasami.

xury, mógłbyś wyjaśnić co dokładnie zmieniłeś, może zrozumiem jak to działa wink
Wtedy pisanie tego w bashu czy czymkolwiek nie byłoby potrzebne, a wystarczyłoby dane odpowiednio podać do meteo.php (jak to robię teraz).

155 (edytowany przez xury 2014-11-19 12:54:48)

Odp: Skrypty do stacji meteo

Dodałem:

$timestamp1 = file_get_contents($path."timestamp.txt"); // czas ostatniego zapisu
    if ( time(NULL) < $timestamp1 ) {
    die;  // Jeśli aktualny czas jest mniejszy niż ten zapisany to nic nie rób
    }

oraz na końcu:

file_put_contents($path."timestamp.txt",time(NULL)); // ostatnia data zapisu

Pierwsza cześć pobiera czas z routera i sprawdza czy jest "starszy" od tego zapisanego w pliku timestamp.txt
Jeśli czas jest "starszy" to kończy działanie skryptu do następnego wywołania przez crona.
Końcowa linijka zapisuje timestamp do pliku i to wszystko.
Tak jak wspomniałem, ważne jest, aby plik timestamp.txt istniał za pierwszym razem i był wygenerowany po ostatnim zapisie.
Potem to już samo powinno działać.

156

Odp: Skrypty do stacji meteo

OK, faktycznie prościej stworzyć osobny plik z ostatnim dato-czasem niż orać w np. 0.txt za ostatnią datą.
Bardzo fajny pomysł!

A przez PHP nie da się utworzyć tego pliku w razie gdyby go nie było? Byłoby to bardziej idiotoodporne ;-)
Tylko fakt, jak utworzymy plik i wrzucimy datę z automatu, to nie ma pewności czy jest właściwy dato-czas.

Trochę wyolbrzymiam, wiem, ale jak by jeszcze przed utworzeniem pliku wymusić synchro z NTP wg mojego pomysłu to mamy idiotoodporność^2.

157

Odp: Skrypty do stacji meteo

Jaack napisał/a:

Czas jest zapisywany, jak już pewnie z kodu powyżej wyczaiłeś w takim formacie:
[1416349960000,te.mp]

Jeśli chodzi o zapis dla wykresu to wiedziałem tylko nie wiem czemu myślałem że masz dodatkowy plik z pomiarem w jakimś innym formacie stąd  moje pytanie.
Pomijając to @xury się już postarał w php.

A jeśli chodzi o sprawdzanie czy istnieje timestamp.txt to moim zdaniem wystarczy dodać jeden warunek "if" na początku który to sprawdza i jeśli brak to tworzy go i wpisuje bieżący czas smile

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

158 (edytowany przez Jaack 2014-11-19 12:17:11)

Odp: Skrypty do stacji meteo

@wabikboy
Nie, nie dogadaliśmy się - u mnie jest tak:
Mam uruchomiony skrypt w pythonie w tle, który monitoruje szeregowca pod /dev/ttyACM0.
Jak wchodzą dane z czujników, to na samym końcu zapisuję je do "meteo.txt" w dokładnie takim samym formacie jak to robi digitemp (np. Sensor 0 C: 25.00).
Czyli jeśli zakomentujesz linijkę z digitemp w pierwotnej wersji meteo, to będzie to od razu działać.

wabikboy napisał/a:

A jeśli chodzi o sprawdzanie czy istnieje timestamp.txt to moim zdaniem wystarczy dodać jeden warunek "if" na początku który to sprawdza i jeśli brak to tworzy go i wpisuje bieżący czas smile

A co jeśli akurat bieżący czas jest błędny? Nie masz gwarancji właśnie, stąd myślałem o wymuszeniu aktualizacji NTP z sprawdzeniem czy się powiodło...

@xury
Kolego, wrzuciłem skrypcik do siebie i działa bez zarzutu, oprócz jednego błędu, który musiałem na początku poprawić.
Zostawiłeś przecinek między cudzysłowiem, a nawiasem:

"timestamp.txt",)

wystarczy go skasować:

$timestamp1 = file_get_contents($path."timestamp.txt"); // czas ostatniego zapisu

I działa jak ta lala, dzięki za pomoc smile

159 (edytowany przez xury 2014-11-19 12:52:08)

Odp: Skrypty do stacji meteo

Pisałem na sucho bez sprawdzania i już dosyć późno było. smile
W dodatku w php piszę od dwóch tygodni.
Już poprawiłem, co by inni już nie musieli.

Nie dałem tworzenia właśnie z powodu braku pewności czy to będzie prawidłowy czas.
A o ntp pomyślę jeszcze.

160

Odp: Skrypty do stacji meteo

@Jaack możesz się ze mną nie zgodzić ale chyba jednak czytanie ostatniego wpisu i porównanie z czasem routera będzie bardziej automatyczne oczywiście jeszcze do tego sprawdzenie czy plik istnieje i czy nie jest pusty aby skrypt działał prawidłowo smile

Ale to jest tylko moja propozycja

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

161

Odp: Skrypty do stacji meteo

Rozumiem co masz na myśli, ale nic nie stoi na przeszkodzie dopisania zaraz za pierwszą linijką z deklaracją zmiennej $path następującego kodu:

if (!file_exists($path."timestamp.txt)) {
     if(empty(system("ntpd -n -q -p  0.europe.pool.ntp.org -p 1.europe.pool.ntp.org -p 2.europe.pool.ntp.org"))) {
          file_put_contents($path."timestamp.txt",time(NULL));
     }
     else die;
}

Jeśli nigdzie nie ma literówki, to stanie się tak:
1. Sprawdzi czy istnieje plik timestamp.txt
2. Jeśli nie istnieje, to sprawdza czy uda się pobrać aktualną datę i czas z internetsów (na sztywno wpisałem 3 adresy).
3. Jeśli się nie uda, to ubija całe php (die)
4. Jeśli się uda, to tworzy plik i zapisuje aktualną datę i czas (to samo polecenie co dopisał xury na koniec pliku).

BTW
zamiast wywoływać poprzez system "ntpd itd." z na sztywno ustalonymi adresami jak to wyżej napisałem to można zapisać napisany przeze mnie skrypt do pliku, który pobiera te adresy przez UCI i się do niego odwołać poprzez system.

162

Odp: Skrypty do stacji meteo

No widzisz kolego Jaack. Ostatecznie sam rozwiązałeś swój problem.
Ja z racji tego że mam w domu ciągle dostępną centralkę Integra to z niej będę ciągnął czas.
Ona też raz dziennie synchronizuje się przez ntp.

163 (edytowany przez Jaack 2014-11-19 14:24:11)

Odp: Skrypty do stacji meteo

No zdecydowanie xury podszedłeś sprytniej do tematu niż ja i mi pomogłeś.
Nie chciało mi się myśleć i uczyć jak poprawnie wydłubać tę datę i czas z plików z pomiarami, a Ty wpadłeś na prostszy sposób tworząc timestamp.txt.

Za to nasze wypociny mogą posłużyć nawet do zmodyfikowania pierwotnego kodu przez autora dzięki czemu będzie jeszcze lepiej wink

164

Odp: Skrypty do stacji meteo

Witajcie.
Ostatnio mam mało czasu, ale postaram się w ten weekend podrzucić skrypty do sterowania piecem i ustawiania programów w zależności od temperatury na termometrach. Jedyne co będzie potrzebne to dostęp do jakiejś komendy która włącza/wyłącza ogrzewanie. Ja to początkowo robiłem za pomocą sterowania napięciem na porcie usb do którego podpięty był przekaźnik co sterował piecem. Potem przerzuciłem się na płytkę RealyBoard. Jak coś chcecie jeszcze to dajcie znać, to zrobię o ilę za długo nie będę musiał nad tym siedzieć.

http://bbarwik.com/meteo/ - stacja meteo na OpenWrt
MR3420v2 + 2xWDR3600 + Foxconn NT-435 + Foxconn NT-535.
Niestety teraz wynajmuję mieszkanie więc tymczasowo plany rozbudowy wstrzymane sad

165 (edytowany przez krynio 2014-11-20 17:13:03)

Odp: Skrypty do stacji meteo

bbarwik napisał/a:

Witajcie.
Ostatnio mam mało czasu, ale postaram się w ten weekend podrzucić skrypty do sterowania piecem i ustawiania programów w zależności od temperatury na termometrach. Jedyne co będzie potrzebne to dostęp do jakiejś komendy która włącza/wyłącza ogrzewanie. Ja to początkowo robiłem za pomocą sterowania napięciem na porcie usb do którego podpięty był przekaźnik co sterował piecem. Potem przerzuciłem się na płytkę RealyBoard. Jak coś chcecie jeszcze to dajcie znać, to zrobię o ilę za długo nie będę musiał nad tym siedzieć.

Witam, super
1. Napisz jak masz powiązany skrypt do sterowania piecem z tabelką Programy dla pieca: którą masz pod wykresem. Zrobiłem wykres meteo na podstawie Twojego postu i też chciałbym dołożyć tabelkę, wstawić swoje zmienne itd. Mam również Relay Board i skrypt który steruje właściwym przekaźnikiem zależnie od temperatury. Jednak chciałbym widzieć to graficznie w tabelce jak u Ciebie.
2. Twoja strona meteo, moja również bardzo długo się ładuje, pewnie z powodu dużej bazy (ilości odczytanych temperatur).
Myślę o takim rozwiązaniu, żeby np. po upływie zdefiniowanego okresu np. 1 m-c, lub ilości odczytów np. 100 "strona" pomijała starsze odczyty i pokazywała jedynie te od dziś do miesiąca w tył lub na sztywno tylko zdefiniowane 100. Sądzę że to przyśpieszy działanie. Jak to zrobić ? W razie potrzeby archiwum zawsze jest w plikach jak co. Chyba że masz inny pomysł.
3. Nie wiem też dla czego ale na niektórych komputerach od strony wan, głównie używając Internet Explorer pomimo że strona się długo ładuje to po czasie wyskoczy jakieś okienko z komunikatem (nie pamiętam) i się nie otworzy.

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

166

Odp: Skrypty do stacji meteo

Ja mam pytanie do kolegi bbarwik'a. Czy te trzy zera doklejane do timestampa są potrzebne? I czy nie było by możliwe generowanie ich już w index.php?
Niby nic, ale przy kilku tysiącach pomiarów zawsze to o trzy bajty mniej na jednym.

167 (edytowany przez Jaack 2014-11-22 22:03:01)

Odp: Skrypty do stacji meteo

--- POPRAWNY KOD JEST W POŚCIE 169! ---
OLAĆ PONIŻSZE tongue

Myślę, że coś na styl poniższego by zadziałało:

while(!feof($id.'.txt')) {
    $content = stream_get_line($id.'.txt', 100, "[");
    $content1 = substr($content, 0, 10);
    $content2 = substr($content, 11);
    echo "[".$content1."000".$content2;
}

Wstawić to w miejsce kwadratowych nawiasów (linijka 87/88 u mnie)

data: [".file_get_contents('czujniki/'.$id.'.txt')."],

Myślę, że coś na ten styl powinno zadziałać, pisane z palca, mogą być błędy, ale co do logiki działania myślę, że wiecie o co mi chodzi smile

--- UWAGA ---
Kod póki co się zapętla albo mocno wysypuje, póki nie poprawię, to wycinam ;-)

168

Odp: Skrypty do stacji meteo

Zmniejszcie sobie częstotliwość odczytów to i danych będzie mniej, co więcej nie wiem czy jest to poprawione ale przy przekroczeniu granicy ( nie pamiętam jakiej ilości ) wpisów w pliku strona z wykresem przestaje się wyświetlać.

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

169

Odp: Skrypty do stacji meteo

Trzeba zmodyfikować ten odcinek kodu tak jak pokazałem (2 razy w data) no i oczywiście w meteo.php pozbyć się dopisywania 000.
Uważajcie, bo obie zawartości data są identyczne oprócz $id i $k.
Zaznaczam, że to nie zadziała z już istniejącymi pomiarami gdzie te dodatkowe '000' są zapisane w plikach.

Testujcie, u mnie to działa, ale nie wiem czy nie ma drobnych błędów wink

        <?php
            if(!$all) {
                echo "series: [{
                    name: 'Temperatura',
                    data: [";
                        $file = fopen('czujniki/'.$id.'.txt','r');
                        while(!feof($file)){
                        $content = stream_get_line($file, 20, "]");
                        if(!empty($content)){
                                echo substr($content, 0, 11).'000'.substr($content, 12).']';
                                };
                        };
                        fclose($file);
                    echo "],
                    type: 'spline',
                    shadow: true,
                    tooltip: {
                        valueDecimals: 2,
                                                valueSuffix: '..C'
                    }
                }] ";
            } else {
                echo "series: [";
                                        $f = false;
                    foreach($temp as $k => $v) {
                        if(!$v['all']) continue;
                        if($f) echo ",";
                        echo "{
                        name: '".$v['name']."',
                        data: [";
                            $file = fopen('czujniki/'.$k.'.txt','r');
                            while(!feof($file)){
                            $content = stream_get_line($file, 20, "]");
                            if(!empty($content)){
                                echo substr($content, 0, 11).'000'.substr($content, 12).']';
                                };
                            };
                            fclose($file);
                        echo "],
                        type: 'spline',
                        shadow: true,
                        tooltip: {
                            valueDecimals: '2',
                            valueSuffix: ' ..C'
                            }
                        }";
                                                $f = true;
                    }
                echo "] ";
            }
        ?>

@wabikboy
Nie podzielam Twojego zdania.
Skoro się da zminimalizować zbędną ilość danych, to należy to zrobić, szybka kalkulacja jak to u mnie wygląda:
Średnio odczyt mam co 6min. czyli mam 10odczytów/h -> 240 odczytów na dobę.
Jeden odczyt to 19 znaków -> 4560 znaków/dobę
A jeśli zapisuję o 3 znaki mniej -> 3840 znaków/dobę
Czyli w dobę upakuję 45 pomiarów więcej.

Nawet jeśli ograniczenie leży w highcharts, to w dalszym ciągu pomiary zajmują mniej miejsca, odczyt szybszy, itd.

170

Odp: Skrypty do stacji meteo

@Jaack ja Cię doskonale rozumiem i jeśli te 000 da się wykluczyć z pliku to ok ale jak widzisz mimo wszystko 19 znaków mniej a 3 to jednak różnica. Co więcej czy odczyt nie jest wystarczający co 10 min ? daje to tylko 144 odczytów na dobę smile

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

171

Odp: Skrypty do stacji meteo

@wabikboy
w moim wypadku nie jest wystarczający, ale za długo by opowiadać dlaczego ;-)

172

Odp: Skrypty do stacji meteo

Dla mnie super. Teraz ja dziękuję.
Teraz napiszę sobie skrypt co mi te trzy zera ze starszych pomiarów pousuwa.

173

Odp: Skrypty do stacji meteo

Witam, Panowie też chcę skorzystać, ale najpierw zrozumieć wink
- w poście 169 jest kod do podmiany w pliku index.php , co on robi, pomija tylko zera ?
- aby powyższy kod zadziałał trzeba pozbyć się 000
- jak pozbyć się dopisywania 000 w meteo.php
moja obecna zawartość:

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

- oraz jak usunąć je z istniejących już plików txt

[1386007808000,31.19],[1386008408000,31.00],[1386009008000,30.50],[1386009608000,30.31],

- czy poza tym co wymieniłem jeszcze coś trzeba zrobić ?

- w poście 167 jest kod, mający za zadanie ograniczenie wyświetlania wykresu do 100 ostatnich odczytów, który rozumiem że obecnie nie działa i wymaga poprawy. Chyba ta funkcja nie jest już ujęta w kodzie z postu 169 ?

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

174

Odp: Skrypty do stacji meteo

@krynio
1. Mój kod z 169 postu nie pomija '000'. On zakłada, że w odczytach (stworzonych przez meteo.php) nie ma tych '000' i je dopisuje w locie.
2. Trzeba się pozbyć '000' z plików z temperaturami, chciałem napisać kod, który by dopisywał te zera gdyby ich brakowało, albo nie dopisywał gdyby były, ale jakoś tak się zakręciłem w kodzie (i pisałem to jeszcze będąc w pracy tongue), że się poddałem.
Czekam na robotę xury - podziel się :-D
3. Musisz usunąć wyłącznie te 000 z poniższych dwóch linijek, nie usuwając przecinka:

            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); 

O, tak:

            file_put_contents($path.$id.".txt",",[".time(NULL).",".$temp."]",FILE_APPEND);
        else
            file_put_contents($path.$id.".txt","[".time(NULL).",".$temp."]",FILE_APPEND); 

4. Chyba nic więcej zmieniać nie trzeba, oprócz zwrócenia uwagi na moje: 'czujniki/', ja trzymam pomiary w podkatalogu, nienawidzę burdelu w głównym katalogu strony.
5. Post 167, to próba, ale cel był ten sam co w poście 169. Kod z 167 jest błędny.

175 (edytowany przez xury 2014-11-22 22:49:59)

Odp: Skrypty do stacji meteo

Ja napisałem kod do kasowania zer, ale coś mi nie chce działać Twój kod za to.
Może dlatego, że teraz testuję na windowsie i apache. Mam brak wykresu i jakieś kosmiczne daty.
Analizując jednak Twój kod nie dopatrzyłem się żadnego błędu.
Kod do kasowania zer jest niedokończony, bo zająłem się właśnie przyczyną nie działania na apache i windows, tak z ciekawości.
A to nie dokończony kod, bo jeszcze chcę dopisać podanie argumentu jako nazwy pliku do przerobienia.

<?php
$name = "0.txt";
$newfil = "";
$file = fopen($name,'r');
                        while(!feof($file)){
                        $content = stream_get_line($file, 21, "]");
                        if(!empty($content)){
                                 $newcontent = str_replace("000,",",",$content);
                       
                         };
                        $newfil .= $newcontent."]";            
                        };
                        
                        fclose($file);
file_put_contents($name, $newfil);                        
?>