Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.



arduino-ethernet-da...
 
Deel:
Meldingen
Alles wissen

[Opgelost] arduino-ethernet-data-push

9 Berichten
2 Gebruikers
0 Vind-ik-leuks
1,204 Bekeken
(@drek123)
Active Member
Deelgenomen: 7 jaar geleden
Berichten: 5
Topic starter  

Geachte,

Ik hoop hier een beetje hulp te krijgen omdat ik van php niet ken en toch die oefening op:

https://www.tweaking4all.nl/hardware/arduino/arduino-ethernet-data-push/#comments

ik krijg die 12.3 graden maar niet op het scherm, die 20.79 krijg ik wel dus er word denk ik niets van mijn arduino lezen

denk ik, ik ben er al een heel tijdje mee bezig, jullie hulp zou prachtig zijn want het is een ideaal programma en

mooi gedaan. Mijn wamp server is local host.

Alvast groeten

Dirk

  1. volgende files heb ik onder de www directory staan van mijn wamp server
  2. add_data.php:
  3. <?php
  4.     // Connect to MySQL
  5.     include("dbconnect.php");
  6.     // Prepare the SQL statement
  7.     $SQL = "INSERT INTO test.temperature (sensor ,celsius) VALUES ('".$_GET["serial"]."', '".$_GET["temperature"]."')";     
  8.     // Execute SQL statement
  9.     mysql_query($SQL);
  10.  header("Location: review_data.php");
  11.    
  12. ?>
  13. dbconnect.php:
  14. ?php
  15. $MyUsername = "root"; // mysql gebruikersnaam
  16. $MyPassword = ""; // mysql wachtwoord
  17. $MyHostname = "localhost"; // dit is meestal "localhost" tenzij mysql op een andere server staat
  18. $dbh = mysql_pconnect($MyHostname , $MyUsername, $MyPassword);
  19. $selected = mysql_select_db("test",$dbh);
  20. ?>
  21. review_data.php:
  22. <?php 
  23.     // Start MySQL Verbinding
  24.     include('dbconnect.php'); 
  25. ?>
  26. <html>
  27. <head>
  28.     <title>Arduino Temperature Log</title>
  29.     <style type="text/css">
  30.         .table_titles, .table_cells_odd, .table_cells_even {
  31.                 padding-right: 20px;
  32.                 padding-left: 20px;
  33.                 color: #000;
  34.         }
  35.         .table_titles {
  36.             color: #FFF;
  37.             background-color: #666;
  38.         }
  39.         .table_cells_odd {
  40.             background-color: #CCC;
  41.         }
  42.         .table_cells_even {
  43.             background-color: #FAFAFA;
  44.         }
  45.         table {
  46.             border: 2px solid #333;
  47.         }
  48.         body { font-family: "Trebuchet MS", Arial; }
  49.     </style>
  50. </head>
  51.     <body>
  52.         <h1>Arduino Temperature Log</h1>
  53.     <table border="0" cellspacing="0" cellpadding="4">
  54.       <tr>
  55.             <td class="table_titles">ID</td>
  56.             <td class="table_titles">Date and Time</td>
  57.             <td class="table_titles">Sensor Serial</td>
  58.             <td class="table_titles">Temperature in Celsius</td>
  59.           </tr>
  60. <?php
  61.     // Retrieve all records and display them
  62.     $result = mysql_query("SELECT * FROM temperature ORDER BY id ASC");
  63.     // Used for row color toggle
  64.     $oddrow = true;
  65.     // process every record
  66.     while( $row = mysql_fetch_array($result) )
  67.     {
  68.         if ($oddrow) 
  69.         { 
  70.             $css_class=' class="table_cells_odd"'; 
  71.         }
  72.         else
  73.         { 
  74.             $css_class=' class="table_cells_even"'; 
  75.         }
  76.         $oddrow = !$oddrow;
  77.         echo '<tr>';
  78.         echo ' <td'.$css_class.'>'.$row["id"].'</td>';
  79.         echo ' <td'.$css_class.'>'.$row["event"].'</td>';
  80.         echo ' <td'.$css_class.'>'.$row["sensor"].'</td>';
  81.         echo ' <td'.$css_class.'>'.$row["celsius"].'</td>';
  82.         echo '</tr>';
  83.     }
  84. ?>
  85.     </table>
  86.     </body>
  87. </html>
  88. testmysql.php:
  89. CREATE TABLE `test`.`temperature` (
  90. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'unique ID',
  91. `event` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Event Date and Time',
  92. `sensor` VARCHAR( 30 ) NOT NULL COMMENT 'Unique ID of the sensor',
  93. `celsius` VARCHAR( 10 ) NOT NULL COMMENT 'Measured Temperature in Celsius',
  94. INDEX ( `event` , `sensor` )
  95. ) ENGINE = InnoDB;
  96. arduiino scketch:
  97. //#include <UIPEthernet.h> // Used for Ethernet
  98. #include <Ethernet2.h>
  99. // * ETHERNET SETTING *
  100. // Arduino Uno pins: 10 = CS, 11 = MOSI, 12 = MISO, 13 = SCK
  101. // Ethernet MAC address - must be unique on your network - MAC Reads T4A001 in hex (unique in your network)
  102. byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };                                       
  103. // For the rest we use DHCP (IP address and such)
  104. EthernetClient client;
  105. char server[] = "http://localhost/add_data.php"; // IP Adres (or name) of server to dump data to
  106. int interval = 5000; // Wait between dumps
  107. void setup() {
  108.   Serial.begin(9600);
  109.   Ethernet.begin(mac);
  110.   Serial.println("Tweaking4All.com - Temperature Drone - v2.0");
  111.   Serial.println("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
  112.   Serial.print("IP Address : ");
  113.   Serial.println(Ethernet.localIP());
  114.   Serial.print("Subnet Mask : ");
  115.   Serial.println(Ethernet.subnetMask());
  116.   Serial.print("Default Gateway IP: ");
  117.   Serial.println(Ethernet.gatewayIP());
  118.   Serial.print("DNS Server IP : ");
  119.   Serial.println(Ethernet.dnsServerIP());
  120. }
  121. void loop() {
  122.   // if you get a connection, report back via serial:
  123.   if (client.connect(server, 80)) {
  124.     Serial.println("-> Connected");
  125.     // Make a HTTP request:
  126.     client.print( "GET /localhost/add_data.php?");
  127.     client.print("serial=");
  128.     client.print( "288884820500006X" );
  129.     client.print("&&");
  130.     client.print("temperature=");
  131.     client.print( "12.3" );
  132.     client.println( " HTTP/1.1");
  133.     client.print( "Host: " );
  134.     client.println(server);
  135.     client.println( "Connection: close" );
  136.     client.println();
  137.     client.println();
  138.     client.stop();
  139.   }
  140.   else {
  141.     // you didn't get a connection to the server:
  142.     Serial.println("--> connection failed/n");
  143.   }
  144.   delay(interval);
  145. }

   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2686
 

Hoi Dirk,

als eerst zie ik 

 client.print( “GET /localhost/add_data.php?”);

en dat gaat niet werken.

"localhost" wordt gebruikt als de PC met zichzelf wil verbinden. Dus als je op de Arduino "localhost" gebruikt, dan wijst dat meteen terug naar de Arduino, en dat is niet wat we willen. 

In de Arduino code zul je het IP adres van de PC moeten gebruiken (b.v. zoiets als 192.168.1.100). Het gebruik van namen van de PC's werkt over het algemeen niet zo geweldig omdat de code niet een DNS call doet om de naam om te zetten naar een IP adres.

Dus ... op de PC even kijken wat het IP adres is (kan vanuit een DOS box met "ipconfig").
Wat nu een probleem kan worden is dat, afhankelijk van jouw netwerk instellingen, de PC soms (na herstarten) een ander IP adres kan krijgen. Maar laten we daar later naar kijken.

Iets wat je ook niet mag vergeten is om WAMPServer op "Online" te zetten - anders kan een ander apparaat (andere PC, tablet, Arduino, etc) namelijk niet bij de webserver die op jouw PC draait. Dit kun je het eenvoudigste testen met een andere PC, een tablet, of een smartphone, als ze maar gebruik maken van hetzelfde netwerk. 


   
BeantwoordenCiteren
(@drek123)
Active Member
Deelgenomen: 7 jaar geleden
Berichten: 5
Topic starter  

dag Hans,

Ik kan het woensdag pas testen maar ik hou je van zodra ik kan op de hoogte, alvast bedankt voor het snelle antwoord en tot woensdag


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2686
 

Geen probleem 
Ik wacht geduldig ... (ik kom zelf ook vaak tijd tekort, dus no worries)


   
BeantwoordenCiteren
(@drek123)
Active Member
Deelgenomen: 7 jaar geleden
Berichten: 5
Topic starter  

zo is getest kan niet wachten tot ik het aan het werk heb :)

