Librerías y ejemplos para Arduino
Para conectar un Arduino a Whastsbee podemos utilizar la siguiente librería :
https://github.com/knolleary/pubsubclient.
La documentación del API está en el siguiente enlace:
http://pubsubclient.knolleary.net/api.html
Hardware compatible
La librería usa la Arduino Ethernet Client API para interactuar con el hadware de red. Esto provoca que funcione con un número de placas cada vez más amplio, incuyendo:
- Arduino Ethernet
- Arduino Ethernet Shield
- Arduino YUN – use the included
YunClient
in place ofEthernetClient
, and be sure to do aBridge.begin()
first - Arduino WiFi Shield – if you want to send packets greater than 90 bytes with this shield, enable the
MQTT_MAX_TRANSFER_SIZE
option inPubSubClient.h
. - Sparkfun WiFly Shield – cuando se usa con this library
- Intel Galileo/Edison
- ESP8266
La librería no puede ser usada en este momento con el hardware basado rn el chip ENC28J60, utilizado en las shields Nanode o Nueectronics. Para utilizarlos hay una librería alternativa disponible
Autor de la librería
Nick O’Leary – @knolleary
Licencia
La librería está liberada bajo la MIT License.
Ejemplo de código
Más ejemplos disponibles en los enlaces de github.
/* Basic MQTT example with Authentication - connects to an MQTT server, providing username and password - publishes "hello world" to the topic "outTopic" - subscribes to the topic "inTopic" */ #include #include #include // Update these with values suitable for your network. byte mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED }; IPAddress ip(172, 16, 0, 100); IPAddress server(172, 16, 0, 2); void callback(char* topic, byte* payload, unsigned int length) { // handle message arrived } EthernetClient ethClient; PubSubClient client(server, 1883, callback, ethClient); void setup() { Ethernet.begin(mac, ip); // Note - the default maximum packet size is 128 bytes. If the // combined length of clientId, username and password exceed this, // you will need to increase the value of MQTT_MAX_PACKET_SIZE in // PubSubClient.h if (client.connect("arduinoClient", "testuser", "testpass")) { client.publish("outTopic","hello world"); client.subscribe("inTopic"); } } void loop() { client.loop(); }