Antodis

Seshat Go SDK

TR | EN

Go SDK

Türkçe dokümantasyon: Tipli servisler & birleşik seçenek kalıpları (FindOptions, LiveOptions, IoTQueryOptions).

Kurulum

go get git.antodis.com/seshat/sdk

Modül

Modül bilgisi yükleniyor…

İstemci Başlatma

c := sdk.NewAntodisSdk(apiKey, secret,
  sdk.WithHost("localhost"), // seshat sunucusu
)

Sensörler: Arama & Sayfalama

opt := c.Sensors.FindOpts()
opt.SetName("temp")
opt.SetTag("critical")
opt.SetAll(true)
err := c.Sensors.FindEachPage(ctx, opt, func(items []sdk.Sensor, total, page, limit int) bool {
  // öğeleri işle
  return true
})

Fonksiyon özeti: Find tek sayfa (öğeler + toplam) döndürür. FindEachPage tüm sayfaları sırasıyla gezinir ve işleyiciniz döndürdüğü sürece devam eder. FindHandler sadece ilerleme/tahmini için toplam & sayfa & limit metadatasını verir. Filtreler AND ile birleşir; sıfır/boş değerler sorguya eklenmez. Hata oluşursa yineleme durur.

Dönüşler

Find / FindEachPage callback'leri sensör modelleri ve sayfalama bilgisi döndürür.

Sensor alanları (Go)

SensorValue

FindOptions setter'ları

Notlar

Makine Listesi

mopt := c.Machines.FindOpts()
mopt.SetTag("production")
machines, total, err := c.Machines.Find(ctx, mopt)

Dönüşler

Machine alanları (Go)

Canlı

err = c.Sensors.Live(func(sensorId string, data any, dataType int) {
  fmt.Println(sensorId, data, dataType)
})

Veri Tipleri (t → Go türü)

Callback içindeki t tip kimliği ve v karşılık gelen Go türüdür.

Canlı fonksiyonlar: Live ve LiveContext içten LiveWith üzerine kurulur. Yayın önce akış denemesi yapar; bağlantı koparsa periyodik polling'e geçer. Sensör listesi verilmezse yeni sensörleri yakalamak için liste 60 saniyede bir yenilenir. Callback hataları döngüyü bozmaz. İptal etmek için context'i cancel edin.

IoT Verisi (Tipli)

q := sdk.IotData.QueryOptions()
q.SetSensorIDs("sensor123")
q.SetPerPage(50)
q.SortByDateDesc()
resp, _ := c.Sensors.IotData(ctx, q)
for _, item := range resp.Items {
  _ = item.Value
}

IoT uçları: IotData zaman serisi değer kayıtlarını döndürür; IotDataChanges değişim odaklı aralıkları döndürür. Setter'lar sayfalama, zaman aralığı, değer aralığı, tam değer ve sıralama kontrolü sağlar. Boş alanlar sorguya eklenmez.

Dönüşler

IoTDataResponse

IoTDataRecord

IoTDataMetadata
IoTDataChangeMeta

IoTQueryOptions Setter'ları

Bağlantılar Yazma

Her sensör bir bağlantıya bağlıdır. Örn: MQTT veya PostgreSQL. MQTT'ye yazmak için sürücü parametreleriyle gelişmiş yazım kullanın.

// Gelişmiş yazım (topic parametresiyle tek bool)
var r bool = true
vd, _ := json.Marshal(r)
items := []*proto.WriteItem{
  {Value: vd, AnyValue: &anypb.Any{Value: vd}, Type: 16, Parameters: []*proto.KeyValue{
    {Key: "topic", Value: []byte("67333c8d615f8c6cd6f07c38/67333c8d615f8c6cd6f07c39")},
  }},
}
err := c.Connections.Write(ctx, "mqtt://0.0.0.0:8888", items)

Hata Yönetimi

// Tek çağrı ve hata kontrolü
sensors, total, err := c.Sensors.Find(ctx, c.Sensors.FindOpts())
if err != nil { /* kaydet + dön */ }

// Yineleme (hata olursa durur)
_ = c.Sensors.FindEachPage(ctx, opt, func(items []sdk.Sensor, total, page, limit int) bool {
  return true
})

// Context timeout ile canlı
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
defer cancel()
if err := c.Sensors.LiveWith(ctx, sdk.LiveOptions{Interval: time.Second}, cb); err != nil {
  // geçici ise backoff dene
}

Olay Tetikleme

resp, err := c.Events.Trigger(ctx, "rebuild-cache", map[string]any{"fast": true})