Antodis

Seshat Java SDK

TR | EN

Java SDK

Akıcı FindOptions, tiplendirilmiş IoT modelleri, dayanıklı canlı yayın geri dönüşü.

Kurulum

implementation files('libs/seshat-java-sdk.jar')

İndirilebilirler

Son sürüm bilgisi alınıyor…

İstemci Başlatma

SeshatClient client = new SeshatClient(SeshatClientOptions.builder()
  .host("localhost") // seshat sunucusu
  .apiKey("")
  .secret("")
  .company("")
  .build());

Sensörler

var fo = client.sensors.findOpts().name("temp").tag("critical").all(true);
client.sensors.findEachPage(fo, page -> {
  // page.json, page.page, page.limit
  return true;
});

Fonksiyon özeti: find tek sayfa + toplamı döndürür. findEachPage sıralı sayfalarda yineleme yapar; handler false döndürürse veya hata oluşursa durur. findHandler (gösterilmedi) tüm sayfaları gezerken yalnızca sayfalama metadatası (total/page/limit) verir—ilerleme göstergesi için faydalıdır. Boş değerler sorgudan çıkarılır. Hatalar yinelemeyi sonlandırır.

Dönüşler

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

Sensor alanları (Java)

SensorValue

FindOptions parametreleri

Notlar: Filtreler AND ile birleşir; sunucu sayfa boyutunu sınırlayabilir; aynı seçenekler Makineler servisi için geçerli.

IoTQueryOptions (Java) – akıcı setter'lar

IoT Verisi

// Sensöre göre son değer kayıtlarını filtrele
var q = SensorsService.IoTQueryOptions.create()
  .perPage(100)
  .sortByDateDesc()
  .start("2024-01-01T00:00:00Z")
  .end("2024-01-02T00:00:00Z");
var resp = client.sensors.getIoTData("sensor-1", q);
// Değişimler uç noktası
var changes = client.sensors.getIoTDataChanges("sensor-1", q);
if (resp != null && resp.items != null) {
  resp.items.forEach(rec -> {
    // rec.timestamp, rec.value, rec.metadata
  });
}

Dönüşler

IoTDataRecord (Java)

IoTDataMetadata
IoTDataChangeMeta

Makine Listeleme

var mo = new com.seshat.sdk.services.MachinesService.FindOptions().tag("production");
var res = client.machines.find(mo);
if (res != null) {
  var list = res.data; var total = res.total;
}

Makine fonksiyonları sensörlerle paralel: tek sayfa için find(); filtre mantığı aynı.

FindOptions özeti

Sensör FindOptions ile aynı davranış.

Dönüşler

Machine alanları (Java)

Canlı

// Basit canlı yayın (liste)
client.live.addListener(new com.seshat.sdk.live.SensorsLiveStream.Listener(){
  @Override public void onValue(seshat.v1.Seshat.ReadValueResponse v){
    System.out.println(v.getSensorId()+" -> type="+v.getType());
  }
  @Override public void onError(Throwable t){ t.printStackTrace(); }
  @Override public void onCompleted(){ System.out.println("canlı tamamlandı"); }
});
client.live.start(java.util.List.of("sensor123", "sensor456"));

Veri Tipleri (type id → Java türü)

Canlı callback içindeki type kimliği şu değerlere karşılık gelir:

Unsigned tipler genişletilmiş signed türlere dönüştürülür.

Bağlantılar

Her sensör bir bağlantıya bağlıdır. MQTT'ye parametre (ör: topic) ile yazmak için gelişmiş yazımı kullanın.

// Gelişmiş: topic parametresiyle boolean yazım
var adv = new com.seshat.sdk.services.ConnectionsService.AdvancedItem();
adv.anyValue = java.util.Map.of("value", true);
adv.typeOverride = 16; // bool
var p = new com.seshat.sdk.services.ConnectionsService.Parameter();
p.key = "topic"; p.value = "67333c8d615f8c6cd6f07c38/67333c8d615f8c6cd6f07c39".getBytes();
adv.parameters = java.util.List.of(p);
client.connections.writeAdvanced("mqtt://0.0.0.0:8888", java.util.List.of(adv));

client.connections.restart("mqtt://0.0.0.0:8888");

Olaylar

var resp = client.events.trigger("rebuild-cache", java.util.Map.of("fast", true));
var list = client.events.list();

Hata Yönetimi

try {
  var fo = client.sensors.findOpts().name("temp");
  var res = client.sensors.find(fo);
} catch (IOException e) {
  // log + yeniden dene
}

try {
  var q = SensorsService.IoTQueryOptions.create().perPage(100).sortByDateDesc();
  var data = client.sensors.getIoTData("sensor123", q);
} catch (IOException e) {
  // ağ / sunucu hatası
}