INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Über PHP Werte ändern
14.05.2014, 11:44
Beitrag #9
RE: Über PHP Werte ändern
Hallo Thorsten,

genau an sowas habe ich auch schon gedacht. Halt nur der Aspekt zum PHP Programmieren fehlt.


Nur zur Information, die Auswertung und alle Einstellungen laufen über einen Raspberry (als Server) , also Daten speichern und über PHP halt ändern.

Als Beispiel: Arduino ließt Temperaturwerte ein und gibt diese dem Raspberry,
Raspberry speichert die Daten und gibt dem Arduino einen SOLL Wert mit.
Arduino vergleich IST und SOLL und führt darauf verschiedene Handlungen aus.

Werde nachher mal den Code einspielen, schon mal vielen Dank für die Hilfe. Manchmal brauch man nur einen Denk-Anstoß.


Mit freundlichen Grüßen

Robin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.05.2014, 19:44
Beitrag #10
RE: Über PHP Werte ändern
Code:
while(finder.findUntil("var", "\n\r"))       {      
    int  num = finder.getValue();    
    int  val = finder.getValue();      
    switch num {
        case 1:
           VAR1 = val;
           break;
       case 2:
           VAR2 = val;
           break;
// Default.........
   }
}

Wenn ich dies in meinem Sketch einpflege bekomme ich Fehlermeldungen wie:

