You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.4 KiB
77 lines
2.4 KiB
package main
|
|
|
|
import (
|
|
lucifer3 "git.aiterp.net/lucifer3/server"
|
|
"git.aiterp.net/lucifer3/server/device"
|
|
"git.aiterp.net/lucifer3/server/events"
|
|
"git.aiterp.net/lucifer3/server/internal/color"
|
|
"git.aiterp.net/lucifer3/server/internal/gentools"
|
|
"log"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
bus := lucifer3.EventBus{}
|
|
|
|
bus.JoinCallback(func(event lucifer3.Event, sender lucifer3.ServiceID) bool {
|
|
switch event := event.(type) {
|
|
case events.HubConnected:
|
|
log.Println("Callback got connect event")
|
|
case events.DeviceAssignment:
|
|
log.Println("Callback can see", len(event.IDs), "devices are being assigned")
|
|
case events.DeviceRegister:
|
|
log.Println("Callback should not see that", event.InternalID, "has got a new ID")
|
|
case events.DeviceDesiredStateChange:
|
|
log.Println("Callback saw", event.ID, "got a new state.")
|
|
}
|
|
|
|
return true
|
|
})
|
|
|
|
c := color.RGB{Red: 1, Green: 0.7, Blue: 0.25}.ToXY()
|
|
|
|
bus.Send(events.HubConnected{}, lucifer3.ServiceID{Kind: lucifer3.SKDeviceHub, ID: 1}, nil)
|
|
bus.Send(events.DeviceAssignment{
|
|
IDs: []int64{1, 2, 3, 4, 5, 6, 7, 8, 9},
|
|
Version: 1,
|
|
State: &device.State{
|
|
Power: gentools.Ptr(true),
|
|
Temperature: nil,
|
|
Intensity: nil,
|
|
Color: &color.Color{XY: &c},
|
|
},
|
|
}, lucifer3.ServiceID{Kind: lucifer3.SKSingleton, Name: "DeviceManager"}, nil)
|
|
bus.Send(events.DeviceAssignment{
|
|
IDs: []int64{44, 45, 46, 47, 48, 49, 50, 51, 52, 53},
|
|
Version: 2,
|
|
Effect: gentools.Ptr[int64](1044),
|
|
}, lucifer3.ServiceID{Kind: lucifer3.SKSingleton, Name: "DeviceManager"}, nil)
|
|
|
|
time.Sleep(time.Second / 2)
|
|
|
|
bus.Send(events.DeviceHardwareStateChange{
|
|
InternalID: "c68b310c-7fd6-47a4-ae11-d60d701769da",
|
|
DeviceFlags: device.SFlagPower | device.SFlagIntensity,
|
|
ColorFlags: 0,
|
|
State: device.State{
|
|
Power: gentools.Ptr(true),
|
|
Intensity: gentools.Ptr(0.75),
|
|
},
|
|
}, lucifer3.ServiceID{Kind: lucifer3.SKDeviceHub, ID: 1}, nil)
|
|
|
|
time.Sleep(time.Second / 4)
|
|
|
|
bus.Send(events.DeviceRegister{
|
|
InternalID: "c68b310c-7fd6-47a4-ae11-d60d701769da",
|
|
ID: 10,
|
|
}, lucifer3.ServiceID{Kind: lucifer3.SKSingleton, Name: "DeviceManager"}, &lucifer3.ServiceID{Kind: lucifer3.SKDeviceHub, ID: 1})
|
|
bus.Send(events.DeviceDesiredStateChange{
|
|
ID: 10,
|
|
NewState: device.State{
|
|
Power: gentools.Ptr(true),
|
|
Intensity: gentools.Ptr(0.75),
|
|
},
|
|
}, lucifer3.ServiceID{Kind: lucifer3.SKSingleton, Name: "DeviceManager"}, nil)
|
|
|
|
time.Sleep(time.Second * 4)
|
|
}
|