1. 程式人生 > >WiFi-ESP8266入門開發(十五)-HTTP客戶端

WiFi-ESP8266入門開發(十五)-HTTP客戶端

注:對於ESP8266開源技術感興趣的可以加群,我們一起探索交流學習,群號:579932824。群名:ESP8266開源技術交流群。

介紹

HTTP(超文字傳輸​​協議)是標準的應用協議,用作客戶端和伺服器之間的請求 - 響應協議。

HTTP客戶端有助於傳送HTTP請求並從HTTP伺服器接收HTTP響應。

廣泛應用於家庭自動化等基於物聯網的嵌入式應用,遠端分析汽車發動機引數監測等。

NodeMCU是一個開源的物聯網平臺。這是一個執行在Espressif Systems的ESP8266 Wi-Fi SoC上的韌體。它具有可用的物聯網應用程式易於構建的無線網路。

NodeMCU HTTP客戶端

我們來為NodeMCU編寫一個基於C / C ++的Arduino程式作為HTTP Client,然後獲取或推送資料到thingspeak伺服器。

在這裡,我們使用Thingspeak伺服器來進行HTTP Client演示。

Thingspeak是一個開放的IOT平臺,任何人都可以從他們的感測器裝置視覺化和分析實時資料。另外,我們還可以用事件處理中的Matlab程式碼對遠端裝置釋出的資料進行資料分析。要了解更多有關事情的資訊,請參閱連結 

只需註冊並建立channel.We有以下的頻道,並在Thingspeak寫資料傳送和接收的關鍵。

  • 頻道ID = 309236
  • 金鑰= 1EYZIS5OCRJSKZHG

注意:   不要忘記在你的事件通道上勾選頻道設定選項中的公開區域。

Arduino Sketch的HTTP客戶端獲取

#include <ESP8266WiFi.h>
/*Put your SSID & Password*/ const char* ssid = "ssid"; // Enter SSID here const char* password = "password"; //Enter Password here const char* server = "api.thingspeak.com"; /* Set GET link with channel ID */ const char* _getLink = "http://api.thingspeak.com/channels/309236/feeds/last.txt"; WiFiClient client; void
setup() { Serial.begin(9600); delay(1000); Serial.println("Connecting to "); Serial.println(ssid); //connect to your local wi-fi network WiFi.begin(ssid, password); //check wi-fi is connected to wi-fi network while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); } void loop() { if (client.connect(server,80)) // "184.106.153.149" or api.thingspeak.com { String getStr = _getLink; client.print("GET "+getStr+"\n"); client.print("HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n\n\n"); while(client.available()){ char c = client.read(); Serial.print(c); } Serial.println(""); } client.stop(); Serial.println("Waiting…"); delay(10000); }

HTTP獲取的輸出視窗

下面是Arduino序列監視器視窗,顯示從事件處理伺服器接收到的最新更新的資料。

thingspeak http get

Arduino Sketch for HTTP Client Post

#include <ESP8266WiFi.h>

String apiKey = "1EYZIS5OCRJSKZHG";	// replace with your channel’s thingspeak API key,

/*Put your SSID & Password*/
const char* ssid = "ssid";		// Enter SSID here
const char* password = "password";	// Enter Password here

const char* server = "api.thingspeak.com";
int Sample;

WiFiClient client;

void setup() {
  Serial.begin(9600);
  delay(1000);

  Serial.println("Connecting to ");
  Serial.println(ssid);

  //connect to your local wi-fi network
  WiFi.begin(ssid, password);

  //check wi-fi is connected to wi-fi network
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
}

void loop() 
{
  if (client.connect(server,80))     // "184.106.153.149" or api.thingspeak.com
  { 
    String postStr = apiKey;
    postStr +="&field1=";
    postStr += String(Sample++);
    postStr += "\r\n\r\n";

    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);
  }
  client.stop();

  Serial.println("Waiting…");       // thingspeak needs minimum 15 sec delay between updates

  delay(20000);
}

HTTP Post的輸出視窗

下面是事件處理伺服器的輸出視窗。

thingspeak http post

相關推薦

WiFi-ESP8266入門開發()-HTTP客戶

注:對於ESP8266開源技術感興趣的可以加群,我們一起探索交流學習,群號:579932824。群名:ESP8266開源技術交流群。 介紹 HTTP(超文字傳輸​​協議)是標準的應用協議,用作客戶端和伺服器之間的請求 - 響應協議。 HTTP客戶端有助於傳送HTTP請求

WiFi-ESP8266入門開發(七)--MQTT客戶

注:對於ESP8266開源技術感興趣的可以加群,我們一起探索交流學習,群號:579932824。群名:ESP8266開源技術交流群。 介紹 MQTT是基於輕量級的基於釋出 - 訂閱的訊息傳遞協議。 它比其他基於請求響應的API(如HTTP)更快(更快)。 它是基於TC

WiFi-ESP8266入門開發(一)-使用PWM

注:對於ESP8266開源技術感興趣的可以加群,我們一起探索交流學習,群號:579932824。群名:ESP8266開源技術交流群。 介紹 脈寬調製(Pulse Width Modulation,PWM)是在保持波的頻率不變的同時改變脈寬的技術。 PWM生成

WiFi-ESP8266入門開發(九)--手機APP控制和透傳