Code:
In function 'void serveranbindung()':
error: 'finder' was not declared in this scope
error: expected `(' before 'num'
error: case label not within a switch statement
error: 'returnvalue' was not declared in this scope
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.05.2014, 19:46
Beitrag #11
RE: Über PHP Werte ändern
Hi,
ich bin davon ausgegangen, dass Dein Coding so aussieht, wie in dem einen Link. Stell' doch mal Dein Coding hier rein, dann kann man Dir vielleicht helfen.
100% stimmt mein Coding wahrscheinlich sowieso nicht...
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.05.2014, 20:58
Beitrag #12
RE: Über PHP Werte ändern
Hallo Thorsten,

also den Link hatte der andere Kollege gepostet. Ich speichere meine Homepage und alle Daten auf einem Raspberry.

Hier mein Code zum testen:

Code:
#include <SPI.h>
#include <Ethernet.h>


EthernetServer server(80);

byte mac[] = { 0x00, 0x00, *************** };
byte ip[] = { 192, 168, ***, *** };
byte gateway[] = { 192, 168, ***, *** };
byte subnet[] = { 255, 255, 255, 0 };
byte serverip[] = { 192, 168, ***, ***};


int VAR1 = 0;
int LED = 9;


void setup ()
{
   pinMode (LED, OUTPUT);
  
   Serial.begin(9600);
   Serial.flush();
  
   Ethernet.begin(mac, ip);
  
   delay(1000);
}


void loop ()
{
   Serial.println(VAR1);
   delay(1000);
   if (VAR1 == 5)
   {
     digitalWrite(LED, HIGH);
   }
  
   if (VAR1 == 9)
   {
   digitalWrite(LED, LOW);
   }

   serveranbindung();
}


void serveranbindung()
{
EthernetClient client = server.available();

   if(client)
   {
      {
       char typ = client.read();
       int  var = client.read();
       int  val = client.read();

        if(typ == 'D')
       {
         digitalWrite(var, val);
         Serial.print(" - D"+String(var));
       }

       else if(typ == 'A')
       {
         analogWrite(var, val);
         Serial.print(" - A"+String(var));
       }

       else Serial.print(" - Falscher Typ");

       if(val==1) Serial.println(" ein"); else Serial.println(" aus");
     }
   }
  }

Von der Seite (http://fluuux.de/2012/11/daten-senden-un...zogerung/) habe ich das mit den Pins setzen übernommen und das funktioniert auch.

Vllt. sollte ich nochmal von vorne anfangen, habe auch schon an eine Variablen Deklaration via SQL gedacht, dass diese dann an den Arduino übermittelt werden...


Thorsten, erstmal vielen Dank an dich, dass du so hilfsbereit bist!
Schönen Abend noch.

Mit freundlichen Grüßen

Robin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.05.2014, 22:42
Beitrag #13
RE: Über PHP Werte ändern
Naja, das client.read() liest halt immer nur einzelne Bytes. Das ist ein bisschen zufällig, dass das funktioniert. Experimentiere mal etwas mit verschiedenen URLs rum und schreibe coding, dass die Dir in Teile zerlegt und in Zahlen wandelt. (Das ganze auf Serial ausgeben...)

Ich mache das z.B. so:
Code:
void handleNetwork(){
  // listen for incoming clients
  EthernetClient client = server.available();
  if(!client) return;

#if defined(DEBUGMODE)      
  Serial.println("new network client");
#endif    

  // an http request ends with a blank line
  boolean currentLineIsBlank = true;
  char firstLine[50] = "";
  int index = 0;
  while (client.connected()) {
    if (client.available()) {
      char c = client.read();
#if defined(DEBUGMODE)  
      Serial.write(c);
#endif        
      // completely ignore /r
      if (c == '\r') continue;
      // If it isn't a new line, add the character to the buffer
      if (c != '\n') {
        currentLineIsBlank = false;
        if(index >= 0 && index < 49){
          firstLine[index] = c;
          index++;
          firstLine[index] = 0;
        }  
        // continue to read more data!
        continue;
      }
      // if you've gotten to the end of the line (received a newline
      // character) and the line is blank, the http request has ended,
      if (currentLineIsBlank) {
        // extract command
        char* command = 0;
        if(strlen(firstLine) <= 5){
          firstLine[0] = 0;
          command = firstLine;
        }
        else{
          command = firstLine + 5;
          int i = 0;
          for(; command[i] != 0 && command[i] != ' '; i++);
          command[i] = 0;
        };      
#if defined(DEBUGMODE)  
        Serial.println(command);
#endif  
        sendResponse(&client, &String(command));
        break;
      }
      // you're starting a new line and curtent line is not blank
      index = -1;
      currentLineIsBlank = true;
    }
  }
  // give the web browser time to receive the data (?)
  delay(10);
  // close the connection:
  client.stop();
#if defined(DEBUGMODE)
  Serial.println("client disonnected");
#endif  

};

Das extrahiert mir den command-String (also das nach dem "/" hinter der URL). Das kann man dann weiterverarbeiten. (In meinem Fall mit der Funktion sendResponse.) Wenn man die String-Klasse nutzt, dann geht das recht komfortabel, z.B.:
Code:
if(command->indexOf("set") == 2)
...bedeutet dass das Kommando so aussieht: xxset.... (mit xx = irgendwas).
oder
Code:
if(command->substring(5,8) == "tmp")
Bedeutet, dass "tmp" an den Stellen 5,6,7 steht.

Code:
int value = command->substring(8).toInt();
Das kannst Du jetzt vielleicht selbst erraten.

Damit müsstest Du jetzt sowas wie
<URL>/setVAR1=25
parsen können.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.05.2014, 08:53
Beitrag #14
RE: Über PHP Werte ändern
Hallo Thorsten,

werde es heute Abend mal ausprobieren. Eher schaffe ich es leider nicht. Schonmal Danke, aber leider stehe ich immer noch etwas auf dem Schlauch, hast du evtl. Lektüre dafür, die du empfehlen kannst? Möchte das auch verstehen, was dahinter steckt.


Mit freundlichen Grüßen

Robin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.05.2014, 09:21
Beitrag #15
RE: Über PHP Werte ändern
Hi,
Lektüre? Ich benutze immer google und lese dann, was ich finde. Mit der Zeit lernt man, wo was vernünftiges steht.
Ansonsten glaube ich, dass Du Deine Herangehensweise ein klein wenig ändern solltest:
1. Mach kleinere Schritte. Wenn irgendwas nicht funktioniert, wie Du Dir das vorstellst, dann lass so lange Sachen weg, bis das Programm etwas macht, was Du verstehst.
2. Baue viele Serial.print(...) ein, damit Du immer siehst, was das Ding gerade treibt. Wenn Du Dir 100% sicher bist, dass es klar ist, dann baue sie wieder aus.
3. Bevor Du den nächsten kleinen Schritt angehst, versuche Dein bisheriges Programm vollständig zu verstehen. Gib Dich niemals damit zufrieden, dass Dein Programm funktioniert.
4. Habe Geduld. Software-Entwicklung ist nur etwas für Leute mit hoher Frustrationstoleranz.
5. Wenn Du 1 bis 4 beachtet hast und trotzdem nicht weiterkommst, dann frag' im Forum. Versuche Deine Fragen so spezifisch wie möglich und zu einem so kleinen Teilthema wie möglich zu stellen.
HTH...
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.05.2014, 11:07
Beitrag #16
RE: Über PHP Werte ändern
Hallo Thorsten,

also kleine Schritte mache ich ja, habe mir nur gedacht, dass es wahrscheinlicher simpler ist, als es aussieht. Also die Netzwerkgeschichte.

Serial.print habe ich in meine Hauptprojekte immer mit drinnen, alleine um Fehlerquellen zu suchen. (Programmabläufe anzeigen etc.)

Werde erstmal die Beispiele von Arduino.cc durchgehen und wahrscheinlich dann hier erneut Fragen stellen.

Mit dem Programm verstehen - ist auch in meinem Interesse, ich möchte Niemands-Gedanken stellen. Nur manchmal brauch man einen Denkanstoß, damit es weiter geht.

Trotzdem vielen Dank und ich werde definitiv die Tage versuchen, alle Informationen umzusetzen.


Mit freundlichen Grüßen

Robin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Servo über Temperatur steuern querkopf71 3 70 07.12.2016 19:21
Letzter Beitrag: hotsystems
  Kommunikation über das WiFi-Shield Flap 3 234 07.11.2016 20:20
Letzter Beitrag: hotsystems
  Menü über Bluetooth Eingabe abwarten anwo 4 504 18.10.2016 08:59
Letzter Beitrag: Lolliball
  Daten über USB verarbeiten Felix91 10 326 12.10.2016 13:00
Letzter Beitrag: Tommy56
  Code mit Verifikation über Keypad & LCD machnetz 5 215 10.10.2016 15:01
Letzter Beitrag: torsten_156
  Arduino Steuern über eigne Homepage b3ta 8 401 16.08.2016 11:07
Letzter Beitrag: Pit
  Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern TimeMen 10 475 03.07.2016 09:00
Letzter Beitrag: Binatone
  Ausgabe druckt immer 2 Werte anstatt nur einen. Finde den Fehler nicht TimeMen 24 743 02.07.2016 14:18
Letzter Beitrag: hotsystems
  DUE-MEGA über I2C Verbinden HTO 0 222 22.05.2016 10:16
Letzter Beitrag: HTO
  Serial Monitor Eingabe über Code Maxi290997 4 522 12.05.2016 18:57
Letzter Beitrag: SkobyMobil

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste