Communication protocols¶
Your Tap determines which protocols are available:
Your Tap may also be available through a relay (gateway), for example Tap Manager app. Additional communication protocols are available for this situation:
You can also implement a 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 via 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 an 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 = // ... // Instantiate the NFC protocol from this tag ComProtocol nfcProtocol = NFCProtocol.create(tag);
See javadoc for Android of NFCProtocol
Socket¶
For Wi-Fi 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 with Wi-Fi capability) // If we are already connected to the same network as the Tap: 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 }