core

package
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 12, 2020 License: GPL-3.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Started   = Status("started")
	InProcess = Status("in process")
	Ended     = Status("ended")
	Done      = Status("done")
	Error     = Status("error")
)

Variables

This section is empty.

Functions

func NewCron

func NewCron() (cron *cr.Cron)

Types

type Action

type Action struct {
	Device       *m.Device
	Node         *Node
	ScriptEngine *scripts.Engine
	// contains filtered or unexported fields
}

func NewAction

func NewAction(device *m.Device,
	script *m.Script,
	node *Node,
	flow *Flow,
	scriptService *scripts.ScriptService) (action *Action, err error)

func (*Action) Do

func (a *Action) Do() (res string, err error)

func (*Action) GetDevice

func (a *Action) GetDevice() *m.Device

func (*Action) GetNode

func (a *Action) GetNode() *Node

func (*Action) NewScript

func (a *Action) NewScript() (err error)

type ActionBind

type ActionBind struct {
	// contains filtered or unexported fields
}

Javascript Binding

Action

.Device()
.Node()

func (*ActionBind) Device

func (a *ActionBind) Device() *DeviceBind

func (*ActionBind) Node

func (a *ActionBind) Node() *NodeBind

type ActionPrototypes

type ActionPrototypes interface {
	After(*Flow) error
	Run(*Flow) error
	Before(*Flow) error
	Type() string
}

type Core

type Core struct {
	sync.Mutex

	Map *Map
	// contains filtered or unexported fields
}

func NewCore

func NewCore(adaptors *adaptors.Adaptors,
	scripts *scripts.ScriptService,
	graceful *graceful_service.GracefulService,
	cron *cr.Cron,
	mqtt *mqtt.Mqtt,
	streamService *stream.StreamService,
	zigbee2mqtt *zigbee2mqtt.Zigbee2mqtt,
	metric *metrics.MetricManager) (core *Core, err error)

func (*Core) AddFlow

func (c *Core) AddFlow(flow *m.Flow) (err error)

func (*Core) AddNode

func (c *Core) AddNode(node *m.Node) (n *Node, err error)

func (*Core) AddWorkflow

func (b *Core) AddWorkflow(workflow *m.Workflow) (err error)

добавление рабочего процесс

func (*Core) ConnectNode

func (c *Core) ConnectNode(node *m.Node) (err error)

func (*Core) DeleteWorkflow

func (c *Core) DeleteWorkflow(workflow *m.Workflow) (err error)

нельзя удалить workflow, если присутствуют связанные сущности

func (*Core) DisconnectNode

func (c *Core) DisconnectNode(node *m.Node) (err error)

func (*Core) DoWorker

func (b *Core) DoWorker(worker *m.Worker) (err error)

func (*Core) GetFlow

func (c *Core) GetFlow(id int64) (*Flow, error)

func (*Core) GetNodeById

func (c *Core) GetNodeById(nodeId int64) *Node

func (*Core) GetNodes

func (b *Core) GetNodes() (nodes map[int64]*Node)

func (*Core) GetWorkflow

func (b *Core) GetWorkflow(workflowId int64) (workflow *Workflow, err error)

func (*Core) InitWorkflows

func (b *Core) InitWorkflows() (err error)

инициализация всего рабочего процесса, с запуском дочерни подпроцессов

func (*Core) ReloadNode

func (c *Core) ReloadNode(node *m.Node) (err error)

func (*Core) RemoveFlow

func (c *Core) RemoveFlow(flow *m.Flow) error

func (*Core) RemoveNode

func (b *Core) RemoveNode(node *m.Node) (err error)

func (*Core) RemoveWorker

func (b *Core) RemoveWorker(worker *m.Worker) (err error)

func (*Core) Run

func (c *Core) Run() (err error)

func (*Core) Shutdown

func (b *Core) Shutdown()

func (*Core) Stop

func (b *Core) Stop() (err error)

func (*Core) UpdateFlow

func (c *Core) UpdateFlow(flow *m.Flow) error

func (*Core) UpdateFlowFromDevice

func (b *Core) UpdateFlowFromDevice(device *m.Device) (err error)

func (*Core) UpdateWorker

func (b *Core) UpdateWorker(_worker *m.Worker) (err error)

