- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
首先,如果这不是发布此问题的最合适论坛,我深表歉意。我查看了 AskDifferent,这似乎不够技术,我查看了 Super User,它似乎太技术化了。因此,为什么我在这里问它,因为它也与编程有关。
我正在使用 Arduino IDE 在 ESP8266 (-01) 上设置 HAP(HomeKit 附件协议(protocol))服务器。我已经成功地在其上设置了一个 mDNS 服务器以使用 ESP8266mDNS 进行发现。图书馆。但是,我遇到了一个小问题:
启动 mDNS 服务器并添加 _hap._tcp 服务后,设备最初不会显示在 Home 应用程序中。只有在我使用 $ dns-sd -B _hap._tcp
从终端“探测”_hap._tcp 服务后,ESP8266 才会出现在 Home 应用程序中。
似乎这种“探测”在网络上做了一些最初不是由 mDNS 服务器完成但 HomeKit 要求被发现的事情。
我已经用其他服务(例如“_http._tcp”)测试了它,并在我的 iPhone 上使用一个名为 Radar 的应用程序来搜索 Bonjour 服务。它找到任何其他服务但没有找到(直到我“探测”它)。
使用 WireShark 向我显示,在单击(已发现的)设备之前,Home 应用程序不会发送任何 mDNS 请求。这让我认为最初的发现(显示要点击的设备)不是由 mDNS 完成的,而是由其他一些方法完成的。也许是网络上的某种注册表,然后在我使用 dns-sd 进行探测后填写。
使用 Radar 应用程序,我可以在网络上看到我在其中选择的任何服务的 mDNS 数据包,hap 除外。这很奇怪,好像 iPhone 正在阻止对 hap 服务的 mDNS 请求。
我已经花了 3 天时间试图让它工作,但我真的不知道从这里该去哪里。我想知道我缺少什么才能让 Home 应用程序立即发现 ESP8266,而无需使用 dsn-sd 来“激活”它。如果你想重现这个问题,我已经把我的代码的简化版本放在下面,它仍然有同样的问题。安装适当的板后,您可以使用 Arduino IDE 将其上传到 ESP8266。
安装后,尝试查看设备是否显示在 HomeKit 中。如果没有,请使用同一网络上的 Mac 并在终端中输入 $ dns-sd -B _hap._tcp
。运行时返回 Home 应用程序,您应该能够在那里看到该设备。
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
const char* ssid = "WiFi"; //Change to your SSID
const char* password = "xxxxx"; //Change to your password
ESP8266WebServer server(80);
void handleNotFound(){
server.send(404, "text/plain", "Not Found!");
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.hostname("ESP8266");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
if (MDNS.begin("ESP8266")) {
Serial.println("MDNS Started.");
}
server.onNotFound(handleNotFound);
server.begin();
MDNS.addService("hap", "tcp", 80);
MDNS.addServiceTxt("hap", "tcp", "md", "ESP8266");
MDNS.addServiceTxt("hap", "tcp", "pv", "1.0");
MDNS.addServiceTxt("hap", "tcp", "id", "A0:20:A6:15:46:44");
MDNS.addServiceTxt("hap", "tcp", "c#", "3");
MDNS.addServiceTxt("hap", "tcp", "s#", "1");
MDNS.addServiceTxt("hap", "tcp", "ff", "0");
MDNS.addServiceTxt("hap", "tcp", "ci", "5");
MDNS.addServiceTxt("hap", "tcp", "sf", "1");
}
void loop() {
server.handleClient();
}
最佳答案
我做了一些更多的测试,并在 Mac 上安装了 Homebridge,并使用 WireShark 监控它的 mDNS 数据包。服务器启动时,它会发出几个“ANY”查询和几个响应。它在这里所做的如 section 8 of RFC 6762 中所述。即“启动试行通知”。似乎 ESP8266mDNS 库目前没有这样做,所以我重新打开了我的 issue on GitHub得到这个实现。 我将自己尝试,但我敦促任何有足够知识的人做出贡献! 该库目前正在根据通过 Apple 一致性测试的 idf 实现进行重写。完成后应解决此问题。
关于ios - HomeKit 如何找到附近的设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49590546/
我在 HomeKit 上有一个外部和内部温度传感器。最近我遇到了一个问题,我想在几天前检查温度。据我所知,似乎没有办法从 HomeKit 获取历史数据。 作为替代方案,是否可以自己记录 homekit
我正在开发基于 Homekit 的应用程序。 它用于连接支持 Homekit 附件协议(protocol) (HAP) 的附件(如 LED 灯或桥接器),它可以获取附件的信息,对其执行各种操作(灯开/
首先,如果这不是发布此问题的最合适论坛,我深表歉意。我查看了 AskDifferent,这似乎不够技术,我查看了 Super User,它似乎太技术化了。因此,为什么我在这里问它,因为它也与编程有关。
当我第一次听说 Homekit 是在 2014 年由 Apple 推出时,我认为这是一项仅适用于允许将 Homekit 嵌入其设备的设备制造商的功能,但我认为我从程序员的角度来看遗漏了一些东西看法。假
我有一个使用 HomeKit 的 iOS 应用程序,我需要检查应用程序是否可以访问 HomeKit Store。正如我所注意到的,homeManagerDidUpdateHomes 无论如何都会被调用
我正在制作一个应用,它使用支持 HomeKit 的灯进行通知。当我为灯泡的色调特征写入新值时,颜色会从当前色调过渡到写入的色调。因此,它不是从当前颜色(假设为红色)立即变为书面颜色(假设为紫色),而是
我有一个问题,当我想将房间添加到 Home 时,如果用户是访客,我会收到 HMErrorCodeInsufficientPrivileges错误。我有一个 View ,将在单击名为“添加房间”的按钮后
一段时间以来,我一直在开发自己的“虚拟” HomeKit 附件——有一个软件桥,带有几个用 Scala 实现的附件(使用 Java HomeKit 附件库)。有了这个,我可以打开/关闭电视或条形音箱(
如何将 HMAccessory 识别为桥接器?也许我错过了一些东西,但我似乎找不到任何与桥对应的 HMServiceType 或 HMCharacteristicType 。任何帮助表示赞赏。 最佳答
在下面的快速而肮脏的测试应用程序中,我尝试使用accessoryDidUpdateServices()从Hue运动检测器配件接收光级更新。然而,委托(delegate)函数永远不会被调用。我在安装了
我在调解中心收到了来自 apple 的拒绝信息: 指南 2.5.1 - 性能 - 软件要求 您的应用以未经批准的方式使用公共(public) API,这不符合 App Store 审核指南的准则 2.
我正在尝试在主页添加 accesrroy 这是我的代码 home.addAccessory(accessory, completionHandler: {[weak self]
我正在使用 https://github.com/etwmc/Personal-HomeKit-HAP- 模拟 homekit 兼容设备。Siri 不会接受颜色命令,例如“将我的灯换成蓝色”,在没有请
HomeKit 附件模拟器 作为一个小按钮,可以让设备不公平。 鉴于它是一个附件模拟器,我假设有一些硬件编程规范允许编写取消配对功能。 但是,将其作为 HomeKit 框架 的一部分来实现并允许客户端
HomeKit 配件模拟器中有一个取消配对按钮。当您取消与某个配件的配对时,该配件似乎会保留在您之前分配给它的家中的 HomeKit 数据库中。我想添加一个过程来从数据库中删除配件,或者重新配对配件。
目前HomeKit框架支持三种摄像头: 罗技 Circle 2 D-Link Omna 180 摄像头 NETGEAR Arlo Baby HD 我希望能够使用 Swift 以编程方式录制视频。 是否
我希望我的应用能够感知 HomeKit 配件触发的事件 ( HMAccessory )。这样,当我的 HomeKit 驱动的运动检测器检测到运动时,我的应用程序就会以某种方式了解这一点(最好是通过推送
我有一个用于家庭自动化的 iOS 应用程序。我的应用程序工作流程 iOS 应用程序 硬件设备 配件(家电) iOS 应用通过套接字发送和接收命令。 现在我需要在现有系统中实现 HomeKit。如何
有人在 iOS8/XCode 6.3 下使用 accessoryDidUpdateReachability 进行工作吗? 试用 HomeKit 显示配件可达性的变化状态非常不稳定。 大多数情况下,状态
日前,小米宣布推出米家智能多模网关,支持Zigbee、Wi-Fi、蓝牙&蓝牙Mesh等三种无线通讯协议,售价129元,将于12月12日0点开售。 小米米家智能多模网关内置WiFi双天线
我是一名优秀的程序员,十分优秀!