JAVA对接维特智能WIT901WIFI传感器

Posted 星耀寂夜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA对接维特智能WIT901WIFI传感器相关的知识,希望对你有一定的参考价值。

背景

最近有个项目需要对接传感器,将传感器的数据转发到其他设备,目前只有维特智能的WIT901WIFI传感器。
传感器长这样

配置网络

这个传感器是通过WIFI传输数据,所以第一步需要配置WIFI。

下载上位机软件

官方页面 https://wit-motion.yuque.com/wumwnr/docs/cmxpmgcensdqg5ag
直接下载上位机软件 https://witpic-1253369323.cos.ap-guangzhou.myqcloud.com/wit-cloud/ep/uploadFile/0b22e450-5040-402f-a404-2c34f6a109cfwifi-udp上位机(v3.0.11).zip

配置WIFI

先通过Type-C线连接传感器至电脑,将传感器开关打开,拨到ON
需要明确一点,WIFI必须是2.4G的,而且不能是中文名,否则会连接不上
打开UDP上位机软件,菜单->系统设置->有线配网
选择一个通讯串口,不知道选哪个自己试一试就行
填写WIFI名称和WIFI密码,服务器选当前上位机,点开始配网

成功后会提示服务器连接成功,并且会弹出一个TempData的窗口
如果失败检查下WIFI是否连接上了,电脑和WIFI是否在同一个局域网

然后主窗口应该会显示传感器的数据,如果没有就重启软件

设置传感器服务器

如果要设置接收传感器数据的服务器,需要先给传感器发送服务器IP
如果已知传感器IP,可直接向传感器IP:9250发送UDP数据包,数据包内容如下

WIT192.168.0.13\\r\\n

其中192.168.0.13是接收传感器数据的服务器IP地址

如果未知传感器IP,可通过发送数据包到广播地址255.255.255.255:9250,数据包内容同上

Java代码如下

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

import static java.net.InetAddress.getByName;

public class SensorUtil 
    public static void setSensorServer() throws IOException 
        // 设置要发送的消息和目标地址
        String message = "WIT192.168.137.1\\r\\n";
        InetAddress address = getByName("192.168.137.255"); // 192.168.137.1网段的广播地址
        int port = 9250; // 目标端口
        // 将消息转换为字节数组
        byte[] buffer = message.getBytes();
        DatagramSocket socket = new java.net.DatagramSocket();
        // 创建DatagramPacket对象,用于发送消息
        DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, port);
        // 设置socket的广播属性
        socket.setBroadcast(true);
        // 将消息发送出去
        socket.send(packet);
        socket.close();
    


接收传感器数据

接收传感器数据需要服务器监听本机UDP的1399端口
重点:UDP上位机软件也会监听1399端口,所以需要先关闭UDP上位机软件

使用netty监听并打印数据

import cn.hutool.core.util.StrUtil;
import com.gk.recover.server.NettyServer;
import io.netty.bootstrap.Bootstrap;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.DatagramPacket;
import io.netty.channel.socket.nio.NioDatagramChannel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;

import java.nio.charset.StandardCharsets;

@Slf4j
@Component
public class WIT901UDPServer 

    private static final int PORT = 1399;
    private final EventLoopGroup group = new NioEventLoopGroup();

    public void start() 
        Bootstrap b = new Bootstrap();
        b.group(group)
                .channel(NioDatagramChannel.class)
                .option(ChannelOption.SO_BROADCAST, true)
                .handler(new SimpleChannelInboundHandler<DatagramPacket>() 
                    @Override
                    protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) 
                        ByteBuf buf = msg.content();
                        String receiveData = StrUtil.removeSuffix(buf.toString(StandardCharsets.UTF_8), "\\r\\n");
                        log.info("Receive Data: ", receiveData);
                    
                );
        try 
            b.bind(PORT).sync();
         catch (InterruptedException e) 
            shutdown();
        
    

    public void shutdown() 
        group.shutdownGracefully();
    



查看接收到的数据

数据解析

参考官方文档 https://wit-motion.yuque.com/wumwnr/docs/lhinmv#2dc7f764
接收数据格式如下

WT5300005765030.026,0.127,0.998,0.000,0.000,0.000,7.349,-1.527,8.618,31,215,262,45.92,4.15,-65,13008,0\\r\\n
数据内容 数据名称
WT5300005765 设备编号
03 未知,官方没有说明
0.026,0.127,0.998 加速度X,加速度Y,加速度Z
0.000,0.000,0.000 角速度XYZ
7.349,-1.527,8.618 角度XYZ
31,215,262 磁场XYYZ
45.92 温度
4.15 电量
-65 信号
13008 版本号
0 报警信号
\\r\\n 结束符

以上是关于JAVA对接维特智能WIT901WIFI传感器的主要内容,如果未能解决你的问题,请参考以下文章

三菱PLC通过RS485串口连接维特智能Modbus协议角度姿态传感器——多传感器多角度报警

维特WT931 姿态角度传感器(陀螺仪)使用记录

4G/wifi/LoRa无线太阳光照度传感变送器MQTT/http协议对接第三方云平台API接口

ctwing电信AEP平台对接涂鸦智能云平台python程序源码

ctwing电信AEP平台对接涂鸦智能云平台python程序源码

毕业设计:基于STM32的智能家居无线(蓝牙wifi)语音控制系统