Module for publishing messages via MQTT, using libcurl. The libcurl library must have been built with the MQTT option enabled.
Limitations of libcurl:
An MQTT server must be running, such as Mosquitto. On FreeBSD install Mosquitto with:
# pkg install net/mosquitto
Start the service locally:
# service mosquitto onestart
Subscribe topic /fortran:
# mosquitto_sub -h 127.0.0.1 -t /fortran
In Fortran, we then create the URL of the topic /fortran on host
127.0.0.1, and publish the message:
character(:), allocatable :: url
integer :: rc
rc = dm_mqtt_init()
url = dm_mqtt_url(host='127.0.0.1', topic='/fortran', port=1883)
rc = dm_mqtt_publish(url, 'Hello, from Fortran!')
call dm_mqtt_shutdown()
Any client subscribing topic /fortran will receive the message.
Initialises MQTT backend.
Publishes MQTT message message on topic with address url by
calling libcurl.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | url |
URL to MQTT server/topic. |
||
| character(len=*), | intent(in), | target | :: | message |
Message to publish. |
|
| integer, | intent(in), | optional | :: | timeout |
Connection timeout. |
|
| character(len=:), | intent(out), | optional, | allocatable | :: | error_message |
cURL error message. |
| integer, | intent(out), | optional | :: | error_curl |
cURL error code. |
Returns allocatable string of URL to MQTT server. Uses the URL API
of libcurl to create the URL. If port is 0, the default port
will be used. The topic must start with character /.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | host |
IP or FQDN of MQTT server. |
||
| character(len=*), | intent(in) | :: | topic |
MQTT topic. |
||
| integer, | intent(in), | optional | :: | port |
MQTT server port (1883 by default). |
Created URL.
Cleans up MQTT backend.