esra.dev
@esra_s29 · Membre depuis octobre 2025
Backend geliştirici · yazılım · sahada 8 yıl
- Sujets
- 3
- Réponses
- 26
- Points
- 0
Toutes mes réponses sur les forums
Oğuz Bey doğru yerde. Bir su pompası istasyonunda birebir aynısını yaşamıştım, iki ayrı sebebi var.
1) Linux açılış mesajlarını ve login konsolunu seri porta veriyor, 115200’deki çöp o. cmdline.txt’ten console=serial0,115200 kısmını sil. Ya da raspi-config > Interface Options > Serial Port: login shell Hayır, donanım Evet. serial-getty servisinin de kapalı olduğunu kontrol et.
2) Asıl kalıcı çözüm DE/RE pini. Pi açılırken GPIO17 bir süre tanımsız kalıyor, MAX485 vericiyi açık bırakabiliyor, hatta gelen her şey sayaca gidiyor. DE/RE’den GND’ye 10k pull-down koy, pin sürülmediği sürece modül dinleme modunda kalsın.
Bir de Zero 2 W’de serial0 varsayılan olarak mini UART’a gidiyor, onun baud’u çekirdek saatine bağlı. Bluetooth’u kapatıp PL011’i al:
# config.txt
enable_uart=1
dtoverlay=disable-bt
# script
inst = minimalmodbus.Instrument("/dev/ttyAMA0", 1)
inst.serial.baudrate = 9600
inst.serial.timeout = 0.5
inst.clear_buffers_before_each_transaction = True
Sayaç kilitlendiğinde clear_buffers da işe yarıyor, yarım kalmış bir cevabı bir sonraki sorguya taşımıyor.
Çok mantıklı, uyguladım. PPK2 ile uyku 6,8 µA, uyanma döngüsü ortalama 1,4 s’de 88 mA çıktı. Cihaz artık her mesajda enerji.mAs ve pil.v gönderiyor, grafikte sum ile günlük toplamı görüyorum, günde 18 mAh civarı. 2×AA ile kabaca 4 ay ediyor, beklediğimden kısa, WiFi bağlanma süresini kısaltmaya çalışacağım. INA219’u da çekmeceye kaldırdım.
PPK2 sipariş ettim. Peki sahada, Hermetry tarafında nasıl takip edeceğim?
Düşüklük her basınçta aynı oranda mı, yoksa sadece üst uçta mı? Kalibrasyonla düzeltilebilir mi bundan anlaşılır.
Pasif taramaya geçtim, 30 sensörün hepsi 10 saniye içinde görünüyor, hiç bağlantı hatası yok. Dakikada bir tek gw mesajı gidiyor. Sensörlerden 12’si şifreli yayını destekliyor, onlara bindkey tanımladık, kalanları değiştirme listesine koyduk.
Traduit de Türkçe par IA ·
Agrandir la fenêtre augmente le retard, il faut faire l’inverse. J’ai vécu la même chose à une époque où je travaillais sur des drones.La source du retard est la moyenne elle-même : une moyenne mobile sur 20 mesures arrive avec environ 1 seconde de retard, et l’erreur augmente à mesure que la vitesse de rotation augmente. Le manque de calibration évoqué par Büşra Hanım explique aussi la différence entre la droite et la gauche.La solution consiste à combiner avec le gyroscope. Le gyroscope voit la rotation instantanément mais dérive lentement, le magnétomètre est lent mais ne dérive pas. Un filtre complémentaire combine les deux :
// dt = 0.1 s, gz = derece/s (z ekseni jiroskop)
float a = 0.98;
heading = a * (heading + gz * dt) + (1 - a) * magHeading;
// 0/360 geçişini düzelt
float fark = magHeading - heading;
if (fark > 180) heading += 360 * (1 - a);
if (fark < -180) heading -= 360 * (1 - a);
heading = fmod(heading + 360, 360);
Si la carte n’a pas de gyroscope, ajouter un MPU6050 est la solution la moins chère. Commencez par faire tourner le bateau sur deux tours complets dans l’eau et effectuez la calibration hard/soft iron.Le problème du 180 est distinct : un angle ne peut pas être moyenné. La moyenne de 359 et 1 donne 180. Le graphique hebdomadaire lit des valeurs agrégées toutes les heures et la fonction par défaut est average. Sur le graphique du cap, réglez la fonction sur last, et pour l’analyse envoyez heading_sin et heading_cos en plus du cap ; leur moyenne donne le bon résultat.
Pencereyi büyütmek gecikmeyi artırır, tersini yapmak lazım. Bir dönem drone ile uğraşırken aynı şeyi yaşadım.
Gecikmenin kaynağı ortalamanın kendisi: 20 okumalık hareketli ortalama yaklaşık 1 saniye geriden gelir, dönüş hızı arttıkça hata büyür. Büşra Hanım’ın dediği kalibrasyon eksikliği de sağ-sol farkını açıklıyor.
Çözüm jiroskopla birleştirmek. Jiroskop dönüşü anında görür ama yavaşça kayar, manyetometre yavaş ama kaymaz. Tamamlayıcı filtre ikisini birleştirir:
// dt = 0.1 s, gz = derece/s (z ekseni jiroskop)
float a = 0.98;
heading = a * (heading + gz * dt) + (1 - a) * magHeading;
// 0/360 geçişini düzelt
float fark = magHeading - heading;
if (fark > 180) heading += 360 * (1 - a);
if (fark < -180) heading -= 360 * (1 - a);
heading = fmod(heading + 360, 360);
Kartta jiroskop yoksa bir MPU6050 eklemek en ucuz yol. Önce tekneyi suda iki tam tur döndürüp hard/soft iron kalibrasyonunu yapın.
180 meselesi ayrı: açının ortalaması alınamaz. 359 ile 1’in ortalaması 180 çıkar. Haftalık grafik saatlik toplu değerleri okuyor ve varsayılan fonksiyon ortalama. Başlık grafiğinde fonksiyonu last yapın, analiz için de başlığın yanında heading_sin ve heading_cos gönderin, onların ortalaması doğru çıkar.
Traduit de Türkçe par IA ·
Vas-tu utiliser la MAC comme nom de l’appareil ou dans un champ séparé ? Comme nom, elle ne sera pas très lisible.
MAC’i cihaz adı olarak mı kullanacaksın yoksa ayrı bir alan mı? İsim olarak pek okunaklı olmaz.
Pi OS’ta netplan yok Hakan, ayarı NetworkManager’da yapmak lazım. Bizim sahadaki kutularda da aynısı vardı.
NetworkManager iki yerde rastgele MAC kullanabiliyor: tarama sırasında ve bağlantının kendisinde. İkisini de kapatın:
# /etc/NetworkManager/conf.d/99-sabit-mac.conf
[device]
wifi.scan-rand-mac-address=no
[connection]
wifi.cloned-mac-address=permanent
ethernet.cloned-mac-address=permanent
Ayrıca mevcut bağlantı profili kendi değerini taşıyorsa global ayarı ezer, onu da düzeltin:
nmcli -f 802-11-wireless.cloned-mac-address con show "saha-wifi"
sudo nmcli con modify "saha-wifi" 802-11-wireless.cloned-mac-address permanent
sudo systemctl restart NetworkManager
stable değeri de var, her ağ için sabit ama gerçek olmayan bir MAC verir. Sizin rezervasyon gerçek MAC’e yapıldığı için permanent doğru seçenek. Yeniden başlatıp ip link show wlan0 çıktısında link/ether ile permaddr aynı mı bakın.
Traduit de Türkçe par IA ·
Ilgaz a raison pour le point d’accès, mais le takeover dans le journal indique autre chose, et la vraie cause est la dernière phrase que tu as écrite.Dans Hermetry, chaque appareil n’a qu’une seule session. Quand une deuxième connexion du même appareil arrive, la première est fermée et la session est reprise. Si 60 boîtiers se connectent avec le même token, Hermetry les voit comme un seul appareil : chaque nouvelle connexion en éjecte une précédente, celle-ci se reconnecte, et la boucle ne s’arrête jamais. Un appareil qui fait cela en permanence depuis deux réseaux est mis en attente pendant un certain temps, et c’est la notification « takeover fight ». Normalement les connexions sont dispersées, donc vous ne l’aviez pas remarqué ; mais quand le courant est revenu et que les 60 sont repartis en même temps, ça a explosé.Que faire :1. Donnez à chaque boîtier ses propres identifiants. Plutôt que d’ajouter les 200 appareils un par un, vous pouvez faire un import en masse par CSV depuis la page Imports (jusqu’à 1 000 lignes par fichier). Un essai à blanc est d’abord effectué, et les tokens des nouveaux appareils arrivent dans un fichier téléchargeable une seule fois. Vous pouvez aussi utiliser une clé de provisioning dans le profil, pour que chaque appareil récupère son propre token au premier démarrage.2. Ajoutez un délai aléatoire avant la reconnexion. Si CONNACK 3 arrive, attendez puis réessayez, mais ne laissez pas tous les appareils réessayer dans la même seconde :
uint32_t backoff = 2000 + (esp_random() % 8000); // 2-10 sn
if (!mqtt.connected()) { delay(backoff); mqtt.connect(id, token, ""); }
3. Keepalive entre 30 et 300 secondes. 60 convient bien.4. Ne vous fiez pas à un seul point d’accès domestique pour 200 boîtiers ; répartissez-les sur 2 à 3 points d’accès d’entreprise.Les détails sur la session et CONNACK sont sur la page MQTT.
AP konusunda İlgaz haklı ama Log’daki takeover başka bir şey söylüyor, asıl sebep son yazdığın cümle.
Hermetry’de her cihazın tek bir oturumu olur. Aynı cihazın ikinci bağlantısı gelince birincisini kapatıp devralır. 60 kutu aynı token’la bağlanınca Hermetry bunları tek bir cihaz olarak görüyor: her bağlanan bir öncekini düşürüyor, düşen tekrar bağlanıyor, sonsuz döngü. Bunu iki ağdan sürekli yapan cihaz bir süre geri tutuluyor ve « takeover fight » bildirimi o. Normalde bağlantılar dağınık olduğu için fark etmemişsiniz, elektrik gelince 60’ı aynı anda kalkınca patlamış.
Ne yapmalı:
1. Her kutuya kendi kimlik bilgisi. 200 cihazı tek tek açmak yerine Imports sayfasından CSV ile toplu içe aktarma yapılabiliyor (dosya başına 1.000 satıra kadar), önce kuru çalıştırma gösteriyor, yeni cihazların token’ları bir kere indirilebilen bir dosyada geliyor. Alternatif olarak profilde provisioning key ile cihazların ilk açılışta kendi token’ını almasını sağlayabilirsiniz. 2. Yeniden bağlanmaya rastgele gecikme ekleyin. CONNACK 3 gelirse bekle-tekrar dene, ama hepsi aynı saniyede denemesin:
uint32_t backoff = 2000 + (esp_random() % 8000); // 2-10 sn
if (!mqtt.connected()) { delay(backoff); mqtt.connect(id, token, ""); }
3. Keepalive 30-300 saniye arası. 60 iyi. 4. 200 kutu için tek ev tipi AP’ye güvenmeyin, 2-3 tane kurumsal AP’ye bölün.
Oturum ve CONNACK detayları MQTT sayfasında.
Traduit de Türkçe par IA ·
Ce n’est pas le débit en bauds, c’est la tension. Si tu as mesuré -9 V, la réponse est déjà là.Le signal RS-232 varie d’environ ±3 à ±15 V et sa logique est inversée : au repos il est négatif, « 1 » est négatif, « 0 » est positif. L’UART du Pi, lui, fonctionne en TTL 3,3 V, de 0 à 3,3 V, avec une logique normale. En les reliant directement, le niveau et la polarité sont tous deux faux, et ces caractères parasites en sortie en sont exactement la conséquence. De plus, appliquer une tension négative et environ 9 V sur le GPIO15 peut détruire la broche. Débranche tout de suite ; c’est un coup de chance si le Pi est encore intact.J’ai résolu le même problème à deux endroits, avec deux méthodes :1. Module MAX3232 (MAX3232, pas MAX232 ; il fonctionne en 3,3 V). VCC sur les 3,3 V du Pi, le côté TTL sur GPIO14/15, le côté RS-232 sur le DB9. 2. La solution plus propre : un convertisseur USB-RS232 (puce PL2303 ou FTDI). Il apparaît comme /dev/ttyUSB0 et tu n’as pas du tout à t’occuper du GPIO.Pour l’écran de connexion : la console série du Pi est active sur /dev/serial0. Dans raspi-config > Interface > Serial Port, réponds Non à « login shell over serial » et Oui à « serial port hardware ».Et pour le croisement TX/RX : on ne sait pas si la balance est DCE ou DTE. Si aucune donnée n’arrive, inverse les broches 2 et 3.Ensuite, l’envoi vers Hermetry est simple : avec paho et un token d’accès, tu publies sur v1/telemetry :
import re, json, serial
import paho.mqtt.client as mqtt
c = mqtt.Client(client_id="kantar-1")
c.username_pw_set(TOKEN, "")
c.tls_set()
c.connect(BROKER_HOST, 8883, keepalive=60)
c.loop_start()
s = serial.Serial('/dev/ttyUSB0', 9600, timeout=2)
while True:
line = s.readline().decode('ascii', 'ignore')
m = re.search(r'(-?d+.d+)s*kg', line)
if m:
c.publish("v1/telemetry", json.dumps({"weight_kg": float(m.group(1))}), qos=1)
Baud değil, voltaj sorunu. -9 V ölçtüysen zaten cevap orada.
RS-232 sinyali yaklaşık ±3 ile ±15 V arası ve mantığı ters: boşta negatif, « 1 » negatif, « 0 » pozitif. Pi’nin UART’ı ise 3.3 V TTL, 0 ile 3.3 V arası ve düz mantık. Doğrudan bağlayınca hem seviye hem polarite yanlış, çıktıdaki çöp tam olarak bu. Üstelik GPIO15’e negatif ve 9 V civarı gerilim vermek pini öldürebilir. Hemen sök, Pi’nin hâlâ sağlam olması şans.
Bende iki depoda aynı iş var, iki yol kullandım:
1. MAX3232 modülü (MAX232 değil, 3232; 3.3 V ile çalışan). VCC’yi Pi’nin 3.3 V’una ver, TTL tarafı GPIO14/15, RS-232 tarafı DB9’a. 2. Daha temizi: USB-RS232 çevirici (PL2303 ya da FTDI çipli). /dev/ttyUSB0 olarak çıkıyor, GPIO ile hiç uğraşmıyorsun.
Login ekranı meselesi: Pi seri konsolu /dev/serial0 üzerinden açık. raspi-config > Interface > Serial Port’ta « login shell over serial » sorusuna Hayır, « serial port hardware » sorusuna Evet de.
Bir de TX/RX çaprazlaması: gösterge DCE mi DTE mi bilmiyoruz. Veri gelmezse 2 ile 3’ü yer değiştir.
Okuduktan sonra Hermetry’ye gönderme kısmı basit, paho ile access token’la v1/telemetry‘ye yayınlıyorsun:
import re, json, serial
import paho.mqtt.client as mqtt
c = mqtt.Client(client_id="kantar-1")
c.username_pw_set(TOKEN, "")
c.tls_set()
c.connect(BROKER_HOST, 8883, keepalive=60)
c.loop_start()
s = serial.Serial('/dev/ttyUSB0', 9600, timeout=2)
while True:
line = s.readline().decode('ascii', 'ignore')
m = re.search(r'(-?d+.d+)s*kg', line)
if m:
c.publish("v1/telemetry", json.dumps({"weight_kg": float(m.group(1))}), qos=1)
Heartbeat’i seçerken offline alarmı düşün. Profilin Inactivity timeout’u varsayılan 600 saniye, heartbeat bundan kısa olmalı yoksa sessiz ama sağlam bir cihaz için alarm açılır.
Traduit de Türkçe par IA ·
Hakan, regarde la documentation, il n’y a rien de tel. Hermetry n’a pas de rapport prêt à l’emploi programmé ou envoyé par e-mail, c’est écrit clairement. Mais la méthode qui fonctionne aujourd’hui, c’est celle-ci, nous l’avons exactement appliquée dans une usine textile :Mesure : pour 38A, prends un SCT-013-050 (sortie 1V), relie-le à l’ADC de l’ESP32 avec un biais de 1,65V, et effectue le calcul RMS façon EmonLib directement sur l’appareil. Fais envoyer à l’appareil un current_a toutes les 30 secondes. Si tu veux de vrais kWh, il te faudra un analyseur d’énergie avec Modbus sur rail DIN. Accepte une marge d’erreur de 10 % avec une pince + un cosφ estimé.Puissance et énergie : dans le root flow, place un bloc Calculate avant Save telemetry et dérive power_kw. Le détail est sur la page valeurs dérivées.
expr: round(1.732 * 400 * msg.payload.current_a * 0.85 / 1000, 2)
target: msg.payload.power_kw
Rapport : place une carte graphique sur le tableau de bord, règle le regroupement sur jour, et dans les réglages de la carte coche Download data (CSV). En fin de mois, règle la fenêtre sur Ce mois-ci et télécharge le fichier Excel. Si tu veux l’automatiser, un petit script peut récupérer les valeurs journalières depuis l’API history avec agg=sum, ou avec increase si tu envoies un compteur, et tu enverras le mail toi-même.
Hakan, dokümana bak, öyle bir şey yok. Hermetry’de zamanlanmış ya da e-postayla giden hazır rapor yok, açıkça yazıyor. Ama bugün çalışan yol şu, biz aynısını bir tekstil fabrikasında yaptık:
Ölçüm: 38A için SCT-013-050 (1V çıkışlı) al, ESP32’de ADC’ye 1.65V bias ile bağla, EmonLib benzeri RMS hesabını cihazda yap. Cihaz her 30 saniyede bir current_a göndersin. Gerçek kWh istiyorsan DIN raya Modbus’lı bir enerji analizörü takman gerekir. Pens + tahmini cosφ ile %10 hata payını kabul et.
Güç ve enerji: root flow’da Save telemetry’den önce bir Calculate bloğu koy, power_kw türet. Detayı türetilmiş değerler sayfasında var.
expr: round(1.732 * 400 * msg.payload.current_a * 0.85 / 1000, 2)
target: msg.payload.power_kw
Rapor: panoya bir chart kartı koy, gruplamayı gün yap, kartın ayarlarında Download data (CSV) işaretle. Ay sonunda pencereyi Bu ay yapıp Excel indiriyorsun. Otomatik istiyorsan küçük bir script history API’den agg=sum ya da sayaç gönderiyorsan increase ile günlük değerleri çekip maili kendin atarsın.
Bunal Bey’in dediğine katılıyorum, eğik girişi Mx/My ile görmek güzel ama pahalı. Çoğu atölyede tek eksenli yük hücresi + strok ölçümü (bir lineer potansiyometre ya da enkoder) ile kuvvet-yol eğrisi alınıyor, eğik giriş zaten eğrinin şeklinden belli oluyor.
Forge kısmı: dokümanlarda Forge’un kendi sayfasını bulamadım, o yüzden parça bazlı kaydı nasıl yaptığını söyleyemem, neyi kapsadığını satış tarafına sormak lazım. Bu iş için şart da değil.
Normal IoT eklentisiyle şöyle yapabilirsiniz, biz bir müşteride böyle kurduk:
Presin yanında küçük bir kontrolcü (ESP32 + HX711 ya da endüstriyel bir yük hücresi amplifikatörü) her geçmede eğriyi yerelde örnekliyor, geçme bitince tek bir kayıt gönderiyor:
{"part_no": "RY-24117", "f_peak_kn": 12.8, "stroke_mm": 18.4, "ok": 1}
part_no metin olarak son değer görünüyor, sayılar grafikte, her kayıt geçmişte duruyor ve dışa aktarılabiliyor. Profilde f_peak_kn için üst/alt sınırlı bir alarm kuralı, ok == 0 için ayrı bir kural. Günlük adet için bir pano kartında ok anahtarının toplamı yeterli. Ham eğrinin tamamını göndermeyin, kontrolcünün SD kartında tutun, gerekirse müşteri istediğinde çıkarırsınız. CSV için: Verileri dışa aktarma.
Bu cihazı geçen yıl bir müşteride okudum, üç tane tuzağı var, büyük ihtimalle üçüne birden takıldınız 🙂
1. Baud: SDM120 fabrikadan 2400 baud geliyor, 9600 değil. Menüden değiştirmediyseniz 2400 kullanın, 8N1.
2. Fonksiyon kodu: ölçümler input register’larda, holding’de değil. Yani FC04, readInputRegisters. Gerilim 30001 yani adres 0x0000, akım 0x0006, aktif güç 0x000C, toplam aktif enerji 0x0156.
3. Veri tipi: her değer iki register’lık 32 bit float, büyük sonlu (yüksek word önce).
float regsToFloat(uint16_t hi, uint16_t lo) {
uint32_t v = ((uint32_t)hi << 16) | lo;
float f; memcpy(&f, &v, 4); return f;
}
if (node.readInputRegisters(0x0000, 2) == node.ku8MBSuccess) {
float volts = regsToFloat(node.getResponseBuffer(0), node.getResponseBuffer(1));
}
Bir de istekler arasında en az 100-200 ms bekleyin, ucuz analizörler peş peşe sorguya kızıyor. Hermetry’ye gönderirken enerjiyi kümülatif kWh olarak gönderin, günlük tüketimi orada « increase » ile alırsınız.
Traduit de Türkçe par IA ·
Non, Ilgaz, c’est aussi là que je me suis trompé lors de mon premier projet. Hermetry ne calcule pas les zones à partir de la position ni des balises BLE, et il n’y a pas de polygone de geofence. Le tag, ou la passerelle qui l’entend, décide lui-même de la salle et envoie le nom de la zone. La solution prête à l’emploi pour le suivi du personnel est exactement construite ainsi : la clé zone est soit un nom de zone, soit outside.Pour ton échelle, je te recommande le BLE. L’UWB sert à une précision submétrique ; au niveau de la salle, il n’est pas rentable. Voici le fonctionnement :
- Un récepteur BLE fixe par salle (un ESP32 suffit, branché sur une prise). Tous envoient le RSSI des tags à un serveur local ou à un Pi.
- Pour chaque tag, le Pi choisit la salle qui l’a entendu le plus fort pendant les 10 à 15 dernières secondes, et ajoute une hystérésis (ne pas changer de salle sauf si la nouvelle est au moins 6 dB plus forte), sinon le fauteuil devant la porte oscille entre deux salles.
- Le Pi se connecte comme passerelle et déclare chaque tag comme appareil enfant :
v1/gw/telemetry
{
"pompa-07": {"values": {"zone": "A-3-314", "zone_id": 3314, "battery": 81}},
"sandalye-12": {"values": {"zone": "A-2-208", "zone_id": 2208, "battery": 64}}
}
J’ai volontairement ajouté zone_id : zone est du texte, et les clés textuelles n’ont pas d’historique graphique, seule la dernière valeur apparaît. Pour la question « où était la pompe hier ? », il faut un code numérique.Dans Sites & Assets, crée les salles avec le type Room ou avec ton propre type ZONE, et garde leurs codes identiques aux noms envoyés par la passerelle. Pour le tableau arborescent et les listes, l’appariement est là encore fait par la passerelle.La page de la solution prête à l’emploi décrit très bien le modèle, tu peux t’en inspirer : Personel takibi.
Bulmuyor Ilgaz, bu benim de ilk projede yanıldığım yer oldu. Hermetry pozisyondan ya da BLE vericilerinden bölge hesaplamıyor, geofence poligonu da yok. Etiket ya da onu duyan ağ geçidi odaya kendisi karar verip bölgenin adını gönderiyor. Personel takibi hazır çözümü de tam olarak böyle kurgulanmış: zone anahtarı bir bölge adı ya da outside.
Senin ölçeğin için benim önerim BLE. UWB metre altı hassasiyet için, oda seviyesinde parasını çıkarmaz. Kurgu şöyle oluyor:
- Her odaya bir sabit BLE alıcı (ESP32 yeter, prize takılı). Hepsi etiketlerin RSSI’sini bir yerel sunucuya ya da bir Pi’ye yollar.
- Pi her etiket için son 10-15 saniyede en güçlü duyan odayı seçer, bir histerezis koyar (yeni oda en az 6 dB daha güçlü olmadan değiştirme), yoksa kapı önündeki sandalye iki oda arasında zıplar.
- Pi bir gateway olarak bağlanır ve her etiketi child cihaz olarak raporlar:
v1/gw/telemetry
{
"pompa-07": {"values": {"zone": "A-3-314", "zone_id": 3314, "battery": 81}},
"sandalye-12": {"values": {"zone": "A-2-208", "zone_id": 2208, "battery": 64}}
}
zone_id‘yi bilerek ekledim: zone metin, metin anahtarların grafik geçmişi olmuyor, sadece son değer görünüyor. « Pompa dün nerelerdeydi » sorusu için sayısal bir kod lazım.
Sites & Assets tarafında odaları oluştur, kind olarak Room ya da kendi türün olan ZONE iyi gider, kodlarını gateway’in gönderdiği adlarla aynı tut. Ağaç pano ve listeler için, eşleştirmeyi yine gateway yapıyor.
Hazır çözümün sayfası modeli çok iyi anlatıyor, oradan uyarlayabilirsin: Personel takibi.

