From 863f81e4343452c1b11e33d778585eed94079895 Mon Sep 17 00:00:00 2001 From: Joerg Lehmann Date: Sat, 9 Nov 2019 20:59:44 +0100 Subject: [PATCH] add mini-beieli-provison.go --- .gitignore | 1 + mini-beieli-provision.go | 76 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 .gitignore create mode 100644 mini-beieli-provision.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ce81a98 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +mini-beieli-provision diff --git a/mini-beieli-provision.go b/mini-beieli-provision.go new file mode 100644 index 0000000..1bb990f --- /dev/null +++ b/mini-beieli-provision.go @@ -0,0 +1,76 @@ +package main + +import ( + "fmt" + "github.com/tarm/serial" + "log" + "math/rand" + "os" + "path/filepath" + "strings" + "time" +) + +func RandomEUI64() string { + var letter = []rune("ABCDEF0123456789") + + b := make([]rune, 16+7) + for i := range b { + if (i+1)%3 == 0 { + b[i] = '-' + } else { + b[i] = letter[rand.Intn(len(letter))] + } + } + return string(b) +} + +func sendCommand(p *serial.Port, command string, waitForOk bool) string { + fmt.Print(command) + var status string = "" + p.Flush() + _, err := p.Write([]byte(command)) + if err != nil { + log.Fatal(err) + } + buf := make([]byte, 32) + var loop int = 1 + if waitForOk { + loop = 10 + } + for i := 0; i < loop; i++ { + // ignoring error as EOF raises error on Linux + n, _ := p.Read(buf) + if n > 0 { + status = string(buf[:n]) + fmt.Print(status) + if strings.Contains(status, "OK") || strings.Contains(status, "?") { + break + } + } + } + return status +} + +func main() { + if len(os.Args) != 2 { + fmt.Println("usage: " + filepath.Base(os.Args[0]) + " ") + os.Exit(1) + } + + deveui := os.Args[1] + + c := &serial.Config{Name: "/dev/ttyUSB1", Baud: 115200, ReadTimeout: time.Second * 1} + s, err := serial.OpenPort(c) + if err != nil { + log.Fatal("Problem mit Serial Interface") + } + + sendCommand(s, "system configure syseui "+RandomEUI64()+"\n", true) + sendCommand(s, "system configure platformguid 53ca094b-b888-465e-aa0e-e3064ec56d21\n", true) + sendCommand(s, "system configure operatingflags 0\n", true) + sendCommand(s, "lorawan configure deveui "+deveui+"\n", true) + sendCommand(s, "lorawan configure appeui "+deveui+"\n", true) + sendCommand(s, "lorawan configure appkey "+deveui+"-"+deveui+"\n", true) + sendCommand(s, "lorawan configure join 1\n", true) +}