Pages: [1] 2 3   Go Down
Author Topic: Ethernet-Shield und PHP  (Read 4162 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 1
Posts: 197
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,
ich habe leider nichts nützliches zu meiner Frage gefunden.
Ich habe folgendes Ethernet-Shield für den Mega: http://www.ebay.de/itm/400397352919
Ich habe schon zum Testen den Quellcode einer Seite im Serial-Monitor anzeigen lassen und einen kleinen Webserver gehostet.

Wie kann ich nun z.B. per HTML-Formular auf dem Webserver eine LED an und aus machen?
Logged

Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1658
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

auf den arduino laden, vorher eventuell die IP anpassen. geht nur mit internetzugang und sieht auf einem smartphone/tablet gut aus, weil jquery mobile.

downloaden und installieren der library:
http://code.google.com/p/webduino/downloads/list

mit 192.168.2.153/rgb (oder angepasst) aufrufen. die oberen beiden knöpfe schalten die led auf dem arduino ein und aus. mußt unter den ethernetshield reingucken.

gruß stefan
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 197
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke schonmal, aber welches Beispiel meinst du?
Logged

Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1658
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ööööhh...

* steuerung_test13.ino (4.17 KB - downloaded 67 times.)
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 197
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Cool, danke funktioniert. Haste zufällig noch ein ganz einfaches Beispiel ohne JQuery?
Logged

Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1658
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

nein, ich wollte jquery, weil es zuverlässig auf verschiedenen browsern läuft und eine bibliothek für mobiles hat (die in diesem beispiel seltsam implementiert ist, hab ich auch nur übernommen, muß ich bei gelegenheit mal sauber umschreiben. aber wenn was funktioniert, fehlt halt der antrieb).
ajax war mir wichtig, weil ich keine formulare mit neuem seitenaufbau nach jedem senden wollte.

gruß stefan
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 197
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Achso. Kennt jemand ne Möglichkeit wie man mit ganz normalen PHP-Datein und Formularen, die man dann auf der MicroSD abspeichert, arbeiten kann?
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1397
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

PHP gibt es für den Arduino nicht. PHP ist ein mehrere MB großer Interpreter, der in der Regel als Modul und einen noch größeren Webserver eingebettet ist. Dein Arudino Mega hat gerade mal 8 KB RAM und 256KB Flash.
Oder willst Du PHP Scripte auf einem externen Webserver haben, der dann dem Arduino sagt, was genau er schalten soll?
Falls Du das meinst, dann schau Dir mal folgenden Thread an: http://arduino.cc/forum/index.php/topic,102817.0.html
Da ging es nämlich genau darum, wie ein PHP-Script möglichst effektiv einen Arduino per TCP steuern kann.
Mario.
Logged

Germany, Osnabrück
Offline Offline
God Member
*****
Karma: 25
Posts: 572
E-Technik Student - Master
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe am letzten Sonntag noch per Netzwerk meine LED Strip angesteuert. Dazu habe ich auf meinem Heimrechner einen kleinen Webserver am laufen:

Bei dem Beispiel muss man beachten das ich kein Ethernet-Shield verwende (zu teuer) sondern einen Ethernet-Seriell Wandler für 15 €

PHP/HTML Code:
Code:
<?php
//gültige kombinationen der internetseite
$ary = array("kino=fade_on""kino=fade_off"); 

//socket verbindung
$socket socket_create(AF_INETSOCK_STREAM0) or die("Could not create socket\n"); 
socket_connect($socket'192.168.178.50'20108) or die("connect!");

// get parameter von der internetseite
if(isset($_GET['mode']) && in_array($_GET['mode'], $ary)) 
{
    
//parameter an arduino übertragen
    
socket_write($socket$_GET['mode']."\0") or die("write"); 
    
//antwort abwarten, (der controller sendet ein 'ack' als bestätigung)
    
$data = @socket_read($socket1024PHP_NORMAL_READ); 
}

// antwort aus testzwecken ausgeben
echo $data.'<br>';
//socket schließen
socket_close($socket);
?>

<html>
<head>

</head>
<body style="background-color: #111;">
<center>
<p style="width:100%; height:400px; border: 1px solid #999; background-color:#555; color: #ccc; font-family: verdana; font-size: 56px;">
<b><u>Home Kontrol Version 0.1</u></b>
<br />
<br />
<a href="?mode=kino=fade_off">Kino Film start</a><br />
<a href="?mode=kino=fade_on">Kino Film ende</a>

</p>

</center>

</body>
</html>

Arduino Code zum auslesen der Seriellen schnittstelle
Code:
//globals
String netData_input = "";
boolean netData_ready = false;

void net_setSettings(String var, String value)

  if(var == "kino") {
   
    if(value == "fade_on") {
      //mach irgendwas um das licht einzuschalten
    }
    else if(value == "fade_off") {
      // mach irgendwas um das licht auszuschalten
    }
  }
}
void net_workWithNewData()

  boolean  var_mode = true;
  String   var_name = "";
  String   var_content = "";
  var_name.reserve(50);
  var_content.reserve(50);
   
  for(int i=0; i<netData_input.length();i++)
  {   
    char charAt = netData_input.charAt(i);
   
    switch(charAt)
    {
      case '&':
        if(var_name.length() > 0) {
          net_setSettings(var_name, var_content);         
        }
       
        var_name = "";
        var_content = "";
        var_mode = true;
       
        break;
      case '=':
       
        var_mode = false;
       
        break;
      default:
       
        if(var_mode == false) {
          var_content += charAt;
        } else {
          var_name += charAt;
        }
        break;
    }
  }
  if(var_name.length() > 0) {
    net_setSettings(var_name, var_content);         
  }
 
  Serial.println("ack");
  netData_input = "";
  netData_ready = false;   
}



