NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Pomoc neprogramátorovi s PHP kodem - vyčítání dat z mySQL

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Pavel Korotvička:3.12.2017 20:27

Ahoj, potřeboval bych pomoci s:
Hledal jsem zde na foru, ale asi to tu není)

  1. PHP kod na vyčtení dat z mySQL jako podklad pro graf + zobrazení grafu, ideálně FREE asi stačí od GOOGLE
  2. Uvítal bych, kdyby tam šlo proměnnou nastavit, kolik posledních řádků vyčíst
  3. Na stránce bude těchto grafů spousta, uvítal bych kdyby se dala lehce měnit velikost grafu
  4. V co nedoufám - skok v grafu o X položek dopředu (ani to není potřeba, ale bylo by to ...)

O co jde:
(aby jste tak nějak věděli o co jde a co umím, bude to se mnou asi těžké, jsem skoro 50tník)

  • vyčítám co 15min pomocí Arduina z modulu, co běží na baterky teplotu, napětí baterie, napětí na solárnm panelu (zkoumám jak dlouho to poběží na baterky, zda má cenutam dávat solár)
  • přenáším to do NAS do mySQL databáze (id, čas,teplota,na­pětí,solar)
  • umím díky zdeším článům v PHP vypsat tabulku, ale ta se nehodí jako podklad pro žádné FREE grafy v psané v JS
  • výsledkem bude jednoduchá, levná stavebnice meteostanice, s možností zobrazování dat na WWW a tím i mobilu, pro dětský kroužek, kde se děti seznámí s elekronikou, programováním atd (10-12let - do PHP bych je nezatahoval, ani to neumím)

Asi by i stačilo získat nějaký obdobný projekt, alespoň s pár komentáři. Nezvládám se naučit tento jazyk, sotva vzládám to Arduino.

předem děkuji

 
Odpovědět
3.12.2017 20:27
Avatar
Odpovídá na Pavel Korotvička
Neaktivní uživatel:4.12.2017 1:35

Od tabulky ke grafu už to není moc složité. Většina javascriptových knihoven vyžaduje data jako json, tím se ti práce v php značně zkrátí. Chtělo by to asi být konkrétnější, asi nikdo to tu nenapíše celý. Co máš všechno hotovýho a kde konkrétně jsi se zasek?

Editováno 4.12.2017 1:36
Nahoru Odpovědět
4.12.2017 1:35
Neaktivní uživatelský účet
Avatar
Odpovídá na Pavel Korotvička
Dominik Gavrecký:4.12.2017 15:58

Vytvor si ponuku prípadne mi napíš PM za nejaké smiešne drobné ti to vytvorím

Nahoru Odpovědět
4.12.2017 15:58
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar

Člen
Avatar
Odpovídá na Pavel Korotvička
:4.12.2017 16:15

Mám iný návrh.

Arduino nepošle dáta do NAS, ale uloží si ich v MySQL bežiacom priamo na Arduine.
Zároveň pobeží na Arduine Node.js server s programom, ktorý , ktorí bude poskytovať API volania.

Bude to tak naprosto nezávislé. Stačí Arduino pripojiť na internet a akákoľvek aplikácia, aj SPA, sa bude naň môcť pripojiť a zobraziť si z neho dáta.

 
Nahoru Odpovědět
4.12.2017 16:15
Avatar
Odpovídá na
Pavel Korotvička:4.12.2017 18:45
  • Právě na tvorbě toho JSON jsem zkolaboval. Dám dohromady popis mySQL a co jsem stvořil.Nahodím to sem a třeba někdo pomůže.
  • Klidně bych si to zaplatil, nevím co jsou drobné, ale už takhle táhneme materiál a další věci zatím ze svého :-D
  • Arduino má paměť 32K, takže je to pasé, mimoto umím na LCD dělat graf z dat v Arduinu, to WWW má být další ADD-ON, aby to bylo zajímavější - displeje jsou drahé.
 
Nahoru Odpovědět
4.12.2017 18:45
Avatar

Člen
Avatar
Odpovídá na Pavel Korotvička
:4.12.2017 19:08

