Sauna: Add update timestamp to sauna api #2

Merged
tkl merged 1 commits from add_time_to_sauna_api into main 2023-02-21 07:08:12 +00:00
2 changed files with 20 additions and 6 deletions
Showing only changes of commit 84d84b4313 - Show all commits

11
main.go
View File

@ -6,6 +6,7 @@ import (
"log" "log"
"net/http" "net/http"
"sync" "sync"
"time"
mqtt "github.com/eclipse/paho.mqtt.golang" mqtt "github.com/eclipse/paho.mqtt.golang"
) )
@ -13,6 +14,8 @@ import (
type temperature struct { type temperature struct {
Value float64 `json:"value"` Value float64 `json:"value"`
Unit string `json:"unit"` Unit string `json:"unit"`
Time time.Time `json:"time"`
Valid bool `json:"valid"`
} }
var ( var (
@ -33,11 +36,15 @@ var saunaHandler mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message
log.Printf("Received message: %s from topic: %s\n", msg.Payload(), msg.Topic()) log.Printf("Received message: %s from topic: %s\n", msg.Payload(), msg.Topic())
sauna_mutex.Lock() sauna_mutex.Lock()
err := json.Unmarshal(msg.Payload(), &sauna_temperature) err := json.Unmarshal(msg.Payload(), &sauna_temperature)
sauna_mutex.Unlock() sauna_temperature.Time = time.Now()
if err != nil { if err != nil {
sauna_temperature.Valid = false
sauna_mutex.Unlock()
logger.Print(err) logger.Print(err)
return return
} }
sauna_temperature.Valid = true
sauna_mutex.Unlock()
} }
var connectHandler mqtt.OnConnectHandler = func(client mqtt.Client) { var connectHandler mqtt.OnConnectHandler = func(client mqtt.Client) {
@ -99,7 +106,7 @@ func main() {
// Serve files from static folder // Serve files from static folder
http.Handle("/", http.FileServer(http.Dir(webui_path))) http.Handle("/", http.FileServer(http.Dir(webui_path)))
http.HandleFunc("/sauna/sample", http_endpoint_sauna) http.HandleFunc("/api/sauna", http_endpoint_sauna)
port := ":5000" port := ":5000"
logger.Println("Server is running on port" + port) logger.Println("Server is running on port" + port)

View File

@ -2,10 +2,12 @@
import { onMount } from "../../../node_modules/svelte/internal"; import { onMount } from "../../../node_modules/svelte/internal";
import icon from "$lib/images/sauna.svg" import icon from "$lib/images/sauna.svg"
let backend_url = "https://home.blackfinn.de/sauna/sample"; let backend_url = "https://home.blackfinn.de/api/sauna";
let temperature_value = 0.0 let temperature_value = 0.0
let temperature_unit = "°C" let temperature_unit = "°C"
let time = "00:00:00";
let updated = false;
function get_temperature() { function get_temperature() {
fetch(backend_url) fetch(backend_url)
@ -13,6 +15,8 @@
.then(data => { .then(data => {
temperature_unit = data.unit temperature_unit = data.unit
temperature_value = data.value temperature_value = data.value
time = data.time.slice(11, 19)
updated = JSON.parse(data.valid);
}).catch(error => { }).catch(error => {
console.log(error); console.log(error);
return []; return [];
@ -38,5 +42,8 @@
<figure> <figure>
<img src={icon} alt="Sauna" width=150/> <img src={icon} alt="Sauna" width=150/>
</figure> </figure>
{#if updated}
<div>{time} Uhr:</div>
<h1>{temperature_value} {temperature_unit}</h1> <h1>{temperature_value} {temperature_unit}</h1>
{/if}
</section> </section>