精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

當(dāng)JavaScript 遇上物聯(lián)網(wǎng)(IoT)

開發(fā) 前端
如今,Javascript已經(jīng)在越來越多的領(lǐng)域攻城略地,web工程構(gòu)建,后端服務(wù)器開發(fā),三維圖像,AR,VR等等等。甚至,在近幾年我們也驚喜的發(fā)現(xiàn)已經(jīng)JS可以用來開發(fā)硬件設(shè)備。今天,就跟大家聊聊用JS進(jìn)行簡單物聯(lián)網(wǎng)開發(fā)的心得與體會。

[[203084]]

1995年,當(dāng)工作于 Netscape 的 Brendan Eich著手為Netscape Navigator 2.0 開發(fā)一個稱之為 LiveScript 的腳本語言時,沒有人會想到avascript將在今天的互聯(lián)網(wǎng)軟件開發(fā)中發(fā)揮重要作用。如今,Javascript已經(jīng)在越來越多的領(lǐng)域攻城略地,web工程構(gòu)建,后端服務(wù)器開發(fā),三維圖像,AR,VR等等等。甚至,在近幾年我們也驚喜的發(fā)現(xiàn)已經(jīng)JS可以用來開發(fā)硬件設(shè)備。今天,就跟大家聊聊用JS進(jìn)行簡單物聯(lián)網(wǎng)開發(fā)的心得與體會。

凡是可以用 JavaScript 來寫的應(yīng)用,最終都會用 JavaScript ——Atwood定律

什么是IOT

我們總說IOT,那到底什么是IOT?IOT是Internet of Things的縮寫,字面翻譯是“物體組成的因特網(wǎng)”,準(zhǔn)確的翻譯應(yīng)該為“物聯(lián)網(wǎng)”。物聯(lián)網(wǎng)(Internet of Things)又稱傳感網(wǎng),簡要講就是互聯(lián)網(wǎng)從人向物的延伸。

其實物聯(lián)網(wǎng)可以從兩個方向進(jìn)行拆分,即由“物”向“網(wǎng)”,或者是由“網(wǎng)”向“物”。由物向網(wǎng)可以理解為人跨越空間和自身條件的局限對物體進(jìn)行感知的過程。由“網(wǎng)”向“物”是人跨越空間對物體進(jìn)行控制的過程。

IoT應(yīng)用開發(fā)平臺簡介

在IoT應(yīng)用開發(fā)領(lǐng)域中,大家熟知的開發(fā)平臺主要有如下幾類:

  • 嵌入式操作系統(tǒng),包括VxWorks、FreeRTOS、LiteOS等;
  • 極客硬件平臺,包括樹莓派、Arduino等;
  • JavaScript IoT應(yīng)用開發(fā)平臺,包括Ruff、Tessel、JerryScript、Johnny-Five等。

嵌入式操作系統(tǒng),從功能的角度上來說,能夠滿足目前的絕大多數(shù)需求。但是:

  • 其入門門檻極高,開發(fā)者想要成為優(yōu)秀的嵌入式開發(fā)工程師,需要學(xué)習(xí)大量軟硬件知識。相較于軟件行業(yè),嵌入式領(lǐng)域的人才數(shù)量受到了限制。
  • 嵌入式領(lǐng)域在開發(fā)方法上已經(jīng)大幅度落后于整個行業(yè)的發(fā)展。敏捷軟件開發(fā)方法以及精益創(chuàng)業(yè)的理念,受到工具所限,在嵌入式領(lǐng)域極少得到應(yīng)用,所以該領(lǐng)域在工程方法上發(fā)展緩慢。
  • 這些操作系統(tǒng)的編程概念通常屬于專用領(lǐng)域,所以知識很難在行業(yè)中共享,開發(fā)者在行業(yè)中流動也相對困難,造成的結(jié)果是,嵌入式領(lǐng)域?qū)τ诂F(xiàn)代軟件開發(fā)理念的理解也整體上落后于軟件行業(yè)。

極客硬件平臺,其初衷是降低開發(fā)門檻,讓更多開發(fā)者得以進(jìn)入到硬件開發(fā)領(lǐng)域中。但是:

  • 它只是在操作方面的入門難度上在努力,而開發(fā)真正困難的部分在編程概念。對于大多數(shù)軟件開發(fā)者而言,難點在于硬件中的編程概念。各種各樣的接口及參數(shù),這是軟件開發(fā)者難于理解和掌握的。
  • 更關(guān)鍵的因素是,這些平臺只解決了原型開發(fā)的問題。開發(fā)者即便能夠通過它實現(xiàn)了一個產(chǎn)品原型,也很難將它用到真正的產(chǎn)品中。應(yīng)用到產(chǎn)品中,往往要重新設(shè)計硬件,這些平臺的優(yōu)勢就蕩然無存了。
  • 二者最本質(zhì)的復(fù)雜度在于其編程模型,對于軟件開發(fā)者來說,GPIO、I2C之類硬件接口完全是另一種語言,除了要了解接口的編程方法,還要針對每個硬件,閱讀其數(shù)據(jù)手冊,了解參數(shù)細(xì)節(jié)。

目前為止,諸位會想,IoT行業(yè)對軟件工程師簡直猶如另一個世界,一點都不友好。是的,很多人都是這么想的,于是,有人想用更高級的語言改變這個世界,這其中最為活躍的便是JavaScript社區(qū)。

本節(jié)內(nèi)容參考Ruff CTO 鄭曄的相關(guān)文章

JavaScript IoT應(yīng)用開發(fā)平臺

JavaScript IoT應(yīng)用開發(fā)平臺,其建設(shè)初衷是讓開發(fā)者能夠用JavaScript開發(fā)IoT應(yīng)用,一方面可以更好地構(gòu)建抽象,另一方面,可以將比較現(xiàn)代的開發(fā)方式引入到硬件研發(fā)中。JavaScript IoT應(yīng)用開發(fā)平臺目前主要分為幾大類:

  • 在硬件上運(yùn)行JavaScript,如JerryScript、Espruino等;
  • 提供硬件抽象能力,比如Tessel、Johnny-Five、Cylon.js等;
  • 面向生產(chǎn)的能力,如Ruff。

Ruff的優(yōu)勢

Ruff與Arduino相比更貼近網(wǎng)絡(luò),由于Arduino的誕生較早,標(biāo)準(zhǔn)開發(fā)板并沒有網(wǎng)絡(luò)通信方式,雖然可以通過擴(kuò)展的形式添加,但是上手略微復(fù)雜。而Ruff天生支持Wifi通信,使用Ruff進(jìn)行http通信和使用普通nodejs的http通信方式?jīng)]有什么區(qū)別,上手極為簡單。當(dāng)然,由于Arduino發(fā)布較早,而且一開始就為模塊化開發(fā)設(shè)計,感覺Arduino的第三發(fā)模塊相對簡單,就像搭積木一樣一層層安裝即可,而ruff的硬件模塊相對較少,生態(tài)和Arduino相比不是那么成熟完善。

[[203085]] 

Ruff與樹莓派相比更加貼近物聯(lián)網(wǎng)開發(fā)。樹莓派的本質(zhì)是個濃縮的但是相對完整的操作系統(tǒng),你在樹莓派上可以干任何事情,可以瀏覽網(wǎng)頁,可以編寫web服務(wù)端程序,當(dāng)然也可以直接編寫樹莓派的I/O接口(定時啟動咖啡機(jī)、給狗狗喂食。。。)而Ruff的功能相對簡單很多,簡單的可以認(rèn)為Ruff的功能是單片機(jī),部署各web server還有可能實現(xiàn),但是想訪問瀏覽器等圖形界面就不可能實現(xiàn)了,但是它的核心目標(biāo)就是針對硬件來編程,功耗更低效率更高。總而言之是兩者設(shè)計初衷的差異。樹莓派要做電腦,如果太弱了,很多功能做不了,而 Ruff 開發(fā)套件是為了做硬件應(yīng)用,太強(qiáng)了反而不能體現(xiàn)真實的場景。

Ruff上手

Ruff的入門上手極為簡單。通過官網(wǎng)教程我們可以迅速的使用Javascript寫出個簡單的點亮 

  1. 'use strict' 
  2.   
  3.  
  4. $.ready(function (error) { 
  5.  
  6.     if (error) { 
  7.  
  8.         console.log(error); 
  9.  
  10.         return
  11.  
  12.     }  
  13.   
  14.  
  15.     $('#led-r').turnOn();  //點亮小燈 
  16.  
  17. });  
  18.   
  19.  
  20. $.end(function () { 
  21.  
  22.     $('#led-r').turnOff(); 
  23.  
  24. });  

