-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.go
93 lines (83 loc) · 2.14 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package main
import (
"log"
"net/url"
"os"
"sync"
mqtt "github.com/eclipse/paho.mqtt.golang"
"github.com/google/uuid"
"github.com/sarjsheff/hiklib"
)
func main() {
if config() < 0 {
return
}
log.Println(hiklib.HikVersion())
log.Println(cfg)
run()
}
func run() {
mqtt.ERROR = log.New(os.Stdout, "[ERROR] ", 0)
mqtt.CRITICAL = log.New(os.Stdout, "[CRIT] ", 0)
mqtt.WARN = log.New(os.Stdout, "[WARN] ", 0)
mqtt.DEBUG = log.New(os.Stdout, "[DEBUG] ", 0)
ur, err := url.Parse(cfg.Url)
if err != nil {
log.Fatalln(err)
}
opt := mqtt.NewClientOptions()
opt.ClientID = "hikmqtt" + uuid.Must(uuid.NewRandom()).String()
opt.Servers = append(opt.Servers, ur)
if cfg.Username != "" {
opt.Username = cfg.Username
}
if cfg.Password != "" {
opt.Password = cfg.Password
}
cli := mqtt.NewClient(opt)
c := cli.Connect()
<-c.Done()
if c.Error() != nil {
log.Fatalln(c.Error().Error())
}
// log.Println(t)
// s := cli.Subscribe("#", 0, func(c mqtt.Client, m mqtt.Message) {
// log.Println(m.Topic())
// })
// <-s.Done()
// if c.Error() != nil {
// log.Fatalln(c.Error().Error())
// }
log.Println("Connect to cameras.")
var wg sync.WaitGroup
for _, c := range cfg.Cams {
wg.Add(1)
go c.run(&cli, &wg)
}
wg.Wait()
// u, dev := hiklib.HikLogin(*camipFlag, *camuserFlag, *campassFlag)
// imgpath := "/tmp/" + *camipFlag + "image.jpg"
// ticker := time.NewTicker(time.Millisecond * 5000)
// for t := range ticker.C {
// log.Println("Tick at", t)
// if hiklib.HikCaptureImage(u, dev.ByStartChan, imgpath) == 1 {
// f, err := os.Open(imgpath)
// if err == nil {
// image, _, err := image.Decode(f)
// if err == nil {
// newImage := resize.Resize(800, 0, image, resize.Lanczos3)
// var b bytes.Buffer
// w := bufio.NewWriter(&b)
// //w, _ := os.Create("/app/image.jpg")
// err = jpeg.Encode(w, newImage, nil)
// //w.Close()
// log.Println(base64.StdEncoding.EncodeToString(b.Bytes()))
// <-cli.Publish("camsnap/"+*camipFlag, 0, true, base64.StdEncoding.EncodeToString(b.Bytes())).Done()
// }
// f.Close()
// }
// } else {
// log.Fatalln("Error capture image")
// }
// }
}