Yazılım ve Elektronik için...
info@mesebilisim.com

Elektronik

PCB tasarım, PCB üretim, Dizgi, Gömülü Yazılım

Yazılım

IoT Yazılım, IoT Dashboard, Gömülü Sistemler

Mekatronik

3D Baskı, Prototipleme, Makine Tasarım ve İmalat

IoT Proje
Yazılım, Elektronik

Projelendirme


Elektronik devre tasarımı, PCB imalatı, 3D Baskı prototip imalatı ve yazılım projeleriniz için teklif alınız.

Projeni Belirle
01
İletişime Geç
02
Teklif Al
03
Bizim için
ne dediler

Müşterilerimiz


Projelerine destek verdiğimiz ve sorunlarına çözüm ürettiğimiz çözüm ortaklarımız bizim için ne dediler.

Meşe Bilişim Yazılım Mekatronik

Blog


Elektronik, Robotik, IoT Sistemler

ThingsBoard MQTT RPC Örneği
ThingsBoard MQTT RPC Örneği

ThingsBoard’un RPC (Remote Procedure Call) mekanizması, IoT dünyasında sadece veri izlemekten öteye geçip, cihazları gerçekten “akıllı” hale getiren (bir motoru çalıştırmak, ışığı kısmak gibi) en kritik özelliklerden biridir.

RPC Nedir ve Neden Lazım?

Telemetri verisi cihazdan sunucuya gider, ancak RPC sunucudan cihaza (ve bazen tersi) komut gönderilmesini sağlar.

Kullanım Senaryosu: Bir akıllı tarım uygulamasında nem oranı düştüğünde sunucunun su pompasını çalıştırması.

RPC Türleri

ThingsBoard’da RPC çağrıları ikiye ayrılır.
Server-side RPC Sunucu -> Cihaz Sunucudan cihaza istek gönderilir, cihaz yanıt döner.
Client-side RPC Cihaz -> Sunucu Cihaz sunucudan bir işlem yapmasını veya veri getirmesini ister.

MQTT Üzerinden Çalışma Mantığı

ThingsBoard, MQTT başlıklarını (topics) kullanarak bu trafiği yönetir.
Topic Örneği:
İstek Başlığı: v1/devices/me/rpc/request/$request_id
Yanıt Başlığı: v1/devices/me/rpc/response/$request_id
Kritik Bilgi: $request_id burada çok önemlidir. Sunucu birden fazla komut gönderdiğinde, hangi yanıtın hangi komuta ait olduğunu bu ID sayesinde anlar.

Dashboard Üzerinden Tetikleme

Thingsboard Dashboard ile tetiklenir.
Control Widgets: Dashboard’a bir “Switch” veya “Knob” ekleyerek method adını (örn: setGpioStatus) olarak tanımlayın.
Rule Engine: Belirli bir alarm oluştuğunda otomatik RPC gönderen bir kural zinciri ekleyin.

Projenin Github Kodu: https://github.com/electrocoder/ThingsBoard-MQTT-RPC-Panel

"""
-------------------------------------------------------------------------
Project Name  : ThingsBoard MQTT & RPC Panel v1.0.1
Author        : [Sahin Mersin electrocoder@gmail.com / Mesebilisim.com]
Version       : 1.0.1
Created Date  : 2026-02-13
License       : MIT
Description   : This script provides a GUI to send 3 telemetry data points
                to the ThingsBoard platform via MQTT and receives real-time 
                RPC commands from the platform.
-------------------------------------------------------------------------
"""

import tkinter as tk
from tkinter import messagebox
import json
import paho.mqtt.client as mqtt

# --- Configuration ---
THINGSBOARD_HOST = "raspi5-mese-iot.mesebilisim.com"  
ACCESS_TOKEN = "sfayhp1be225522tkrx8"     

