Arduino und MYSQL

Hallo ich bin ein Anfänger wenn es um Arduino geht. Ich suche ein script mit dem ich folgendes machen kann:

  • Wenn Eingang x auf High dann schreibe in die mysql db eine 1. wenn eingang x auf low schreibe in db 0.
  • Einfache Erweiterung auf mehrere Eingänge.
  • Direktes Mysql ohne php
  • Für jeden eingang eigne spalte

Ich habe es schon mit dem Mysql connector und dem bastic_insert versucht aber da bekomme ich immer ein Connection faild hoffe da hat jemand eine idee oder ein scrpit wie ich das schaffen kann.

Direktes Schreiben in MySQL geht nur, wenn Du die DB selbst hostest oder Dein Provider den Zugriff von fremden Rechnern aus erlaubt.

Für den Zugriff gibt es hier eine Lib.

Gruß Tommy

Tommy56:
Direktes Schreiben in MySQL geht nur, wenn Du die DB selbst hostest oder Dein Provider den Zugriff von fremden Rechnern aus erlaubt.

Für den Zugriff gibt es hier eine Lib.

Gruß Tommy

Die Lib. hab ich schon entdeckt aber sie noch nicht zum laufen bekommen bei dem basic_insert bekomme ich immer die fehlermeldung das er sich nicht verbinden kann auf meinen lokalen mysql server.

Hast Du dem Benutzer in der DB-Administration bei Host % (=alle) oder wenigstens die IP Deines Arduino gegeben? Normalerweise steht da localhost drin.

Gruß Tommy

Tommy56:
Hast Du dem Benutzer in der DB-Administration bei Host % (=alle) oder wenigstens die IP Deines Arduino gegeben? Normalerweise steht da localhost drin.

Gruß Tommy

Ja der Benutzer hat alle rechte geht aber trotzdem nicht.
Bekomme immer noch folgendes:

Connecting...
Connection failed.
Recording data.

Benutze folgendes script:

#include <Ethernet.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress server_addr(192,168,2,106);  // IP of the MySQL *server* here
char user[] = "root";              // MySQL user login username
char password[] = "-";        // MySQL user login password

// Sample query
char INSERT_SQL[] = "INSERT INTO test_arduino.hello_arduino (message) VALUES ('Hello, Arduino!')";

EthernetClient client;
MySQL_Connection conn((Client *)&client);

void setup() {
  Serial.begin(115200);
  while (!Serial); // wait for serial port to connect
  Ethernet.begin(mac_addr);
  Serial.println("Connecting...");
  if (conn.connect(server_addr, 3306, user, password)) {
    delay(1000);
  }
  else
    Serial.println("Connection failed.");
}


void loop() {
  delay(2000);

  Serial.println("Recording data.");

  // Initiate the query class instance
  MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
  // Execute the query
  cur_mem->execute(INSERT_SQL);
  // Note: since there are no results, we do not need to read any data
  // Deleting the cursor also frees up memory used
  delete cur_mem;
}

Das Create-Statement gibst Du aber direkt an die DB, nicht über den Arduino.

"recorded timestamp" kenne ich nicht.

Warum baust Du die Tabelle nicht selbst nach Deinen Bedürfnissen auf?

Für den Timestamp könnte man z.B. ein Feld Zeitpunkt vom Typ Timestamp verwenden und als Defaultwert "CURRENT_TIMESTAMP" eintragen oder im Insert als Value NOW().

Gruß Tommy

Gib Dir doch mal Deine localIP auf Serial aus, um zu prüfen, ob Du überhaupt mit dem Netz verbunden bist.

Gruß Tommy

Tommy56:
Gib Dir doch mal Deine localIP auf Serial aus, um zu prüfen, ob Du überhaupt mit dem Netz verbunden bist.

Gruß Tommy

Bekomme als ip immer 0.0.0.0 oder 127.127.127.127
Habe mein ethernetschield nach folgendem plan angeschlossen

Du hast also keine Netzwerkverbindung.

Du hast das Ethernet-Modul (nicht Ethernetshield) an 3,3V geklemmt. Bist Du sicher, das das funktioniert?

Hänge mal einen Link zu Deinem Ethernetmodul mit ran. Welchen Chip hat es?

Gruß Tommy

Tommy56:
Du hast also keine Netzwerkverbindung.

Du hast das Ethernet-Modul (nicht Ethernetshield) an 3,3V geklemmt. Bist Du sicher, das das funktioniert?

Hänge mal einen Link zu Deinem Ethernetmodul mit ran. Welchen Chip hat es?

Gruß Tommy

enc28j60
(Enc28j60 ethernet lan network module for 51 spi avr pic lpc stm32 development board Sale - Banggood.com sold out-arrival notice-arrival notice)

SCraft5k:
enc28j60
(Enc28j60 ethernet lan network module for 51 spi avr pic lpc stm32 development board Sale - Banggood.com sold out-arrival notice-arrival notice)

Das ist kein Link, es ist eine URL.

Ein LINK ist etwas was man anklicken kann und auf dioe URL weiterleitet.

Dann hast du die falsche lib. Für das modul ksnnst du nicht die normale nehmen, die ist für den W5100

Nimm die UIPEthernet von Norbert, die ist befehlskompatibel mit der normalen

Mit dem ENC28J60 kann es mit der MySQL-Lib evtl. schon eng mit dem Speicher werden, da dieses Teil vieles im Speicher des Arduino abhandelt, was der W5100 intern regelt. Dieses Teil ist die schlechtest mögliche Version der Ethernetanbindung.

Gruß Tommy

Tommy56:
ist die schlechtest mögliche Version der Ethernetanbindung.

Aber die billigste mit rj45.

Bin aber davon wieder weg, weil sich das Ding alle paar Tage aufgehängt hat.Gleicher Code mit W5100 Modul läuft und läuft und läuft

ElEspanol:
Dann hast du die falsche lib. Für das modul ksnnst du nicht die normale nehmen, die ist für den W5100

Nimm die UIPEthernet von Norbert, die ist befehlskompatibel mit der normalen

Wenn ich die UIPEthernet Lib nehme funktionier der mysql_connector aber nichtmehr richtig bekomme nur noch fehlermeldungen bei dem basic_insert script.

Du wirst die Lib aber dennoch wechseln müssen!
Der ENC muss schon unterstützt werden.....

Tipp:
Der Kopf ist rund, damit das Denken die Richtung wechseln kann.

  • Direktes Mysql ohne php

Gibt es dafür einen besonderen Grund?
Außer, dass du dir unnötige Probleme einhandeln willst?

Ich nehme immer ein php Script und füge ein Passwort mit als Parameter an. Bringt zwar nur bedingt was, da kein https, aber besser als gar nichts. Und wenns falsch ist, braucht der Server ja nicht zu antworten.
Man kann mit php Skript auch einfacher testen.

combie:
Du wirst die Lib aber dennoch wechseln müssen!
Der ENC muss schon unterstützt werden.....

Tipp:
Der Kopf ist rund, damit das Denken die Richtung wechseln kann.

Gibt es dafür einen besonderen Grund?
Außer, dass du dir unnötige Probleme einhandeln willst?

Ja für direktes mysql gibt es einen grund da ich von php kein plan habe wie ich da einen wert in die mysql bekomme.

SCraft5k:
Wenn ich die UIPEthernet Lib nehme funktionier der mysql_connector aber nichtmehr richtig bekomme nur noch fehlermeldungen bei dem basic_insert script.

Dann musst Du Dir wohl ein anderes Ethernetshield/-modul mit dem W5100 kaufen oder die Fehlermeldungen analysieren. Hast Du die Ethernet.h raus genommen?

Gruß Tommy