Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan bahasa go untuk melaksanakan fungsi Internet Perkara

Cara menggunakan bahasa go untuk melaksanakan fungsi Internet Perkara

王林
王林asal
2023-08-05 22:40:441870semak imbas

Cara menggunakan bahasa Go untuk melaksanakan fungsi Internet of Things

Internet Perkara (IoT) merujuk kepada sambungan dan komunikasi pelbagai peranti fizikal melalui Internet untuk mencapai perkongsian maklumat dan kawalan pintar. Dalam aplikasi IoT, cara mengendalikan komunikasi dan penghantaran data antara peranti dengan cekap adalah isu teknikal utama. Sebagai bahasa pengaturcaraan yang mudah, cekap dan sangat sesuai, bahasa Go sangat sesuai untuk merealisasikan fungsi Internet of Things. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan fungsi Internet of Things dan disertakan dengan contoh kod.

  1. Pemilihan protokol komunikasi peranti

Dalam Internet of Things, pilihan protokol komunikasi antara peranti adalah sangat penting. Protokol komunikasi IoT biasa termasuk MQTT, CoAP, HTTP, dll. Apabila memilih protokol komunikasi, faktor seperti persekitaran rangkaian peranti dan kebolehpercayaan serta kecekapan komunikasi perlu dipertimbangkan. Ambil MQTT sebagai contoh Ia adalah protokol penghantaran mesej mod penerbitan/langgan yang ringan yang sesuai untuk komunikasi peranti dalam persekitaran rangkaian jalur lebar rendah dan tidak stabil.

  1. Sambung ke Platform IoT

Platform IoT ialah sistem pusat untuk mengurus dan mengawal peranti. Dalam bahasa Go, kami boleh menggunakan perpustakaan pihak ketiga untuk menyambung ke platform IoT, seperti paho.mqtt.golang untuk menyambung ke platform MQTT. Berikut ialah contoh kod untuk menyambung ke pelayan MQTT dan melanggan topik:

import (
    "fmt"
    "os"
    "os/signal"

    "github.com/eclipse/paho.mqtt.golang"
)

func main() {
    // 创建MQTT客户端
    opts := mqtt.NewClientOptions().AddBroker("tcp://localhost:1883")
    client := mqtt.NewClient(opts)

    // 连接MQTT服务器
    if token := client.Connect(); token.Wait() && token.Error() != nil {
        panic(token.Error())
    }

    // 订阅主题
    if token := client.Subscribe("topic", 0, nil); token.Wait() && token.Error() != nil {
        panic(token.Error())
    }

    // 处理收到的消息
    ch := make(chan os.Signal, 1)
    signal.Notify(ch, os.Interrupt)
    <-ch

    // 取消订阅并断开连接
    client.Unsubscribe("topic")
    client.Disconnect(250)
}
  1. Pengumpulan dan penghantaran data peranti

Peranti IoT biasanya perlu mengumpul pelbagai data sensor dan menghantar data ke platform IoT untuk analisis dan kawalan. Dalam bahasa Go, kami boleh menggunakan perpustakaan pihak ketiga untuk membaca data penderia dan menghantar mesej MQTT.

Berikut ialah kod sampel yang membaca data sensor suhu dan kelembapan serta menghantar mesej MQTT:

import (
    "fmt"
    "time"
    "github.com/d2r2/go-dht"
    "github.com/eclipse/paho.mqtt.golang"
)

func main() {
    // 创建MQTT客户端
    opts := mqtt.NewClientOptions().AddBroker("tcp://localhost:1883")
    client := mqtt.NewClient(opts)

    // 连接MQTT服务器
    if token := client.Connect(); token.Wait() && token.Error() != nil {
        panic(token.Error())
    }

    // 读取传感器数据
    temperature, humidity, _, _ := dht.ReadDHTxxWithRetry(dht.DHT11, 4, false, 10)

    // 发送MQTT消息
    token := client.Publish("topic", 0, false, fmt.Sprintf("Temperature: %.2f℃, Humidity: %.2f%%", temperature, humidity))
    token.Wait()

    // 断开连接
    client.Disconnect(250)
}
  1. Peranti kawalan jauh

Platform IoT boleh menghantar arahan kepada peranti melalui mesej MQTT untuk mencapai kawalan jauh peranti. Dalam bahasa Go, kita boleh menulis kod untuk mendengar mesej MQTT dan menghuraikan arahan, dan kemudian melaksanakan logik kawalan yang sepadan.

Berikut ialah contoh kod yang mendengar mesej MQTT dan melaksanakan logik kawalan yang sepadan:

import (
    "fmt"
    "os"
    "os/signal"
    "strings"
    "github.com/eclipse/paho.mqtt.golang"
)

func main() {
    // 创建MQTT客户端
    opts := mqtt.NewClientOptions().AddBroker("tcp://localhost:1883")
    client := mqtt.NewClient(opts)

    // 连接MQTT服务器
    if token := client.Connect(); token.Wait() && token.Error() != nil {
        panic(token.Error())
    }

    // 监听MQTT消息
    client.Subscribe("topic", 0, func(client mqtt.Client, msg mqtt.Message) {
        command := string(msg.Payload())
        // 执行控制逻辑
        if strings.Contains(command, "on") {
            fmt.Println("Turn on the device.")
        } else if strings.Contains(command, "off") {
            fmt.Println("Turn off the device.")
        }
    })

    // 等待中断信号
    ch := make(chan os.Signal, 1)
    signal.Notify(ch, os.Interrupt)
    <-ch

    // 取消订阅并断开连接
    client.Unsubscribe("topic")
    client.Disconnect(250)
}

Melalui kod contoh di atas, kita boleh menggunakan bahasa Go untuk melaksanakan fungsi Internet of Things, termasuk komunikasi peranti, pengumpulan data , alat kawalan jauh, dsb. Sudah tentu, dalam aplikasi praktikal, isu seperti kestabilan peranti dan keselamatan data juga perlu dipertimbangkan, tetapi dengan menguasai teknologi pembangunan IoT asas, kami boleh membina asas untuk aplikasi IoT dengan cepat.

Atas ialah kandungan terperinci Cara menggunakan bahasa go untuk melaksanakan fungsi Internet Perkara. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn