Skip to content

Установка

Требования

  • Go версии 1.23 или выше.
  • Терминал для работы с CLI утилитой.
  • Текстовый редактор с поддержкой Go. Рекомендуется VSCode и GoLand.

Установка

shell
go get github.com/ValentinAlekhin/wb-go

Использование

После установки можно использовать команду для генерации.

shell
go run github.com/ValentinAlekhin/wb-go generate -b 192.168.1.10:1883 -o ./internal/device

Программа подключиться к MQTT брокеру по адресу 192.168.1.10:1883 и сгенерирует файлы устройств в папку ./internal/device

Работа с устройствами

go
package main

import (
	"fmt"
	"github.com/ValentinAlekhin/wb-go/examples/device"
	"github.com/ValentinAlekhin/wb-go/pkg/control"
	wb "github.com/ValentinAlekhin/wb-go/pkg/mqtt"
	"log"
	"os"
	"os/signal"
	"syscall"
)

func main() {
	stop := make(chan os.Signal, 1)
	signal.Notify(stop, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP)

	// Подключение к брокеру
	opt := wb.Options{
		Broker:   "192.168.1.150:1883",
		ClientId: "client-wb-go-test",
	}
	client, err := wb.NewClient(opt)
	if err != nil {
		log.Fatal(err)
	}

	//Создание устройств
	WbMswV4151 := device.NewWbMswV4151(client)
	WbMr6Cu145 := device.NewWbMr6Cu145(client)

	// Добавление скрипта
	WbMswV4151.Controls.CurrentMotion.AddWatcher(func(payload control.ValueControlWatcherPayload) {
		fmt.Printf("Получено новое сообщение: %f\n", payload.NewValue)

		if payload.NewValue > 100 {
			WbMr6Cu145.Controls.K1.TurnOff()
		} else {
			WbMr6Cu145.Controls.K1.TurnOn()
		}
	})

	<-stop

	// Отключениие от брокера и завершение программы
	client.Disconnect(500)

	fmt.Println("Программа завершена!")
}