آموزش MQTT در برنامه نویسی اندروید
سلام دوستان همیشگی در این سری از آموزش برنامه نویسی اندروید به آموزش MQTT در برنامه نویسی اندروید می پردازیم در مقاله قبلی علت استفاده از پروتکل MQTT را برای شما قرار دادیم در این آموزش به نحوه استفاده از آن در برنامه نویسی اندروید می پردازیم از این پروتکل برای ارسال داده بین دو دستگاه می توانید استفاده در ادامه با ما همراه باشید.
آموزش MQTT در برنامه نویسی اندروید
در نظر بگیرید می خواهید اطلاعات مربوط به سنسور یک برد مثلا سنسور رطوبت را به سمت گوشی ارسال کنید (ما در این آموزش نحوه شبیه سازی ارسال داده را نیز به شما آموزش میدهیم)
بخش اول راه اندازی شبیه ساز mosquitto
اگر می خواهید عمل شبیه سازی ارسال داده را بروی کامپیوتر خود شبیه سازی کنید مراحل زیر را دنبال کنید در غیر این صورت از بخش دوم شروع به خواندن کنید.
ابتدا بسته به سیستم عاملتون از سایت زیر mosquitto را نصب کنید.
1 | https://mosquitto.org/ |
در اینجا باید بیاییم و دو تا Terminal باز کنیم که یکیش میشه Subscriber و در ترمینال دوم publisher را ایجاد می کنیم.
در Terminal1 کد زیر را وارد کنید.
1 | mosquitto_sub -t topic/jfp |
در Terminal2 کد زیر را وارد کنید.
1 | mosquitto_pub -t topic/jfp -m “Hello From programchi.ir” |
با اینکار پیامی که در ترمینال دوم وارد کردید را در ترمینال اول میبینید.
بخش دوم کد اندروید
در ابتدای کار باید کتابخانه مربوط به mqtt را به پروژه اضافه کنید از repo زیر باید استفاده کنید.
1 2 3 4 5 6 | repositories { jcenter() maven { url "https://repo.eclipse.org/content/repositories/paho-snapshots/" } } |
بعد از کد بالا باید dependency مربوط به کتابخانه را اضافه کنید.
1 2 | compileOnly 'com.google.android.things:androidthings:0.1-devpreview' implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.0.2' |
پروژه را sync کنید.
حالا باید MqttCallback را صدا بزنیم تا بتوانیم به یک آیپی Listen کنیم مثل زیر عمل کنید.
1 2 3 4 5 6 7 8 9 | try { MqttClient client = new MqttClient("tcp://192.168.1.5:1883", "AndroidThingSub", new MemoryPersistence()); client.setCallback(this); client.connect(); String topic = "topic/jfp"; client.subscribe(topic); } catch (MqttException e) { e.printStackTrace(); } |
در بالا به جای آیپی 192.168.1.5 شما باید آیپی ویندوز خود را به دست آورده و قرار دهید.
برای بدست آوردن آیپی وارد cmd شده و کامند ipconfig /all را بزنید و همانند مثل زیر آیپی را به دست آورید.
یکسری overide و callback دیگر نیز دارد که می توانید از آنها نیز استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 | @Override public void connectionLost(Throwable cause) { Log.d(TAG, "connectionLost"); } @Override public void messageArrived(String topic, MqttMessage message) throws Exception { String payload = new String(message.getPayload()); Log.d(TAG, payload); } @Override public void deliveryComplete(IMqttDeliveryToken token) { Log.d(TAG, "deliveryComplete"); } |
متدهای بالا در صورتی که ارتباط قطع شود یا پیام ارسال شود و یا پیام دریافت شود داری event است به راحتی می توانید داده های دریافتی در پاسخ را گرفته و از آنها استفاده کنید.
برنامه را نصب کرده و یک ترمینال بروی ویندوز خود ایجاد کنید و کد زیر را در ترمینال وارد کنید.
1 2 | mosquitto_pub -h 127.0.0.1 -t topic/jfp -m "Ayush" mosquitto_pub -h 127.0.0.1 -t topic/jfp -m "Gemini" |
با انجام کامند بالا یک پیام به topicی به نام jfp ارسال می شود و خود گوشی نیز به این topic در اصطلاح listen می کند.
موفق باشید.