[METEO] Rainfall (Opady deszczu)

Widgety tworzone przez użytkowników
Awatar użytkownika
pimowo
Betatester
Posty: 4651
Rejestracja: czw lut 19, 2015 9:17 am
Lokalizacja: Wołów

Re: [METEO] Rainfall (Opady deszczu)

Post autor: pimowo » wt gru 13, 2016 12:07 pm

@slawko wszystko masz jak należy i nie bardzo wiem dlaczego masz problemy. Poniżej mój działający widget (kopiuj-wklej z NT)

Kod: Zaznacz cały

<div class="panel-heading">Rainfall</div>
<div class="panel-body">
    <?php 
      $time_start=microtime(true);
      $root=$_SERVER["DOCUMENT_ROOT"];

      $db = new PDO("sqlite:$root/db/wireless_METEO1_rainfall.sql") or die ("cannot open database");
      $query = $db->prepare("select sum(value) from def where  time >= :czas_start and time<= :czas_stop");
      
      $czas_stop=date("Y-m-d H:i:s"); //'2016-10-30 20:00:00';
      $last=array(0,0,0);
      $last_start=array('','','');
      $last_stop=array('','','');
      for ($a=0;$a<3;$a++){
         $czas_start=date("Y-m-d H:i:s",time()-($a+1)*24*60*60);
         $query->bindParam(':czas_start',$czas_start );
         $query->bindParam(':czas_stop',$czas_stop);
         $res= $query->execute();
         foreach ($query as $row){
            $last[$a]=round($row[0],2);
            if ($last[$a]=='')
            {
               $last[$a]=0;
            }
            $last_start[$a]=$czas_start;
            $last_stop[$a]=$czas_stop;
         }
      }
      //poprzedni deszcz

      $db = new PDO("sqlite:/var/www/nettemp/db/wireless_METEO1_rainfall.sql") or die ("cannot open database");
      $query_fst_record=$db->prepare("SELECT min(time) FROM def LIMIT 1");
      $first_record_row=$query_fst_record->fetch();
      $first_record=strtotime($first_record_row[0]);
      $query = $db->prepare("select max(time),value from def where  value=0 and time < :czas_start");
      $query2 = $db->prepare("select max(time),value from def where  value<>0 and time < :czas_start");
      $czas_start=date("Y-m-d H:i:s");
      $poprzedni_deszcz_czas=array('','');
      $not_found=false;
      for ($i=0;$i<2;$i++){
         do {
            $query->bindParam(':czas_start',$czas_start );
            $query->execute();
            $dana=$query->fetch();
            $czas_start=$dana[0];
            $query2->bindParam(':czas_start',$czas_start );
            $query2->execute();
            $dana2=$query2->fetch();
            $data1=strtotime($dana[0]);
            $data2=strtotime($dana2[0]);         
            $interval=abs($data1-$data2);///(24*60*60);
            $czas_start=$dana2[0];
            if ($interval > 86400 && ($data1==$first_record || $data2==$first_record))
            {
               $not_found=true;
            }
         }while($interval<86400 && $not_found==false);
         $poprzedni_deszcz_czas[$i]=$dana2[0];
      }
      $query3 = $db->prepare("select sum(value) from def where time > :czas_start and time <= :czas_stop");
      $query3->bindParam(':czas_start',$dana2[0] );
      $query3->bindParam(':czas_stop',$poprzedni_deszcz_czas[0] );
      $query3->execute();
      $poprzedni_ilosc=$query3->fetch();

      $time_end=microtime(true);
      $exec_time=$time_end-$time_start;
    ?>
  <div style="width:100%">
    <div style="width:70%;float:left" title="<?php echo $last_start[0]."-".$last_stop[0]; ?>"><span>Ostatnie 24h</span></div>
    <div style="width:30%;float:left;text-align: right;"><span><?php echo $last[0]; ?> l/m2</span></div>
  </div>
  <div style="width:100%">
    <div style="width:70%;float:left" title="<?php echo $last_start[1]."-".$last_stop[1]; ?>"><span>Ostatnie 48h</span></div>
    <div style="width:30%;float:left;text-align: right;"><span><?php echo $last[1]; ?> l/m2</span></div>
  </div>
  <div style="width:100%">
    <div style="width:70%;float:left" title="<?php echo $last_start[2]."-".$last_stop[2]; ?>"><span>Ostatnie 72h</span></div>
    <div style="width:30%;float:left;text-align: right;"><span><?php echo $last[2]; ?> l/m2</span></div>
  </div>
  <div style="width:100%">
    <div style="width:70%;float:left" title="<?php echo $last_start[2]."-".$last_stop[2]; ?>">
    <span>Ostatni deszcz zakończył się</span></div>
    <div style="width:30%;float:left;text-align: right;"><span><?php echo $poprzedni_deszcz_czas[0]; ?></span></div>
  </div>
  <div style="width:100%">
    <div style="width:70%;float:left" title="<?php echo $last_start[2]."-".$last_stop[2]; ?>"><span>Opad ostatniego deszczu</span></div>
    <div style="width:30%;float:left;text-align: right;"><span><?php echo $poprzedni_ilosc[0]; ?> l/m2</span></div>
  </div>