class ThingsBoardApp:
    def __init__(self, root):
        self.root = root
        self.root.title("ThingsBoard MQTT & RPC Panel v1.0.1")
        self.root.geometry("400x480")
        self.root.configure(bg="#f4f4f9")

        # MQTT Setup
        self.client = mqtt.Client()
        self.client.username_pw_set(ACCESS_TOKEN)
        self.client.on_connect = self.on_connect
        self.client.on_message = self.on_message

        # UI Setup
        self.setup_ui()
        
        # Start Connection
        try:
            self.client.connect(THINGSBOARD_HOST, 1883, 60)
            self.client.loop_start()
        except Exception as e:
            messagebox.showerror("Connection Error", f"Could not connect to server: {e}")

    def setup_ui(self):
        # Header Section
        header_frame = tk.Frame(self.root, bg="#2c3e50", height=60)
        header_frame.pack(fill=tk.X)
        tk.Label(header_frame, text="THINGSBOARD MONITOR", fg="white", bg="#2c3e50", 
                 font=('Helvetica', 12, 'bold')).pack(pady=15)

        # Telemetry Input Section
        input_container = tk.LabelFrame(self.root, text=" Telemetry Data ", padx=20, pady=20, bg="#f4f4f9")
        input_container.pack(padx=20, pady=20, fill=tk.X)

        self.temp_var = tk.DoubleVar(value=24.5)
        self.hum_var = tk.DoubleVar(value=45.0)
        self.pres_var = tk.DoubleVar(value=1012.0)

        self.create_input(input_container, "Temperature (°C):", self.temp_var)
        self.create_input(input_container, "Humidity (%):", self.hum_var)
        self.create_input(input_container, "Pressure (hPa):", self.pres_var)

        # Publish Button
        tk.Button(self.root, text="PUBLISH DATA", command=self.send_telemetry, 
                  bg="#27ae60", fg="white", font=('Arial', 10, 'bold'), 
                  padx=20, pady=8, bd=0, cursor="hand2").pack(pady=10)

        # RPC Status Panel
        rpc_frame = tk.Frame(self.root, bg="#ffffff", bd=1, relief=tk.RIDGE)
        rpc_frame.pack(padx=20, pady=20, fill=tk.X)
        
        tk.Label(rpc_frame, text="Command from Platform (RPC):", bg="#ffffff", font=('Arial', 9, 'italic')).pack(pady=5)
        self.rpc_label = tk.Label(rpc_frame, text="WAITING FOR COMMAND", bg="#ffffff", 
                                  fg="#e67e22", font=('Courier', 11, 'bold'))
        self.rpc_label.pack(pady=10)

    def create_input(self, parent, label_text, var):
        frame = tk.Frame(parent, bg="#f4f4f9")
        frame.pack(fill=tk.X, pady=5)
        tk.Label(frame, text=label_text, width=18, anchor="w", bg="#f4f4f9").pack(side=tk.LEFT)
        tk.Entry(frame, textvariable=var, width=12, justify='center').pack(side=tk.RIGHT)

    def on_connect(self, client, userdata, flags, rc):
        if rc == 0:
            print(">> Successfully connected to ThingsBoard.")
            client.subscribe("v1/devices/me/rpc/request/+")
        else:
            print(f">> Connection failed with code: {rc}")

    def on_message(self, client, userdata, msg):
        try:
            payload = json.loads(msg.payload.decode())
            # RPC Method check
            if payload.get("method") == "setValue":
                new_val = payload.get("params")
                self.rpc_label.config(text=f"VALUE SET: {new_val}")
                
                # Send Response back to ThingsBoard
                request_id = msg.topic.split('/')[-1]
                client.publish(f"v1/devices/me/rpc/response/{request_id}", json.dumps({"status": "success"}), 1)
        except Exception as e:
            print(f"Error processing message: {e}")

    def send_telemetry(self):
        data = {
            "temperature": self.temp_var.get(),
            "humidity": self.hum_var.get(),
            "pressure": self.pres_var.get()
        }
        result = self.client.publish("v1/devices/me/telemetry", json.dumps(data))
        if result.rc == mqtt.MQTT_ERR_SUCCESS:
            print(f"Data published: {data}")
        else:
            messagebox.showwarning("Warning", "Failed to send data. Check connection.")

if __name__ == "__main__":
    root = tk.Tk()
    app = ThingsBoardApp(root)
    root.mainloop()
construction equipment
Connecta IOT NextConnect

Connecta IOT #NextConnect projesi ile İş Makineleri ve Traktörlerden konum, hız, akü voltajı gibi bilgiler alınarak Yapay Zeka aracı ile yorumlanmaktadır.

Connectaiot NextConnect için daha fazla bilgi almak için proje sitemizi ziyaret ediniz.

İş Makineleri ve Traktör Görev Veri Ölçüm Sistemi
Elektro-Optik Nedir?

Elektro-Optik, elektrik ve optik (ışık) arasındaki etkileşimleri inceleyen ve bu etkileşimleri kullanan bir bilim ve teknoloji dalıdır. Elektrik sinyallerinin optik sinyallere veya optik sinyallerin elektrik sinyallerine dönüştürülmesi üzerine odaklanır. Bu teknoloji, sensörler, görüntüleme sistemleri ve iletişim cihazları gibi birçok alanda kullanılır.

Devamını oku
Termal Kamera
Askeri ve Sivil Tip Termal Kameralar Arasındaki Farklar

Termal kameralar, ısı algılama teknolojisiyle çalışarak hem askeri hem de sivil alanlarda yaygın olarak kullanılır. Ancak bu iki tür, kullanım amacı, tasarım ve teknik özellikler açısından önemli farklar gösterir.

1. Kullanım Amacı ve Uygulama Alanları:

  • Askeri Termal Kameralar: Genellikle savunma, gözetleme, hedef tespiti ve gece operasyonları için tasarlanır. Düşman tespiti, sınır güvenliği, arama-kurtarma ve füze güdüm sistemleri gibi kritik görevlerde kullanılır. Zorlu saha koşullarında yüksek performans sunar.
  • Sivil Termal Kameralar: Endüstriyel denetim, bina yalıtım kontrolü, elektrik arıza tespiti, yangın söndürme, veterinerlik ve hobi amaçlı kullanımlar için geliştirilir. Daha çok ticari ve günlük ihtiyaçlara odaklanır.
Devamını oku
Termal Kamera
Termal Kamera Onarım

Termal kamera onarımı, cihazın doğru çalışmasını sağlamak için uzmanlık gerektiren bir işlemdir. Arızalar genellikle sensör, lens, ekran veya yazılım kaynaklı olabilir. Onarım süreci, öncelikle cihazın detaylı bir şekilde incelenmesi ve arıza tespitinin yapılmasıyla başlar. Yetkin teknisyenler, özel ekipmanlar kullanarak kalibrasyon, parça değişimi veya yazılım güncellemesi gibi işlemleri gerçekleştirir. Orijinal yedek parçaların kullanılması ve profesyonel bir servis seçilmesi, cihazın performansını ve ömrünü korumak için önemlidir. Onarım sonrası testlerle kameranın doğruluğu ve güvenilirliği kontrol edilmelidir.

Devamını oku
ThingsBoard Güncelleme

Test için kullandığımız Raspberry Pi 5 cihazımızda ThingsBoard 3.9.1 sürümü bulunmaktadır. Hata ayıklamaları ve performans için şu an yayında olan 4.01 sürümüne aşağıdaki adımları sırası ile yaparak güncelleme yapacağız.

Güncelleme için https://thingsboard.io/docs/user-guide/install/upgrade-instructions/#ubuntucentos-401 sayfasındaki Ubuntu talimatlarını kullanacağız.

  • wget https://github.com/thingsboard/thingsboard/releases/download/v4.0.1/thingsboard-4.0.1.deb
  • sudo service thingsboard stop
  • sudo dpkg -i thingsboard-4.0.1.deb
  • (Önceki database ve şifre bilgilerinin silinmemesi için birleştir seçeneğini kullanın!) sudo /usr/share/thingsboard/bin/install/upgrade.sh
  • sudo service thingsboard start

Kolay gelsin.

IoT Ürün Grubu Devreye Alma

Bu dökümanda IoT cihazlarımızı nasıl devreye alacağını anlatacağız.

Nedir?

Endüstriyel cihazlarımız, makinelerden gerçek zamanlı veri alıp gönderebilir ve ortamdaki sensör bilgilerini analiz ederek bulut sistemine aktarabilir. Cihazlarımızda IoT Platformu olarak Thingsboard kullanılmaktadır. Thingsboard resmi sitesinden detaylı bilgi alabilirsiniz.

Devamını oku
ThingsBoard Calculated Fields
ThingsBoard Hesaplanan Alanlar Kullanım Örneği

ThingsBoard Nedir? makalemizi okumak için sayfaya gidiniz.

ThingsBoard ile veri gösterimi yaparken bazı verilerin hesaplanması gerekebilir. Bu alanlar genelde veriyi oluşturan PLC, Gömülü Sistem, IoT cihaz veya başka bir client cihaz tarafından hesaplanabilir ve ThingsBoard sunucusuna gönderilebilir veya veriler ham halde ThingsBoard sunucusuna gönderilir ve burada hesaplama yapılır.

Devamını oku
Thingsboard nedir
Thingsboard nedir?

Thingsboard, IoT uygulamalarının hızlı bir şekilde oluşturulması için cihaz ekleme, cihaz verilerini izleme, görüntüleme, panel, alarm gibi özellikleri olan web platformudur. Thingsboard HTTP, MQTT ve CoAP bağlantı türlerini destekler. Thingsboard backend’de programlama dili olarak Java, frontend’de framework olarak Angular platformlarını kullanır. Thingsboard açık kaynaklı bir IoT platformudur. Nesnelerin İnterneti (IoT) cihazlarından veri toplama, işleme, görselleştirme ve cihaz yönetimi için kullanılan açık kaynaklı bir IoT platformudur. Hızlı IoT uygulama geliştirme, yönetme ve ölçeklendirme imkanı sunar.

Devamını oku