精华内容
下载资源
问答
  • 服务器端定时或者不定时地向客户端发送byte[] 客户端要怎么来监听呢?
  • 有兴趣了解企业服务器通过 AMQP 接入物联网平台的可以看我上一篇文章,下面说一下企业服务器下发指令到物联网设备,修改设备属性 一、创建产品与设备 还不清楚的查看下面文档 ...二、下发指令修改属性 ...

    有兴趣了解企业服务器通过 AMQP 接入物联网平台的可以看我上一篇文章,下面说一下企业服务器下发指令到物联网设备,修改设备属性

    一、创建产品与设备

    还不清楚的查看下面文档
    https://help.aliyun.com/document_detail/73705.html?spm=a2c4g.11186623.6.566.27647cbcrXNYwD

    二、下发指令修改属性

    创建maven项目引入如下依赖

    <!--IoT Java SDK的Maven依赖坐标:-->
    
    <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-iot -->
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-iot</artifactId>
        <version>6.8.0</version>
    </dependency>
    
    <!--阿里云公共包依赖坐标 -->
    
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>3.5.1</version>
    </dependency>
    

    Java代码下发指令到灯设备,修改设备开关属性为0

    package org.example;
    
    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.iot.model.v20180120.SetDevicePropertyRequest;
    import com.aliyuncs.iot.model.v20180120.SetDevicePropertyResponse;
    import com.aliyuncs.profile.DefaultProfile;
    import com.aliyuncs.profile.IClientProfile;
    import org.json.JSONObject;
    
    public class App {
        public static void main(String[] args) throws ClientException {
         //将光标定位到账号头像上,选择accesskeys,如果使用子账户 RAM 的accesskeys记得授权物联网平台权限
            String accessKey = "LTAxxxxxxxxxxxxxxZr"; 
            String accessSecret = "jxxxxxxxxxxxxxxxxxxAkeR";
            DefaultProfile.addEndpoint("cn-shanghai", "cn-shanghai", "Iot", "iot.cn-shanghai.aliyuncs.com");
            IClientProfile profile = DefaultProfile.getProfile("cn-shanghai", accessKey, accessSecret);
            DefaultAcsClient client = new DefaultAcsClient(profile);
            SetDevicePropertyRequest request = new SetDevicePropertyRequest();
            //ProductKey 以及 DeviceName可以在设备信息详情页获取
            request.setProductKey("a1Ixxxxxxez6");
            request.setDeviceName("Dexxxxxht1");
            JSONObject itemJson = new JSONObject();
            //该选项为当前设备属性,下面给出具体位置
            itemJson.put("LightSwitch", 0);
            request.setItems(itemJson.toString());
    
            try {
                SetDevicePropertyResponse response = client.getAcsResponse(request);
                System.out.println(response.getRequestId() + ", success: " + response.getSuccess());
            } catch (ClientException e) {
                e.printStackTrace();
            }
        }
    }
    
    

    三、灯产品的详细信息

    此测试修改的设备信息如下

    1、基础信息

    在这里插入图片描述

    2、产品属性

    在这里插入图片描述

    3、属性是否可修改

    点击查看,发现此产品开关属性支持修改

    在这里插入图片描述

    四、测试

    1、打开在线测试

    从上到下依次选择产品设备,选择获取设备的开关属性,得到返回结果为 1
    在这里插入图片描述

    2、运行程序,修改设备属性为 0

    运行结果如下,返回 true ,表示修改成功
    在这里插入图片描述

    3、如下,可以看到灯设备开关属性已经修改为 0

    在这里插入图片描述
    注意:修改设备属性是一定要保证,属性名以及属性值范围与产品预定义一直,否则会报错

    展开全文
  • 物联网-服务器下发命令控制设备

    千次阅读 2019-07-16 10:13:50
    服务器下发命令到设备一般经过哪些步骤,简单来说就是服务器通过MQTT把需要设置的设备的属性值发送到设备具体流程,通常情况下设备一般都有像开关(打开,关闭的操作),还有就是语音控制的一些设备(百度的小度,...

    服务器下发命令到设备一般经过哪些步骤,简单来说就是服务器通过MQTT把需要设置的设备的属性值发送到设备具体流程,通常情况下设备一般都有像开关(打开,关闭的操作),还有就是语音控制的一些设备(百度的小度,阿里的天猫精灵),一般都是需要区分开来控制的,你可能是控制天猫精灵说什么或者是做什么,具体到数据库设计的话就是如果不是语音控制设备,一般需要一张属性表(attribute)保存这个设备都有哪些操作,操作之间可能还有联动(后续有能力再写),

    1:DevicesAction的setAttribute()方法

    参数:deviceId(设备ID),index(attribute表的attribute_index字段),content(具体下发的内容,控制开关等等操作,其他设备查看表attribute表的name和content_info字段做对应的操作,语音设备不查表)

    eg:下发一个语音设备说:你好

    具体调用RoomServiceImpl的setDevice方法

    public boolean setDevice(Long deviceId, Integer index, String content) throws RemoteConnectFailureException {
    

    如果不是语音设备和电动窗帘,则需要调用DeviceCenterService的setDevice方法

    deviceCenterService.setDevice(roomDeviceDO.getSerialId(), indexValueMapToSet, Constant.SMARTHOTEL_DOMAIN_NAME);

    方法参数serialId, Map<Integer, AttributeDTO>(indexValueMapToSet),smart-hotel,map里放入index和对应的attribute

    展开全文
  • 若是 ONU WEB界面 已经存在一条 WAN连接(IPOE或PPP的...注意:下发模版操作后需要 等待下一次 Inform上报时 才会去更新同步WAN2连接配置;要不在ONU WEB页面上手动操作 Inform 上报 ;即可立刻下发参数参数配置
    1. 若是 ONU WEB界面 已经存在一条 WAN连接(IPOE或PPP的WAN),则实例:InternetGatewayDevice.WANDevice.1.WANConnectionDevice. == 1 就会自动创建成功在这里插入图片描述
    2. 有了第一步操作: 新创建一条 WAN2 的实例 WAN连接:如下操作:InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection. == 2
      在这里插入图片描述
      查看新创建的WAN2 IPOE的WAN连接:默认值如下:默认没有任何值,只有一条 WAN连接
      在这里插入图片描述3.给新创建的WAN连接 设置参数 属性
      通过模版方式下发 WAN连接参数值:如下操作
      3.1 先建立模版配置:
      在这里插入图片描述
      3.2 设置 IPOE WAN2的参数属性值
      在这里插入图片描述
      3.2 绑定模板配置下发到ONU上
      在这里插入图片描述
      注意:下发模版操作后需要 等待下一次 Inform上报时 才会去更新同步WAN2连接配置;要不在ONU WEB页面上手动操作 Inform 上报 ;即可立刻下发参数参数配置
    展开全文
  • 第一次写博客,不知道写点什么会比较好,不知道写点什么会...至于服务器为什么一定要选择RSA,我也不懂,维基上说是安全,但却让我这边费了一番时间, 废话不多说,切入正题,我在网上看到的别人的写法大部分是自己在

    第一次写博客,不知道写点什么会比较好,不知道写点什么会显得自己比较牛逼,哈哈,开个玩笑了,不过确实是第一次写博客,只好是先从最近遇到的问题开始写起吧。

    最近因为有涉及密码上传到服务器的需求,而服务器那边要求必须用RSA加密,这件事情让我头大了半天。至于服务器为什么一定要选择RSA,我也不懂,维基上说是安全,但却让我这边费了一番时间,

    废话不多说,切入正题,我在网上看到的别人的写法大部分是自己在客户端这边生成证书,然后利用证书进行加密,这与之前服务器说用他给的NSString公钥大相径庭,所以这样的帖子直接被我忽略了。但同时也确实找到了很多不错的利用NSString的例子,只不过由于我理解不够深入,始终不能通过NSString获得SeckeyRef,我先在这贴出来。

    http://stackoverflow.com/questions/1536894/converting-raw-rsa-key-value-to-seckeyref-object-for-encryption

    The following code comes from Apple's CryptoExercise example, in SecKeyWrapper.m. It assumes the "publicKey" NSData object is the binary DER-encoded ASN.1 object, not base-64 encoded. So you'll have to get a base-64 decoder and apply it first. You might also want to read this post in the Apple Developer Forums.

    - (SecKeyRef)addPeerPublicKey:(NSString *)peerName keyBits:(NSData *)publicKey {
        OSStatus sanityCheck = noErr;
        SecKeyRef peerKeyRef = NULL;
        CFTypeRef persistPeer = NULL;

        LOGGING_FACILITY( peerName != nil, @"Peer name parameter is nil." );
        LOGGING_FACILITY( publicKey != nil, @"Public key parameter is nil." );

        NSData * peerTag = [[NSData alloc] initWithBytes:(const void *)[peerName UTF8String] length:[peerName length]];
        NSMutableDictionary * peerPublicKeyAttr = [[NSMutableDictionary alloc] init];

        [peerPublicKeyAttr setObject:(id)kSecClassKey forKey:(id)kSecClass];
        [peerPublicKeyAttr setObject:(id)kSecAttrKeyTypeRSA forKey:(id)kSecAttrKeyType];
        [peerPublicKeyAttr setObject:peerTag forKey:(id)kSecAttrApplicationTag];
        [peerPublicKeyAttr setObject:publicKey forKey:(id)kSecValueData];
        [peerPublicKeyAttr setObject:[NSNumber numberWithBool:YES] forKey:(id)kSecReturnPersistentRef];

        sanityCheck = SecItemAdd((CFDictionaryRef) peerPublicKeyAttr, (CFTypeRef *)&persistPeer);

        // The nice thing about persistent references is that you can write their value out to disk and
        // then use them later. I don't do that here but it certainly can make sense for other situations
        // where you don't want to have to keep building up dictionaries of attributes to get a reference.
        // 
        // Also take a look at SecKeyWrapper's methods (CFTypeRef)getPersistentKeyRefWithKeyRef:(SecKeyRef)key
        // & (SecKeyRef)getKeyRefWithPersistentKeyRef:(CFTypeRef)persistentRef.

        LOGGING_FACILITY1( sanityCheck == noErr || sanityCheck == errSecDuplicateItem, @"Problem adding the peer public key to the keychain, OSStatus == %d.", sanityCheck );

        if (persistPeer) {
            peerKeyRef = [self getKeyRefWithPersistentKeyRef:persistPeer];
        } else {
            [peerPublicKeyAttr removeObjectForKey:(id)kSecValueData];
            [peerPublicKeyAttr setObject:[NSNumber numberWithBool:YES] forKey:(id)kSecReturnRef];
            // Let's retry a different way.
            sanityCheck = SecItemCopyMatching((CFDictionaryRef) peerPublicKeyAttr, (CFTypeRef *)&peerKeyRef);
        }

        LOGGING_FACILITY1( sanityCheck == noErr && peerKeyRef != NULL, @"Problem acquiring reference to the public key, OSStatus == %d.", sanityCheck );

        [peerTag release];
        [peerPublicKeyAttr release];
        if (persistPeer) CFRelease(persistPeer);
        return peerKeyRef;
    }

     这个方法刚开始我用时仍然无法得到seckeyRef,所以我否定了它,不过现在想想可能是我运用不当。服务器最开始给我返回的NSString不错,可惜只是一个modulus,也就是RSA加密中公钥的e,如果不懂的同学可以先google下RSA。

    我将服务器返回给我的这个NSString转成了NSData然后套入到如上方法,结果失败了。屡试屡败,所以原谅我粗浅的认为它错了。后来经过与服务器的沟通得知,服务器这边产生RSA一对秘钥采用的是openssl生成证书的形式,而iOS恰好也支持这样的证书,只不过要采用x509加签,貌似是说iOS没有这样的API,所以就找到了问题的关键,关于openssl生成证书,凡是遇到RSA问题的同学肯定都在找寻的路途中遇到过,大家可以参考这http://www.cnblogs.com/guola/archive/2012/10/30/2746159.html里:http://www.cnblogs.com/guola/archive/2012/10/30/2746159.html

    上次写到一半,就被CSDN给封掉了,原因是新用户不允许使用链接。。。。以至于我的思路都断片了,还好有草稿备份了一部分,要不然真不知道自己是怎么死得。。。

    继续吧,服务器用openssl生成private.pem,同时生成public.pem文件,然后服务器取出public.pem文件的内容,掐头去尾传给我,何为掐头去尾?pem格式的文件貌似就是在der格式的文件内容中在头和尾加了个标签,去掉即为der格式文件的内容,但是貌似der格式无法用文本编辑器打开,所以我采取了这个较为笨拙的方法,我将其写入自己用openssl生成的证书der格式,这样就可以用网上那些诸多的方法读取到证书中的内容信息了。

    贴出我这部分的代码:

    - (SecKeyRef) getPublicKey{// 从公钥证书文件中获取到公钥的SecKeyRef指针

        if(_public_key ==nil){

            NSString *publicKeyPath = [[[NSBundlemainBundle]bundlePath]stringByAppendingString:@"/publick_key1.der"];

            if(publicKeyPath == nil)

            {

                NSLog(@"Can not find public_key.der");

                return nil;

            }

            NSData *publickData = [NSDatadataWithContentsOfFile:publicKeyPath];

            publickData = [GTMBase64 decodeData:publickData];

            if(publickData == nil)

            {

                NSLog(@"Can not read from pub.der");

                return nil;

            }        

            SecCertificateRef myCertificate = SecCertificateCreateWithData(kCFAllocatorDefault, (__bridgeCFDataRef)publickData);

            SecPolicyRef myPolicy =SecPolicyCreateBasicX509();

            SecTrustRef myTrust;

            OSStatus status = SecTrustCreateWithCertificates(myCertificate,myPolicy,&myTrust);

            SecTrustResultType trustResult;

            if (status == noErr) {

                status = SecTrustEvaluate(myTrust, &trustResult);

            }

            _public_key = SecTrustCopyPublicKey(myTrust);

            CFRelease(myCertificate);

            CFRelease(myPolicy);

            CFRelease(myTrust);

        }

        //NSLog(@"public_key:%@",_public_key);

        return_public_key;

    }

    转载请注明出处,谢谢。

    展开全文
  • 光猫具有上报维护功能,你修改过的信息可能会被...所以我们需要禁止禁止电信远程控制服务器修改光猫配置信息,通过研究,中国电信的光猫是通过3_TR069_VOICE_R_VID_46这条连接来进行语音(电话)和远程管理的,如图所示
  • 服务端分为被动接收和主动下发,主动下发在一个方法(该方法根据传来的ip找到socket连接,发送传来的消息,返回客户端回复的消息),在action中调用这个方法(传入参数ip和消息),要实现在这个方法中没有收到客户端...
  • 微信小程序实例:创建下发模板消息实例  鉴于目前网络上都还找不到小程序下发模板消息的...1、在微信公众平台-小程序的模板中心先申请一个下发消息模板 2、根据文档提及的下发模板消息
  • 如何下发小程序模板消息

    千次阅读 2018-03-23 21:32:15
    如何下发小程序模板消息 1、获取 access_token和用户openid 需要在app.js中请求相应的接口, 其实获取access_token应该是后台请求微信的接口再返回access_token,前端最好不要出现秘钥重要信息 onLaunch: ...
  • mqtt重复下发同一个消息id问题

    千次阅读 2019-06-22 15:46:39
    最近在物联网项目开发中,mqtt服务器给我们设备推送消息时,概率性出现同一个消息id重复下发问题。通过使用wireshark抓包判断,得出结论是我们设备在收到服务器推送的消息后,没有立即给服务器回复ack造成的,下图为...
  • 服务端向所有客户端下发消息线程,使用到了集合,socket的集合和printwriter的集合 import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; import java.util.Vector; public ...
  • Java游戏服务器开发之十六--byte消息传输 消息传输可以看看这篇游戏中tcp消息使用byte字节数组传输   上面的代码在码云上 https://gitee.com/lizhaoandroid/JgServer 可以加qq群一起探讨Java游戏服务器开发的...
  • 步骤(6):如图7.6,公众号下发消息,提示发货成功。该步骤可选。 [img=https://img-bbs.csdn.net/upload/201703/17/1489739990_563370.jpg][/img] 请问有过调用微信支付接口经验的专家,这一步的让公众号...
  • 随着物联网技术的发展, 3G/4G终端设备越来越多,不止个人用户越来越多,企业客户诸如银行...这就需要一台专业的AAA认证服务器完成此项工作,起初接入数量少,可以通过CISCO路由器、华为路由器、H3C路由器通过逐条命令
  • 服务器推送消息方法总结及实现(java)

    万次阅读 多人点赞 2018-10-24 11:00:26
    服务器推送消息方法总结及实现(java) 最近在进行web开发时,有用到服务端推送消息这个功能,相信大家在平常开发时,也经常会有这种需求。本文对常用的几种服务器推送消息方法进行整理和总结,并实现使用流的方式推送...
  • 在某些应用功能中,例如定位,游戏,社交消息的推送等,用户都是被动接受u消息的,为了处理这类问题,需要服务端向客户端推送消息。 引言: 普通情况下,有客户端向服务器发送请求,获得数据后返回结果,并关闭二者...
  • 3、如果期望使用socket实现长连接,不要主动关闭流对象,需要通过socket信息内容添加标识,比如发送close信息,然后在代码中判断消息内容是close然后再关流。 4、调用 server.accept()这个api后,线程是一个等待...
  • 极光消息推送服务器端开发实现推送(下)

    万次阅读 多人点赞 2014-02-10 14:40:00
    前面我们已经实现了通过我们自己的服务器生成消息向极光消息推送服务器发送推送消息的功能,下面我们来看看如何在手机客户端实现消息接收。 一、在极光上建立一个测试项目 如上图所示,下载Android Example 运行...
  • 一、消息推送基础消息推送,就是在互联网上通过定期传送用户需要的信息来减少信息过载的一项新技术。推送技术通过自动传送信息给用户,来减少用于网络上搜索的时间。它根据用户的兴趣来搜索、过滤信息,并将其定期推...
  • Springboot+netty+WebScoket实现消息推送 ...服务器下发消息总结 前言 WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器
  • 微信小程序中服务器主动向小程序多个客户端发送通知消息(模板消息)的解决方法
  • 服务器主动推送消息数据给客户端

    万次阅读 2019-02-11 15:17:14
    这个问题第一次是我在实现一个导师的方案的时候所发现的,一开始我需要实现服务器与客户端的密钥协商和数据传递,服务器需要主动分发(推送)密钥给客户端,因为以前没有做过相关编码,后来只能想到用反向连接,也...
  • 怎么实现服务器给android客户端主动推送消息 推荐于2016-03-04 07:32:55 最佳答案 一、消息推送基础消息推送,就是在互联网上通过定期传送用户需要的信息来减少信息过载的一项新技术。推送技术通过自动传送...
  • 在好几年前,就已经注意到DDPush这款推送中间件,不过看近来发展也还是停留在V1.0...DDPush 任意门 消息推送 DDPush是什么 DDPush可以做什么 移动互联网消息推送 IM实时消息系统核心组件 物联网设备控制与交互 ...
  • android通过Service实现消息推送(客户端+服务器

    千次下载 热门讨论 2013-11-21 14:21:43
    模拟android客户端通过Service,每隔一段时间向系统发送一个请求,已获取重要的,实时更新的消息
  • 大纲 一.开源物联网服务器EMQ X Broker 1.搭建与启动 2.页面展示 3.版本不同 二.Springboot2搭建工程 1.配置 2.Springboot整合Mqtt 3.简单的订阅与发布 预告:数据入库与实时订阅发布展示
  • 上图是域服务器上的组策略管理器的界面,点击组策略更新,强制下发策略。 确认下发更新 然后,出现文中第一张图的故障。 “远程过程调用被取消”,错误代码 “ 8007071a” 解决方法 该问题是客户端的防火墙设置拦截...
  • 公众号注册微信公众号开发首先需要注册一个公众号,公众号分为订阅号、服务号和企业号。订阅号是最基础的公众...企业号主要为公司内部通讯。...配置服务器登录公众号,开启开发者模式后,就需要配置自己的服务器了。要配

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,855
精华内容 11,942
关键字:

服务器下发消息