5.10 IoT cihazları ve cihaz istemcileri

<< İçindekileri Görüntülemek İçin Tıklayın >>

Yer:  Teknik Kılavuzlar > Netsim System Agent Kurulum ve Yönetim Kılavuzu > 5. Servis yüzeyleri >

5.10 IoT cihazları ve cihaz istemcileri

Ağ geçidi tarafı. IoTGateway işlemcisine bağlanabilecek cihazlar MASTER'daki iot$device sistem tablosunda tanımlanır. Ağ geçidi her komutta iot$active değeri true olan satırları okur; bir satırdaki değişiklik sonraki komutta geçerlidir. Satır, bağlanan cihaz istemcisine cihaz bilgisi olarak gönderilir ve istemcideki cihaz sınıfı parametrelerini buradan alır. Boş kolon sınıfın öndeğerini kullanır; bir sınıfın kullanmadığı kolon boş bırakılır.

KolonAnlam
iot$device_idSatırın kimliği; verilmezse üretilir.
iot$gateway_device_idCihazın kimliği; istemci deviceConnect'te bunu verir. Tabloda tekildir.
iot$descriptionAçıklama.
iot$activeCihazın bağlanabilir olup olmadığı; öndeğer true.
iot$device_classCihaz sınıfı: COM (seri porttan kayıt okuyan cihaz, ör. terazi) ya da EmkoEZM9950 (Modbus sayaç).
iot$secret_keydeviceConnect'in paylaşılan gizli anahtarı. Tabloda açık metin durur.
iot$update_intervalOkuma aralığı (ms, 1–86400000; öndeğer 300).
iot$update_threshold_changeBildirim için gereken en küçük değişim (öndeğer 1).
iot$update_threshold_timeDeğişim olmasa da bildirim aralığı (ms; öndeğer 10000).
iot$port, iot$baud_rate, iot$data_bitsSeri port numarası (COM), hızı ve veri bitleri (5–8).
iot$parity, iot$stop_bits, iot$flow_controlNone/Odd/Even/Mark/Space; 1/1.5/2; None/XOnXOff/RTS_CTS/DSR_DTR.
iot$input_buffer_size, iot$output_buffer_sizeSeri port tampon boyları.
iot$input_timeout, iot$output_timeoutOkuma ve yazma zaman aşımı (ms).
iot$packet_size, iot$packet_timeoutCOM: paket boyu (-1 = kayıt sonlandırıcıya kadar) ve paket zaman aşımı (ms).
iot$raw_data_trim_left, iot$raw_data_trim_right, iot$record_terminatorCOM: okunan kaydın baş/son boşluklarının kırpılması ve kayıt sonlandırıcı karakter.
iot$protocol, iot$byte_order, iot$word_order, iot$unit_idModbus: RTU/ASCII/TCP…; Big/Little; birim numarası.

Örnek (bir Modbus sayaç ve bir terazi; iot$record_terminator satır başı karakteridir):

-- iot_agcihazlar.sql  (msql -U SYSDBA -W <parola> -f iot_agcihazlar.sql)
insert into iot$device (iot$gateway_device_id, iot$description, iot$device_class, iot$secret_key,
    iot$update_interval, iot$update_threshold_change, iot$update_threshold_time,
    iot$port, iot$baud_rate, iot$data_bits, iot$parity, iot$stop_bits, iot$input_timeout, iot$output_timeout,
    iot$protocol, iot$byte_order, iot$word_order, iot$unit_id)
  values ('35F807FE-AE63-451B-AECF-89E68DCC225F', 'KALİTE 1 SAYAÇ', 'EmkoEZM9950', '123456',
    300, 1, 10000,
    1, 9600, 8, 'None', '1', 1200, 100,
    'ASCII', 'Big', 'Big', 1);
insert into iot$device (iot$gateway_device_id, iot$description, iot$device_class, iot$secret_key,
    iot$update_interval, iot$update_threshold_change, iot$update_threshold_time,
    iot$port, iot$baud_rate, iot$data_bits, iot$parity, iot$stop_bits,
    iot$input_buffer_size, iot$input_timeout, iot$output_timeout,
    iot$packet_size, iot$packet_timeout, iot$raw_data_trim_left, iot$raw_data_trim_right, iot$record_terminator)
  values ('5E21D039-C737-4C38-84DA-F9D5E710676F', 'KALİTE 1 TERAZİ', 'COM', '123456',
    100, 0, 10000,
    3, 9600, 8, 'None', '1',
    2048, 1200, 100,
    -1, 2000, false, false, c'\r');
commit;

Cihaz tarafı. Ajanın çalıştığı makineye bağlı bir cihaz (terazi, sayaç) bir IoTGateway'e cihaz istemcisi olarak bağlanabilir. İstemciler MASTER'daki iot$legacy_device sistem tablosunda tanımlanır. Görev zamanlayıcısı hizmet açılışında iot$active değeri true olan her satır için bir cihaz görevi başlatır; tablodaki değişiklik hizmet yeniden başlayınca geçerli olur. Tablo her veritabanında vardır, ajanın okuduğu MASTER'ınkidir. Ağ geçidi tarafında aynı cihaz, aynı kimlik ve gizli anahtarla ağ geçidinin iot$device tablosunda tanımlı olmalıdır.

KolonAnlam
iot$legacy_device_idSatırın kimliği; verilmezse üretilir.
iot$gateway_device_idCihazın ağ geçidindeki kimliği (ağ geçidinin iot$device.iot$gateway_device_id'si); tabloda tekildir.
iot$nameCihazın adı; görev ve günlük satırları bu adla anılır.
iot$descriptionSerbest açıklama.
iot$activeGörevin başlatılıp başlatılmayacağı; öndeğer true.
iot$gatewayAğ geçidinin adresi, ör. ws://localhost:82/IoTGateway.
iot$secret_keyCihaz kaydının paylaşılan gizli anahtarı. Tabloda açık metin durur.

Tanımlar çalışan hizmete msql ile girilir. Örnek (iki cihaz; tanım, cihazın bağlı olduğu makinedeki ajanda iot$active = true ile girilir):

-- iot_cihazlar.sql
insert into iot$legacy_device (iot$gateway_device_id, iot$name, iot$active, iot$gateway, iot$secret_key)
  values ('35F807FE-AE63-451B-AECF-89E68DCC225F', 'Kalite 1 Sayaç', false, 'ws://localhost:82/IoTGateway', '123456');
insert into iot$legacy_device (iot$gateway_device_id, iot$name, iot$active, iot$gateway, iot$secret_key)
  values ('5E21D039-C737-4C38-84DA-F9D5E710676F', 'Kalite 1 Terazi', false, 'ws://localhost:82/IoTGateway', '123456');
commit;

msql -U SYSDBA -W <parola> -f iot_cihazlar.sql

Görev zamanlayıcısı bu satırları görev listesini kurarken okur; yeni ya da değişen bir satırın görev listesine girmesi için hizmet yeniden başlatılır (görev listesi zamanlayıcı alt sürecinin açılışında kurulur).

Ağ geçidi yanlış anahtar ya da bilinmeyen cihaz nedeniyle bağlantıyı reddederse görev durur ve günlüğe tek bir hata yazar; oturum sınırı gibi geçici retlerde yeniden dener.