注:對於ESP8266開源技術感興趣的可以加群,我們一起探索交流學習,群號:579932824。群名:ESP8266開源技術交流群。 1.手機控制         通過上一篇我們使用了電腦tcp除錯軟體來控制繼電器,今天我們使用手機來控制繼電器,這裡同樣是使用手機除錯

WiFi-ESP8266入門開發(十三)-使用SPI

注:對於ESP8266開源技術感興趣的可以加群,我們一起探索交流學習,群號:579932824。群名:ESP8266開源技術交流群。 介紹 序列外設介面(SPI)是摩托羅拉公司最初啟動的匯流排介面連線協議。 SPI介面使用四根線進行通訊。因此也被稱為四線序列通訊協議。

WiFi-ESP8266入門開發(一)-Arduino環境搭建

對於ESP8266開源技術感興趣的可以加群,我們一起探索交流學習,群號:579932824。群名:ESP8266開源技術交流群。 這一章將描述ESP8266的效能與指標,以及開發環境的搭建。 ESP8266是2015年推出的一款Wifi模組,準確來說是集成了Wifi功能的

WiFi-ESP8266入門http(3-1)網頁認證上網-post請求(原教程)

nts 時空 logo 全能 targe work sig html urn 教程:http://geek-workshop.com/thread-37484-1-1.html 源碼:鏈接:https://pan.baidu.com/s/1yuYYqsM-WSOb0Aby

ESP8266 -- lua開發學習之路 (TCP客戶透傳)

透傳本人理解就是把串列埠接收的資料通過網路傳送給伺服器,  客戶端接收的資料通過串列埠再發送出去 ESP8266充當一個通道把網路資料與串列埠聯絡起來 init.lua檔案: --[[ init.lua檔案中不用做過多的操作初始化和載入檔案... ]] gpio.mode

Spring入門第二

struct java 映射 構造器 into named put per mysq 使用具名參數 直接看代碼: db.properties jdbc.user=root jdbc.password=logan123 jdbc.driverClass=com.mysql.

【網絡爬蟲入門02】HTTP客戶庫Requests的基本原理與基礎應用

多應用 多服務器 技術學 用戶 iis unicode licensed content sed 【網絡爬蟲入門02】HTTP客戶端庫Requests的基本原理與基礎應用 廣東職業技術學院 歐浩源 1、引言 實現網絡爬蟲的第一步就是要建立網絡連接並向服務器或網頁等

MyBatis基礎入門》ResultMap子元素(collection)

MyBatis基礎入門《十五》ResultMap子元素(collection) 描述:   見《MyBatis基礎入門《十四》ResultMap子元素(association )》      》》collection     >> 複雜型別集合,一對多     >> 內部巢

嵌入式Linux開發——()移植YAFFS檔案系統

一、移植YAFFS檔案系統 1)YAFFS檔案系統的介紹     ①YAFFS(yet another flash file system)是一種類似於JFFS / JFFS2,專門為NAND Flash設計的嵌入式檔案系統,適用於大     &nbs

RabbitMQ入門教程():普通叢集和映象叢集

普通叢集 推薦一篇優秀的文章: 映象叢集 映象叢集的特點:所有節點的訊息都會進行同步。RabbitMQ是沒有中心的。 Rabbit映象功能,需要基於rabbitmq策略來實現,政策是用來控制和修改群集範圍的某個vhost佇列行為和Exchan

用libevent開發一個http服務,附帶一個curl http客戶

對http互動較為陌生,所以最近寫了兩個小demo,一個http server 和一個http client,對於http server,很多人推薦使用libevent。http server:#include <stdlib.h> #include <st

SpringBoot專案開發():redisson實現分散式鎖

1.為什麼要使用分散式鎖?       在分散式場景下為了保證資料最終一致性。在單程序的系統中,存在多個執行緒可以同時改變某個變數(可變共享變數)時,就需要對變數或程式碼塊做同步(lock—synchronized),使其在修改這種變數時能夠線性執行消除併發修

Java微信公眾平臺開發()--微信JSSDK的使用

轉自:http://www.cuiyongzhi.com/post/63.html 在前面的文章中有介紹到我們在微信web開發過程中常常用到的 【微信JSSDK中Config配置】 ,但是我們在真正的使用中我們不僅僅只是為了配置Config而已,而是要在我們的專案中真正去使用微信JS-S

常用Lua開發庫redis、mysql、http客戶

文章來源: 前言 對於開發來說需要有好的生態開發庫來輔助我們快速開發,而Lua中也有大多數我們需要的第三方開發庫如Redis、Memcached、Mysql、Http客戶端、JSON、模板引擎等。一些常見的Lua庫可以在github上搜索,下面給出連結:

微控制器入門學習 STM32微控制器學習二 電容觸控按鍵

由電容充放電公式x=V1∗[1−e−tRC]x=V1∗[1−e−tRC]可知:同樣的條件下,電容越大,充電時間越長。 1、電容觸控按鍵原理 電容觸控按鍵原理如下圖: R:外接電容充放電電阻。 Cs:TPAD和PCB間的雜散電容。 Cx:手指按下

ESP8266與NodeMCU開發(三)客戶

這一節將講解如何將ESP8266程式設計設定為一個網頁客戶端,訪問www.example.com,傳送請求並獲取返回資料,通過串列埠打印出來 流程如下: 1.首先需要連線上路由器或者任意AP,從而獲得能訪問外網的途徑,這一點在上一章節中已經說明。 相關程式碼: #def