edyang

我干了什么 究竟拿了时间换了什么
技术分享时间线软件开发、设备接入、视觉与运维实践

MQTT 保留消息:适合状态,不适合随便保存动作

新订阅者立刻收到一条旧消息,可能是 retained(保留消息)机制正常工作,不是设备刚刚执行了一次。

新订阅者立刻收到一条旧消息,可能是 retained(保留消息)机制正常工作,不是设备刚刚执行了一次。 本文使用MQTT 3.1.1、HTTP 或 CoAP 的演示设备与消息。设备通信需要同时定义身份、数据语义、时序与失败处理。协议传输确认不自动代表业务动作完成,采样时间也不能简单用服务器收到消息的时刻替代。 1. 从现象推到机制 保留消息保存主题的最近一份状态供后续订阅者获取,不是完...

MQTT QoS:协议确认不等于业务只执行一次

把 QoS 设置为较高级别,也不能直接宣称下游业务永远不会重复处理。

把 QoS 设置为较高级别,也不能直接宣称下游业务永远不会重复处理。 本文使用MQTT 3.1.1、HTTP 或 CoAP 的演示设备与消息。设备通信需要同时定义身份、数据语义、时序与失败处理。协议传输确认不自动代表业务动作完成,采样时间也不能简单用服务器收到消息的时刻替代。 1. 从现象推到机制 QoS 约定参与协议交付的可靠性阶段,端到端业务还包含发布端重建消息、代理转发和消费事务...

物联网协议:命令、遥测和状态主题分开设计

所有数据都发到一个主题,接收端很快就会靠猜字段判断用途。

所有数据都发到一个主题,接收端很快就会靠猜字段判断用途。主题规划需要反映业务方向。 本文使用MQTT 3.1.1、HTTP 或 CoAP 的演示设备与消息。设备通信需要同时定义身份、数据语义、时序与失败处理。协议传输确认不自动代表业务动作完成,采样时间也不能简单用服务器收到消息的时刻替代。 1. 从现象推到机制 遥测描述采样事实,命令表达希望设备执行的动作,状态报告设备当前已确认情况。...

车灯控制研究:命令已发出与灯真正改变要分开验证

发送函数返回成功,只说明数据进入某层发送流程,不能直接作为物理动作完成证据。

发送函数返回成功,只说明数据进入某层发送流程,不能直接作为物理动作完成证据。 本文使用Linux SocketCAN、can-utils 与隔离台架或 vcan 虚拟总线。CAN(控制器局域网)定义传输与仲裁,不提供通用的车型信号字典。大众尚酷的具体网段、信号位和校验方式必须靠对应资料与验证,本文不把演示标识符当成实车控制报文。 1. 从现象推到机制 台架控制要定义命令、接收确认、模块...

车灯控制台架:先在 vcan 上验证左右灯状态机

真实车辆协议尚未确认时,可以先验证上层状态机与通信封装,避免把软件逻辑错误带到硬件试验。

真实车辆协议尚未确认时,可以先验证上层状态机与通信封装,避免把软件逻辑错误带到硬件试验。 本文使用Linux SocketCAN、can-utils 与隔离台架或 vcan 虚拟总线。CAN(控制器局域网)定义传输与仲裁,不提供通用的车型信号字典。大众尚酷的具体网段、信号位和校验方式必须靠对应资料与验证,本文不把演示标识符当成实车控制报文。 1. 从现象推到机制 用 OFF、LEFT、...

大众尚酷车灯研究:网关可能隔开诊断口与目标模块

诊断接口能看到一些车辆数据,不代表可以直接访问灯光模块所在的全部网段。

诊断接口能看到一些车辆数据,不代表可以直接访问灯光模块所在的全部网段。 本文使用Linux SocketCAN、can-utils 与隔离台架或 vcan 虚拟总线。CAN(控制器局域网)定义传输与仲裁,不提供通用的车型信号字典。大众尚酷的具体网段、信号位和校验方式必须靠对应资料与验证,本文不把演示标识符当成实车控制报文。 1. 从现象推到机制 车辆网络可能由多个速率与用途不同的网段组...

大众尚酷 CAN 研究:怎样筛选左右灯候选信号

某个字节与转向灯同时变化,只能成为候选证据,不能直接认定它就是控制位。

某个字节与转向灯同时变化,只能成为候选证据,不能直接认定它就是控制位。 本文使用Linux SocketCAN、can-utils 与隔离台架或 vcan 虚拟总线。CAN(控制器局域网)定义传输与仲裁,不提供通用的车型信号字典。大众尚酷的具体网段、信号位和校验方式必须靠对应资料与验证,本文不把演示标识符当成实车控制报文。 1. 从现象推到机制 车灯操作可能带来开关输入、状态广播、仪表...

车联网学习:先用 SocketCAN 建立可重复的只读记录

分析车灯动作需要带时间和实验条件的日志,只有一张报文截图很难区分因果。

分析车灯动作需要带时间和实验条件的日志,只有一张报文截图很难区分因果。 本文使用Linux SocketCAN、can-utils 与隔离台架或 vcan 虚拟总线。CAN(控制器局域网)定义传输与仲裁,不提供通用的车型信号字典。大众尚酷的具体网段、信号位和校验方式必须靠对应资料与验证,本文不把演示标识符当成实车控制报文。 1. 从现象推到机制 SocketCAN 把 CAN 接口接入...

车联网学习:CAN 仲裁、帧与物理层先分清

接上两根线看到报文,只是研究开始。

接上两根线看到报文,只是研究开始。总线类型、波特率与终端匹配决定接入是否合理。 本文使用Linux SocketCAN、can-utils 与隔离台架或 vcan 虚拟总线。CAN(控制器局域网)定义传输与仲裁,不提供通用的车型信号字典。大众尚酷的具体网段、信号位和校验方式必须靠对应资料与验证,本文不把演示标识符当成实车控制报文。 1. 从现象推到机制 经典 CAN 通过标识符参与仲裁...

Android 交付:用一张场景表验证完整软件

一台手机上点通一次,不足以说明应用可以交付。

一台手机上点通一次,不足以说明应用可以交付。需要覆盖安装、升级、异常和生命周期。 本文使用Android Studio 2.3、JDK 8、Gradle 3.3、Android Gradle Plugin 2.3.0,compileSdk 25。演示应用使用 Java 与传统 Activity,不使用 AndroidX、后来的 Jetpack 组件或新版本插件 DSL。工具版本、编译 SD...