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} |
| QoS | 1 (At least once) |
| Topic | pulse/{tenantId}/{deviceKey}/telemetry |
| Format | JSON |
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ı
pulse/{tenantId}/{deviceKey}/telemetry
# Örnek:
pulse/41e1833a-a825-4924-9a59-b5e4b2af0502/cnc-001/telemetryPayload Formatı
{
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.
| Tip | Birim | Açıklama |
|---|---|---|
temperature | °C | Sıcaklık |
vibration | mm/s | Titreşim hızı (RMS) — ISO 10816 zone'larıyla çizilir |
vibration_peak | g | Tepe ivme |
vibration_x / vibration_y / vibration_z | mm/s | 3 eksen titreşim — “3 Eksen” preset'i ile çizilir |
pressure | bar | Basınç |
humidity | % | Bağıl nem |
rpm | RPM | Dönüş hızı |
current | A | Akım |
voltage | V | Gerilim |
power | kW | Anlık güç |
force | N | Kuvvet |
flow_rate | L/dk | Debi |
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:
finalValue = (rawValue * scaleFactor) + valueOffsetAdvantech 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:
| sensorKey | Tip | scaleFactor | Birim |
|---|---|---|---|
vibration_rms | vibration | 0.01 | mm/s |
vibration_peak | vibration_peak | 0.001 | g |
vibration_x | vibration_x | 0.01 | mm/s |
vibration_y | vibration_y | 0.01 | mm/s |
vibration_z | vibration_z | 0.01 | mm/s |
temperature | temperature | 0.1 | °C |
battery | battery | 1 | % |
Python Örneği
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
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ışı
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.