Communication protocol¶
According to the type of your tap device you have differents protocol availables.
Your tap device may also be available through a relay (gateway), for example thanks to Tap Manager app. That's why there are additional communication protocols available:
You can also implement your custom protocol.
Provided implementation¶
Bluetooth Low Energy (BLE)¶
Connect to bluetooth device with mac address C3:23:DE:AA:BB:CC
// Only available in node.js environment thanks to noble library import { NobleBLEAdapter, NobleBleScanner } from "@iotize/device-com-ble.node"; const DEVICE_ADDRESS = "C3:23:DE:AA:BB:CC"; let bleScanner = new NobleBleScanner(); let peripheral: noble.Peripheral = await bleScanner.getDeviceByAddress(DEVICE_ADDRESS); let bleProtocol = new NobleBLEAdapter(peripheral);
import com.iotize.android.device.api.protocol.ComProtocol; import com.iotize.android.communication.protocol.ble.BLEProtocol; // From a bluetooth address ComProtocol bleProtocol = BLEProtocol.fromAddress(context, "C3:23:DE:AA:BB:CC"); // If you already have a android BluetoothDevice instance use this method: BluetoothDevice bluetoothDevice = // ... ComProtocol bleProtocol = BLEProtocol.fromDevice(context, bluetoothDevice);
See javadoc for Android of BLEProtocol
NFC¶
Connect to an IoTize with an NFC tag:
// NOT AVAILABLE
import com.iotize.android.device.api.protocol.ComProtocol; import com.iotize.android.communication.protocol.nfc.NFCProtocol; // Suppose you have an NFC tag android.nfc.Tag tag = // ... // Instanciate the NFC protcol from this tag ComProtocol nfcProtocol = NFCProtocol.create(tag);
See javadoc for Android of NFCProtocol
Socket¶
For wifi communication, if you are connected on the same network as the IoTize, you can use this method to instantiate your communication object:
// With node environment, use sockets import { SocketProtocol } from "@iotize/device-com-socket.node" let protocol = new SocketProtocol({ host: 'localhost', port: 2000 }) // With browser environment, use web sockets import { WebSocketProtocol } from "@iotize/device-com-websocket.js" let protocol = new WebSocketProtocol({ url: 'tcp://localhost:2000' })
import com.iotize.android.communication.protocol.socket.SocketProtocol; import com.iotize.android.communication.protocol.socket.WIFI.WIFIProtocol; import com.iotize.android.device.api.protocol.ComProtocol; // Socket protocol ComProtocol socketProtocol = new SocketProtocol(new InetSocketAddress("<YOUR_IP_ADDRESS>", <PORT>)); // Wi-Fi protocol (for tap device with Wi-Fi capability) // If we are already connected to the same network as the tap device: ComProtocol wifiProtocol = WIFIProtocol.fromIP(context, "192.168.1.1"); // To connect on a specific network, use WifiConfiguration android.net.wifi.WifiConfiguration wifiConfig; // If you have an open network wifiConfig = WIFIProtocol.createConfiguration("networkssid", WIFIProtocol.SecurityType.OPEN); // Network with WPA key wifiConfig = WIFIProtocol.createConfiguration("networkssid", WIFIProtocol.SecurityType.WPA, "wifipassord"); // Network with WEP key wifiConfig = WIFIProtocol.createConfiguration("networkssid", WIFIProtocol.SecurityType.WEP, "wifipassord"); // Create the protocol with a specific network configuration wifiProtocol = WIFIProtocol.fromIP(context, "192.168.1.1", wifiConfig);
See javadoc for Android of WIFIProtocol
MQTT¶
import { MqttProtocol } from "@iotize/device-com-mqtt.js"; let protocol = new MqttProtocol(); // Not yet documented
import com.iotize.android.communication.protocol.mqtt.MQTTProtocol; import com.iotize.android.communication.protocol.mqtt.IoTizeMQTTClient; IoTizeMQTTClient mqttClient = new IoTizeMQTTClient("tcp://<yourbrokerurl>:<port>", "ClientId1", "/your/publish/topic"); MQTTProtocol protocol = new MQTTProtocol(mqttClient); // Configure your protocol protocol .subscribeToTopics(new String[]{ "/topic/to/subscribe/for/incomming/requests" }) .setResponseTopic("/topic/wher/to/send/response");
LoRa¶
Not yet available.
Create your own¶
To use your own protocol, implement interface ComProtocol
(See javadoc for Android of ComProtocol)
import { ComProtocol } from '@iotize/device-client/protocol/api'; // Implement interface class MyCustomProtocol implements ComProtocol{ // Your implementation here } // You can also simply override QueueComProtocol import { QueueComProtocol } from '@iotize/device-client/protocol/impl'; class MyCustomProtocol extends QueueComProtocol{ }
import com.iotize.android.device.api.protocol.ComProtocol; class MyCustomProtocol implements ComProtocol{ // Your implementation here }