Reality Editor 是一个由麻省理工学院媒体实验室开发的、开源的增强现实应用和工具包,它的核心理念非常宏大:让物理世界中的物体变得可编程。

你可以把它想象成一个“物理世界的编程语言”或“物体的操作系统”,通过 Reality Editor,你可以通过简单的 AR 界面,将一个物理设备(比如一个灯泡、一个按钮)的功能,与另一个设备(比如你的手机、一个智能音箱)或一个在线服务(比如IFTTT、Google Assistant)连接起来,从而创造出个性化的自动化体验。
第一部分:核心概念与工作原理
在开始之前,理解几个核心概念至关重要:
-
对象:
- 现实世界中的任何东西都可以是一个“对象”,比如一个台灯、一个智能插座、你的手机,甚至一张桌子。
- 每个“对象”在 Reality Editor 中都有一个唯一的“身份证”,通常是一个二维码或一个视觉标记。
-
属性:
(图片来源网络,侵删)- 对象的特征或状态。
- 灯泡的属性:
亮度、颜色。 - 按钮的属性:
是否被按下。 - 手机的属性:
位置、音量。
- 灯泡的属性:
- 对象的特征或状态。
-
动作:
- 对象可以执行的操作。
- 灯泡的动作:
打开、关闭、闪烁。 - 手机的动作:
播放音乐、发送通知。 - 在线服务的动作:
发送推文、记录日志。
- 灯泡的动作:
- 对象可以执行的操作。
-
连接:
- 这是 Reality Editor 的魔法所在,连接就是将一个对象的属性或动作,与另一个对象的属性或动作绑定起来。
- 示例连接:
- 当
按钮的被按下属性 变为true时,灯泡的打开动作 就被执行。 - 当
手机的位置属性 变为家时,恒温器的设置温度动作 就被执行,温度设为22。
- 当
第二部分:安装与准备工作
下载 Reality Editor
- iOS: App Store 搜索 "Reality Editor"。
- Android: Google Play Store 搜索 "Reality Editor"。
- 桌面版 (可选但推荐): 访问 Reality Editor 官方 GitHub 页面,下载适用于你操作系统的桌面版本,桌面版更适合进行复杂的配置和开发。
准备你的设备
- 一部安装了 Reality App 的智能手机或平板电脑。
- 一台电脑(用于运行桌面版 Reality Editor,进行后端配置)。
- 一个稳定的 Wi-Fi 网络,确保所有设备在同一个网络下。
第三部分:详细教程 - 创建你的第一个连接
我们将创建一个最简单的场景:用一个按钮来控制一个虚拟的灯泡。
步骤 1:启动并设置 Reality Editor
- 在你的手机和电脑上分别打开 Reality Editor。
- 确保它们连接在同一个 Wi-Fi 网络下,桌面版会显示一个 IP 地址和端口号(
http://192.168.1.10:8000)。 - 在手机上,点击右上角的 "+" 号,选择 "Connect to Server"。
- 输入电脑上显示的 IP 地址和端口号,点击连接,成功后,手机和电脑将同步工作。
步骤 2:创建一个虚拟对象(灯泡)
为了方便演示,我们先在 Reality Editor 中创建一个虚拟的灯泡对象。
-
在 桌面版 Reality Editor 中,点击左上角的 "Objects" 选项卡。
-
点击 "New Object" 按钮。
-
给你的新对象命名,"My Lamp"。
-
我们需要为这个“灯泡”定义属性和动作。
- 定义属性:
- 在 "My Lamp" 对象的编辑界面,找到 "Properties" 部分。
- 点击 "Add Property",命名为
isOn,类型选择Boolean(布尔值,即 true/false)。 - 再添加一个属性,命名为
brightness,类型选择Number(数值)。
- 定义动作:
- 找到 "Actions" 部分。
- 点击 "Add Action",命名为
turnOn。 - 再添加一个动作,命名为
turnOff。 - (可选)添加一个动作
setBrightness,并为其设置一个参数level,类型为Number。
- 定义属性:
-
生成二维码: 在 "My Lamp" 对象的编辑页面,你会看到一个二维码,这个二维码就是“灯泡”的身份证。截图保存这个二维码。
步骤 3:创建一个按钮对象
我们用一个真实的物体(比如便利贴)作为按钮。
- 找一张便利贴或一张白纸。
- 将上一步中保存的“灯泡”二维码打印或画在便利贴上。
- 注意: 这个二维码现在代表的是“灯泡”对象,但为了演示,我们将把它同时用作“按钮”的触发点,在更复杂的场景中,你会为每个对象使用不同的二维码。
- 将这张贴有二维码的便利贴贴在你想要作为“按钮”的物体上(比如一个真实的物理开关)。
步骤 4:进行连接(核心步骤)
我们用手机 AR 界面来连接它们。
- 在 手机 上打开 Reality Editor App。
- 将摄像头对准你贴好的“按钮”便利贴。
- 屏幕上会识别出二维码,并显示它所代表的对象信息(即我们创建的 "My Lamp" 对象)。
- 点击屏幕上的对象,进入编辑模式,你会看到之前在桌面版中定义的
Properties(属性)和Actions(动作)。 - 设置触发条件:
- 我们需要一个“被按下”的动作来触发,由于我们没有真实的按钮,我们可以用手机的屏幕点击来模拟。
- 在 AR 界面中,长按屏幕上的对象("My Lamp"),直到它开始闪烁,这表示你正在“录制”或“监听”这个对象的变化。
- 用另一只手指快速点击一下手机屏幕,这个点击动作会被 Reality Editor 捕获为一个自定义事件,我们称之为
tap。
- 设置执行动作:
- 在捕获到
tap事件后,Reality Editor 会提示你“你想做什么?”(What do you want to do?)。 - 从弹出的列表中,选择我们之前创建的 "My Lamp" 对象。
- 然后选择它的动作
turnOn。
- 在捕获到
- 完成连接!
- 一个连接已经建立:当这个二维码被“点击”时,执行“灯泡”的“打开”动作。
- 测试连接:
- 再次将摄像头对准二维码。
- 用手指点击一下手机屏幕上的 AR 界面。
- 你会看到,代表
isOn属性的指示器从false变为了true,灯泡“亮”了! - 同样,你可以创建另一个连接,将点击事件映射到
turnOff动作,来控制灯泡“关闭”。
第四部分:进阶玩法与真实设备集成
上面的例子是虚拟的,但 Reality Editor 的真正强大之处在于与真实硬件的集成。
集成 IFTTT (If This Then That)
IFTTT 是一个强大的在线自动化平台,拥有海量的“服务”(App、设备、网站)。
- 创建一个 Maker 通道: 在 IFTTT 网站上创建一个免费账户,并激活 "Maker" 通道,记下你的密钥。
- 在桌面版 Reality Editor 中配置 IFTTT:
- 打开桌面版,进入 "Services" 选项卡。
- 添加一个新的服务,选择 "IFTTT"。
- 输入你的 Maker 密钥。
- 创建连接:
- 触发端: 和之前一样,用手机 AR 界面捕获一个物理对象的属性变化(比如按钮被按下)。
- 执行端: 在 "What do you want to do?" 界面,选择 "IFTTT" 服务。
- 你需要提供一个 URL,格式通常是:
https://maker.ifttt.com/trigger/{event}/with/key/{your_key}。{event}是你在 IFTTT 中创建的 Applet 的触发事件名称。{your_key}是你的 Maker 密钥。
- 你还可以通过 URL 参数传递数据,
.../trigger/button_pressed/with/key/xxx?value=1。
示例场景: 当你按下一个物理按钮时,通过 Reality Editor 触发 IFTTT,向你的 Twitter 账户发送一条推文。
集成硬件设备
Reality Editor 支持通过多种方式连接硬件,如 Arduino、ESP8266/ESP32、树莓派等,通常使用 MQTT 或 HTTP 协议。
- 基本流程:
- 在硬件设备上编写代码,使其能够连接到你的局域网中的 MQTT 代理服务器。
- 在桌面版 Reality Editor 中,配置一个 "MQTT" 服务,并连接到你的代理服务器。
- 定义一个对象,其属性或动作通过 MQTT 主题 进行映射。
- 当硬件设备发布消息到某个主题时,Reality Editor 对象的属性就会更新,从而触发连接好的动作。
示例场景:
- 对象: 一个装有温湿度传感器的 ESP8266。
- 属性:
temperature,humidity。 - 连接: 当
temperature属性 > 30 时,执行My Lamp的turnOn动作(如果灯泡也支持 MQTT 控制)。
第五部分:资源与社区
- 官方 GitHub: https://github.com/RealityEditor/realityeditor
这里有最新的源代码、问题反馈区和开发者文档。
- 官方项目页面 (MIT Media Lab): http://realityeditor.org/
包含了项目的背景介绍、研究论文和一些演示视频。
- YouTube: 搜索 "Reality Editor tutorial",可以找到一些由社区制作的视频教程。
总结与提示
- 从简单开始: 先用虚拟对象熟悉流程,再尝试连接真实设备或在线服务。
- 桌面版是关键: 手机 App 用于“连接”和“交互”,而复杂的“对象定义”和“服务配置”在桌面版中完成。
- QR码是你的朋友: 善用二维码来标记和识别物理世界中的对象。
- 探索社区: 这个项目虽然小众,但有一个充满活力的开发者社区,遇到问题时不要犹豫去提问。
Reality Editor 是一个探索物理世界与数字世界融合的绝佳工具,它不仅是一个 App,更是一种全新的思维方式,让你能够像搭积木一样,创造属于自己的智能环境,祝你玩得开心!