void net_checkNewData()
{
  while(Serial.available())
  {   
    char inChar = (char)Serial.read();
    if(inChar == '\0')
    {           
      netData_ready = true;
      break;     
    }
    if(netData_input.length() < 199) {       
      netData_input += inChar;     
    } else {
      break;
    } 
  }

  if (netData_ready == true) {   
   
   
    net_workWithNewData();
  }
}


void loop()
{
    net_checkNewData();
}
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 197
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja, so ließe es sich gut lösen. Danke. Ich werd mal versuchen, im Laufe der nächsten Woche eine eigene Variante zu entwickeln.
Logged

Cloppenburg
Offline Offline
God Member
*****
Karma: 23
Posts: 800
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi. Ich habe dasselbe Shield gekauft. Heute wollte ich es ausprobieren aber ich komme da nicht weiter. Ich habe Beispiel Sketch probiert und andere aus dem Netz aber nix funktioniert. Wenn ich im Browser 192.168.178.177 eingebe, kann keine Verbindung hergestellt werden. Beim Rj45 anschluss müsste ja auch gelbe LED leuchten, passiert aber nichts. Wie kann ich herausfinden welche MAC adresse ich nehmen soll?

Ich habe auch webduino probiert und nix geht
« Last Edit: March 06, 2013, 01:20:42 pm by skorpi08 » Logged

Arduino UNO, Ethernet Shield, Keypad Shield
1284p, Arduino MEGA.

Offline Offline
Full Member
***
Karma: 1
Posts: 197
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Welche lokale IP hat dein Rechner denn?
Ich würde abhängig von deiner Router-Konfiguration eine IP wie z.B. 192.168.x.y nehmen, wobei x die gleiche Zahl wie bei deiner lokalen IP sein muss
und y eine noch nicht verwendete Zahl in dem im Router eingestellten Wertebereich (max. 0-255).
Logged

Cloppenburg
Offline Offline
God Member
*****
Karma: 23
Posts: 800
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Fritzbox hat die 192.168.178.1

Rechner hat .175
Logged

Arduino UNO, Ethernet Shield, Keypad Shield
1284p, Arduino MEGA.

Germany, Osnabrück
Offline Offline
God Member
*****
Karma: 25
Posts: 572
E-Technik Student - Master
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die Gelbe Led sollte leuchten sobald du das Netzwerkkabel mit der Fritzbox verbindest. Wenn hier etwas nicht leuchtete, stimmt etwas mit der Hardware oder dem Netzwerkstack nicht. Überprüf das zuerst.
Logged

Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1658
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

wenn sonst keine geräte dranhängen, die 177 haben könnten, ist das ok.
unter windows mußt Du die firewall abschalten.
wenn die verbindung dann geht, kannst Du sie wieder aufdrehen und versuchen, sie so zu konfigurieren, daß es geht. aber erstmal verbindung ohne firewall, um andere fehler auszuschließen.

gruß stefan
Logged

Pages: [1] 2 3   Go Up
Jump to: