Skip to content

Commit

Permalink
uh
Browse files Browse the repository at this point in the history
  • Loading branch information
bartekpacia committed Dec 19, 2024
1 parent ce69108 commit c2fadbe
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 53 deletions.
4 changes: 2 additions & 2 deletions cmd/fhomed/daemon.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ func daemon(ctx context.Context, config *highlevel.Config, name, pin string) err
return err
}

go serviceListener(ctx, client)
go websiteListener(ctx, config, apiConfig)
//go serviceListener(ctx, client)
//go websiteListener(ctx, config, apiConfig)

// Here we listen to HomeKit events and convert them to API calls to F&Home
// to keep the state in sync.
Expand Down
63 changes: 14 additions & 49 deletions cmd/fhomed/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,13 +169,13 @@ func loadConfig() *highlevel.Config {
}
}

func homekitSyncer(config *highlevel.Config, name, pin string) error {
fhomeClient, err := highlevel.Connect(config, nil)
func homekitSyncer(ctx context.Context, config *highlevel.Config, name, pin string) error {
fhomeClient, err := highlevel.Connect(ctx, config, nil)
if err != nil {
return fmt.Errorf("failed to create api client: %v", err)
}

userConfig, err := fhomeClient.GetUserConfig()
userConfig, err := fhomeClient.GetUserConfig(ctx)
if err != nil {
slog.Error("failed to get user config", slog.Any("error", err))
return err
Expand All @@ -185,7 +185,7 @@ func homekitSyncer(config *highlevel.Config, name, pin string) error {
slog.Int("cells", len(userConfig.Cells)),
)

systemConfig, err := fhomeClient.GetSystemConfig()
systemConfig, err := fhomeClient.GetSystemConfig(ctx)
if err != nil {
slog.Error("failed to get system config", slog.Any("error", err))
return err
Expand Down Expand Up @@ -216,7 +216,7 @@ func homekitSyncer(config *highlevel.Config, name, pin string) error {
slog.String("callback", "OnLightbulbUpdate"),
}

err := fhomeClient.SendEvent(ID, value)
err := fhomeClient.SendEvent(ctx, ID, value)
if err != nil {
attrs = append(attrs, slog.Any("error", err))
slog.LogAttrs(context.TODO(), slog.LevelError, "failed to send event", attrs...)
Expand All @@ -233,7 +233,7 @@ func homekitSyncer(config *highlevel.Config, name, pin string) error {
slog.String("callback", "OnLEDUpdate"),
}

err := fhomeClient.SendEvent(ID, value)
err := fhomeClient.SendEvent(ctx, ID, value)
if err != nil {
attrs = append(attrs, slog.Any("error", err))
slog.LogAttrs(context.TODO(), slog.LevelError, "failed to send event", attrs...)
Expand All @@ -250,7 +250,7 @@ func homekitSyncer(config *highlevel.Config, name, pin string) error {
slog.String("callback", "OnGarageDoorUpdate"),
}

err := fhomeClient.SendEvent(ID, value)
err := fhomeClient.SendEvent(ctx, ID, value)
if err != nil {
attrs = append(attrs, slog.Any("error", err))
slog.LogAttrs(context.TODO(), slog.LevelError, "failed to send event", attrs...)
Expand All @@ -267,7 +267,7 @@ func homekitSyncer(config *highlevel.Config, name, pin string) error {
slog.String("callback", "OnGarageDoorUpdate"),
}

err = fhomeClient.SendEvent(ID, value)
err = fhomeClient.SendEvent(ctx, ID, value)
if err != nil {
attrs = append(attrs, slog.Any("error", err))
slog.LogAttrs(context.TODO(), slog.LevelError, "failed to send event", attrs...)
Expand All @@ -289,7 +289,7 @@ func homekitSyncer(config *highlevel.Config, name, pin string) error {
// In this loop, we listen to events from F&Home and send updates to HomeKit
// to keep the state in sync.
for {
msg, err := fhomeClient.ReadMessage(api.ActionStatusTouchesChanged, "")
msg, err := fhomeClient.ReadMessage(ctx, api.ActionStatusTouchesChanged, "")
if err != nil {
slog.Error("failed to read message", slog.Any("error", err))
return err
Expand All @@ -308,7 +308,11 @@ func homekitSyncer(config *highlevel.Config, name, pin string) error {
}

cellValue := resp.Response.CellValues[0]
printCellData(&cellValue, apiConfig)
err = highlevel.PrintCellData(&cellValue, apiConfig)
if err != nil {
slog.Error("failed to print cell data", slog.Any("error", err))
return err
}

// handle lightbulb
{
Expand Down Expand Up @@ -366,42 +370,3 @@ func homekitSyncer(config *highlevel.Config, name, pin string) error {
}
}
}

func mustGetenv(varname string) string {
value := os.Getenv(varname)
if value == "" {
slog.Error(varname + " env var is empty or not set")
os.Exit(1)
}
return value
}

// printCellData prints the values of its arguments into a JSON object.
func printCellData(cellValue *api.CellValue, cfg *api.Config) error {
cell, err := cfg.GetCellByID(cellValue.IntID())
if err != nil {
return fmt.Errorf("failed to get cell with ID %d: %v", cellValue.IntID(), err)
}

// Find panel ID of the cell
var panelName string
for _, panel := range cfg.Panels {
for _, c := range panel.Cells {
if c.ID == cell.ID {
panelName = panel.Name
break
}
}
}

slog.Debug("object state changed",
slog.Int("id", cell.ID),
slog.String("panel", panelName),
slog.String("name", cell.Name),
slog.String("desc", cell.Desc),
slog.String("display_type", string(cellValue.DisplayType)),
slog.String("value", cellValue.Value),
slog.String("value_str", cellValue.ValueStr),
)
return nil
}
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -293,8 +293,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ=
golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg=
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
Expand Down

0 comments on commit c2fadbe

Please sign in to comment.