mirror of
https://github.com/Crocmagnon/display-epaper.git
synced 2024-11-22 14:08:02 +01:00
Compare commits
No commits in common. "816d0e53d0418240d059b359bbe5823ba8f2376e" and "df0ccc536d54944c8e3d455fe0cebb25fed647cf" have entirely different histories.
816d0e53d0
...
df0ccc536d
4 changed files with 10 additions and 86 deletions
|
@ -1,40 +0,0 @@
|
|||
package home_assistant
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/carlmjohnson/requests"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Token string
|
||||
BaseURL string
|
||||
}
|
||||
|
||||
type Client struct {
|
||||
config Config
|
||||
client *http.Client
|
||||
}
|
||||
|
||||
func New(client *http.Client, config Config) *Client {
|
||||
return &Client{config: config, client: client}
|
||||
}
|
||||
|
||||
func (c *Client) GetState(ctx context.Context, entityID string) (string, error) {
|
||||
type stateResponse struct {
|
||||
State string `json:"state"`
|
||||
}
|
||||
|
||||
var resp stateResponse
|
||||
|
||||
err := requests.URL(c.config.BaseURL).
|
||||
Header("Authorization", "Bearer "+c.config.Token).
|
||||
Pathf("/api/states/%s", entityID).
|
||||
ToJSON(&resp).
|
||||
Fetch(ctx)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return resp.State, nil
|
||||
}
|
7
main.go
7
main.go
|
@ -3,7 +3,6 @@ package main
|
|||
import (
|
||||
"context"
|
||||
"github.com/Crocmagnon/display-epaper/fete"
|
||||
"github.com/Crocmagnon/display-epaper/home_assistant"
|
||||
"github.com/Crocmagnon/display-epaper/transports"
|
||||
"github.com/Crocmagnon/display-epaper/weather"
|
||||
"github.com/golang/freetype/truetype"
|
||||
|
@ -58,11 +57,6 @@ func main() {
|
|||
|
||||
log.Printf("sleep duration: %v\n", sleep)
|
||||
|
||||
hassClient := home_assistant.New(nil, home_assistant.Config{
|
||||
Token: os.Getenv("HOME_ASSISTANT_TOKEN"),
|
||||
BaseURL: os.Getenv("HOME_ASSISTANT_BASE_URL"),
|
||||
})
|
||||
|
||||
if err := run(
|
||||
ctx,
|
||||
sleep,
|
||||
|
@ -70,7 +64,6 @@ func main() {
|
|||
transportsClient,
|
||||
feteClient,
|
||||
weatherClient,
|
||||
hassClient,
|
||||
); err != nil {
|
||||
log.Fatal("error: ", err)
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@ package main
|
|||
import (
|
||||
"context"
|
||||
"github.com/Crocmagnon/display-epaper/fete"
|
||||
"github.com/Crocmagnon/display-epaper/home_assistant"
|
||||
"github.com/Crocmagnon/display-epaper/transports"
|
||||
"github.com/Crocmagnon/display-epaper/weather"
|
||||
"github.com/llgcode/draw2d/draw2dimg"
|
||||
|
@ -18,7 +17,6 @@ func run(
|
|||
transportsClient *transports.Client,
|
||||
feteClient *fete.Client,
|
||||
weatherClient *weather.Client,
|
||||
_ *home_assistant.Client,
|
||||
) error {
|
||||
img, err := getImg(
|
||||
ctx,
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
"fmt"
|
||||
"github.com/Crocmagnon/display-epaper/epd"
|
||||
"github.com/Crocmagnon/display-epaper/fete"
|
||||
"github.com/Crocmagnon/display-epaper/home_assistant"
|
||||
"github.com/Crocmagnon/display-epaper/transports"
|
||||
"github.com/Crocmagnon/display-epaper/weather"
|
||||
"image"
|
||||
|
@ -22,7 +21,6 @@ func run(
|
|||
transportsClient *transports.Client,
|
||||
feteClient *fete.Client,
|
||||
weatherClient *weather.Client,
|
||||
hassClient *home_assistant.Client,
|
||||
) error {
|
||||
_, err := host.Init()
|
||||
if err != nil {
|
||||
|
@ -54,7 +52,6 @@ func run(
|
|||
transportsClient,
|
||||
feteClient,
|
||||
weatherClient,
|
||||
hassClient,
|
||||
)
|
||||
if err != nil {
|
||||
log.Printf("error looping: %v\n", err)
|
||||
|
@ -75,22 +72,16 @@ func loop(
|
|||
transportsClient *transports.Client,
|
||||
feteClient *fete.Client,
|
||||
weatherClient *weather.Client,
|
||||
hassClient *home_assistant.Client,
|
||||
) (image.Image, error) {
|
||||
var img image.Image = image.White
|
||||
|
||||
if shouldDisplay(ctx, hassClient) {
|
||||
var err error
|
||||
img, err = getImg(
|
||||
ctx,
|
||||
time.Now,
|
||||
transportsClient,
|
||||
feteClient,
|
||||
weatherClient,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("getting black: %w", err)
|
||||
}
|
||||
img, err := getImg(
|
||||
ctx,
|
||||
time.Now,
|
||||
transportsClient,
|
||||
feteClient,
|
||||
weatherClient,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("getting black: %w", err)
|
||||
}
|
||||
|
||||
if imgEqual(currentImg, img, epd.Width, epd.Height) {
|
||||
|
@ -104,7 +95,7 @@ func loop(
|
|||
}
|
||||
}()
|
||||
|
||||
err := initDisplay(display, initFastThreshold)
|
||||
err = initDisplay(display, initFastThreshold)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("initializing display: %w", err)
|
||||
}
|
||||
|
@ -117,24 +108,6 @@ func loop(
|
|||
return img, nil
|
||||
}
|
||||
|
||||
func shouldDisplay(ctx context.Context, hassClient *home_assistant.Client) bool {
|
||||
dayNight, err := hassClient.GetState(ctx, "input_select.house_day_night")
|
||||
if err != nil {
|
||||
log.Printf("error getting day night: %v ; displaying anyway\n", err)
|
||||
return true
|
||||
}
|
||||
|
||||
presentAway, err := hassClient.GetState(ctx, "input_select.house_present_away")
|
||||
if err != nil {
|
||||
log.Printf("error getting day night: %v ; displaying anyway\n", err)
|
||||
return true
|
||||
}
|
||||
|
||||
res := dayNight == "day" && presentAway == "present"
|
||||
log.Printf("shouldDisplay: %v\n", res)
|
||||
return res
|
||||
}
|
||||
|
||||
const filename = "/perm/display-epaper-lastFullRefresh"
|
||||
|
||||
func initDisplay(display *epd.EPD, threshold time.Duration) error {
|
||||
|
|
Loading…
Reference in a new issue