func (*Core) UpdateWorkflow

func (c *Core) UpdateWorkflow(workflow *m.Workflow) (err error)

func (*Core) UpdateWorkflowScenario

func (c *Core) UpdateWorkflowScenario(workflowId int64) (err error)

type Device

type Device struct {
	// contains filtered or unexported fields
}

func (*Device) ModBus added in v0.0.19

func (d *Device) ModBus(f string, address, count uint16, command []uint16) (result *DevModBusResponse)

func (*Device) RunCommand

func (d *Device) RunCommand(name string, args []string) (result *DevCommandResponse)

run command

func (*Device) SmartBus

func (d *Device) SmartBus(command []byte) (result *DevSmartBusResponse)

type DeviceBind

type DeviceBind struct {
	// contains filtered or unexported fields
}

Javascript Binding

Device

.GetName()
.GetModel()
.GetDescription()
.RunCommand(command []string)
.SmartBus(command []byte)
.ModBus(func string, address, count int64, command []byte)

func (*DeviceBind) GetDescription

func (d *DeviceBind) GetDescription() string

func (*DeviceBind) GetModel

func (d *DeviceBind) GetModel() *m.Device

func (*DeviceBind) GetName

func (d *DeviceBind) GetName() string

func (*DeviceBind) ModBus

func (d *DeviceBind) ModBus(f string, address, count uint16, command []uint16) (result *DevModBusResponse)

func (*DeviceBind) RunCommand

func (d *DeviceBind) RunCommand(name string, args []string) (result *DevCommandResponse)

func (*DeviceBind) SmartBus

func (d *DeviceBind) SmartBus(command []byte) (result *DevSmartBusResponse)

type Flow

type Flow struct {
	Storage
	Model *m.Flow

	Connections  []*m.Connection
	FlowElements []*FlowElement

	Node *Node

	sync.Mutex

	Workers map[int64]*Worker
	// contains filtered or unexported fields
}

func NewFlow

func NewFlow(model *m.Flow,
	workflow *Workflow,
	adaptors *adaptors.Adaptors,
	scripts *scripts.ScriptService,
	cron *cr.Cron,
	core *Core,
	mqtt *mqtt.Mqtt,
	zigbee2mqtt *zigbee2mqtt.Zigbee2mqtt) (flow *Flow, err error)

func (*Flow) AddWorker

func (f *Flow) AddWorker(model *m.Worker) (err error)

func (*Flow) GetMessage added in v0.0.25

func (f *Flow) GetMessage() *Message

func (*Flow) InitWorkers

func (f *Flow) InitWorkers() (err error)

func (*Flow) NewMessage

func (f *Flow) NewMessage(ctx context.Context) (err error)

func (*Flow) NewScript

func (f *Flow) NewScript(s ...*m.Script) (engine *scripts.Engine, err error)

func (*Flow) Remove

func (f *Flow) Remove()

func (*Flow) RemoveWorker

func (f *Flow) RemoveWorker(worker *m.Worker) (err error)

func (*Flow) SetMessage added in v0.0.25

func (f *Flow) SetMessage(msg *Message)

func (*Flow) UpdateWorker

func (f *Flow) UpdateWorker(worker *m.Worker) (err error)

type FlowBind

type FlowBind struct {
	// contains filtered or unexported fields
}

Javascript Binding

Flow

.GetName()
.GetDescription()
.SetVar(string, interface)
.GetVar(string)
.Node()

func (*FlowBind) GetDescription

func (f *FlowBind) GetDescription() string

func (*FlowBind) GetName

func (f *FlowBind) GetName() string

func (*FlowBind) GetVar

func (f *FlowBind) GetVar(key string) interface{}

func (*FlowBind) Node

func (f *FlowBind) Node() *NodeBind

func (*FlowBind) SetVar

func (f *FlowBind) SetVar(key string, value interface{})

type FlowElement

type FlowElement struct {
	Model        *m.FlowElement
	Flow         *Flow
	Workflow     *Workflow
	ScriptEngine *scripts.Engine
	Prototype    ActionPrototypes

	Action *Action
	// contains filtered or unexported fields
}

func NewFlowElement

