Sauna: Add update timestamp to sauna api #2
11
main.go
11
main.go
@ -6,6 +6,7 @@ import (
|
||||
"log"
|
||||
"net/http"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
mqtt "github.com/eclipse/paho.mqtt.golang"
|
||||
)
|
||||
@ -13,6 +14,8 @@ import (
|
||||
type temperature struct {
|
||||
Value float64 `json:"value"`
|
||||
Unit string `json:"unit"`
|
||||
Time time.Time `json:"time"`
|
||||
Valid bool `json:"valid"`
|
||||
}
|
||||
|
||||
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())
|
||||
sauna_mutex.Lock()
|
||||
err := json.Unmarshal(msg.Payload(), &sauna_temperature)
|
||||
sauna_mutex.Unlock()
|
||||
sauna_temperature.Time = time.Now()
|
||||
if err != nil {
|
||||
sauna_temperature.Valid = false
|
||||
sauna_mutex.Unlock()
|
||||
logger.Print(err)
|
||||
return
|
||||
}
|
||||
sauna_temperature.Valid = true
|
||||
sauna_mutex.Unlock()
|
||||
}
|
||||
|
||||
var connectHandler mqtt.OnConnectHandler = func(client mqtt.Client) {
|
||||
@ -99,7 +106,7 @@ func main() {
|
||||
// Serve files from static folder
|
||||
http.Handle("/", http.FileServer(http.Dir(webui_path)))
|
||||
|
||||
http.HandleFunc("/sauna/sample", http_endpoint_sauna)
|
||||
http.HandleFunc("/api/sauna", http_endpoint_sauna)
|
||||
|
||||
port := ":5000"
|
||||
logger.Println("Server is running on port" + port)
|
||||
|
@ -2,10 +2,12 @@
|
||||
import { onMount } from "../../../node_modules/svelte/internal";
|
||||
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_unit = "°C"
|
||||
let time = "00:00:00";
|
||||
let updated = false;
|
||||
|
||||
function get_temperature() {
|
||||
fetch(backend_url)
|
||||
@ -13,6 +15,8 @@
|
||||
.then(data => {
|
||||
temperature_unit = data.unit
|
||||
temperature_value = data.value
|
||||
time = data.time.slice(11, 19)
|
||||
updated = JSON.parse(data.valid);
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
return [];
|
||||
@ -38,5 +42,8 @@
|
||||
<figure>
|
||||
<img src={icon} alt="Sauna" width=150/>
|
||||
</figure>
|
||||
{#if updated}
|
||||
<div>{time} Uhr:</div>
|
||||
<h1>{temperature_value} {temperature_unit}</h1>
|
||||
{/if}
|
||||
</section>
|
||||
|
Loading…
Reference in New Issue
Block a user