Ahoj Pavel. Pošlo teda čo máš a vygoogli si projekt John Five. Je to Node server bežiaci na Arduine, ktorý vie komunikovať so senzormi. Nájdi tam, či podporuje aj Tvoje senzory a tiež mi to napíš.

 
Nahoru Odpovědět
4.12.2017 19:08
Avatar
Pavel Korotvička:4.12.2017 19:39

Tak děkuji,
nakopnutí směrem k JSON + děkuji za odkaz na HOW-TO + pomoc s překladem co já pouze ruštinou políbený nezvládl ....
Toto je výsledek
Graf

PS: jak dotyčný napsal - prokousej se tím a nebude příště nic jednoduššího, moc děkuji za online pomoc s překladem a opravy v kodu ....

 
Nahoru Odpovědět
4.12.2017 19:39
Avatar
Odpovídá na Pavel Korotvička
Dominik Gavrecký:4.12.2017 21:47

Pavel napíš mi PM dohodneme sa na nejakom komunikačnom servery a vrhneme sa do toho ak si teda nad tým nechceš lámať hlavu ...

Nahoru Odpovědět
4.12.2017 21:47
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Odpovídá na Pavel Korotvička
Dominik Gavrecký:4.12.2017 21:51

Ak je to teda pre detská tak to skúsim...

Nahoru Odpovědět
4.12.2017 21:51
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Pavel Korotvička:5.12.2017 9:14

Tak rozchozeno, 100% funkční včetně vyčítání posledních X dotazů. Děkuji všem co pomohly jak nasměrováním, tak online pomocí.
Jediné co blbne je, že se někdy nezapíší hodnoty z Arduina do mySQL, ale to se doladí.
Je zvykem sem házet zdrojáky jako řešení ?

 
Nahoru Odpovědět
5.12.2017 9:14
Avatar
Pavel Korotvička:5.12.2017 16:19

Konečné řešení, Google graf ze 3 měřených hodnot.

mySQL
ID(int); timestamp(TIMES­TAMP); teplota(float); napeti(float); solar(float)

<?php

/* Database Name */
$DB_NAME = 'database';

/* Database Host */
$DB_HOST = 'localhost';

/* Your Database User Name and Passowrd */
$DB_USER = 'user';
$DB_PASS = '123456';

  /* Establish the database connection */
  $mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);

  if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
  }

  /* vyber tabulku pro graf */
  $result = $mysqli->query('SELECT * FROM arduino_data');

  $rows = array();
  $table = array();
  $table['cols'] = array(
    /* vyber data zobrazovaná v grafu */
    array('label' => 'timestamp', 'type' => 'string'),
    array('label' => 'teplota', 'type' => 'number'),
    array('label' => 'napeti', 'type' => 'number'),
    array('label' => 'solar', 'type' => 'number')
    );

    /* Extract the information from $result */
    foreach($result as $r) {
        $temp = array();
        // The following line will be used to slice the Pie chart
        $temp[] = array('v' => (string) $r['timestamp']);
        // Values of the each slice
        $temp[] = array('v' => (float) $r['teplota']);
        //$rows[] = array('c' => $temp);
        $temp[] = array('v' => (float) $r['napeti']);
        //$rows[] = array('c' => $temp);
        $temp[] = array('v' => (float) $r['solar']);
        $rows[] = array('c' => $temp);
        }

$table['rows'] = $rows;

// convert data into JSON format
$jsonTable = json_encode($table);
echo $jsonTable;
?>


<html>
  <head>
    <!--Load the Ajax API-->
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script type="text/javascript">

    // Load the Visualization API and the piechart package.
    google.load('visualization', '1', {'packages':['corechart']});

    // Set a callback to run when the Google Visualization API is loaded.
    google.setOnLoadCallback(drawChart);

    function drawChart() {

      // Create our data table out of JSON data loaded from server.
      var data = new google.visualization.DataTable(<?=$jsonTable?>);
      var options = {
          title: 'Teplota - ARDUINO 01',
          //is3D: 'true',
          width: 800,
          height: 600
        };
      // Instantiate and draw our chart, passing in some options.
      // Do not forget to check your div ID
      var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
      chart.draw(data, options);

    }
    </script>
  </head>

  <body>
    <!--this is the div that will hold the pie chart-->
    <div id="chart_div"></div>
  </body>
</html>
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
5.12.2017 16:19
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.