diff --git a/internal/dashboard/template/template.html b/addons/systemd.service similarity index 100% rename from internal/dashboard/template/template.html rename to addons/systemd.service diff --git a/app/main.go b/app/main.go index 98422b7..9eef62a 100644 --- a/app/main.go +++ b/app/main.go @@ -1,5 +1,7 @@ package main +import "git.moxitech.ru/moxitech/msu_wz_universal/internal/dashboard" + // загрузить настройку // инициализировать подключение к zabbix // инициализировать датчики @@ -16,4 +18,10 @@ func main() { // panic(err) // } // fmt.Println("OK", val) + + // Paralel running server + go func() { + dashboard.StartServer() + }() + select {} } diff --git a/app/template.html b/app/template.html new file mode 100644 index 0000000..b569d79 --- /dev/null +++ b/app/template.html @@ -0,0 +1,27 @@ + + + + + + Тестовая Страница + + + +

Добро пожаловать на тестовую страницу!

+

Это пример HTML-шаблона, отданного через HTTP сервер на Go.

+ + diff --git a/go.mod b/go.mod index 0f57c05..00f2b73 100644 --- a/go.mod +++ b/go.mod @@ -4,5 +4,7 @@ go 1.22.7 require ( github.com/cavaliercoder/go-zabbix v0.0.0-20230131181515-93725c39d639 // indirect + github.com/goburrow/modbus v0.1.0 // indirect + github.com/goburrow/serial v0.1.0 // indirect github.com/gosnmp/gosnmp v1.38.0 // indirect ) diff --git a/go.sum b/go.sum index ef8abbb..c429726 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,8 @@ github.com/cavaliercoder/go-zabbix v0.0.0-20230131181515-93725c39d639 h1:eDTc0yCGN1XoC8M1Nb21GbncV0LCuP4DGroC38YBX1o= github.com/cavaliercoder/go-zabbix v0.0.0-20230131181515-93725c39d639/go.mod h1:o9iZ0ep18zjkTdG1yoCmBZSMAWo2qUXVMxqmEl+6GLo= +github.com/goburrow/modbus v0.1.0 h1:DejRZY73nEM6+bt5JSP6IsFolJ9dVcqxsYbpLbeW/ro= +github.com/goburrow/modbus v0.1.0/go.mod h1:Kx552D5rLIS8E7TyUwQ/UdHEqvX5T8tyiGBTlzMcZBg= +github.com/goburrow/serial v0.1.0 h1:v2T1SQa/dlUqQiYIT8+Cu7YolfqAi3K96UmhwYyuSrA= +github.com/goburrow/serial v0.1.0/go.mod h1:sAiqG0nRVswsm1C97xsttiYCzSLBmUZ/VSlVLZJ8haA= github.com/gosnmp/gosnmp v1.38.0 h1:I5ZOMR8kb0DXAFg/88ACurnuwGwYkXWq3eLpJPHMEYc= github.com/gosnmp/gosnmp v1.38.0/go.mod h1:FE+PEZvKrFz9afP9ii1W3cprXuVZ17ypCcyyfYuu5LY= diff --git a/internal/configurator/conf.go b/internal/configurator/conf.go index 0d1ed1b..0c6a7ae 100644 --- a/internal/configurator/conf.go +++ b/internal/configurator/conf.go @@ -1,12 +1,11 @@ package configurator type Config struct { -} - -func NewStandartConfig() *Config { - return &Config{} -} - -func ReadConfig() *Config { - return &Config{} + DeviceAddress string // адресс устройства + DashboardPort string // адресс локального ui + DumperFileName string // имя файла для дампа + ZabbixPort string // Zabbix-порт + ZabbixAddress string // Zabbix-адресс + ZabbixUsername string // пользователь + ZabbixPwd string // пароль пользователя } diff --git a/internal/dashboard/dashboard.go b/internal/dashboard/dashboard.go index cfdd5f8..71c4d3b 100644 --- a/internal/dashboard/dashboard.go +++ b/internal/dashboard/dashboard.go @@ -1 +1,36 @@ package dashboard + +import ( + "fmt" + "html/template" + "net/http" +) + +// StartServer запускает HTTP сервер с тестовой ручкой +func StartServer() { + // Определяем тестовую ручку + http.HandleFunc("/setup", TestHandler) + + // Указываем порт, на котором будет работать сервер + port := ":9090" + fmt.Printf("Сервер запущен на http://localhost%s\n", port) + + // Запускаем сервер + if err := http.ListenAndServe(port, nil); err != nil { + fmt.Printf("Ошибка при запуске сервера: %s\n", err) + } +} + +func TestHandler(w http.ResponseWriter, r *http.Request) { + // Загружаем HTML шаблон + tmpl, err := template.ParseFiles("template.html") + if err != nil { + http.Error(w, "Ошибка загрузки шаблона", http.StatusInternalServerError) + return + } + + // Отправляем HTML на клиент + if err := tmpl.Execute(w, nil); err != nil { + http.Error(w, "Ошибка при выполнении шаблона", http.StatusInternalServerError) + } +} diff --git a/internal/wiren-connector/connector.go b/internal/wiren-connector/connector.go new file mode 100644 index 0000000..b2cfa17 --- /dev/null +++ b/internal/wiren-connector/connector.go @@ -0,0 +1,33 @@ +package wirenconnector + +import ( + "fmt" + "time" + + "github.com/goburrow/modbus" +) + +// Подключаемся к плате на базе wirenboard +func Connect(ip string, port string) { + handler := modbus.NewTCPClientHandler(fmt.Sprintf("%s:502", ip)) + handler.Timeout = 10 * time.Second + handler.SlaveId = 1 + + err := handler.Connect() + if err != nil { + fmt.Printf("Ошибка подключения: %v\n", err) + return + } + defer handler.Close() + + client := modbus.NewClient(handler) + + // Чтение регистров (пример) + results, err := client.ReadHoldingRegisters(0, 10) + if err != nil { + fmt.Printf("Ошибка чтения регистров: %v\n", err) + return + } + + fmt.Printf("Результаты: %v\n", results) +}