然后連接Ruff自帶wifi熱點。

 

通過無線網(wǎng)絡(luò),使用命令 rap deploy -s 將程序下載到開發(fā)板。整個過程極為簡單,自然。不比配置個前端工程復(fù)雜太多。

Ruff擁抱Internet

如果ruff只能簡單的開發(fā)小燈亮滅這樣的簡單程序,只能作為個玩具。而只用真正接入到廣闊的互聯(lián)網(wǎng)中才能實現(xiàn)真正意義上的“物聯(lián)網(wǎng)”。后面將介紹如何將ruff接入阿里云物聯(lián)網(wǎng)套件,實現(xiàn)信息的上報與獲取,實現(xiàn)由“物”向“網(wǎng)”的信息感知和由“網(wǎng)”向“物”的遠(yuǎn)程控制。

阿里云物聯(lián)網(wǎng)套件是阿里云專門為物聯(lián)網(wǎng)領(lǐng)域的開發(fā)人員推出的,其目的是幫助開發(fā)者搭建安全性能強(qiáng)大的數(shù)據(jù)通道,方便終端(如傳感器、執(zhí)行器、嵌入式設(shè)備或智能家電等等)和云端的雙向通信。全球多節(jié)點部署讓海量設(shè)備全球范圍都可以安全低延時接入阿里云IoT Hub,安全上提供多重防護(hù)保障設(shè)備云端安全,性能上能夠支撐億級設(shè)備長連接,百萬消息并發(fā)。物聯(lián)網(wǎng)套件還提供了一站式托管服務(wù),數(shù)據(jù)從采集到計算到存儲,用戶無需購買服務(wù)器部署分布式架構(gòu),用戶只需在web上配置規(guī)則即可實現(xiàn)采集+計算+存儲等全棧服務(wù)。總而言之,基于物聯(lián)網(wǎng)套件提供的服務(wù),物聯(lián)網(wǎng)開發(fā)者可以快速搭建穩(wěn)定可靠的物聯(lián)網(wǎng)平臺。

當(dāng)然各位看官可以訪問阿里云物聯(lián)網(wǎng)套件的產(chǎn)品詳情頁來探索物聯(lián)網(wǎng)套件的強(qiáng)大功能,阿里云 – 物聯(lián)網(wǎng)套件 – 產(chǎn)品詳情 

 

從架構(gòu)圖上我們也可以看出,紅色的消息發(fā)布通道即為我們前文談到的由“物”向“網(wǎng)”感知過程,而藍(lán)色的訂閱消息服務(wù)則是我們前文談到的由“網(wǎng)”向“物”的控制過程。

阿里云物聯(lián)網(wǎng)套件目前沒有官方的JS SDK。但是物聯(lián)網(wǎng)套件使用的MQTT協(xié)議是通用的物聯(lián)網(wǎng)通信協(xié)議,我們可以根據(jù)Java的SDK,接入阿里云產(chǎn)品的通用Openapi。

