2017-04-05 3 views
0

私はセンサーを監視するためのデバイスとしてgoogle annotatedtimelineを使用しています。私はMySQLデータベースにデータを送信するためのmqttのpythonスクリプトを使用しています。そして私はデータベースから私のタイムラインデータを受け取ります。私は別々のセンサーフローセンサーとメーターセンサーを持っています。私はそれらを両方ともタイムライン上に表示したいので、私はデータ結合を使用します。問題は、センサのタイムラインの一つは、このように、後で早く始めるかということである。Googleアノテートされたタイムラインデータがタイムスタンプで乱されています

enter image description here

あなたは青のラインが赤1よりも後に開始さ見るように。 具体的には、赤はメートル、青は流れです。

さて、私のデータは次のようになります。

SELECT r.id,r.device_id as device,r.sensor_id as sensor,r.timestamp as aeg2,r.timestamp as aeg,r.value_int as lugem from readings r 
    where r.sensor_id="2" 
    ORDER BY r.id desc limit 10 
SELECT timestamp as aeg,value_int as lugem,value_string as lugem2,r.device_id as device,r.timestamp as aeg2,r.id,r.sensor_id as sensor 
    FROM readings r 
    WHERE r.sensor_id="1" order by r.id desc limit 10 

そして、どのように私はPHPでデータを編集します:

あり
foreach ($result as $row){ 
       $i++; 
       $date = date("Y,m,d,H,i,s", strtotime($row["aeg"])); 
       $mod_date = substr_replace($date, intval(substr($date, 5,2))-1, 5,2) ; 


      if($andur=="1" or $andur=="1, 2"){ 
       $andmed.= "\t\t\t[new Date(" . $mod_date . ")," . $row["lugem"] .",undefined],\n"; 

       if($i > 1 or $i==x) 
       { 
        $andmed.= "\t\t\t[new Date(" . $mod_date . ")," . $eelminelugem . ",undefined],\n"; 
       }  

        $eelminelugem = $row["lugem"]; 

       $tootlikkus+= $row["lugem"]; 
       if ($row["lugem"]<10) $seisuaeg++; 

      } 
      } 

      foreach ($resultt as $roww){ 

       $datee2= date("Y,m,d,H,i,s",strtotime($roww["aeg2"]) +0.9); 
       $datee = date("Y,m,d,H,i,s", strtotime($roww["aeg2"])); 
       // Google Viz bugi, et kuu väärtused algavad 0st mitte 1-st. 
       $mod_date = substr_replace($datee, intval(substr($datee, 5,2))-1, 5,2) ; 
       $uus_date = substr_replace($datee2, intval(substr($datee2, 5,2))-1, 5,2) ; 

      if($andur=="2" or $andur=="1, 2"){ 
       $andmed2.= "\t\t\t[new Date(" . $mod_date . "),0,undefined],\n"; 

       $andmed2.= "\t\t\t[new Date(" . $mod_date . ")," . $roww["lugem"] .",undefined],\n"; 

       $andmed2.= "\t\t\t[new Date(" . $uus_date. ")," . $roww["lugem"] .",undefined],\n"; 

       $andmed2.= "\t\t\t[new Date(" . $uus_date . "),0,undefined],\n"; 

       $tootlikkus+= $roww["lugem"]; 
       if ($roww["lugem"]<10) $seisuaeg++; 

       } 


     } 

このようなSQLクエリを使用することにより