func NewFlowElement(model *m.FlowElement,
	flow *Flow,
	workflow *Workflow,
	adaptors *adaptors.Adaptors) (flowElement *FlowElement, err error)

func (*FlowElement) After

func (f *FlowElement) After() error

func (*FlowElement) Before

func (f *FlowElement) Before(ctx context.Context) (newCtx context.Context, err error)

func (*FlowElement) GetStatus

func (f *FlowElement) GetStatus() (status Status)

func (*FlowElement) Run

func (f *FlowElement) Run(ctx context.Context) (newCtx context.Context, b bool, err error)

run internal process

type FlowLink struct{}

ActionPrototypes

func (*FlowLink) After

func (m *FlowLink) After(flow *Flow) (err error)

func (*FlowLink) Before

func (m *FlowLink) Before(flow *Flow) (err error)

func (*FlowLink) Run

func (m *FlowLink) Run(flow *Flow) (err error)

func (*FlowLink) Type

func (m *FlowLink) Type() string

type Gateway

type Gateway struct{}

ActionPrototypes

func (*Gateway) After

func (m *Gateway) After(flow *Flow) (err error)

func (*Gateway) Before

func (m *Gateway) Before(flow *Flow) (err error)

func (*Gateway) Run

func (m *Gateway) Run(flow *Flow) (err error)

func (*Gateway) Type

func (m *Gateway) Type() string

type Map

type Map struct {
	// contains filtered or unexported fields
}

func NewMap added in v0.1.2

func NewMap(metric *metrics.MetricManager) *Map

func (*Map) GetElement

func (b *Map) GetElement(device *m.Device, elementName string) (element *MapElement)

func (*Map) GetElements

func (b *Map) GetElements(device *m.Device) (elements []*MapElement)

func (*Map) NewMapElement

func (b *Map) NewMapElement(device *m.Device, elementName string, state *m.DeviceState) *MapElement

func (*Map) SetElementState

func (b *Map) SetElementState(device *m.Device, elementName, systemName string)

type MapBind

type MapBind struct {
	Map *Map
}

Javascript Binding

Map

.SetElementState(device, elementName, newState)
.GetElement(device, elementName) -> MapElementBind
.GetElements(device) -> []MapElementBind

func (*MapBind) GetElement

func (e *MapBind) GetElement(device *DeviceBind, elementName string) (element *MapElementBind)

func (*MapBind) GetElements

func (e *MapBind) GetElements(device *DeviceBind) (elements []*MapElementBind)

func (*MapBind) SetElementState

func (e *MapBind) SetElementState(device *DeviceBind, elementName, newState string)

type MapElement

type MapElement struct {
	sync.Mutex
	Map         *Map
	Options     interface{}
	Device      *m.Device
	State       *m.DeviceState
	ElementName string
}

func (*MapElement) GetOptions

func (e *MapElement) GetOptions() interface{}

func (*MapElement) GetState

func (e *MapElement) GetState() interface{}

func (*MapElement) SetOptions

func (e *MapElement) SetOptions(options interface{})

func (*MapElement) SetState

func (e *MapElement) SetState(systemName string)

type MapElementBind

type MapElementBind struct {
	// contains filtered or unexported fields
}

Javascript Binding

MapElement

.SetState(name)
.GetState()
.SetOptions(options)
.GetOptions()

func (*MapElementBind) GetOptions

func (e *MapElementBind) GetOptions() interface{}

func (*MapElementBind) GetState

func (e *MapElementBind) GetState() interface{}

func (*MapElementBind) SetOptions

func (e *MapElementBind) SetOptions(options interface{})

func (*MapElementBind) SetState

func (e *MapElementBind) SetState(name string)

type Message

type Message struct {
	Error string

	Success   bool
	Direction bool
	Mqtt      bool
	// contains filtered or unexported fields
}

func NewMessage

func NewMessage() (m *Message)

func (*Message) Clear

func (m *Message) Clear()

func (*Message) Copy

func (m *Message) Copy() (msg *Message)

func (*Message) GetVar added in v0.0.21

func (m *Message) GetVar(key string) (value interface{})

func (*Message) Ok

func (m *Message) Ok()

func (*Message) SetError

func (m *Message) SetError(err string)

func (*Message) SetVar added in v0.0.21

func (m *Message) SetVar(key string, value interface{})

