dashboard handlers & configurator struct

This commit is contained in:
moxitech 2024-10-23 05:11:29 +07:00
parent db646d6818
commit 9f9f7845ed
8 changed files with 116 additions and 8 deletions

View File

@ -1,5 +1,7 @@
package main package main
import "git.moxitech.ru/moxitech/msu_wz_universal/internal/dashboard"
// загрузить настройку // загрузить настройку
// инициализировать подключение к zabbix // инициализировать подключение к zabbix
// инициализировать датчики // инициализировать датчики
@ -16,4 +18,10 @@ func main() {
// panic(err) // panic(err)
// } // }
// fmt.Println("OK", val) // fmt.Println("OK", val)
// Paralel running server
go func() {
dashboard.StartServer()
}()
select {}
} }

27
app/template.html Normal file
View File

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Тестовая Страница</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
margin: 0;
padding: 20px;
}
h1 {
color: #333;
}
p {
font-size: 1.2em;
color: #555;
}
</style>
</head>
<body>
<h1>Добро пожаловать на тестовую страницу!</h1>
<p>Это пример HTML-шаблона, отданного через HTTP сервер на Go.</p>
</body>
</html>

2
go.mod
View File

@ -4,5 +4,7 @@ go 1.22.7
require ( require (
github.com/cavaliercoder/go-zabbix v0.0.0-20230131181515-93725c39d639 // indirect 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 github.com/gosnmp/gosnmp v1.38.0 // indirect
) )

4
go.sum
View File

@ -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 h1:eDTc0yCGN1XoC8M1Nb21GbncV0LCuP4DGroC38YBX1o=
github.com/cavaliercoder/go-zabbix v0.0.0-20230131181515-93725c39d639/go.mod h1:o9iZ0ep18zjkTdG1yoCmBZSMAWo2qUXVMxqmEl+6GLo= 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 h1:I5ZOMR8kb0DXAFg/88ACurnuwGwYkXWq3eLpJPHMEYc=
github.com/gosnmp/gosnmp v1.38.0/go.mod h1:FE+PEZvKrFz9afP9ii1W3cprXuVZ17ypCcyyfYuu5LY= github.com/gosnmp/gosnmp v1.38.0/go.mod h1:FE+PEZvKrFz9afP9ii1W3cprXuVZ17ypCcyyfYuu5LY=

View File

@ -1,12 +1,11 @@
package configurator package configurator
type Config struct { type Config struct {
} DeviceAddress string // адресс устройства
DashboardPort string // адресс локального ui
func NewStandartConfig() *Config { DumperFileName string // имя файла для дампа
return &Config{} ZabbixPort string // Zabbix-порт
} ZabbixAddress string // Zabbix-адресс
ZabbixUsername string // пользователь
func ReadConfig() *Config { ZabbixPwd string // пароль пользователя
return &Config{}
} }

View File

@ -1 +1,36 @@
package dashboard 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)
}
}

View File

@ -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)
}