function drawChart() 
    { 

     var data = new google.visualization.DataTable(); 
     data.addColumn('datetime', 'Aeg'); 
     data.addColumn('number', 'Vooluandur C200'); 
     data.addColumn('string', 'Nimi'); 
         data.addRows([ 
      [new Date(2017,3,05,14,10,48),10,undefined], 
      [new Date(2017,3,05,14,10,47),9,undefined], 
      [new Date(2017,3,05,14,10,47),10,undefined], 
      [new Date(2017,3,05,14,10,46),10,undefined], 
      [new Date(2017,3,05,14,10,46),9,undefined], 
      [new Date(2017,3,05,14,10,43),11,undefined], 
      [new Date(2017,3,05,14,10,43),10,undefined], 
      [new Date(2017,3,05,14,10,42),9,undefined], 
      [new Date(2017,3,05,14,10,42),11,undefined], 
      [new Date(2017,3,05,14,10,41),8,undefined], 
      [new Date(2017,3,05,14,10,41),9,undefined], 
      [new Date(2017,3,05,14,10,39),10,undefined], 
      [new Date(2017,3,05,14,10,39),8,undefined], 
      [new Date(2017,3,05,14,10,38),11,undefined], 
      [new Date(2017,3,05,14,10,38),10,undefined], 
      [new Date(2017,3,05,14,10,37),10,undefined], 
      [new Date(2017,3,05,14,10,37),11,undefined], 
      [new Date(2017,3,05,14,10,36),9,undefined], 
      [new Date(2017,3,05,14,10,36),10,undefined] 
]); 


     var data2 = new google.visualization.DataTable(); 
     data2.addColumn('datetime', 'Aeg'); 
     data2.addColumn('number', 'Kooder'); 
     data2.addColumn('string', 'Nimi'); 
         data2.addRows([ 
      [new Date(2017,3,05,14,10,48),0,undefined], 
      [new Date(2017,3,05,14,10,48),1,undefined], 
      [new Date(2017,3,05,14,10,48),1,undefined], 
      [new Date(2017,3,05,14,10,48),0,undefined], 
      [new Date(2017,3,05,14,10,47),0,undefined], 
      [new Date(2017,3,05,14,10,47),1,undefined], 
      [new Date(2017,3,05,14,10,47),1,undefined], 
      [new Date(2017,3,05,14,10,47),0,undefined], 
      [new Date(2017,3,05,14,10,45),0,undefined], 
      [new Date(2017,3,05,14,10,45),1,undefined], 
      [new Date(2017,3,05,14,10,45),1,undefined], 
      [new Date(2017,3,05,14,10,45),0,undefined], 
      [new Date(2017,3,05,14,10,43),0,undefined], 
      [new Date(2017,3,05,14,10,43),1,undefined], 
      [new Date(2017,3,05,14,10,43),1,undefined], 
      [new Date(2017,3,05,14,10,43),0,undefined], 
      [new Date(2017,3,05,14,10,42),0,undefined], 
      [new Date(2017,3,05,14,10,42),1,undefined], 
      [new Date(2017,3,05,14,10,42),1,undefined], 
      [new Date(2017,3,05,14,10,42),0,undefined], 
      [new Date(2017,3,05,14,10,40),0,undefined], 
      [new Date(2017,3,05,14,10,40),1,undefined], 
      [new Date(2017,3,05,14,10,40),1,undefined], 
      [new Date(2017,3,05,14,10,40),0,undefined], 
      [new Date(2017,3,05,14,10,38),0,undefined], 
      [new Date(2017,3,05,14,10,38),1,undefined], 
      [new Date(2017,3,05,14,10,38),1,undefined], 
      [new Date(2017,3,05,14,10,38),0,undefined], 
      [new Date(2017,3,05,14,10,37),0,undefined], 
      [new Date(2017,3,05,14,10,37),1,undefined], 
      [new Date(2017,3,05,14,10,37),1,undefined], 
      [new Date(2017,3,05,14,10,37),0,undefined], 
      [new Date(2017,3,05,14,10,35),0,undefined], 
      [new Date(2017,3,05,14,10,35),1,undefined], 
      [new Date(2017,3,05,14,10,35),1,undefined], 
      [new Date(2017,3,05,14,10,35),0,undefined], 
      [new Date(2017,3,05,14,10,33),0,undefined], 
      [new Date(2017,3,05,14,10,33),1,undefined], 
      [new Date(2017,3,05,14,10,33),1,undefined], 
      [new Date(2017,3,05,14,10,33),0,undefined] 
]); 


     var joinedData = google.visualization.data.join(data, data2, 'full', [[0, 0]], [1], [1]);   




     var options = { 
      thickness: 3, displayExactValues:true, displayAnnotations:true 
      }; 

     var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('d3x')); 


     chart.draw(joinedData, options);       
     } 

私はphpmyadminでクエリを実行した場合、私はタイムスタンプに問題があるはずですdまたは予想より早く終了した。 Soo ..私のSQLクエリに問題はありますか、それとも他の何かで正しくやっていませんか?

答えて

0

は...
これは、タイムスタンプ

の異なる範囲を返す防ぐ、次のような何かをしようと、一つに

SELECT 
    r.timestamp as aeg, 
    r.id, 
    r.device_id as device, 
    r.sensor_id as sensor, 
    CASE WHEN 
    r.sensor_id = "1" 
    THEN 
    r.value_int 
    ELSE 
    0 
    END as lugem1, 
    CASE WHEN 
    r.sensor_id = "2" 
    THEN 
    r.value_int 
    ELSE 
    0 
    END as lugem2 
FROM 
    readings r 
ORDER BY 
    r.id desc 
LIMIT 10 

を2つのSQL文を組み合わせることをお勧めします。また、集計することもできます。.. 。

SELECT 
    r.timestamp as aeg, 
    r.id, 
    r.device_id as device, 
    r.sensor_id as sensor, 
    SUM (
    CASE WHEN 
     r.sensor_id = "1" 
    THEN 
     r.value_int 
    ELSE 
     0 
    END 
) as lugem1, 
    SUM (
    CASE WHEN 
     r.sensor_id = "2" 
    THEN 
     r.value_int 
    ELSE 
     0 
    END 
) as lugem2 
FROM 
    readings r 
GROUP BY 
    r.timestamp, 
    r.id, 
    r.device_id, 
    r.sensor_id 
ORDER BY 
    r.id desc 
LIMIT 10 
+0

申し訳ありませんが、それは動作していましたが、チャートから離れています。私の場合、私はSQLのBETWEENタイムスタンプを使って私の問題を解決しました – Somepub

関連する問題