func (*Message) Setdir

func (m *Message) Setdir(d bool)

func (*Message) Update added in v0.0.25

func (m *Message) Update(newMsg *Message)

type MessageEmitter

type MessageEmitter struct{}

ActionPrototypes

func (*MessageEmitter) After

func (m *MessageEmitter) After(flow *Flow) (err error)

func (*MessageEmitter) Before

func (m *MessageEmitter) Before(flow *Flow) (err error)

func (*MessageEmitter) Run

func (m *MessageEmitter) Run(flow *Flow) (err error)

func (*MessageEmitter) Type

func (m *MessageEmitter) Type() string

type MessageHandler

type MessageHandler struct{}

ActionPrototypes

func (*MessageHandler) After

func (m *MessageHandler) After(flow *Flow) (err error)

func (*MessageHandler) Before

func (m *MessageHandler) Before(flow *Flow) (err error)

func (*MessageHandler) Run

func (m *MessageHandler) Run(flow *Flow) (err error)

func (*MessageHandler) Type

func (m *MessageHandler) Type() string

type Node

type Node struct {
	*m.Node
	sync.Mutex
	// contains filtered or unexported fields
}

func NewNode

func NewNode(model *m.Node,
	mqtt *mqtt.Mqtt,
	metric *metrics.MetricManager) *Node

func (*Node) Connect

func (n *Node) Connect() *Node

func (*Node) Disconnect

func (n *Node) Disconnect()

func (*Node) GetConnStatus added in v0.0.25

func (n *Node) GetConnStatus() string

func (*Node) GetStat added in v0.0.25

func (n *Node) GetStat() NodeStat

func (*Node) IsConnected

func (n *Node) IsConnected() bool

func (*Node) MqttPublish added in v0.0.21

func (n *Node) MqttPublish(msg interface{})

func (*Node) Remove added in v0.0.25

func (n *Node) Remove()

func (*Node) Send

func (n *Node) Send(device *m.Device, command []byte) (result NodeResponse, err error)

func (*Node) UpdateClientParams added in v0.0.25

func (n *Node) UpdateClientParams(params *m.Node)

type NodeBind

type NodeBind struct {
	// contains filtered or unexported fields
}

Javascript Binding

Node

.Name()
.Status()
.Stat()
.Description()
.IsConnected()

func (*NodeBind) Description

func (n *NodeBind) Description() string

func (*NodeBind) IsConnected

func (n *NodeBind) IsConnected() bool

func (*NodeBind) Name

func (n *NodeBind) Name() string

func (*NodeBind) Stat

func (n *NodeBind) Stat() NodeStat

func (*NodeBind) Status

func (n *NodeBind) Status() string

type NodeMessage

type NodeMessage struct {
	DeviceId   int64             `json:"device_id"`
	DeviceType common.DeviceType `json:"device_type"`
	Properties json.RawMessage   `json:"properties"`
	Command    json.RawMessage   `json:"command"`
}

type NodeResponse

type NodeResponse struct {
	DeviceId   int64             `json:"device_id"`
	DeviceType common.DeviceType `json:"device_type"`
	Properties json.RawMessage   `json:"properties"`
	Response   json.RawMessage   `json:"response"`
	Status     string            `json:"status"`
	Time       float64           `json:"time"`
}

type NodeStat added in v0.0.25

type NodeStat struct {
	Status      NodeStatus `json:"status"`
	Thread      int        `json:"thread"`
	Rps         int64      `json:"rps"`
	Min         int64      `json:"min"`
	Max         int64      `json:"max"`
	StartedAt   time.Time  `json:"started_at"`
	LastPing    time.Time  `json:"last_ping"`
	ConnStatus  string     `json:"conn_status"`
	IsConnected bool       `json:"is_connected"`
}

type NodeStatModel

type NodeStatModel struct {
	Status    NodeStatus `json:"status"`
	Thread    int        `json:"thread"`
	Rps       int64      `json:"rps"`
	Min       int64      `json:"min"`
	Max       int64      `json:"max"`
	StartedAt time.Time  `json:"started_at"`
}

type NodeStatus

type NodeStatus string

type Nodes

type Nodes []*Node

type Status

type Status string

type Storage

type Storage struct {
	// contains filtered or unexported fields
}

