Controller/proto/tsgrain.proto

140 lines
3.7 KiB
Protocol Buffer

syntax = "proto3";
import "google/protobuf/empty.proto";
import "google/protobuf/wrappers.proto";
service TSGRain {
// Starte eine neue Bewässerungsaufgabe (oder stoppe eine laufende, wenn
// diese bereits läuft).
rpc RequestTask(TaskRequest) returns (TaskRequestResult) {}
// Starte eine Bewässerungsaufgabe
rpc StartTask(TaskStart) returns (google.protobuf.BoolValue) {}
// Stoppe eine Bewässerungsaufgabe
rpc StopTask(TaskStop) returns (google.protobuf.BoolValue) {}
// Gibt sämtliche in der Warteschlange befindlichen Bewässerungsaufgaben zurück.
rpc GetTasks(google.protobuf.Empty) returns (TaskList) {}
// Streamt die aktuelle Warteschlange mit ihren Bewässerungsaufgaben,
// d.h. bei Änderung wird die neue Version übertragen.
rpc StreamTasks(google.protobuf.Empty) returns (stream TaskList) {}
// Erstelle einen neuen Bewässerungsjob.
rpc CreateJob(Job) returns (JobID) {}
// Gibt den Bewässerungsjob mit der gegebenen ID zurück.
rpc GetJob(JobID) returns (Job) {}
// Gibt alle gespeicherten Bewässerungsjobs zurück.
rpc GetJobs(google.protobuf.Empty) returns (JobList) {}
// Aktualisiert einen Bewässerungsjob.
rpc UpdateJob(Job) returns (google.protobuf.Empty) {}
// Lösche den Bewässerungsjob mit der gegebenen ID.
rpc DeleteJob(JobID) returns (google.protobuf.Empty) {}
// Aktiviere Bewässerungsjob
rpc EnableJob(JobID) returns (google.protobuf.Empty) {}
// Deaktiviere Bewässerungsjob
rpc DisableJob(JobID) returns (google.protobuf.Empty) {}
// Gibt zurück, ob der Automatikmodus aktiviert ist.
rpc GetAutoMode(google.protobuf.Empty) returns (google.protobuf.BoolValue) {}
// Aktiviert/deaktiviert den Automatikmodus.
rpc SetAutoMode(google.protobuf.BoolValue) returns (google.protobuf.Empty) {}
// Datum/Uhrzeit/Zeitzone abrufen
rpc GetSystemTime(google.protobuf.Empty) returns (SystemTime) {}
// Datum/Uhrzeit einstellen
rpc SetSystemTime(Timestamp) returns (google.protobuf.Empty) {}
// Zeitzone einstellen
rpc SetSystemTimezone(google.protobuf.StringValue) returns (google.protobuf.Empty) {}
// Standardzeit bei manueller Bewässerung abrufen
rpc GetDefaultIrrigationTime(google.protobuf.Empty) returns (google.protobuf.Int32Value) {}
// Standardzeit bei manueller Bewässerung einstellen
rpc SetDefaultIrrigationTime(google.protobuf.Int32Value) returns (google.protobuf.Empty) {}
// Anzahl Bewässerungszonen abrufen
rpc GetNZones(google.protobuf.Empty) returns (google.protobuf.Int32Value) {}
}
// Quelle einer Bewässerungsaufgabe
enum TaskSource {
MANUAL = 0;
SCHEDULE = 1;
}
// Unix-Zeitstempel
message Timestamp {
int64 seconds = 1;
}
message TaskRequest {
TaskSource source = 1;
int32 zone_id = 2;
int32 duration = 3;
bool queuing = 4;
bool cancelling = 5;
}
message TaskRequestResult {
bool started = 1;
bool stopped = 2;
}
message TaskStart {
TaskSource source = 1;
int32 zone_id = 2;
int32 duration = 3;
bool queuing = 4;
}
message TaskStop {
TaskSource source = 1;
int32 zone_id = 2;
}
message Task {
TaskSource source = 1;
int32 zone_id = 2;
int32 duration = 3;
Timestamp datetime_started = 4;
Timestamp datetime_finished = 5;
}
message TaskList {
repeated Task tasks = 1;
Timestamp now = 2;
bool auto_mode = 3;
}
message Job {
int32 id = 1;
Timestamp date = 2;
int32 duration = 3;
repeated int32 zones = 4;
bool enable = 5;
bool repeat = 6;
}
message JobID {
int32 id = 1;
}
message JobList {
repeated Job jobs = 1;
}
message SystemTime {
Timestamp datetime = 1;
string timezone = 2;
}