ruff程序代碼示例: 

  1. 'use strict'
  2.  
  3.   
  4.  
  5. var fs = require('fs'); 
  6.  
  7. var os = require('os'
  8.  
  9. var mqtt = require('mqtt'
  10.  
  11.   
  12.  
  13. var productKey = '填寫在阿里云物聯(lián)網(wǎng)套件中申請的productKey' 
  14.  
  15. var deviceName = '填寫在阿里云物聯(lián)網(wǎng)套件中申請的deviceName' 
  16.  
  17. var deviceSecret = '填寫在阿里云物聯(lián)網(wǎng)套件中申請的deviceSecret' 
  18.  
  19. var targetServer = "tcp://" + productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com:1883" 
  20.  
  21. var port = 1883 
  22.  
  23. var host = productKey + '.iot-as-mqtt.cn-shanghai.aliyuncs.com' 
  24.  
  25.   
  26.  
  27. var clientId = os.hostname(); 
  28.  
  29. var timestamp = (new Date()).valueOf() 
  30.  
  31. var mqttClientId = clientId + "|securemode=3,signmethod=hmacsha1,timestamp=" + timestamp + "|"
  32.  
  33. var mqttUsername = deviceName + "&" + productKey 
  34.  
  35. var content = 'clientId' + clientId + 'deviceName' + deviceName + 'productKey' + productKey + 'timestamp' + timestamp 
  36.  
  37.   
  38.  
  39. // var forge = require('forge'
  40.  
  41. // var hmac = forge.hmac.create(); 
  42.  
  43. // hmac.start('sha1', deviceSecret); 
  44.  
  45. // hmac.update(content); 
  46.  
  47. // var mqttPassword = hmac.digest().toHex(); 
  48.  
  49. // console.log(mqttPassword) 
  50.  
  51. // 目前ruff上無法使用crypto等包,可以自行實現(xiàn)一個hmac sha1加密 
  52.  
  53. var mqttPassword = '生成的秘文' 
  54.   
  55.  
  56. var puburl = "/" + productKey + "/" + deviceName + "/update" 
  57.  
  58. var suburl = "/" + productKey + "/" + deviceName + "/get"  
  59.   
  60.  
  61. var tsl_options = { 
  62.  
  63.   port: port, 
  64.  
  65.   host: host, 
  66.  
  67.   rejectUnauthorized: false
  68.  
  69.   keepalive: 100, 
  70.  
  71.   clientId: mqttClientId, 
  72.  
  73.   username: mqttUsername, 
  74.  
  75.   password: mqttPassword 
  76.  
  77.   
  78.  
  79. $.ready(function (error) { 
  80.  
  81.   if (error) { 
  82.  
  83.     console.log(error); 
  84.  
  85.     return
  86.  
  87.   }   
  88.  
  89.   var mqttClient = mqtt.connect(targetServer, tsl_options)   
  90.  
  91.    mqttClient.on('connect'function () { 
  92.  
  93.     console.log('********** Connected **********'
  94.  
  95.     //當(dāng)按鍵被按下時,通過mqtt協(xié)議,向阿里云mns服務(wù)發(fā)送消息  
  96.      
  97.  
  98.     $('#button').on('push'function () { 
  99.  
  100.       var data = { ts: (new Date()).valueOf(), deviceName: deviceName } 
  101.  
  102.       mqttClient.publish(puburl, JSON.stringify(data)) 
  103.  
  104.       console.log(JSON.stringify(data)) 
  105.  
  106.     }); 
  107.  
  108.     //level 0:最多一次的傳輸 
  109.  
  110.     //level 1:至少一次的傳輸 
  111.  
  112.     //level 2:只有一次的傳輸 
  113.  
  114.     mqttClient.subscribe(suburl, {qos:1})  
  115.    
  116.  
  117.     //當(dāng)接受到消息時控制小紅燈亮滅 
  118.  
  119.     mqttClient.on('message'function (topic, message) { 
  120.  
  121.       var msg = message.toString() 
  122.  
  123.       console.log('您接收到的消息為: ' + msg) 
  124.  
  125.       if(msg=='turn_on_led'){ 
  126.  
  127.         $('#led-r').turnOn(); 
  128.  
  129.         setTimeout(function(){ 
  130.  
  131.           $('#led-r').turnOff(); 
  132.  
  133.         }, 500) 
  134.  
  135.       } 
  136.  
  137.     }) 
  138.  
  139.   }) 
  140.  
  141.   mqttClient.on('error'function (error) { 
  142.  
  143.     console.log(error) 
  144.  
  145.   })    
  146.  
  147. });  

服務(wù)端代碼示例: 

  1. const RPCClient = require('@alicloud/pop-core').RPCClient; 
  2.  
  3. const MNSClient = require('@alicloud/mns'); 
  4.  
  5. const Base64 = require('js-base64').Base64;   
  6.  
  7. var iotClient = new RPCClient({ 
  8.  
  9.   accessKeyId: '阿里云accessKeyId'
  10.  
  11.   secretAccessKey: '阿里云accessKeySecret'
  12.  
  13.   endpoint: 'https://iot.cn-shanghai.aliyuncs.com'
  14.  
  15.   apiVersion: '2017-04-20' 
  16.  
  17. });    
  18.  
  19. var mnsClient = new MNSClient('阿里云賬戶id', { 
  20.  
  21.   region: 'cn-shanghai'
  22.  
  23.   accessKeyId: '阿里云accessKeyId'
  24.  
  25.   accessKeySecret: '阿里云accessKeySecret'
  26.  
  27. });    
  28.  
  29. const queueName = 'aliyun-iot-xGEDKBE*****' //開通阿里云物聯(lián)網(wǎng)套件生成MNS消息隊列 
  30.  
  31. //從隊列中消費消息 
  32.  
  33. setInterval(async ()=>{ 
  34.  
  35.   try{ 
  36.  
  37.     var receiveRes = await mnsClient.receiveMessage(queueName) 
  38.  
  39.     var deleteRes = await mnsClient.deleteMessage(queueName, receiveRes.body.ReceiptHandle); 
  40.  
  41.     var payload = JSON.parse(Base64.decode(receiveRes.body.MessageBody)) 
  42.  
  43.     var data = Base64.decode(payload.payload) 
  44.  
  45.     console.log('從IoT設(shè)備接受到的數(shù)據(jù)為:' + data) 
  46.  
  47.   } catch(err) { 
  48.  
  49.     console.log(err) 
  50.  
  51.   } 
  52.  
  53. }, 500) 
  54.   
  55.  
  56. const productKey = '**********'    //阿里云物聯(lián)網(wǎng)套件productKey 
  57.  
  58. const deviceName = '**********'    //阿里云物聯(lián)網(wǎng)套件deviceName  
  59.   
  60.  
  61. const iotClientParams = { 
  62.  
  63.   ProductKey: productKey, 
  64.  
  65.   TopicFullName: `/${productKey}/${deviceName}/get`, 
  66.  
  67.   MessageContent: Base64.encode('turn_on_led'), 
  68.  
  69.  
  70.   
  71.  
  72. //向ruff發(fā)送消息 
  73.  
  74. setInterval(async ()=>{ 
  75.  
  76.   try{ 
  77.  
  78.     var sedRes = await iotClient.request('Pub', iotClientParams) 
  79.  
  80.   }catch(err){ 
  81.  
  82.     console.log(err) 
  83.  
  84.   } 
  85.  
  86. }, 2000)  

*附注:服務(wù)端程序無需購買阿里云的ECS,在本地即可測試,物聯(lián)網(wǎng)套件和MNS按量服務(wù),非生產(chǎn)環(huán)境下幾乎不會產(chǎn)生費用,注冊阿里云賬號即可使用。以上代碼示例寫的比較簡單,可以實現(xiàn)簡單的物聯(lián)網(wǎng)設(shè)備與服務(wù)端程序的雙向通信,拋磚引玉,期待大家一起實踐起來! 

責(zé)任編輯:龐桂玉 來源: 前端大全
相關(guān)推薦

2017-06-28 11:34:55

銳捷 醫(yī)療 物聯(lián)網(wǎng)

2018-03-23 04:58:16

區(qū)塊鏈物聯(lián)網(wǎng)互聯(lián)網(wǎng)

2020-08-13 09:53:51

AIoT人工智能物聯(lián)網(wǎng)

2022-08-29 20:13:28

物聯(lián)網(wǎng)IPV6

2024-02-02 11:21:32

物聯(lián)網(wǎng)人工智能IoT

2023-07-25 10:01:06

物聯(lián)網(wǎng)人工智能

2020-04-11 21:53:00

物聯(lián)網(wǎng)IOT物聯(lián)網(wǎng)技術(shù)

2018-03-16 12:43:38

物聯(lián)網(wǎng)智慧城市智能

2021-12-30 15:16:33

物聯(lián)網(wǎng)IOT物聯(lián)網(wǎng)技術(shù)

2020-08-18 16:16:27

物聯(lián)網(wǎng)IOT物聯(lián)網(wǎng)技術(shù)

2018-06-01 15:33:22

Amazon物聯(lián)網(wǎng)IoT

2015-06-30 15:18:04

2019-04-22 07:49:45

2023-12-04 11:17:20

2024-05-17 12:53:54

IOT網(wǎng)關(guān)物聯(lián)網(wǎng)平臺物聯(lián)網(wǎng)

2018-12-24 21:40:12

2016-10-21 15:57:39

Rust編輯語言Fedora

2013-05-22 09:33:09

交互設(shè)計設(shè)計時間

2022-02-24 16:15:16

OpenHarmon鴻蒙OpenEuler
點贊
收藏

51CTO技術(shù)棧公眾號

黄网页免费在线观看| 可以免费看的av毛片| 日本午夜免费一区二区| 亚洲视频在线观看一区| 国产精品9999久久久久仙踪林| 国产乡下妇女做爰| 国产一区网站| 日韩三级视频在线看| 精品久久久久久久久久中文字幕| 成人免费在线观看| 国产福利不卡视频| 国产不卡av在线| 国产av 一区二区三区| 欧美a级网站| 欧美欧美欧美欧美首页| 国产精品久久久久7777| 波多野结衣在线网站| 国产成人一区在线| 国产精品久久久亚洲| 青娱乐国产在线| 精品大片一区二区| 精品欧美乱码久久久久久| 男女无套免费视频网站动漫| 黄色成人在线网| 亚洲国产精品ⅴa在线观看| 国产精品乱码一区二区三区| 岳乳丰满一区二区三区| 亚洲一区激情| 久久久免费电影| av最新在线观看| 黑人操亚洲人| 日韩大陆欧美高清视频区| 亚洲va在线va天堂va偷拍| 日韩伦理三区| 天天综合日日夜夜精品| 久久人妻无码一区二区| 国产高清视频在线播放| 99视频在线精品| 高清av免费一区中文字幕| 亚洲天堂中文字幕在线| 日韩高清不卡在线| 91sa在线看| 国产乡下妇女做爰毛片| 欧美成人国产| 超薄丝袜一区二区| 精品国产国产综合精品| 欧美3p视频| 中文字幕久热精品视频在线| www.av欧美| 亚洲另类av| 日韩精品视频在线播放| 亚州av综合色区无码一区| 7777精品| 亚洲成人av在线播放| 亚洲乱妇老熟女爽到高潮的片| 狂野欧美xxxx韩国少妇| 日韩一区二区麻豆国产| www.偷拍.com| 亚洲小说春色综合另类电影| 日韩欧美一区二区视频| 一级 黄 色 片一| 精品一区二区三区在线观看视频| 欧美高清视频在线高清观看mv色露露十八| 国产精品一区二区羞羞答答| 97精品国产综合久久久动漫日韩 | 在线观看免费国产视频| 亚洲精品免费观看| 38少妇精品导航| 日韩 国产 欧美| 99久久无色码| 欧美疯狂做受xxxx富婆| 久久av高潮av| 秋霞在线午夜| 亚洲成人av资源| 亚洲不卡中文字幕无码| 亚洲这里只有精品| 二区三区在线观看| 亚洲女女做受ⅹxx高潮| 欧美一级一区二区| 成年人在线观看视频免费| 成人国产精品一区二区免费麻豆| 欧美日韩亚洲国产综合| 国产精品探花在线播放| 卡通动漫国产精品| 亚洲色图50p| 女教师淫辱の教室蜜臀av软件| 91精品推荐| 久久久久久亚洲| 天天干天天操天天操| 国产原创一区二区三区| 国产日韩二区| 成年人在线看| 一区二区三区中文字幕精品精品 | 91亚洲va在线va天堂va国| 国产高清视频免费| 久久老女人爱爱| 一区中文字幕在线观看| 黑森林国产精品av| 欧美亚洲国产一区二区三区va| 国产九九九视频| 中文字幕伦av一区二区邻居| 久久国产精品久久久| 久久露脸国语精品国产91| 六月丁香综合在线视频| 精品日韩美女| 国产精品扒开做爽爽爽的视频| 亚洲第一激情av| 亚州精品一二三区| 狼人精品一区二区三区在线| 丝袜亚洲另类欧美重口| 久久夜色精品亚洲| 激情欧美一区二区| 日本一区二区三区四区在线观看| 欧美理论电影| 欧美日韩精品一区视频| 一边摸一边做爽的视频17国产| 久久人体视频| 5566日本婷婷色中文字幕97| 国产成人精品一区二三区四区五区| 久久亚洲综合色| 毛片av在线播放| 精品久久在线| 亚洲一二三在线| 日韩少妇高潮抽搐| 国产不卡在线一区| 亚洲精品永久www嫩草| 亚洲美女尤物影院| 精品日韩一区二区三区免费视频| 精品手机在线视频| 久久精品一区二区国产| 国产尤物91| 欧美黑人猛交的在线视频| 欧美日韩国产另类一区| 人妻少妇无码精品视频区| aa级大片欧美三级| 国产精品嫩草在线观看| 亚洲综合图区| 欧美高清精品3d| 国产午夜精品久久久久久久久| 国产农村妇女精品一区二区| 国产麻豆一区二区三区在线观看| 国产网友自拍视频导航网站在线观看| 欧美丝袜自拍制服另类| 中文字幕网站在线观看| 久久久久国产精品一区二区| 精品在线观看一区二区| 97在线超碰| 亚洲国产91精品在线观看| 久久成人在线观看| 成人午夜视频网站| 成人免费看片'免费看| 日本免费一区二区三区视频| 久久精品欧美视频| 国产精品爽爽久久久久久| 国产精品不卡在线| 免费在线观看污网站| 天天做天天爱天天综合网| 成人免费自拍视频| gogo在线观看| 精品剧情在线观看| 九九热国产视频| 成人免费不卡视频| 免费看又黄又无码的网站| 网曝91综合精品门事件在线| 欧美一级大胆视频| 欧美xxx.com| 欧洲中文字幕精品| 最新黄色av网址| 国产精品一色哟哟哟| 东北少妇不带套对白| 乱亲女h秽乱长久久久| 热久久美女精品天天吊色| 黄色影院在线播放| 欧美另类高清zo欧美| 2014亚洲天堂| 国产成人精品aa毛片| 国产精品丝袜久久久久久消防器材| 偷拍一区二区| 国产视频福利一区| 精品一性一色一乱农村| 精品视频www| 在线视频你懂得| 亚洲综合色婷婷| 欧美成人午夜精品免费| 免费成人av资源网| 久久久久久av无码免费网站下载| 精品自拍偷拍| 国产精品免费视频xxxx| 99福利在线| 亚洲欧美在线x视频| 亚洲一区二区三区网站| 亚洲一区二区三区激情| 永久免费av无码网站性色av| 国产制服丝袜一区| 日韩a在线播放| 亚洲一区欧美| 欧美高清视频一区二区三区在线观看 | 日本一区二区三区四区| 欧美综合天天夜夜久久| www.美色吧.com| 视频一区中文字幕国产| 最新视频 - x88av| 天天做夜夜做人人爱精品| 91久久中文字幕| 亚洲淫成人影院| 久久亚洲影音av资源网 | 揄拍成人国产精品视频| 成 人 免费 黄 色| 欧美视频一区在线观看| 日本在线视频中文字幕| 国产精品精品国产色婷婷| 国产老熟女伦老熟妇露脸| 精品在线播放免费| 亚洲熟妇av日韩熟妇在线 | 国产v片免费观看| 久久成人综合| 久中文字幕一区| 亚洲一区二区三区四区电影| 国产精品视频yy9099| 午夜久久中文| 欧美极品少妇xxxxⅹ裸体艺术| av在线电影免费观看| 日韩成人av网址| www天堂在线| 欧美精品乱码久久久久久按摩 | 久久99伊人| 波多野结衣av一区二区全免费观看| 日韩精品dvd| 欧美亚洲另类久久综合| 久久综合五月婷婷| 成人综合色站| 久久爱www.| 国产精品一二三视频| free欧美| 青青久久av北条麻妃海外网| 九色porny丨首页入口在线| 欧美激情精品久久久久久蜜臀 | 亚洲日本在线观看| 东京热无码av男人的天堂| 91蝌蚪porny九色| 亚洲中文字幕无码一区| 丁香一区二区三区| 成人三级做爰av| 国产一区二区三区在线看麻豆| www.夜夜爽| 美女免费视频一区| 亚洲第一狼人区| 秋霞午夜鲁丝一区二区老狼| 爆乳熟妇一区二区三区霸乳| 日日噜噜夜夜狠狠视频欧美人 | 国产一区二区在线观看视频| 国产亚洲视频一区| 精品亚洲欧美一区| 超碰中文字幕在线观看| 国产白丝精品91爽爽久久| 99中文字幕在线| 国产精品18久久久久久vr| 成人一区二区三区仙踪林| 大桥未久av一区二区三区中文| 欧美性生交xxxxx| 99这里都是精品| 全黄一级裸体片| 中文字幕成人在线观看| 国产三级aaa| 亚洲欧美电影院| 久久久久成人精品无码| 亚洲成人免费在线| 波多野结衣视频网站| 欧美午夜一区二区三区| 国产免费久久久| 精品国产免费久久| 婷婷国产在线| 综合欧美国产视频二区| 国产调教视频在线观看| 午夜免费久久久久| 国精产品一区二区三区有限公司| 国产免费亚洲高清| 一区二区三区国产好| 欧美精品v日韩精品v国产精品| 狠狠色狠狠色综合婷婷tag| 中文字幕中文字幕在线中心一区| 欧美片第1页综合| 日本www在线播放| 麻豆一区二区在线| 日批视频免费看| 久久色视频免费观看| 国产成人免费在线观看视频| 亚洲综合清纯丝袜自拍| 永久免费无码av网站在线观看| 欧美日韩mp4| 理论片中文字幕| 国产午夜精品一区二区三区| gogo在线观看| 国产精品91免费在线| 亚洲国产欧美国产第一区| 欧美人xxxxx| 欧美日韩网址| 久久久精品三级| 国产91对白在线观看九色| av女人的天堂| 一区二区三区久久久| 成人a v视频| 精品国产一区a| 在线国产情侣| 2019精品视频| 免费看一区二区三区| 日本一区网站| 亚洲大胆在线| 亚洲热在线视频| 国产亚洲午夜高清国产拍精品 | 亚洲va欧美va国产综合久久| 夜色77av精品影院| 成人黄色片免费| 蜜桃传媒麻豆第一区在线观看| 超碰caoprom| 亚洲码国产岛国毛片在线| 无码人妻丰满熟妇区bbbbxxxx | 中国黄色片视频| 成人免费在线观看入口| 无码人妻黑人中文字幕| 亚洲精品久久久久久久久久久久久 | 久久综合色之久久综合| 欧美日韩精品在线观看视频| 欧美色中文字幕| 你懂的视频在线播放| 高清一区二区三区日本久| 精品国产不卡一区二区| 亚洲日本精品一区| 日韩av不卡一区二区| 亚洲做受高潮无遮挡| 亚洲成av人片在线| 成人午夜精品福利免费| 久久精品国产视频| 国产精品成人国产| 涩涩涩999| 琪琪一区二区三区| 熟女少妇内射日韩亚洲| 日韩欧美国产激情| 污污视频在线免费看| 久久久免费观看| 韩国女主播一区二区三区| 国产精品第157页| 丰满放荡岳乱妇91ww| 欧美美女性生活视频| 欧美日韩国产三级| 在线免费观看黄| 成人xxxxx| 在线观看国产精品入口| 肉色超薄丝袜脚交| 亚洲天堂久久久久久久| av高清一区二区| 欧美成人sm免费视频| 清纯唯美激情亚洲| 欧妇女乱妇女乱视频| 成人毛片视频在线观看| 日本亚洲色大成网站www久久| 精品国产123| 日本不卡免费高清视频在线| 精品一区在线播放| 老司机久久99久久精品播放免费 | 亚洲欧洲在线观看av| 国产尤物在线观看| 欧美成人国产va精品日本一级| 亚洲精品在线a| 欧美精品自拍视频| 久久久美女毛片| 亚洲天堂中文在线| 不卡av日日日| 欧美国产极品| 密臀av一区二区三区| 亚洲欧美中日韩| 亚洲av色香蕉一区二区三区| 91高清在线免费观看| 精品精品久久| 91免费视频污| 欧美日韩国产精品一区| 二区在线视频| 亚洲va欧美va国产综合剧情| 亚洲高清毛片| 在哪里可以看毛片| 欧美一区二视频| 国产伦久视频在线观看| 日韩免费电影一区二区| 久久国产综合精品| 日本特黄特色aaa大片免费| 亚洲性生活视频| 亚洲精品在线播放| 国产精品亚洲二区在线观看| 综合久久国产九一剧情麻豆| 色丁香婷婷综合久久| 国产精品男人爽免费视频1| 欧美在线日韩| 成人片黄网站色大片免费毛片| 欧美一区二区在线免费播放| 不卡av播放| 欧美性猛交内射兽交老熟妇| 伊人久久婷婷| 超碰男人的天堂| 精品视频在线免费观看| 日本aa在线|