func NewStorage added in v0.0.17

func NewStorage() Storage

func (*Storage) GetVar

func (s *Storage) GetVar(key string) (value interface{})

func (*Storage) SetVar

func (s *Storage) SetVar(key string, value interface{})

type Task

type Task struct{}

ActionPrototypes

func (*Task) After

func (m *Task) After(flow *Flow) (err error)

func (*Task) Before

func (m *Task) Before(flow *Flow) (err error)

func (*Task) Run

func (m *Task) Run(flow *Flow) (err error)

func (*Task) Type

func (m *Task) Type() string

type Worker

type Worker struct {
	Model *m.Worker

	CronTask *cr.Task

	sync.Mutex
	// contains filtered or unexported fields
}

func NewWorker

func NewWorker(model *m.Worker, flow *Flow, cron *cr.Cron) (worker *Worker)

func (*Worker) AddAction

func (w *Worker) AddAction(action *Action)

func (*Worker) Do

func (w *Worker) Do()

Run worker script, and send result to flow as message struct

func (*Worker) Start added in v0.0.17

func (w *Worker) Start()

func (*Worker) Stop added in v0.0.17

func (w *Worker) Stop()

type Workflow

type Workflow struct {
	Storage
	sync.Mutex

	Flows map[int64]*Flow
	// contains filtered or unexported fields
}

func NewWorkflow

func NewWorkflow(model *m.Workflow,
	adaptors *adaptors.Adaptors,
	scripts *scripts.ScriptService,
	cron *cr.Cron,
	core *Core,
	mqtt *mqtt.Mqtt,
	zigbee2mqtt *zigbee2mqtt.Zigbee2mqtt,
	metric *metrics.MetricManager) (workflow *Workflow)

func (*Workflow) AddFlow

func (wf *Workflow) AddFlow(flow *m.Flow) (err error)

Flow должен быть полный: с Connections с FlowElements с Cursor с Workers

func (*Workflow) DoWorker added in v0.0.25

func (wf *Workflow) DoWorker(model *m.Worker) (err error)

func (*Workflow) GetFLow

func (wf *Workflow) GetFLow(flowId int64) (flow *Flow, err error)

func (*Workflow) NewScript

func (wf *Workflow) NewScript(model *m.Script) (engine *scripts.Engine, err error)

func (*Workflow) RemoveFlow

func (wf *Workflow) RemoveFlow(flow *m.Flow) (err error)

func (*Workflow) RemoveWorker added in v0.0.25

func (wf *Workflow) RemoveWorker(_worker *m.Worker) (err error)

func (*Workflow) Restart

func (wf *Workflow) Restart() (err error)

func (*Workflow) Run

func (wf *Workflow) Run() (err error)

func (*Workflow) SetScenario

func (wf *Workflow) SetScenario(systemName string) (err error)

func (*Workflow) Stop

func (wf *Workflow) Stop() (err error)

func (*Workflow) UpdateFlow

func (wf *Workflow) UpdateFlow(flow *m.Flow) (err error)

func (*Workflow) UpdateScenario

func (wf *Workflow) UpdateScenario() (err error)

func (*Workflow) UpdateWorker added in v0.0.25

func (wf *Workflow) UpdateWorker(_worker *m.Worker) (err error)

type WorkflowBind

type WorkflowBind struct {
	// contains filtered or unexported fields
}

Javascript Binding

Workflow

.GetName()
.GetDescription()
.SetVar(string, interface)
.GetVar(string)
.GetScenario() string
.GetScenarioName() string
.SetScenario(string)

func (*WorkflowBind) GetDescription

func (w *WorkflowBind) GetDescription() string

func (*WorkflowBind) GetName

func (w *WorkflowBind) GetName() string

func (*WorkflowBind) GetScenario

func (w *WorkflowBind) GetScenario() string

func (*WorkflowBind) GetScenarioName

func (w *WorkflowBind) GetScenarioName() string

func (*WorkflowBind) GetVar

func (w *WorkflowBind) GetVar(key string) interface{}

func (*WorkflowBind) SetScenario

func (w *WorkflowBind) SetScenario(system_name string)

func (*WorkflowBind) SetVar

func (w *WorkflowBind) SetVar(key string, value interface{})

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL