MQTT Entegrasyonu

Cihazlarınızı MQTT protokolü üzerinden Sensium'a bağlayın. Düşük bant genişliği, güvenilir mesaj iletimi ve QoS 1 ile en az bir kez teslimat garantisi.

Bağlantı Bilgileri

Broker (TLS)mqtts://api.sensium.io:8883
Broker (düz)mqtt://api.sensium.io:1883
Username{deviceKey}
Password{authToken}
QoS1 (At least once)
Topicpulse/{tenantId}/{deviceKey}/telemetry
FormatJSON

Not: Üretimde TLS portunu (8883) kullanın. deviceKey ve authToken değerleri Cihazlar → Cihaz detay sayfasından alınır. Token'ı sızdırırsanız Token'ı yeniden üret butonuyla geri alın.

Topic Yapısı

MQTT Topic
pulse/{tenantId}/{deviceKey}/telemetry

# Örnek:
pulse/41e1833a-a825-4924-9a59-b5e4b2af0502/cnc-001/telemetry

Payload Formatı

Telemetri Payload
{
  300">"deviceKey": 300">"cnc-001",
  300">"readings": [
    {
      300">"sensorKey": 300">"spindleTemperature",
      300">"value": 45.2,
      300">"unit": 300">"°C",
      300">"timestamp": 300">"2026-05-04T12:00:00Z",
      300">"quality": 300">"good"
    },
    {
      300">"sensorKey": 300">"vibrationX",
      300">"value": 2.3,
      300">"unit": 300">"mm/s"
    }
  ]
}

timestamp ve quality alanları opsiyoneldir. Timestamp gönderilmezse sunucu zamanı kullanılır; quality varsayılan olarak good kabul edilir (alternatifler: uncertain, bad).

Sensör Tipleri

Tipi bilinen sensörler panoda otomatik olarak doğru birim, ikon ve renkle çizilir. Özel tipler için type=custom kullanın.

TipBirimAçıklama
temperature°CSıcaklık
vibrationmm/sTitreşim hızı (RMS) — ISO 10816 zone'larıyla çizilir
vibration_peakgTepe ivme
vibration_x / vibration_y / vibration_zmm/s3 eksen titreşim — “3 Eksen” preset'i ile çizilir
pressurebarBasınç
humidity%Bağıl nem
rpmRPMDönüş hızı
currentAAkım
voltageVGerilim
powerkWAnlık güç
forceNKuvvet
flow_rateL/dkDebi
battery%Pil seviyesi (kablosuz cihazlar için)

Ölçeklendirme & Offset

Sensörler ham raw değer (örn. cihazın FW'inden gelen 230) veya nihai değer (2.30 mm/s) gönderebilir. Sensör tanımındaki scaleFactor ve valueOffset alanları her okumaya uygulanır:

Dönüşüm
finalValue = (rawValue * scaleFactor) + valueOffset

Advantech WISE-4210 gibi cihazlar titreşim için ham 0-65535 aralığında değer döner; scaleFactor=0.01 kullanırsanız mm/s'ye çevirir. Şablondan cihaz oluşturulduğunda bu değerler otomatik dolar.

Hazır Şablon: Advantech WISE-4210

Cihaz Ekle sihirbazında Advantech WISE-4210 Vibration Sensor şablonunu seçtiğinizde aşağıdaki sensörler scaleFactor değerleriyle birlikte otomatik oluşturulur:

sensorKeyTipscaleFactorBirim
vibration_rmsvibration0.01mm/s
vibration_peakvibration_peak0.001g
vibration_xvibration_x0.01mm/s
vibration_yvibration_y0.01mm/s
vibration_zvibration_z0.01mm/s
temperaturetemperature0.1°C
batterybattery1%

Python Örneği

mqtt_sender.py
import paho.mqtt.client as mqtt
import json, time

DEVICE_KEY = 300">"cnc-001"
AUTH_TOKEN = 300">"your-auth-token"   # Cihazlar → cihaz detay → kopyala
TENANT_ID  = 300">"your-tenant-id"

client = mqtt.Client()
client.username_pw_set(DEVICE_KEY, AUTH_TOKEN)
client.tls_set()                  # TLS önerilir
client.connect(300">"api.sensium.io", 8883)
client.loop_start()

TOPIC = f300">"pulse/{TENANT_ID}/{DEVICE_KEY}/telemetry"

while True:
    payload = {
        300">"deviceKey": DEVICE_KEY,
        300">"readings": [
            {300">"sensorKey": 300">"spindleTemperature", 300">"value": 45.2, 300">"unit": 300">"°C"},
            {300">"sensorKey": 300">"vibrationX",         300">"value": 2.3,  300">"unit": 300">"mm/s"},
        ],
    }
    client.publish(TOPIC, json.dumps(payload), qos=1)
    time.sleep(5)

Node.js Örneği

mqtt_sender.js
const mqtt = require('mqtt');

const DEVICE_KEY = 'cnc-001';
const AUTH_TOKEN = process.env.PULSE_DEVICE_TOKEN;
const TENANT_ID  = process.env.PULSE_TENANT_ID;

const client = mqtt.connect('mqtts:300">"text-slate-500">//api.sensium.io:8883', {
  username: DEVICE_KEY,
  password: AUTH_TOKEN,
  clean: true,
  reconnectPeriod: 5000,
});

const TOPIC = `pulse/${TENANT_ID}/${DEVICE_KEY}/telemetry`;

client.on('connect', () => {
  setInterval(() => {
    const payload = {
      deviceKey: DEVICE_KEY,
      readings: [
        { sensorKey: 'spindleTemperature', value: 45.2, unit: '°C' },
        { sensorKey: 'vibrationX',         value: 2.3,  unit: 'mm/s' },
      ],
    };
    client.publish(TOPIC, JSON.stringify(payload), { qos: 1 });
  }, 5000);
});

Veri Akışı

1Cihaz MQTT broker'a deviceKey/authToken ile bağlanır
2Telemetri verisini topic'e publish eder (QoS 1)
3Sensium veriyi alır, scaleFactor + valueOffset uygular ve TimescaleDB'ye yazar
4Alarm kuralları değerlendirilir, eşleşen kurallar bildirim üretir
5WebSocket üzerinden açık dashboard sekmelerine canlı yayın yapılır
6AI yardımcı talep ederse anormallik / RUL / forecast hesaplaması üretilir

Sorun Giderme

Bağlanamıyorum (Connection refused / Bad username or password)

deviceKey veya authToken hatalı. Cihazlar sayfasından kopyalayın; Token'ı yeniden üret dediğinizde eski token anında devre dışı kalır.

Veri görünmüyor

Topic yapısını ve sensorKey değerlerinin sensör tanımıyla eşleştiğini kontrol edin. Cihaz detay sayfasındaki Son Mesaj alanı broker'a yazılan en son ham payload'u gösterir.

Değerler 100x büyük geliyor

Cihazınız ham raw değer gönderiyor olabilir. Sensör düzenle ekranından scaleFactor alanına 0.01 girin.