traccar / traccar-client-android

Traccar Client for Android
https://www.traccar.org/client
Apache License 2.0
643 stars 715 forks source link

Option message MQTT #230

Open willguitaradmfar opened 7 years ago

willguitaradmfar commented 7 years ago

It would be very good to have a communication option via MQTT, as OwnTracks available in store. OwnTracks lets you configure the broker MQTT easy way, so we can generate actions with several other cloudIOT.

tananaev commented 7 years ago

You have to provide more details about what MQTT is, how it works, and what exactly you want to be implemented in Traccar Client.

willguitaradmfar commented 7 years ago

Here is a brief explanation of MQTT protocol. wiki

MQTT is a topic-based protocol of publications and subscriptions. IOT focused on architecture, is being very adopted in design with low network capacity.

MQTT provides reconnection when missed by a network problem, ideal for GSM / GPRS / 3G.

Basically, you implement a client that connects to a broker that will be set by the User in the same way that today we put the host and port of the server traccar.

When a MQTT client sends a packet to the broker, it is necessary to choose a topic for publication, this setting could be the user to configure.

When sending packets, you can set the flag to retain the broker keep the last package as information for a next customer to sign up and instantly know the current location of the device.

QoS is a means of informing the quality of the shipping package, 0, 1 or 2. In my opnion, can be configured by the user.

MQTT is designed to be very lightweight protocol intended for M2M communication (Machine to Machine), intended for low bandwidth and resources.

The Eclipse has a Paho library for android allows to use all the protocol benefits for android.

MQTT API - PAHO

This link contains example of easy use in android applications.

Eclipse also provides a public broker for testing:

iot.eclipse.org

The default port for MQTT 1883.

Proposal:

MQTT is present in almost all programming languages ​​enabling endless possibilities.

Imagine integration with IOT world where my automatic garage gate, which is controlled via MQTT by a device connected to the Internet, receive my phone location package to authorize the opening.

Or

Through the app (IoT MQTT Dashboard) available in Google Play, I know if my child arrived in school or location.

MQTT increases our chances of integration with the IOT world.

If possible this implementation combined with the hidden APK and running as a service in the mobile boot ... :) :)

tananaev commented 7 years ago

OK, so it's basically another communication protocol. I don't really want to complicate the app by including another protocol, but we can keep this feature request here in case more people request it and we decide to implement it.

albertusgeyser commented 6 years ago

I also would love to have MQTT option.

langxj commented 6 years ago

MQTT is very good, please be sure to support it!

leifnel commented 6 years ago

It could probably be done serverside by hooking up a "converter" to the events/api.

ramonsmits commented 7 months ago

I've made a small api to bridge any incoming OsmAnd HTTP post

http://myserver:5297/?id=123456789&timestamp=1702232117&lat=YY.YYYY&lon=Z.ZZZ066&speed=0.0&bearing=0.0&altitude=48.87311760736797&accuracy=100.0&batt=17.0

and just publish that to an MQTT topic that contains the ID and the payload for all data after the ID

topic: OsmAnd/{id} => OsmAnd/123456789 payload: timestamp=1702232117&lat=YY.YYYY&lon=Z.ZZZ066&speed=0.0&bearing=0.0&altitude=48.87311760736797&accuracy=100.0&batt=17.0

Which returns HTTP 202.

Ow, it also strips 0 values so that the payload is as small as possible.

I then have a consumer that splits the payload into other subtopics. Taking the above as an example:

topics

It's not ideal but works. I think this likely would be a better task for the Traccar server software to have this functionality. It would make real-time push based integrating with it:

I do found https://github.com/ivanfmartinez/ivanfm-traccar-mqtt which seems to do something similar and there also seems to be already some form of MQTT support in Traccar:

https://github.com/search?q=repo%3Atraccar%2Ftraccar+mqtt&type=pullrequests

leifnel commented 2 months ago

I think it would be more useful to have the client publish the data over mqtt, and then have a serverside "plugin" that subcribed to that topic and forwarded it to traccar.

Then other applications, for instance Home Assistant could also subscribe to the location.

tananaev commented 2 months ago

Traccar server can already publish data to MQTT.