hieronder alle stukken van het programma:

ik zou graag eerst die tabel willen hebben met die 12,3 graden en daarna als dit werkt het aanhangen van een sensor

ik heb in bijlage een scherm copy gezet van de serial vd arduino, scherm browser, en de www directory

al heel veel dank alvast

Arduino:

  1. #include <Ethernet2.h>
  2. // * ETHERNET SETTING *
  3. // Arduino Uno pins: 10 = CS, 11 = MOSI, 12 = MISO, 13 = SCK
  4. // Ethernet MAC address - must be unique on your network - MAC Reads T4A001 in hex (unique in your network)
  5. byte mac[] = { 0x90, 0xA2, 0xDA, 0x10, 0xB4, 0x00 };                                       
  6. // For the rest we use DHCP (IP address and such)
  7. EthernetClient client;
  8. char server[] = "10.33.209.50"; // IP Adres (or name) of server to dump data to
  9. int interval = 5000; // Wait between dumps
  10. void setup() {
  11.   Serial.begin(9600);
  12.   Ethernet.begin(mac);
  13.   Serial.println("Tweaking4All.com - Temperature Drone - v2.0");
  14.   Serial.println("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
  15.   Serial.print("IP Address : ");
  16.   Serial.println(Ethernet.localIP());
  17.   Serial.print("Subnet Mask : ");
  18.   Serial.println(Ethernet.subnetMask());
  19.   Serial.print("Default Gateway IP: ");
  20.   Serial.println(Ethernet.gatewayIP());
  21.   Serial.print("DNS Server IP : ");
  22.   Serial.println(Ethernet.dnsServerIP());
  23. }
  24. void loop() {
  25.   // if you get a connection, report back via serial:
  26.   if (client.connect(server, 80)) {
  27.     Serial.println("-> Connected");
  28.     // Make a HTTP request:
  29.     client.print( "GET /testserver/arduino_temperatures/add_data.php?");
  30.     client.print("serial=");
  31.     client.print( "288884820500006X" );
  32.     client.print("&&");
  33.     client.print("temperature=");
  34.     client.print( "12.3" );
  35.     client.println( " HTTP/1.1");
  36.     client.print( "Host: " );
  37.     client.println(server);
  38.     client.println( "Connection: close" );
  39.     client.println();
  40.     client.println();
  41.     client.stop();
  42.   }
  43.   else {
  44.     // you didn't get a connection to the server:
  45.     Serial.println("--> connection failed/n");
  46.   }
  47.   delay(interval);
  48. }

review_data.php:

  1. <?php 
  2.     // Start MySQL Verbinding
  3.     include('dbconnect.php'); 
  4. ?>
  5. <html>
  6. <head>
  7.     <title>Arduino Temperature Log</title>
  8.     <style type="text/css">
  9.         .table_titles, .table_cells_odd, .table_cells_even {
  10.                 padding-right: 20px;
  11.                 padding-left: 20px;
  12.                 color: #000;
  13.         }
  14.         .table_titles {
  15.             color: #FFF;
  16.             background-color: #666;
  17.         }
  18.         .table_cells_odd {
  19.             background-color: #CCC;
  20.         }
  21.         .table_cells_even {
  22.             background-color: #FAFAFA;
  23.         }
  24.         table {
  25.             border: 2px solid #333;
  26.         }
  27.         body { font-family: "Trebuchet MS", Arial; }
  28.     </style>
  29. </head>
  30.     <body>
  31.         <h1>Arduino Temperature Log</h1>
  32.     <table border="0" cellspacing="0" cellpadding="4">
  33.       <tr>
  34.             <td class="table_titles">ID</td>
  35.             <td class="table_titles">Date and Time</td>
  36.             <td class="table_titles">Sensor Serial</td>
  37.             <td class="table_titles">Temperature in Celsius</td>
  38.           </tr>
  39. <?php
  40.     // Retrieve all records and display them
  41.     $result = mysql_query("SELECT * FROM temperature ORDER BY id ASC");
  42.     // Used for row color toggle
  43.     $oddrow = true;
  44.     // process every record
  45.     while( $row = mysql_fetch_array($result) )
  46.     {
  47.         if ($oddrow) 
  48.         { 
  49.             $css_class=' class="table_cells_odd"'; 
  50.         }
  51.         else
  52.         { 
  53.             $css_class=' class="table_cells_even"'; 
  54.         }
  55.         $oddrow = !$oddrow;
  56.         echo '<tr>';
  57.         echo ' <td'.$css_class.'>'.$row["id"].'</td>';
  58.         echo ' <td'.$css_class.'>'.$row["event"].'</td>';
  59.         echo ' <td'.$css_class.'>'.$row["sensor"].'</td>';
  60.         echo ' <td'.$css_class.'>'.$row["celsius"].'</td>';
  61.         echo '</tr>';
  62.     }
  63. ?>
  64.     </table>
  65.     </body>
  66. </html>
  67. testmysql.php:
  1. CREATE TABLE `test`.`temperature` (
  2. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'unique ID',
  3. `event` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Event Date and Time',
  4. `sensor` VARCHAR( 30 ) NOT NULL COMMENT 'Unique ID of the sensor',
  5. `celsius` VARCHAR( 10 ) NOT NULL COMMENT 'Measured Temperature in Celsius',
  6. INDEX ( `event` , `sensor` )
  7. ) ENGINE = InnoDB;
dbconnect.php:
  1. CREATE TABLE `test`.`temperature` (
  2. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'unique ID',
  3. `event` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Event Date and Time',
  4. `sensor` VARCHAR( 30 ) NOT NULL COMMENT 'Unique ID of the sensor',
  5. `celsius` VARCHAR( 10 ) NOT NULL COMMENT 'Measured Temperature in Celsius',
  6. INDEX ( `event` , `sensor` )
  7. ) ENGINE = InnoDB;
add_data.php:
  1. <?php
  2.     // Connect to MySQL
  3.     include("dbconnect.php");
  4.     $counter=1;
  5.     while ( isset( $_GET["serial".$counter] ) )
  6.     {
  7.         // Prepare the SQL statement
  8.         $SQL = "INSERT INTO test.temperature (sensor ,celsius) VALUES ('".$_GET["serial".$counter]."', '".$_GET["temperature".$counter]."')";     
  9.         // Execute SQL statement
  10.         mysql_query($SQL);
  11.         // Increase counter
  12.         $counter++;
  13.     }
  14.     // Go to the review_data.php 
  15.     header("Location: review_data.php");
  16. ?>

   
BeantwoordenCiteren
(@drek123)
Active Member
Deelgenomen: 7 jaar geleden
Berichten: 5
Topic starter  

Dag Hans, nog een tijdje aan het proberen geweest maar het lukt maar niet :( de volhouder wint zeker :)


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2686
 

De aanhouder wint zeker hahah ...

Als eerst; WAMPServer is een mooi stukje software maar erg raar wanneer het neer komt op bereikbaarheid.
Er wordt vanuit gegaan dat je een web developer bent en de server op dezelfde machine draait waarop de webpagina's ontwikkeld. Dat wil zeggen dat de server alleen bereikbaar is op de PC waarop WAMPServer draait.

Je hebt localhost al vervangen door een IP adres, maar je kunt er blijkbaar nog steeds niet bij.

Als je een andere PC of een Tablet/Telefoon beschikbaar hebt die in hetzelfde netwerk hangt als de PC die WAMPServer draait dan zou je het volgende eens moeten proberen op die andere computer, in de web browser;

 http://10.33.209.50/review_data.php 

Kijk of dat werkt. Het kan echter zijn dat je een "access denied" melding krijgt. In dat geval moeten we de instellingen van WAMPServer aanpassen. Om de een of andere reden hebben die mannen van WAMPServer deze functie weggehaald die dit allemaal in een enkele klik deed.

Er zijn een aantal suggesties, zoals deze op StackOverflow:

Open c:\wamp\bin\apache\apache{version}\conf\extra\httpd-vhosts.conf met notepad, en maak de volgende wijziging:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot D:/wamp/www
    <Directory "D:/wamp/www/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted #<-- aangepaste regel!
    </Directory>
</VirtualHost>

Na het opslaan van de wijziging moet je WAMPServer even opnieuw opstarten.

Als je helemaal niets te zien krijgt (dus ook geen "access denied" melding) dan moet je even het IP adres controleren.


   
BeantwoordenCiteren
(@drek123)
Active Member
Deelgenomen: 7 jaar geleden
Berichten: 5
Topic starter  

Hoi Hans,
via http://10.33.209.50/review_data.php kan ik de tabel zien op een computer in een ander lokaal, ook
als ik add_data.php intyp komt er een lijn bij met datum en tijd maar geen serial nummer van sensor of temperatuur
vreemd he :) die aanpassing heb ik ook gedaan. Via mijn gsm , mobiel internet geraak ik er niet


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2686
 

OK, dus dat wil zeggen dat WAMPServer correct staat of computers/etc in het lokale netwerk (in het gebouw dus).
Zit de Arduino op hetzelfde netwerk aangesloten? 


   
BeantwoordenCiteren
Deel: