diff --git a/FullCpu.go b/FullCpu.go index 26738cf..746d36b 100644 --- a/FullCpu.go +++ b/FullCpu.go @@ -8,10 +8,9 @@ func test_print(a int) { } } - -func main() { +func main01() { for i := 0; i < 100; i++ { go test_print(i) } - time.Sleep(360000000*time.Second) + time.Sleep(360000000 * time.Second) } diff --git a/main.go b/main.go index 63219bd..e31d5ff 100755 --- a/main.go +++ b/main.go @@ -186,7 +186,6 @@ func dbTest() { stmt.Exec(1) } - // GenRsaKey generates an PKCS#1 RSA keypair of the given bit size in PEM format. func GenRsaKey(bits int) (prvkey, pubkey []byte, err error) { // Generates private key. @@ -215,7 +214,6 @@ func GenRsaKey(bits int) (prvkey, pubkey []byte, err error) { return } - func ParseRSAPrivateKeyFromPEM(pemData string) (*rsa.PrivateKey, error) { var keyData = []byte(pemData) // 解析PEM块 @@ -252,7 +250,7 @@ func parsePrivateKey(privateKeyFile string) (*rsa.PrivateKey, error) { return privateKey, nil } -//生成RSA私钥和公钥,保存到文件中 +// 生成RSA私钥和公钥,保存到文件中 func GenerateRSAKey(bits int) { //GenerateKey函数使用随机数据生成器random生成一对具有指定字位数的RSA密钥 //Reader是一个全局、共享的密码用强随机数生成器 @@ -403,7 +401,7 @@ func RsaEncryptBlock(src []byte, path string) (bytesEncrypt []byte, err error) { // 读取公钥文件 keyData, err := ioutil.ReadFile(path) if err != nil { - return nil,err + return nil, err } //pem解码 @@ -436,7 +434,6 @@ func RsaEncryptBlock(src []byte, path string) (bytesEncrypt []byte, err error) { return } - func timing(client mqtt.Client) { //定时器,10秒钟执行一次 ticker := time.NewTicker(10 * time.Second) @@ -475,7 +472,6 @@ func timing(client mqtt.Client) { //fmt.Println("解密后的字符串:") //fmt.Println(string(decrptCode)) - } } } @@ -488,7 +484,6 @@ var messagePubHandler mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Me fmt.Println(message) fmt.Println(topic) - //privatePath := "/Users/edao/GolandProjects/go_mqtt/privateKey.pem" privateKeyPEM := `-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL3dDf12MSeIY2jm5QpUSSoMhrJOWLbOt5fXQepPaNO0M30A+3C4SFZrM/9WA5ehazO1u1m1LAkYzoSDRH3MMJsrJC3lCGDeOROteu+safuP9k/npU1YQu/+Ll2xEJNxyvUx4jLGM4LamiMI6ytM3gdnOAGP4YRQo9Etwo6I986yg/seCQC5rza9M4iBamoin7U8h9yOMKrM6xK/k9CcY/vn5+Uhe3Pvk4qj/2Ff3OXkkc1wfdILqdLwLOKL0Tb3ZciwG0p1CKO80yf5hyYoWjqZk5Rcd07nTo2gqTFGfLl9sqI9/+ipMDtnHlAgMBAAECggEATJd5yCC6lusdMRO5FOBUyUaUi9X2i1AU+RZKAynQySvSnbavUgExW58tRCHBUrGW9gJp59ft1N8J8hHhSO18NDY4H7laBlVdnwmYjRqtFo2VQO6sD4G8JRDION5f2iIxn/b2fYDI9H8vILfJRbNgtTSILyGlzTYUZzhLKxCh+8IsN96Nic8wa5COd1vZZmdhf2y8TG8clFWmozaScNSAATx7y+8XLVWjjWiIRZ6xQvx0uQPUParc9KihXXTKR2pA22yPIdz+U4MGD4kC0eczlcFKZ/dYv9e7OIGgnJfT0idSCu7nYb1pxJ1LxD9fS6IScNTF5dSe0OIL98e+XdyoAQKBgQDRep+5cW4iAKrEMH+djmcXAkoMiYtNVtnu0efLE8dP6vjYytQi368X9SdcASbfrQ31eEZmr/xQnlUF8oyHGkI38YS8dpAHzQcrkP3BljbbzB/3gJZaUdghGsDrK0xAJIzzmFKQpeKnGtr23vxUgaGrNsCYvQ0eQ7+5056KXS4r5QKBgQC6r8xtRSaje6L4WIydjWvYywsmRO0Of0aJLMDA/Wt2MWhHfh7ba9oI1cKGN80ap7xB2a9lQLgpv+C53wNtE5SpvjxsikAj96nUMMhGy9ojXrUith6HQhiINETz6Shnznd+AyrXP6KI/RpfA5nkDB5nrJxODwtYLP467IL7Cv7OAQKBgQCl4KxKdH/5fP28jYsAgJsxpSZt9xzQCU5Zxu396ZOSvUaApVyGoQpNtluMh3z48lhzYOKevgzW6gn5w69z7F8zXZT2iAxVoQ1kelP2z7RxKJrHqpNkwhqbXEwX7RlcUZUr8BqxYCqymJl7k+fMIzqaEalBSbLxnEReKi0I8/Bz4QKBgHK4b0ZCtVDHPEmimJ6E9l4dv/c/afF7swu+zaCK2ouiJvOwBCRQbYb6XPR/u/GCXASXUdpF4CX/vIhcDE3uN2/r8FO+zVWM7vbvF1OyF5WesG7pPW9e5ZZlkG3WvLa1wOZV6fCmMSo/ZwI2Q05JSDHrd43cXttLotrw1jiQ9C4BAoGBAKi4SOoOVQ5J5HQCDkBwPbG1AOLHFinzfoDl26GF/8Hy7fmmd1JiRTFldQp/A9VTAABz3sVYmMB92HSIaJhuDMoYJNI2Cf/cZifsv7vUL8cbLn+lPsKsebiuB0m0g4P2qLwLfegfNGEgA7lA5HIz3SELqbdp3iuqJeQl1fsJqD74 @@ -502,7 +497,6 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL } //decrptCode := RSA_Decrypts(decodeByte, privatePath) - decrptCode := RSA_DecryptsOne(decodeByte, privateKeyPEM) fmt.Println("解密后的字符串:") @@ -514,11 +508,11 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL if models.GetUser(&user) { models.UpdateUser(&user) - }else{ + } else { models.SaveUser(&user) } - }else if topic == "app_push_dyw" { + } else if topic == "app_push_dyw" { fmt.Println("大亚湾电厂APP收到mqtt消息") decodeByte, err := base64.StdEncoding.DecodeString(message) if err != nil { @@ -534,11 +528,11 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL if models.GetUserdyw(&user) { models.UpdateUserdyw(&user) - }else{ + } else { models.SaveUserdyw(&user) } - }else if topic == "app_push_yf" { + } else if topic == "app_push_yf" { fmt.Println("云浮电厂APP收到mqtt消息") decodeByte, err := base64.StdEncoding.DecodeString(message) if err != nil { @@ -554,11 +548,44 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL if models.GetUseryf(&user) { models.UpdateUseryf(&user) - }else{ + } else { models.SaveUseryf(&user) } - }else{ + } else if strings.HasPrefix(topic, "/device/esp8266") { + fmt.Println("esp8266收到mqtt消息") + result := strings.Split(message, " ") + fmt.Println(result[0]) + fmt.Println(result[1]) + + now := time.Now() + temperature := new(models.TemperatureEsp) + temperature.CreateDate = now + temperature.DataDate = now.Format("2006-01-02") + temperature.DataHour = now.Format("2006-01-02 15") + temperature.DataMinute = now.Format("2006-01-02 15:04") + temperature.Humidity = result[0] + temperature.Temperature = result[1] + temperature.Topic = topic + temperature.Source = "mqtt" + if topic == "/device/esp8266/001" { + temperature.LocationDesc = "广东省珠海市高新区唐家湾镇东岸村水风三街28号501" + } + if topic == "/device/esp8266/002" { + temperature.LocationDesc = "广东省珠海市金湾区三灶镇百川路1号1栋1单元1508房" + } + if topic == "/device/esp8266/003" { + temperature.LocationDesc = "广东省珠海市高新区唐家湾镇南方软件园B2栋4楼珠海瑞洪智能系统工程有限公司" + } + if topic == "/device/esp8266/004" { + temperature.LocationDesc = "广东省珠海市高新区唐家湾镇东岸村水风三街28号501-01" + } + if topic == "/device/esp8266/005" { + temperature.LocationDesc = "广西壮族自治区崇左市天等县天等镇荣华村弄在屯113号" + } + fmt.Println("测温传感器地点:", temperature.LocationDesc) + models.SaveTemperatureEsp(temperature) + } else { result := strings.Split(message, " ") fmt.Println(result[0]) fmt.Println(result[1]) @@ -585,9 +612,6 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL models.SaveTemperature(temperature) } - - - //uuid := uuid.New() //models.SaveProduct() //models.SaveUser(uuid.String()) @@ -653,7 +677,12 @@ func subAppPushDyw(client mqtt.Client) { token.Wait() fmt.Printf("Subscribed to topic: %s", topic) } - +func subEspMqtt(client mqtt.Client) { + topic := "/device/esp8266/+" + token := client.Subscribe(topic, 2, nil) + token.Wait() + fmt.Printf("Subscribed to topic: %s", topic) +} func publish(client mqtt.Client) { num := 999999000000000000 @@ -694,6 +723,7 @@ func main() { subTemperature(client) subAppPush(client) subAppPushDyw(client) + subEspMqtt(client) publish(client) //client.Disconnect(1000) diff --git a/models/TemperatureEsp.go b/models/TemperatureEsp.go new file mode 100644 index 0000000..96d2d0d --- /dev/null +++ b/models/TemperatureEsp.go @@ -0,0 +1,39 @@ +package models + +import ( + "fmt" + "go_mqtt/mydb" + "time" +) + +type TemperatureEsp struct { + Id int64 `gorm:"primaryKey;autoIncrement"` + CreateDate time.Time + DataDate string `gorm:"index:idx_dataDate;index:data_date_location_desc;size:20"` + DataHour string `gorm:"index:idx_dataHour;size:20"` + DataMinute string `gorm:"index:idx_dataMinute;size:20"` + Humidity string `gorm:"size:10"` + LocationDesc string `gorm:"index:idx_locationDesc;index:data_date_location_desc;size:80"` + Temperature string `gorm:"size:10"` + Topic string `gorm:"size:60"` + Source string `gorm:"size:10"` +} + +func init() { + fmt.Println("TemperatureEsp init()") + mydb.DB.AutoMigrate(&TemperatureEsp{}) +} + +// TableName 会将 User 的表名重写为 `user` +func (TemperatureEsp) TableName() string { + return "temperature_esp" +} + +func SaveTemperatureEsp(temperature *TemperatureEsp) { + result := mydb.DB.Create(&temperature) + if result.Error != nil { + fmt.Println("Failed to create TemperatureEsp:", result.Error) + } else { + fmt.Println("TemperatureEsp created successfully!") + } +} diff --git a/mydb/initialize.go b/mydb/initialize.go index 86977fd..3a59f61 100755 --- a/mydb/initialize.go +++ b/mydb/initialize.go @@ -20,8 +20,8 @@ func initDatabase() { //dsn := "root:Skyinno251,@tcp(192.168.2.18:3306)/gorm?charset=utf8mb4&parseTime=True&loc=Local" //dsn := "root:Skyinno251,@tcp(47.242.184.139:3306)/appserver?charset=utf8mb4&parseTime=True&loc=Local" //dsn := "root:Skyinno251,@tcp(localhost:3306)/appserver?charset=utf8mb4&parseTime=True&loc=Local" - dsn := "root:Skyinno251,@tcp(192.168.3.9:3306)/gorm?charset=utf8mb4&parseTime=True&loc=Local" - //dsn := "root:Skyinno251,@tcp(localhost:3306)/go_mqtt?charset=utf8mb4&parseTime=True&loc=Local" + //dsn := "root:Skyinno251,@tcp(192.168.3.9:3306)/gorm?charset=utf8mb4&parseTime=True&loc=Local" + dsn := "root:Skyinno251,@tcp(localhost:3306)/go_mqtt?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.New(mysql.Config{ DSN: dsn, // DSN data source name