</div>
Wklej go do siebie.
[email protected] HP MicroServer N54L, Raspberry Pi 3B, Raspberry Pi B+

Awatar użytkownika
slawko
Posty: 280
Rejestracja: czw lis 26, 2015 10:59 pm
Lokalizacja: Bełchatów

Re: [METEO] Rainfall (Opady deszczu)

Post autor: slawko » wt gru 13, 2016 3:40 pm

Nadal pusta ramka i nadal strona długo się ładuje
Obrazek
Podobnie mam w widget "[METEO] Meteograf"z tym ze stronka ładuje się normalnie.

Awatar użytkownika
pimowo
Betatester
Posty: 4651
Rejestracja: czw lut 19, 2015 9:17 am
Lokalizacja: Wołów

Re: [METEO] Rainfall (Opady deszczu)

Post autor: pimowo » wt gru 13, 2016 3:46 pm

Masz jeden dziwny wpis:

Kod: Zaznacz cały

-rwxrwsr-x 1 root www-data        0 gru 10 22:19 /var/www/nettemp/db/wireless_METEO_rainfall.sql
Usuń to:

Kod: Zaznacz cały

rm /var/www/nettemp/db/wireless_METEO_rainfall.sql
[email protected] HP MicroServer N54L, Raspberry Pi 3B, Raspberry Pi B+

wojmal
Posty: 321
Rejestracja: śr mar 02, 2016 12:14 pm

Re: [METEO] Rainfall (Opady deszczu)

Post autor: wojmal » wt gru 13, 2016 4:26 pm

slawko pisze:Nadal pusta ramka i nadal strona długo się ładuje
Obrazek
Podobnie mam w widget "[METEO] Meteograf"z tym ze stronka ładuje się normalnie.
Widget może mieć problem jeżeli nie znajdzie 24godzinnej przerwy w opadach deszczu. Pomyślę jak to zneutralizować.
Pokaż wykres opadów deszczu z miesiąca.

Awatar użytkownika
slawko
Posty: 280
Rejestracja: czw lis 26, 2015 10:59 pm
Lokalizacja: Bełchatów

Re: [METEO] Rainfall (Opady deszczu)

Post autor: slawko » wt gru 13, 2016 4:39 pm

pimowo pisze:Masz jeden dziwny wpis:

Kod: Zaznacz cały

-rwxrwsr-x 1 root www-data        0 gru 10 22:19 /var/www/nettemp/db/wireless_METEO_rainfall.sql
Usuń to:

Kod: Zaznacz cały

rm /var/www/nettemp/db/wireless_METEO_rainfall.sql
@pimowo Nadal to samo
wojmal pisze:
slawko pisze:Nadal pusta ramka i nadal strona długo się ładuje
Obrazek
Podobnie mam w widget "[METEO] Meteograf"z tym ze stronka ładuje się normalnie.
Widget może mieć problem jeżeli nie znajdzie 24godzinnej przerwy w opadach deszczu. Pomyślę jak to zneutralizować.
Pokaż wykres opadów deszczu z miesiąca.
No za wiele to tu nie ma bo meteo pracuje około tygodnia:
Obrazek
Rzeczywiście co on ma pokazać jak tam prawie nic nie ma, a ja od razu robię aferę:)

wojmal
Posty: 321
Rejestracja: śr mar 02, 2016 12:14 pm

Re: [METEO] Rainfall (Opady deszczu)

Post autor: wojmal » wt gru 13, 2016 4:46 pm

No niestety musisz chwilowo wyłączyć widget, dopóki nie poprawię kodu albo będziesz miał 24 godzinną przerwę pomiędzy opadami - gdyż taki przyjąłem zakres, że deszcz się kończy jak przez 24godz. nie pada. Dodam możliwość ustawienia sobie przedziału czasu.

Awatar użytkownika
slawko
Posty: 280
Rejestracja: czw lis 26, 2015 10:59 pm
Lokalizacja: Bełchatów

Re: [METEO] Rainfall (Opady deszczu)

Post autor: slawko » wt gru 13, 2016 4:50 pm

wojmal pisze:No niestety musisz chwilowo wyłączyć widget, dopóki nie poprawię kodu albo będziesz miał 24 godzinną przerwę pomiędzy opadami - gdyż taki przyjąłem zakres, że deszcz się kończy jak przez 24godz. nie pada. Dodam możliwość ustawienia sobie przedziału czasu.
Ok poczekam, dzięki za zainteresowanie ale za chwilę pomęczę was w innym widgetsie :).

Awatar użytkownika
pimowo
Betatester
Posty: 4651
Rejestracja: czw lut 19, 2015 9:17 am
Lokalizacja: Wołów

Re: [METEO] Rainfall (Opady deszczu)

