2015-10-02 180 views
0

我有一個非常簡單的Arduino項目,我正在努力。
我想使用帶有以太網盾的Arduino更新MySQL中的條目。我正在使用WAMP作爲MySQL服務器。最終,我想每5分鐘將溫度讀數發佈到MySQL服務器,但那不是我目前關心的問題。我不是Arduino或MySQL的老手,所以我認爲id問Pro。非常簡單的Arduino更新SQL條目

WAMP IP地址:192.168.0.89
Arduino的IP地址:192.168.0.177

MySQL數據庫。
數據庫用戶名: 「根」
數據庫密碼: 「」
數據庫名稱: 「WordPress的」
數據庫表: 「讀數」
表字段來更新: 「電壓1」
查詢:

"UPDATE readings SET voltage1='12v' WHERE device_id=T1;"

Arduino的草圖:

#include "SPI.h" 
#include "Ethernet.h" 
#include "sha1.h" 
#include "mysql.h" 

byte mac_addr[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x69, 0xAC }; 
byte ip_addr[] = { 192, 168, 0, 177 }; 
byte dns_addr[] = { 192, 168, 0, 37 }; 
byte gateway_addr[] = { 192, 168, 0, 37 }; 
byte netmask[] = { 255, 255, 255, 0 }; 
IPAddress server_addr(192, 168, 0, 89); 

Connector my_conn; // The Connector/Arduino reference 

char user[] = "root"; 
char password[] = ""; //the credentials are correct in my code 
char INSERT_SQL[] = "UPDATE readings SET voltage1='99' WHERE device_id=T1;"; 

void setup() { 
Serial.begin(115200); 
Ethernet.begin(mac_addr, ip_addr, dns_addr, gateway_addr, netmask); //Yes, I know this is way more than necessary, but just to play it safe 
delay(1000); 
Serial.print("IP: "); 
Serial.println(Ethernet.localIP()); // debugging 
Serial.println("Connecting..."); 
if (my_conn.mysql_connect(server_addr, 3306, user, password)) //connect to database 
{ 
delay(500); 
my_conn.cmd_query(INSERT_SQL); //Possible problem here, i want to update not insert. 
Serial.println("Query Success!"); 
} 
else 
Serial.println("Connection failed."); 
} 

void loop() { 
} 
: ( https://launchpad.net/mysql-arduino從獲得)

串行監視器:

IP: 192.168.0.177
Connecting...

它不會永遠連接。

+0

[Arduino數據庫連接]的可能重複(http://stackoverflow.com/questions/30241550/arduino-to-database-connection) –

+1

我不明白爲什麼我們擔心更新部分,當你甚至無法連接... –

回答

0

我可以告訴你,你的SQL可能是錯誤的。

UPDATE readings SET voltage1='12v' WHERE device_id=T1; 

大概應該是

UPDATE readings SET voltage1='12v' WHERE device_id='T1'; 

對不起,我不知道像有關的其他問題。

關於

//Possible problem here, i want to update not insert. 

INSERT_SQL是一個變量的只是名字,你可以使用BOB作爲名稱,它應該仍然可以工作,將其重命名查詢和放鬆。

官方的例子看起來類似代碼:http://bazaar.launchpad.net/~chuck-bell/mysql-arduino/trunk/view/head:/examples/dht22_sensor_node.cpp

另一件事是確定的3306端口打開服務器上?

我相信有一個安全措施,防止每個人,但本地主機運行mysql命令。

應打開端口+ mysql應允許來自不是127.0.0.1的IP連接。

+0

謝謝,是的,我犯了一個錯字。 – Venom791

+0

查看已更新的答案,並附上一些可能的安全措施。 –

+0

是的,港口是開放的。我會檢查任何安全措施並報告回來,謝謝。 – Venom791