Jquery 如何将数据从我的网站发送到我的Arduino netshield

Jquery 如何将数据从我的网站发送到我的Arduino netshield,jquery,html,arduino,Jquery,Html,Arduino,例如,我想通过网站界面打开或关闭LED,但我的主要问题是,每当我搜索解决方案时,每个人都是通过将NetShield本身作为服务器并从中托管网站来实现的,但我想在我自己的电脑上托管网站,当我点击一个按钮时,action将向Arduino发送一些数据,我将读取数据并打开LED 我试过使用jQuery发送HTTP POST请求,但通过仔细检查,屏蔽给出了HTTP响应405,在我阅读后,它似乎不允许修改请求,所以我试过使用HTTP GET,但当我单击按钮时,没有什么真正转到Arduino 顺便说一句,网

例如,我想通过网站界面打开或关闭LED,但我的主要问题是,每当我搜索解决方案时,每个人都是通过将NetShield本身作为服务器并从中托管网站来实现的,但我想在我自己的电脑上托管网站,当我点击一个按钮时,action将向Arduino发送一些数据,我将读取数据并打开LED

我试过使用jQuery发送HTTP POST请求,但通过仔细检查,屏蔽给出了HTTP响应405,在我阅读后,它似乎不允许修改请求,所以我试过使用HTTP GET,但当我单击按钮时,没有什么真正转到Arduino

顺便说一句,网络的一切都是正确的,每个端口/防火墙规则都是开放的

以下是网站的HTML:


农业系统

这是我的剧本:

jQuery(document).ready(function() { 
    $("#button-lamps-start").click(function() {
        console.log("test");
        $.get("http://192.168.5.100:80/", "test");
    });
    $("#button-lamps-stop").click(() => {
        alert(10); //for testing purposes
    });
});
这是Arduino的资料来源:

//TODO:测量真实土壤中湿度传感器的真实值
#包括
#包括
#包括
#包括
#包括
#包括
字节mac[]={
0xDE、0xAD、0xBE、0xEF、0xFE、0xED
};
//构造对象
Adafruit_TSL2561_Unified tsl=Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT,1);
Adafruit_SSD1306显示器(128、32和-1);
IPAddress localip(192168,5100);
ipAddressRemoteIP(192、168、5111);
以太网络客户端;
传感器事件;
#定义光传感器LED 22
#定义FanInStartBtn 23
#定义FanInStopBtn 25
#定义FanOutpartBTN 27
#定义端口号29
#定义扇入28
#定义扇形发光二极管36
#定义湿度传感器A8
#定义水位A9
#定义化学喷雾剂A10
#定义化学等级A11
#定义雨量传感器A12
无效设置(){
//调试温度
Serial.begin(9600);
//皮诺
pinMode(光传感器LED,输出);
pinMode(扇入、输出);
引脚模式(扇形输出,输出);
//品宁
pinMode(FanInStartBtn,输入);
pinMode(FanInStopBtn,输入);
pinMode(FANoutpartBTN,输入);
pinMode(风扇输出端BTN,输入);
pinMode(湿度传感器,输入);
pinMode(水位,输入);
//初始化以太网
Ethernet.begin(mac、remoteip);
序列号:println(“beg”);
Ethernet.setLocalIP(localip);
Serial.println(“设置ip”);
Serial.println(Ethernet.localIP());
如果(!client.connect(remoteip,80)){
序列号。打印号(“noo”);
做{
Serial.println(“重试”);
client.connect({192168,5111},80);
}而(!client.connected());
}
序列号。打印号(“con”);
//初始化显示
显示开始(SSD1306_SWITCHCAPVCC,0x3C);
//初始传感器
tsl.begin();
tsl.enableAutoRange(真);
tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS);
}
#定义w(x)client.println(x);
void循环(){
光传感器(光传感器LED,10);
FanControls(FanInStartBtn、FanInStopBtn、FanInLED);
FanOutStartBtn、FanOutshopBTN、FanOutLED控制;
延迟(250);
if(client.available()){
对于(int i=0;i
网站位于何处并不重要(在Arduino上、本地PC上或任何地方),但Arduino仍然必须充当服务器来监听传入事件。 Arduino现在被设置为客户端(
EthernetClient;
),这意味着:将数据发送到服务器(不存在)


将其设置为接收事件。

如果要将数据从HTML页面(Web服务器)发送到Arduino,有两种不同的解决方案:

  • 在Arduino端实现一个简单的web服务器,它接受HTTP请求
  • 使用aRest创建一个简单的API,从HTML端调用
  • 我在我的博客上写了一篇简单的教程,介绍了如何将aRest与Arduino结合使用,并举了一个类似您的例子:

    如果您更喜欢使用Web服务器,可以看看这个示例,它展示了如何构建一个简单的Web服务器来接受HTTP请求


    希望这能对您有所帮助。

    发布arduino程序。@Pradeep是的,很抱歉,我已经更新了线程。事实上,这很重要,因为我没有世界上所有的内存,网站也不小,但最终我自己解决了。我制作了一个web服务器,让arduino向它发送http请求。网站和web服务器之间有区别。web服务器只侦听传入事件,并且可以(不需要!)使用网站进行响应。与客户机相比,服务器的优势在于,服务器只等待请求,而客户机不断地请求信息。