İçeriğe geç
TREN
Atlıhan Harita

Lixel OpenAPI Kullanım Kılavuzu · Python

Sık Sorulan Sorular

Bölüm 08.3 / 09Kılavuz sürümü v1.1.0Türkçe

Bağlantı zaman aşımı

Aşağıdakileri kontrol edin:

  • Cihaz ana bilgisayarının (host) ve bağlantı noktasının (port) doğru olup olmadığı (MQTT için 1883, MQTTS için 8883).
  • Protokolün cihaz modeliyle uyumlu olup olmadığı (L2PRO MQTT kullanır; K2, H1, F1 ve Porcam için MQTTS kullanıldığı bilinmektedir, diğer modeller cihazın fiilen sunduğu bağlantı noktasını izler).
  • MQTTS için kullanıcı adı ve parolanın girilip girilmediği.

Bağlantı başarısız olduğunda sarmalayıcının (wrapper) connect() yöntemi bir istisna oluşturur: ulaşılamayan adres veya kapalı bağlantı noktası OSError oluşturur (ConnectionRefusedError dahil; Python 3.10+ sürümünde ağ zaman aşımı TimeoutError olur). TCP bağlantısı kurulmuş ancak 10 saniye içinde başarılı bir CONNACK gelmemişse (aracının bağlantıyı reddetmesi dahil) TimeoutError oluşur. Zaman aşımı ClientOptions.connect_timeout ile ayarlanır.

Yanıt yok / istek zaman aşımı

Önce cihazın yanıt verip vermediğini kontrol edin:

  • EC_ProtoError ile yanıt verdi, desc değeri openapi auth error: openapi_key eksik veya yanlış. Cihaz hemen yanıt verir, bu nedenle bu bir zaman aşımı değildir.
  • Hiç yanıt yok, request() TimeoutError oluşturuyor: istek konusunun (topic) ileti türüyle eşleştiğini ve cihazın yanıt verebilecek bir durumda olduğunu doğrulayın. Bazı istekler cihaz bekleme modundayken yanıtlanmaz, ör. modeling_status ve control_point; yanıt, tarama sırasında alındı (ölçüldü). Cihaz açıldıktan hemen sonra hazır olmayabilir; önce device_info isteğini yeniden deneyin.

request() varsayılan olarak 10 saniyelik zaman aşımı kullanır; bu değer --timeout betik argümanı veya ClientOptions.request_timeout ile ayarlanabilir.

Protobuf sürüm hatası

Modülü yeniden oluşturmak için python python/src/generate_proto.py komutunu çalıştırın; böylece üretilen kod (gencode) çalışma zamanındaki protobuf sürümüyle uyumlu kalır. Proje, C uzantısı uyumsuzluklarını önlemek için varsayılan olarak saf Python uygulamasını kullanır.

Nokta bulutu çözme başarısız

Sırayla kontrol edin:

  1. Açma (decompression) bağımlılıklarını kurun: pip install lz4 zstandard.
  2. Cihazın taramada olduğunu doğrulayın; bekleme modunda poza abone olmak veri üretmedi (ölçüldü) ve nokta bulutu yalnızca tarama sırasında alınabilir.
  3. CompressionLz4 verisi LZ4 blok biçimindedir; lz4.block.decompress(data, uncompressed_size=compressed_size) ile açın. lz4.frame kullanmak ERROR_frameType_unknown hatasıyla sonuçlanır.
  4. Çözülen x, y, z ve scaler değerleri dizedir (string). Önce bunları tam sayıya dönüştürün, ardından koordinatı yeniden oluşturmak için iletim sırasındaki (wire) tam sayıyı header.scaler değerine bölün. Bkz. Gerçek Zamanlı Veri.
  5. Abonelik geri çağırma (callback) işlevindeki bir istisna yalnızca günlüğe kaydedilir ve programı kesintiye uğratmaz. Hata ayıklarken terminal günlük çıktısını izleyin.

Nokta bulutu çözmenin tüm adımları için Gerçek Zamanlı Veri sayfasına bakın.

Enum alanları nasıl doldurulur

Enum alanları enum adı dizesini (önerilir, ör. "AC_START") veya tam sayı değerini kabul eder.

Not: Yanlış yazılmış bir enum adı veya alan adı kodlama sırasında bildirilmez; sessizce yok sayılır ve alan istekte yer almaz. Örneğin "AC_START" değerini "AC_STRAT" olarak yazarsanız: {"action": "AC_STRAT"} üzerinde codec.encode tek başına boş bayt üretir, request() ile gönderildiğinde yalnızca başlık (header) kalır ve cihaz action değerini AC_UNKNOW olarak görür. Bir enum'un sıfır değeri (ör. SM_PCL, RM_CALC) de iletimde kodlanmaz, bu nedenle cihaz isteği alan belirtilmemiş gibi görür. Bir parametrenin etkisi olmadığında, alan ve enum adlarını codec.default_json("<message name>") ile doğrulayın.

Ölçüm noktası / veri açma etkisiz

Bu iki özellik yalnızca belirli modellerde ve firmware sürümlerinde desteklenir. Kullanmadan önce cihaz bilgisi üzerinden firmware sürümünü sorgulayın ve hedef cihazın bu özelliği sunup sunmadığını XGRIDS ile doğrulayın. Özellik yoksa veya koşullar karşılanmıyorsa cihaz bir hata kodu döndürür. Örneğin testte bir Lixel L2Pro (firmware V3.2.1) cihazına ölçüm noktası isteği göndermek EC_RequestError (add point error) döndürdü. Ölçüm noktasını desteklemeyen cihazlarda, cihaz tarafı kaynak kodu rtk unavailable veya unsupported operation döndürür; geçerli proje yoksa project data empty döndürür. Bu üç durum test edilmedi.

Bu bölüm XGRIDS'in resmî kullanım kılavuzundan Türkçeye çevrildi; ekran görüntüleri ve arayüz adları özgün haliyle İngilizcedir. İngilizce aslı (yeni sekmede açılır) · Güncelleme:

XGRIDS Türkiye

Kurulumda ve Sahada Yanınızdayız

Atlıhan Harita; cihaz kurulumu, firmware güncellemesi, yazılım kullanımı ve saha uygulamalarında eğitim ve teknik destek verir. Sorunuzu iletin, uzmanımız size dönsün.

+90 216 546 0804