我必须将UDP数据包发送到没有互联网连接的WiFi模块(提供自己的AP)但是当我将移动设备连接到AP时,Android会重定向移动数据接口上的数据包,因为它已经连接了互联网.
我已经使用下面的代码来完成我的工作,但它似乎不适用于Android M.
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void setWifiInterfaceAsDefault() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder builder = new NetworkRequest.Builder();
NetworkRequest networkRequest= builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build();
connectivityManager.requestNetwork(networkRequest, new ConnectivityManager.NetworkCallback());
}
Run Code Online (Sandbox Code Playgroud)
我还补充道
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)
在我的AndroidManifest.xml上,我确保自己Settings.System.canWrite(this)返回true但仍然没有.
提前致谢.
Azure IoT Hub支持AMQP,MQTT,HTTP协议.为了自定义这些协议,我们有Azure IoT协议网关.我可以在MQTT协议定制上找到好的样本.我需要一些使用Azure IoT协议网关进行基于TCP的协议自定义的示例代码.
编辑(为了得到答案): OP提出的问题是使用Azure协议网关支持基于TCP的专有协议的示例.目前,IoT中心仅支持AMQP,MQTT和HTTP.虽然这些协议实际上依赖于TCP,但如果没有额外的AMQP,MQTT或HTTP层,则集线器不支持直接TCP连接.正如解释在这里,我们需要一个定制的基于TCP协议的一个基本的例子.
想象一下,一个基本设备只能通过TCP在给定的IP地址/端口上发送一些专有的有效载荷:我们需要一个网关定制的例子,允许该设备将数据发送到集线器.
协议网关的当前代码设计很差,因为它严重依赖于MQTT.
也加上一些赏金.
我正在尝试访问一个简单的AWS IOT REST服务,但我还没有成功.这就是我做的.
试图"获取"端点,这就是我得到的 -
{
"message": "Credential should be scoped to correct service. ",
"traceId": "be056198-d202-455f-ab85-805defd1260d"
}
我认为邮递员有问题,所以我尝试使用连接到S3的aws-sdk-sample示例并将其更改为连接到IOT URL.这是我的程序片段(Java)
String awsAccessKey = "fasfasfasdfsdafs";
String awsSecretKey = "asdfasdfasfasdfasdfasdf/asdfsdafsd/fsdafasdf";
URL endpointUrl = null;
String regionName = "us-east-1";
try {
endpointUrl = new URL("https://dasfsdfasdf.iot.us-east-1.amazonaws.com/things/SOMETHING/shadow");
}catch (Exception e){
e.printStackTrace();
}
Map<String, String> headers = new HashMap<String, String>();
headers.put("x-amz-content-sha256", AWSSignerBase.EMPTY_BODY_SHA256);
AWSSignerForAuthorizationHeader signer = new AWSSignerForAuthorizationHeader(
endpointUrl, "GET", "iot", regionName);
String authorization = signer.computeSignature(headers,
null, // no query parameters …Run Code Online (Sandbox Code Playgroud)我们知道.NET Core支持Linux x64和x86,MacOS X,Windows ......但它是否可以在Linux中用于Raspberry Pi?(例如Raspbian).
我正在为英特尔爱迪生编写一个蓝牙驱动程序.Board软件是最新的,我正在使用基于Eclipse的IDE进行开发.此爱迪生版本中的Bluez版本号为5.37.
我正在设计一个必须满足以下要求的系统:
最后一项是问题,因为我可以检测传感器设备,但我无法使用bluez5接口配对它们.到目前为止,我已尝试使用D-BUS接口,但由于我不断收到以下错误消息,因此无法正常工作:
接口"org.bluez.Manager"上带有签名"s"的方法"FindAdapter"不存在
代码在此处显示.请注意:
码:
DBusMessage *msg, *reply;
DBusError err;
const char *reply_path;
char *path;
msg = dbus_message_new_method_call("org.bluez", "/","org.bluez.Manager", "FindAdapter");
dbus_message_append_args(msg, DBUS_TYPE_STRING, &adapter,DBUS_TYPE_INVALID);
dbus_error_init(&err);
reply = dbus_connection_send_with_reply_and_block(conn, msg, -1, &err);
dbus_message_unref(msg);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
HTTP主要用于查看网页.Coap是IoT或WSN的HTTP简化版本.虽然COAP基于UDP,但它应该有ACK消息来模拟TCP.由于COAP比HTTP简单,因此它具有更低的延迟并且消耗更少的功率.
那么,为什么浏览器和Web服务器不能用COAP替换HTTP?鉴于以前的论点,是否预计COAP将完全取代HTTP?这只是时间问题吗?是否有任何仅受HTTP支持的功能?
我们需要构建一个可以与运行Android变体的某些嵌入式设备通信的服务器.我们需要能够向设备发送命令,并接收响应.一个简单的命令可能是询问设备的状态.我们不会有HTTP,所以我们需要让客户端/设备与服务器建立连接.
我们正在考虑使用MQTT,因为它具有许多不错的属性(QoS,轻量级,为物联网构建),但它本身不支持请求响应工作流.
我们已经考虑过在MQTT之上构建RPC,但在我们开始之前,我只是想让人们对此问题有所了解.Websockets,WAMP,ZeroMQ会更好吗?
编辑:
Q1: 我们甚至需要RPC吗?
Q2: 有没有一种方法来构建系统,我总是发送异步类型的消息,仍然提供良好的用户体验?
Q3: 任何例子?
寻找实施示例并亲身体验使用单个设备构建物联网通信系统的经验.
我开发了两种不同传感器的应用程序.它们分别正常工作,但是当我尝试使用它们来创建两个不同的总线时,Alljoyn给出了这个例外.
org.alljoyn.services.common.BusAlreadyExistException:先前已使用BusAttachment设置了该对象.
下面是我的连接源代码.谁能告诉我为什么我遇到这个问题.
private void connect()
{ org.alljoyn.bus.alljoyn.DaemonInit.PrepareDaemon(getApplicationContext());
bus = new BusAttachment("ControlPanelBrowser", BusAttachment.RemoteMessage.Receive);
bus.registerBusListener(new BusListener());
Status status = bus.registerBusObject(mControlPanelSignalInterface, Constants.SERVICE_PATH);
if (status != Status.OK) {
Log.d(TAG, "Problem while registering bus object");
}
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
srpPassword = settings.getString(PREFS_PASSWORD, DEFAULT_SECURED_SRP_PASSWORD);
SrpAnonymousKeyListener authListener = new SrpAnonymousKeyListener(this, logger, AUTH_MECHANISMS);
Status authStatus = bus.registerAuthListener(authListener.getAuthMechanismsAsString(),
authListener, getKeyStoreFileName());
if ( authStatus != Status.OK ) {
Log.e(TAG, "Failed to register AuthListener");
}
status = bus.connect();
if (Status.OK == status){
String daemonName = Constants.DAEMON_NAME_PREFIX + ".ControlPanelBrowser.G" …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的 android 应用程序连接到 Tcp iot 服务器,首先我使用 wifi 连接到 tcp 服务器,然后尝试套接字连接,但它显示连接超时的相同错误。
print(r);
}).catchError((e) {
print(e);
});
Run Code Online (Sandbox Code Playgroud)
wifi连接没有任何错误。
Socket.connect("192.168.5.10", 5800).then((socket) {
print('Connected to: '
'${socket.remoteAddress.address}:${socket.remotePort}');
socket.destroy();
});
Run Code Online (Sandbox Code Playgroud)
此处显示未处理的异常:SocketException: OS Error: Connection timed out, errno = 110, address = 192.168.5.10, port = 49590
我正在考虑将mosquitto作为MQTT经纪人.根据我的阅读,我意识到Mosquitto不支持水平缩放.
到目前为止,我的要求的所有其他标准都可以通过Mosquitto来满足.
我不确定这个问题是否过于通用或广泛,但我想知道的是,如果有任何方法可以实现扩展功能,还可以为Mosquitto实现负载平衡等.
iot ×10
android ×3
mqtt ×2
tcp ×2
.net ×1
.net-core ×1
alljoyn ×1
android-wifi ×1
aws-iot ×1
aws-sdk ×1
azure ×1
bluetooth ×1
bluez ×1
broker ×1
c# ×1
c++ ×1
coap ×1
dart ×1
flutter ×1
http ×1
intel-edison ×1
low-latency ×1
mosquitto ×1
networking ×1
protocols ×1
raspberry-pi ×1
raspbian ×1
sensor ×1
socket.io ×1