Post autor: pimowo » pn sty 09, 2017 12:54 pm

Załączam poprawiony widget "Rainfall" pod nowy soft METEO

Kod: Zaznacz cały

<div class="panel-heading">Rainfall</div>
<div class="panel-body">
    <?php 
      $time_start=microtime(true);
      $root=$_SERVER["DOCUMENT_ROOT"];

      $db = new PDO("sqlite:$root/db/ip_meteoid1_rainfall.sql") or die ("cannot open database");
      $query = $db->prepare("select sum(value) from def where  time >= :czas_start and time<= :czas_stop");
      
      $czas_stop=date("Y-m-d H:i:s"); //'2016-10-30 20:00:00';
      $last=array(0,0,0);
      $last_start=array('','','');
      $last_stop=array('','','');
      for ($a=0;$a<3;$a++){
         $czas_start=date("Y-m-d H:i:s",time()-($a+1)*24*60*60);
         $query->bindParam(':czas_start',$czas_start );
         $query->bindParam(':czas_stop',$czas_stop);
         $res= $query->execute();
         foreach ($query as $row){
            $last[$a]=round($row[0],2);
            if ($last[$a]=='')
            {
               $last[$a]=0;
            }
            $last_start[$a]=$czas_start;
            $last_stop[$a]=$czas_stop;
         }
      }
      //poprzedni deszcz

      $db = new PDO("sqlite:/var/www/nettemp/db/ip_meteoid1_rainfall.sql") or die ("cannot open database");
      $query_fst_record=$db->prepare("SELECT min(time) FROM def LIMIT 1");
      $first_record_row=$query_fst_record->fetch();
      $first_record=strtotime($first_record_row[0]);
      $query = $db->prepare("select max(time),value from def where  value=0 and time < :czas_start");
      $query2 = $db->prepare("select max(time),value from def where  value<>0 and time < :czas_start");
      $czas_start=date("Y-m-d H:i:s");
      $poprzedni_deszcz_czas=array('','');
      $not_found=false;
      for ($i=0;$i<2;$i++){
         do {
            $query->bindParam(':czas_start',$czas_start );
            $query->execute();
            $dana=$query->fetch();
            $czas_start=$dana[0];
            $query2->bindParam(':czas_start',$czas_start );
            $query2->execute();
            $dana2=$query2->fetch();
            $data1=strtotime($dana[0]);
            $data2=strtotime($dana2[0]);         
            $interval=abs($data1-$data2);///(24*60*60);
            $czas_start=$dana2[0];
            if ($interval > 86400 && ($data1==$first_record || $data2==$first_record))
            {
               $not_found=true;
            }
         }while($interval<86400 && $not_found==false);
         $poprzedni_deszcz_czas[$i]=$dana2[0];
      }
      $query3 = $db->prepare("select sum(value) from def where time > :czas_start and time <= :czas_stop");
      $query3->bindParam(':czas_start',$dana2[0] );
      $query3->bindParam(':czas_stop',$poprzedni_deszcz_czas[0] );
      $query3->execute();
      $poprzedni_ilosc=$query3->fetch();

      $time_end=microtime(true);
      $exec_time=$time_end-$time_start;
    ?>
  <div style="width:100%">
    <div style="width:70%;float:left" title="<?php echo $last_start[0]."-".$last_stop[0]; ?>"><span>Ostatnie 24h</span></div>
    <div style="width:30%;float:left;text-align: right;"><span><?php echo $last[0]; ?> l/m2</span></div>
  </div>
  <div style="width:100%">
    <div style="width:70%;float:left" title="<?php echo $last_start[1]."-".$last_stop[1]; ?>"><span>Ostatnie 48h</span></div>
    <div style="width:30%;float:left;text-align: right;"><span><?php echo $last[1]; ?> l/m2</span></div>
  </div>
  <div style="width:100%">
    <div style="width:70%;float:left" title="<?php echo $last_start[2]."-".$last_stop[2]; ?>"><span>Ostatnie 72h</span></div>
    <div style="width:30%;float:left;text-align: right;"><span><?php echo $last[2]; ?> l/m2</span></div>
  </div>
  <div style="width:100%">
    <div style="width:70%;float:left" title="<?php echo $last_start[2]."-".$last_stop[2]; ?>">
    <span>Ostatni deszcz</span></div>
    <div style="width:30%;float:left;text-align: right;"><span><?php echo $poprzedni_deszcz_czas[0]; ?></span></div>
  </div>
  <div style="width:100%">
    <div style="width:70%;float:left" title="<?php echo $last_start[2]."-".$last_stop[2]; ?>"><span>Ostatni opad</span></div>
    <div style="width:30%;float:left;text-align: right;"><span><?php echo $poprzedni_ilosc[0]; ?> l/m2</span></div>
  </div>
</div>
[email protected] HP MicroServer N54L, Raspberry Pi 3B, Raspberry Pi B+

ODPOWIEDZ

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości