diff --git a/go/l17.go b/go/l17.go index 4bbd103..5b20be6 100644 --- a/go/l17.go +++ b/go/l17.go @@ -23,10 +23,16 @@ type OpenWeather struct{ func WeatherReq() (string, float64) { err := godotenv.Load() if err != nil { - log.Fatalf("%v\n", err) + log.Fatalf("upload your .env file %v\n", err) } api := os.Getenv("openweathermap") + if api == "" { + log.Fatalf("add your openweathermap api in .env file\n") + } city := os.Getenv("city_openweather") + if city == "" { + log.Fatalf("add your city for openweathermap in .env file\n") + } client := &http.Client{ Timeout: 20 * time.Second, } @@ -40,6 +46,9 @@ func WeatherReq() (string, float64) { if err != nil { log.Fatalf("%v\n", err) } + if resp.StatusCode != 200 { + log.Fatalf("openweathermap return %d\n", resp.StatusCode) + } defer resp.Body.Close() var WeatherData OpenWeather err = json.NewDecoder(resp.Body).Decode(&WeatherData) @@ -56,37 +65,46 @@ func Send(client mqtt.Client, topic string) { token := client.Publish(topic, 1, false, payload) token.Wait() if err := token.Error(); err != nil { - log.Fatalf("%v\n", token.Error) + log.Fatalf("%v\n", token.Error()) } else { fmt.Println("Sent in", topic) } } func main() { + opts := mqtt.NewClientOptions() + err := godotenv.Load() if err != nil { log.Fatalf("%v\n", err) } broker := os.Getenv("broker_mqtt") + if broker == "" { log.Fatalf("add yout broker in .env file\n") } ClientID := os.Getenv("clientid_mqtt") + if ClientID == "" { log.Fatalf("add your client id in .env file") } topic := os.Getenv("topic_mqtt") + if topic == "" { log.Fatalf("add your topic in .env file") } username := os.Getenv("login_mqtt") + if username != "" { opts.SetUsername(username) } password := os.Getenv("password_mqtt") + if password != "" { opts.SetPassword(password) } TimeHour := os.Getenv("TimeHourSendMQTT") - ReallyTimeHour, err := strconv.Atoi(TimeHour) - - opts := mqtt.NewClientOptions() opts.AddBroker(broker) opts.SetClientID(ClientID) opts.SetConnectTimeout(5 * time.Second) - opts.SetUsername(username) - opts.SetPassword(password) client := mqtt.NewClient(opts) if token := client.Connect(); token.Wait() && token.Error() != nil { log.Fatalf("%v\n", token.Error()) } defer client.Disconnect(250) fmt.Println("Connect to a broker") - ticker := time.NewTicker(time.Duration(ReallyTimeHour) * time.Hour) + var ticker *time.Ticker + if TimeHour != "" { + ReallyTimeHour, err := strconv.Atoi(TimeHour) + if err != nil { log.Fatalf("%s\n", err) } + ticker = time.NewTicker(time.Duration(ReallyTimeHour) * time.Hour) + } else { + ticker = time.NewTicker(2 * time.Hour) + } defer ticker.Stop() Send(client, topic) diff --git a/go/output/l17 b/go/output/l17 index 1dbfdf5..6910440 100755 Binary files a/go/output/l17 and b/go/output/l17 differ