2017-11-16 4 views
0

Ich lerne MQTT und Android Studio. Ich möchte eine einfache Anwendung in Android Studio machen, aber ich kämpfe von 4 Tagen und ich kann damit nicht umgehen.MQTT Android Studio und Raspberry PI Broker

Applikationsbeschreibung: 1 Button ---> drücken ---> Senden Thema/Nachricht ("MQTT"/"test") Das ist alles MQTT.

Mqtt Broker = rpi (IP: namerpibrok.ddns.net) 

Broker funktioniert gut und es braucht kein Passwort oder Benutzernamen

Problem ist mit aplication - das ist meine erste Arbeit mit Android Studio.

Ich tat alles, wie auf der Seite beschrieben: https://www.hivemq.com/blog/mqtt-client-library-enyclopedia-paho-android-service

Nun, wenn ich den Knopf drücken .... nichts passiert.

MqttAndroidClient client; 

    private static final String TAG = "LOG"; 

    // Used to load the 'native-lib' library on application startup. 
static { 
    System.loadLibrary("native-lib"); 
} 

    private Object bytes; 

    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    String clientId = MqttClient.generateClientId(); 
    client = new MqttAndroidClient(this.getApplicationContext(), "rpidomwroled.ddns.net:1883", clientId); 

     MqttConnectOptions options = new MqttConnectOptions(); 

    try { 
     IMqttToken token = client.connect(options); 
     token.setActionCallback(new IMqttActionListener() { 
      @Override 
      public void onSuccess(IMqttToken asyncActionToken) { 
       // We are connected 
            Toast.makeText(MainActivity.this,"Połączono", Toast.LENGTH_LONG).show(); 

      } 

      @Override 
      public void onFailure(IMqttToken asyncActionToken, Throwable exception) { 
       // Something went wrong e.g. connection timeout or firewall problems 
       Toast.makeText(MainActivity.this,"Połączono", Toast.LENGTH_LONG).show(); 

      } 
     }); 
    } catch (MqttException e) { 
     e.printStackTrace(); 
    } 
} 



    MqttAndroidClient client; 

    private static final String TAG = "LOG"; 

    // Used to load the 'native-lib' library on application startup. 
static { 
    System.loadLibrary("native-lib"); 
} 

    private Object bytes; 

    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    String clientId = MqttClient.generateClientId(); 
    client = new MqttAndroidClient(this.getApplicationContext(), "rpidomwroled.ddns.net:1883", clientId); 

     MqttConnectOptions options = new MqttConnectOptions(); 

    try { 
     IMqttToken token = client.connect(options); 
     token.setActionCallback(new IMqttActionListener() { 
      @Override 
      public void onSuccess(IMqttToken asyncActionToken) { 
       // We are connected 
            Toast.makeText(MainActivity.this,"Połączono", Toast.LENGTH_LONG).show(); 

      } 

      @Override 
      public void onFailure(IMqttToken asyncActionToken, Throwable exception) { 
       // Something went wrong e.g. connection timeout or firewall problems 
       Toast.makeText(MainActivity.this,"Połączono", Toast.LENGTH_LONG).show(); 

      } 
     }); 
    } catch (MqttException e) { 
     e.printStackTrace(); 
    } 
} 

public void pub(View v) 
 
{ 
 
    String topic = "mqtt"; 
 
    String payload = "mqtt"; 
 
    byte[] encodedPayload = new byte[0]; 
 
    try { 
 
     encodedPayload = payload.getBytes("UTF-8"); 
 
     MqttMessage message = new MqttMessage(encodedPayload); 
 
     client.publish(topic, message); 
 
    } catch (UnsupportedEncodingException | MqttException e) { 
 
     e.printStackTrace(); 
 
    } 
 
    } 
 

 
    }

Kann mir jemand sagen, was mache ich falsch?

+0

einige Fehler behoben bekommen und ein wenig umformuliert. – abarisone

+0

Was zeigen die Protokolle? – hardillb

Antwort

0

Dieser Code ist für mich gearbeitet

String topic = "mqtt"; 
MqttMessage message = new MqttMessage(); 
message.setPayload("Message from IoT dev".getBytes()); 
client.publish(topic, message); 

Sie Rücken rufen in

client.setCallback(new IoTCallbacks() { 
       @Override 
       public void connectionLost(Throwable cause) { 

       } 

       @Override 
       public void messageArrived(String topic, MqttMessage message) throws Exception { 

       } 

       @Override 
       public void deliveryComplete(IMqttDeliveryToken token) { 

       } 
      }); 
Verwandte Themen