Akıllı şehir IoT projeleri genellikle ayrı pilotlar olarak başlar; biri sokak lambaları, biri çöp kutuları, biri hava kalitesi için. Ardından veri paylaşmakta zorlanırlar. Bu rehber, her alanın ortak bir MQTT mesajlaşma katmanına yayın yaptığı şehir ölçeğinde bir mimariyi anlatıyor; böylece her seferinde yeni bir veri silosu kurmadan hizmet ekleyebilirsiniz. Katmanları, pratik bir topic hiyerarşisini, bağlantı seçeneklerini ve önemli güvenlik ile ölçekleme kararlarını göreceksiniz.
Birbirinden Kopuk Şehir Pilotlarının Sorunu
Tipik bir şehir sonunda bir aydınlatma tedarikçisi portalı, bir atık toplama paneli ve bir çevre izleme platformuyla kalır; her birinin kendi veri modeli, girişi ve dışa aktarma formatı vardır. Bunları birleştirmek, örneğin hava kalitesi kötüyken lambaları kısmak ya da toplama kamyonlarını yol çalışmalarının çevresinden yönlendirmek, her seferinde bir entegrasyon projesine dönüşür.
Ortak bir mesajlaşma katmanı bu varsayılanı değiştirir. Her sistem olaylarını ve durumlarını ortak bir ad alanı altında tek bir broker'a yayınlarsa, her yeni uygulama ihtiyaç duyduğu şeye abone olabilir. Tedarikçiler cihazları ve uzman yazılımları sağlamaya devam eder; yalnızca şehrin omurgasına yayın yapmayı ve oradan okumayı kabul ederler. Broker'ın rolünü hatırlamak isterseniz bir MQTT broker'ın ne yaptığını okuyun.
Beş Katmanda Akıllı Şehir IoT Mimarisi
| Katman | Burada neler bulunur | Tipik teknolojiler |
|---|---|---|
| Cihazlar | Lamba kontrolörleri, çöp kutusu doluluk sensörleri, hava kalitesi istasyonları, otopark diskleri | Mikrodenetleyiciler, NEMA/Zhaga lamba düğümleri, ultrasonik ve optik sensörler |
| Saha ağları | Düşük güçlü radyo ve hücresel bağlantılar | LoRaWAN, NB-IoT, LTE-M, binalarda Wi-Fi, kabinlere fiber |
| Gateway'ler ve ağ sunucuları | Radyo payload'larını çözümler, protokolleri dönüştürür | LoRaWAN ağ sunucuları, uç gateway'ler, protokol dönüştürücüler |
| Mesajlaşma omurgası | Olayları üreticiler ve tüketiciler arasında yönlendirir | TLS'li MQTT broker, yapılandırılmış topic'ler |
| Uygulamalar | Paneller, analitik, kontrol mantığı, açık veri | Node-RED, zaman serisi veritabanları, CBS haritaları, özel servisler |
Broker bilerek ortada durur. Saha ağları ve uygulamalar farklı hızlarda değişir; bunları publish/subscribe ile birbirinden ayırmak, yeni bir hava kalitesi analitik aracının sensörlerde hiçbir değişiklik gerektirmemesi anlamına gelir.
Üç Örnek Alan
Akıllı sokak aydınlatması
Lamba kontrolörleri güç tüketimini, yanma saatlerini ve arızaları raporlar, kısma komutlarını kabul eder. Tipik topic'ler arasında mevcut kısma seviyesini içeren retained bir state ve zamanlama servisinin kullandığı bir set komut topic'i bulunur. Arızalı bir sürücü gibi arıza olayları, bir abone bunları yakaladığında otomatik olarak bakım kaydına dönüşür. MQTT ile akıllı aydınlatma yazımız komut ve durum kalıplarını ayrıntılı olarak ele alıyor.
Çöp kutusu doluluk seviyeleri
Çöp kutularının içindeki ultrasonik veya radar sensörler, doluluk yüzdesini günde birkaç kez LoRaWAN veya NB-IoT üzerinden raporlar. Bir rota planlama servisi bir ilçedeki tüm kutulara abone olur ve eşiğin üzerindeki kutular için toplama planlar. Burada MQTT'nin değeri gecikmeden çok ayrıştırmadadır: rota planlayıcı, açık veri portalı ve temizlik paneli aynı retained doluluk seviyelerini okur.
Hava kalitesi izleme
İstasyonlar partikül madde, azot dioksit, sıcaklık ve nemi ölçer. Veriler herkese açık haritaları, sağlık uyarılarını ve araştırmaları besler. Kapalı alanda bir iç ortam hava kalitesi ölçerde kullanılan algılama ve yayınlama yaklaşımı, kalibrasyon, kasa ısıtma ve veri doğrulamaya daha fazla özen gösterilerek sokak seviyesine ölçeklenir.
Otopark ise dördüncü yaygın alandır ve akıllı otopark IoT planımızda baştan sona anlatılmıştır.
Şehir Genelinde Bir Topic Hiyerarşisi
Ortak bir ad alanı, tüm projedeki en değerli uzlaşmadır. İyi sonuç veren bir yerleşim önce alan, sonra coğrafya, ardından varlık kalıbını izler:
city/<domain>/<district>/<asset-type>/<asset-id>/<signal>
city/lighting/north/lamp/L-10442/state retained {"on":true,"dim":60,"watts":38}
city/lighting/north/lamp/L-10442/state/set {"dim":30}
city/lighting/north/lamp/L-10442/fault {"code":"DRIVER_FAIL","ts":1760600000}
city/waste/centre/bin/B-2210/fill retained {"pct":82,"ts":1760600000}
city/air/harbour/station/AQ-07/pm25 retained {"ugm3":14.2,"ts":1760600000}
city/parking/old-town/summary retained {"free":112,"total":420}
Neden önce alan? Çünkü sahiplik alanları izler. Aydınlatma müdürlüğü city/lighting/# alanından sorumludur; bu da kimlik bilgisi kapsamlandırmasını, denetimi ve tedarikçi sözleşmelerini değerlendirmeyi kolaylaştırır. Coğrafyaya ihtiyaç duyan uygulamalar yine de alanlar arasında abone olabilir: city/+/harbour/# liman ilçesindeki her şeyi döndürür.
Başlangıçta yazıya dökülmesi gereken kurallar:
- Her payload, zaman damgası ve anahtar adlarında açık birimler içeren JSON'dur.
- Durumlar retained'dir; olaylar ve komutlar değildir.
- Varlık kimlikleri tedarikçi seri numaralarıyla değil, şehrin varlık envanteriyle eşleşir.
- Komutlar her zaman
/setson ekini kullanır ve yalnızca belirlenmiş servisler bunları yayınlar.
Bağlantı: Veriyi Broker'a Ulaştırmak
Şehir sensörlerinin çoğu pille çalışır ve Wi-Fi'dan uzaktadır; bu yüzden saha ağı genellikle LoRaWAN veya hücresel IoT'dir. İkisi de her sensörün kendisinin MQTT konuşmasını gerektirmez:
- LoRaWAN sensörleri çatılardaki gateway'lere küçük ikili payload'lar gönderir; bir ağ sunucusu bunları çözümler ve MQTT'ye yayınlar. ChirpStack ve MQTT ile kendi ağ sunucunuzu çalıştırmak, ağları üzerinde kontrol isteyen belediyeler için yaygın bir tercihtir.
- NB-IoT ve LTE-M cihazları doğrudan TLS üzerinden bir MQTT bağlantısı açabilir; bu da lamba kontrolörleri veya hava istasyonları gibi şebekeden beslenen varlıklara uygundur.
- Kabinlerdeki ve binalardaki kablolu varlıklar, Modbus veya tedarikçi protokollerini dönüştüren uç gateway'ler üzerinden bağlanır.
Her iki durumda da broker temiz, çözümlenmiş veri alır. Faydalı bir yan etki, bağlantı sayılarının makul kalmasıdır: binlerce LoRaWAN sensörü bir avuç ağ sunucusu bağlantısı üzerinden gelebilir.
Şehir Verisini Tüketmek: Küçük Bir Örnek
Her uygulama yalnızca bir MQTT istemcisidir. paho-mqtt 2.x kullanan bu Python abonesi her hava kalitesi istasyonunu izler ve eşiğin üzerindeki okumaları işaretler. Kendi önekinizle herkese açık test broker'ında deneyin:
import json
import paho.mqtt.client as mqtt
PREFIX = "connectmq/demo/c9d1e4" # kendi rastgele kimliğiniz
LIMIT = 25.0 # ug/m3 cinsinden PM2.5 için örnek eşik
def on_connect(client, userdata, flags, reason_code, properties):
client.subscribe(f"{PREFIX}/air/+/station/+/pm25", qos=1)
def on_message(client, userdata, msg):
parts = msg.topic.split("/")
district, station = parts[-4], parts[-2]
reading = json.loads(msg.payload)
if reading["ugm3"] > LIMIT:
print(f"High PM2.5 in {district} at {station}: {reading['ugm3']}")
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="air-watch-c9d1e4")
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 1883, keepalive=60)
client.loop_forever()
mosquitto_pub -h broker.connectmq.com -p 1883 -i aq-c9d1e4 -r -q 1 \
-t connectmq/demo/c9d1e4/air/harbour/station/AQ-07/pm25 -m '{"ugm3":31.5,"ts":1760600000}'
Demo öneki zaten üç seviye kullandığından, örnek herkese açık broker'ın sekiz seviye sınırında kalmak için city kökünü atlar; özel bir broker'da tam city/air/... yolunu kullanırsınız. Üretimde uyarı eşikleri broker portalında da tutulabilir: ConnectMQ eşik uyarı kuralları ve bir uyarı günlüğü sunar; daha zengin mantık ise Node-RED'e veya istemci olarak bağlanan kendi servislerinize aittir.
Güvenlik ve Yönetişim
Şehir altyapısı kritik altyapıdır ve mesajlaşma katmanına da öyle davranılmalıdır:
- Her yerde TLS. Cihazlar ve gateway'ler için 8883 portu, tarayıcı panelleri için 8084 güvenli WebSocket.
- Gateway veya servis başına benzersiz kimlik bilgileri. Tek bir girişi asla tedarikçiler arasında paylaşmayın. Kimlik bilgilerine bağlı client ID'ler kimliğe bürünmeyi zorlaştırır.
- Ayrı komut yolları. Aydınlatma komutlarını yalnızca zamanlama servisi yayınlamalıdır; tedarikçiler ve paneller durumu okumalıdır.
- Gerektiğinde yalıtım. Hassas alanlar, herkese açık veriyle aynı broker'ı paylaşmak yerine ayrı bir broker'da veya dedicated bir kümede yer alabilir.
- Açık veri erişimle değil, yayınla. Broker kimlik bilgilerini dağıtmak yerine düzenlenmiş veri setlerini açık veri portalına yayınlayın.
MQTT güvenliği en iyi uygulamaları rehberimiz kimlik bilgileri, TLS ve izlemeyi ayrıntılandırıyor.
Ölçekleme ve Barındırma Kararları
Şehir projeleri yıllar içinde bir pilot ilçeden tüm şehre büyür; bu yüzden onlarla birlikte büyüyen bir barındırma modeli seçin. Kendi broker kümenizi çalıştırmak mümkündür, ancak yama, sertifika, izleme ve kapasite sorumluluğunu şehre yükler. Tam yönetilen bir MQTT hizmeti bu işi sağlayıcıya devreder. ConnectMQ, pilotlar için paylaşımlı serverless planlar, üretim için yalıtılmış dedicated kümeler ve veri yerleşimi kuralları gerektirdiğinde şehrin kendi bulut hesabında çalışan BYOC kurulumları sunar. Barındırma modellerinin daha geniş bir karşılaştırması için bulut MQTT broker rehberine bakın.
Belediye gıda ve aşı lojistiği için soğuk zincir izleme gibi ilgili kullanım senaryoları da aynı kalıbı izler; IoT otomasyon rehberi ise binalar, çiftlikler ve enerji için projeleri bir araya getiriyor.
Akıllı Şehir IoT Hazırlık Kontrol Listesi
- Alan, ilçe, varlık tipi ve kimlik içeren, yazıya dökülmüş bir topic ad alanı.
- Zaman damgaları ve birimler içeren bir payload kuralı.
- Kimlikleri konumlara ve sahiplere eşleyen bir varlık envanteri.
- Alan başına seçilmiş, gateway'lerle MQTT'ye köprülenen saha ağları.
- Gateway ve servis başına kimlik bilgileri, her bağlantıda TLS.
- Hangi servislerin komut yayınlayabileceğine dair net bir liste.
- Cihaz erişilebilirliği ve pil seviyelerinin izlenmesi.
- Pilottan şehir geneline ölçeklenen bir barındırma planı.
Şehrinizin Veri Omurgasını ConnectMQ Üzerine Kurun
Bir pilot ilçeyi ücretsiz bir Serverless broker üzerinde başlatın, topic modelini gerçek sensörlerle kanıtlayın, ardından üretim için dedicated veya BYOC bir kuruluma geçin. app.connectmq.com adresinden kredi kartı gerekmeden kaydolun ve ilk şehir topic'lerinizin canlı topic gezgininde belirdiğini izleyin.
Sık Sorulan Sorular
Akıllı şehir sensörlerinin MQTT'yi doğrudan desteklemesi gerekir mi?
Hayır. Pille çalışan sensörlerin çoğu LoRaWAN veya NB-IoT kullanır; bir ağ sunucusu veya gateway, payload'larını çözümler ve onlar adına MQTT broker'a yayınlar.
Topic'te alan neden ilçeden önce gelir?
Sahiplik ve erişim genellikle aydınlatma veya atık gibi alanları izler. Alan önce gelen topic'ler sorumlulukları atamayı kolaylaştırırken ilçe genelinde wildcard aboneliklerine de izin vermeye devam eder.
Tek bir broker tüm şehir birimlerine hizmet verebilir mi?
Evet, her birim kendi kimlik bilgilerini ve topic alt ağacını kullandığı sürece. Son derece hassas sistemler yine de ayrı bir broker'a veya dedicated bir kümeye yerleştirilebilir.
Bir şehir sensörlerinden açık veriyi nasıl yayınlamalıdır?
Veri setlerini düzenleyen, toplayan ve açık veri portalına yayınlayan bir abone çalıştırın. Broker kimlik bilgilerini kamuya dağıtmayın.



