14-網頁,網站,微信公眾號基礎入門(網頁版MQTT,小試牛刀)


https://www.cnblogs.com/yangfengwu/p/11192639.html

 

 

抱歉哈...最近由於做板子,,教程的進度落下了...

 

這些天總共做了還幾塊板子

 

首先對當前這個教程的這個板子做了修訂,調整了下布局,替換換了以前用的Micro USB 接口,開關降壓改為MP4462

 

 

 

 

 

 

STM32+Air720H(全網通GPRS)+以太網+422/485+4-20ma采集    https://www.cnblogs.com/yangfengwu/category/1472273.html

 

后來感覺價格上還是有點高,所以做了另一塊板子

 

 

 

STM32+Air202(2G)+以太網+422/485+兩路繼電器,,實現的功能和上面的一樣,主要是學習下W5500,還有就是遠程和PLC通信控制

 

 

我買的PLC已經到了

 

 

 

 

 為了安全性,我選擇的是24V供電的PLC

 

 

 

 

 

 

 

 

 

 

 

 然后還有個WiFi單路繼電器,10A  和 16A

 

所有的都是我自己搗鼓的...外殼上面的圖是我用PS做的,然后找的廠家激光打印的.

 

 

 

 

   

 

 

 

 

 

 

 

 

 

 

 

 最后做了一個  移遠的 M26的Mini板

 

 

 

 

 

 

 不過確實夠.....

 

我做的板子漸漸的靠近直接使用..其實主要還是因為我配的教程都是直接應用型的,,,除了公開的基礎的教程

 

要是還做成學習板的形式,感覺發揮不了更實際的作用....

 

 

 

 

 

對了一直沒說我的微信小程序篇具體實現什么功能

 

1,SmartConfig 實現配網 ,小程序負責綁定

 

2,微信公眾號點擊按鈕跳轉網頁,網頁里面實現控制設備

 

3,小程序其中一個呢,直接打開網頁,,就是和上面一樣

 

4,直接用小程序的API實現MQTT,通信控制

 

...其實就說這些..

 

但是講這些之前,,需要先把所有的基礎給大家.....預防看不懂....

 

 

 

打開這個

 

 

 

 

 

 

 

 

 

 

 

 說一下哈,html和php都提供了實現MQTT的函數,,咱先用html里面的實現

 

 

 

 

 

 

 

 

 

 

 

 

還記得做升級篇的時候,咱用單片機+AT指令實現的MQTT,,當時是去官方下載的封裝包

 

這次咱也是去下載那個包

 

https://developer.emqx.io/sdk_tools?category=MQTT_Clients

 

 

 

先用這個

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 提供了一個完整版的,和一個精簡版的

 

完整版的支持SSL

 

 

 

咱就用完整版的

 

拷貝到工程目錄下

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 其實官方給了例子

 

 

 

 

 

 

 因為咱是寫JS實現部分,所以需要寫到,其實網頁最常用(幾乎是必須)的是

 

html  (咱建的這個工程就是個html)  主要是做一些控件展示給用戶看      https://www.cnblogs.com/yangfengwu/p/10947388.html

 

css (負責html控件的布局,屬性(顏色什么的))     https://www.cnblogs.com/yangfengwu/p/10979101.html

 

JavaScript   對網頁行為進行編程     http://www.w3school.com.cn/js/js_shiyong.asp

 

  

 

 

 

 

 

 這三個家伙可以直接放到一個html文件里面,,學習測試可以這樣,,一般都是各自建文件,然后在html里面加載

 

加載 CSS 

 

 

 

 

 

加載 JS  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

復制代碼
    <script>
        var client = new Paho.MQTT.Client(location.hostname, Number(location.port), "clientId");// Create a client instance
        // set callback handlers
        client.onConnectionLost = onConnectionLost;//設置連接斷開回調函數
        client.onMessageArrived = onMessageArrived;//設置接收到消息進入的回調函數
        client.connect({onSuccess:onConnect});// connect the client 連接...
        function onConnect() {// called when the client connects  如果連接上,進入
            // Once a connection has been made, make a subscription and send a message.
            console.log("onConnect");//控制台打印
            client.subscribe("World");//訂閱主題"World"
            message = new Paho.MQTT.Message("Hello");//設置發送的消息"Hello"
            message.destinationName = "World";//設置發送的主題
            client.send(message);//發送消息
        }
        function onConnectionLost(responseObject) {// called when the client loses its connection
            if (responseObject.errorCode !== 0) {//回復的不是1就是2具體看  https://www.eclipse.org/paho/files/jsdoc/Paho.MQTT.Client.html
                console.log("onConnectionLost:"+responseObject.errorMessage);
            }
        }
        function onMessageArrived(message) {// called when a message arrives 控制台打印接受的消息
            console.log("onMessageArrived:"+message.payloadString);
        }
    </script>
復制代碼

 

 

 

這里有API介紹

 

https://www.eclipse.org/paho/files/jsdoc/Paho.MQTT.Client.html

 

 

 

 現在改一下IP和端口號

 

 

 

 

 

 

 注意哈,走的是MQTT的WebSocket 端口

 

還要說一下,,不管走的MQTT的什么端口,只要兩個設備的訂閱和發布的主題對應,那么兩個設備就可以通信

 

 

 

 

 

 

 

 

 說明是可以的

 

咱現在用調試助手測試

 

 

 

 

 

 

 重新啟動下網頁那個

 

 

 

 

 

 

 現在連接也沒填什么用戶名和密碼...

 

給的API可以配置用戶名和密碼

 

 

 

 

 

 

 

 

 

 

 

 

 

client.connect({onSuccess:onConnect,userName:"yang",password:"11223344"});

 

 

 

 測試下

 

 

 

 

其實可以這樣

 

 

 

 

 

 

復制代碼
var Options={
            onSuccess : onConnect,
            userName  : "yang",
            password  : "11223344"
        };

        client.connect(Options);// connect the client 連接...
復制代碼

 

 

 

忘了說一件事情

 

var  是js里面定義變量用的,定義變量就用var

 

var Options={
            onSuccess : onConnect,
            userName  : "yang",
            password  : "11223344"
        };

這個呢...只不過是個語法糖而已,你這樣寫進去,它里面肯定是判斷前面的字符串名字,然后獲取 : 號后面的值,然后填寫到MQTT打包
函數里面
其實很多這樣做的,你按照這樣的規定寫,內部解釋器就認你....
還是那句話,如果你早生幾十年,如果你也有幸參與js的工作,或許你有自己的規定
那天我在群里說類似的這句話,有個人,發了個圖片,上面寫着:我就靜靜的看着
唉,他不明白我說這句話的含義,很多知識是人規定的,很多時候你不要糾結於為什么這樣規定,因為很多東西都使用了這么多年了,既然一直
存在着,就一定有存在的意義. 但是請不要把這句話當作借口,該深入了解的知識,還是需要深入了解.

 

 

基礎教程的源碼都是公開的,可以看博客閱讀說明下載

這節先這樣,下節接着完善

 

https://www.cnblogs.com/yangfengwu/p/11200767.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM