Lucy handler add
This commit is contained in:
+2
-20
@@ -6,29 +6,11 @@ import (
|
||||
"git.aiterp.net/lucifer/new-server/models"
|
||||
"github.com/gin-gonic/gin"
|
||||
"log"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func fetchDevices(ctx context.Context, fetchStr string) ([]models.Device, error) {
|
||||
if strings.HasPrefix(fetchStr, "tag:") {
|
||||
return config.DeviceRepository().FetchByReference(ctx, models.RKTag, fetchStr[4:])
|
||||
} else if strings.HasPrefix(fetchStr, "bridge:") {
|
||||
return config.DeviceRepository().FetchByReference(ctx, models.RKBridgeID, fetchStr[7:])
|
||||
} else if strings.HasPrefix(fetchStr, "id:") {
|
||||
return config.DeviceRepository().FetchByReference(ctx, models.RKDeviceID, fetchStr[7:])
|
||||
} else if strings.HasPrefix(fetchStr, "name:") {
|
||||
return config.DeviceRepository().FetchByReference(ctx, models.RKName, fetchStr[7:])
|
||||
}else if fetchStr == "all" {
|
||||
return config.DeviceRepository().FetchByReference(ctx, models.RKAll, "")
|
||||
} else {
|
||||
_, err := strconv.Atoi(fetchStr)
|
||||
if err != nil {
|
||||
return config.DeviceRepository().FetchByReference(ctx, models.RKName, fetchStr)
|
||||
}
|
||||
|
||||
return config.DeviceRepository().FetchByReference(ctx, models.RKDeviceID, fetchStr)
|
||||
}
|
||||
kind, value := models.ParseFetchString(fetchStr)
|
||||
return config.DeviceRepository().FetchByReference(ctx, kind, value)
|
||||
}
|
||||
|
||||
func Devices(r gin.IRoutes) {
|
||||
|
||||
+11
-1
@@ -6,7 +6,7 @@ import (
|
||||
"git.aiterp.net/lucifer/new-server/models"
|
||||
)
|
||||
|
||||
func (client *Client) GetHandlers(ctx context.Context, fetchStr string) ([]models.EventHandler, error) {
|
||||
func (client *Client) GetHandlers(ctx context.Context) ([]models.EventHandler, error) {
|
||||
handlers := make([]models.EventHandler, 0, 16)
|
||||
err := client.Fetch(ctx, "GET", "/api/event-handlers", &handlers, nil)
|
||||
if err != nil {
|
||||
@@ -16,6 +16,16 @@ func (client *Client) GetHandlers(ctx context.Context, fetchStr string) ([]model
|
||||
return handlers, nil
|
||||
}
|
||||
|
||||
func (client *Client) AddHandler(ctx context.Context, handler models.EventHandler) (*models.EventHandler, error) {
|
||||
var result models.EventHandler
|
||||
err := client.Fetch(ctx, "POST", "/api/event-handlers", &result, handler)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &result, nil
|
||||
}
|
||||
|
||||
func (client *Client) DeleteHandler(ctx context.Context, id int) (*models.EventHandler, error) {
|
||||
var handler models.EventHandler
|
||||
err := client.Fetch(ctx, "DELETE", fmt.Sprintf("/api/event-handlers/%d", id), &handler, nil)
|
||||
|
||||
@@ -144,6 +144,10 @@ func handleEvent(event models.Event) (responses []models.Event) {
|
||||
newState.Intensity = &newIntensity
|
||||
}
|
||||
|
||||
if action.SetTemperature != nil {
|
||||
newState.Temperature = action.SetTemperature
|
||||
}
|
||||
|
||||
err = allDevices[i].SetState(newState)
|
||||
if err != nil {
|
||||
log.Println("Error updating state for device", device.ID, "err:", err)
|
||||
|
||||
Reference in New Issue
Block a user