有没有办法(硬件/软件组合),我可以使用PC控制一个或多个"飞利浦生活色彩"灯 - 例如作为"遥控器"的USB棒.通过这种方式,我可以通过软件(例如网络应用程序 - 通过iPhone /远程控制)控制灯泡,甚至可以创建飞利浦在其部分电视中构建的内容并调用"流光溢彩"(图形驱动程序检测主要颜色以控制灯泡).
我想这更像是一个硬件而不是一个软件问题 - 但我在网上找不到任何关于这个的信息,我肯定不会是第一个在我昨天打开LivingColors灯的时候提出这个想法的人;)
我家里有许多飞利浦Hue灯泡,但它们今天只用得非常像经典的开/关无色灯泡,主要是因为我发现电动开关比拔出我的iPhone或更正HueTap更有用打开/关闭灯. - 每次关闭Hue灯泡时,它都会忘记其状态,并始终以白色100%亮度重新开启.
经过大量的谷歌搜索(并没有找到任何解决方案)我想知道我是否错过了这一点以及为什么其他人没有这个问题.
我当然不热衷于做软件甚至硬件工作,但如果我有一个合理的想法,我很乐意评估这样的道路:
任何提示都非常感谢.
最诚挚的问候,基督
我已经离开了ZigBee一段时间了.谁拥有最成熟的Zigbee堆栈?是Microchip,Chipcon还是Atmel?
RF模块的价格是否低于10美元?
我记得一段时间后某些堆栈存在一些许可问题......
(这个问题最初是在2009年提出的.截至2012年,我不认为Ember是领先的堆栈.看来德州仪器已成为主导的芯片组/堆栈......虽然,他们的堆栈确实似乎被锁定使用IAR糟糕的IDE会让我三思而后行.)
我试图拿两个双打(GPS坐标)并通过ZigBee API将它们发送到另一个ZigBee接收器单元,但我不知道如何将双精度分解为字节数组,然后将它们重新组合成原始形式一旦他们被转移.
基本上,我需要将每个double转换为一个包含8个原始字节的数组,然后获取原始数据并重新构建double.
有任何想法吗?
我正在挖掘ZigBee,以下问题出现在我面前:
每个ZigBee设备都有一个16位短地址,这意味着我最多可以连接2 ^ 16 = 65536个不同的设备(当然减去几个保留地址).现在每个设备最多可以绑定2 ^ 8 = 256个不同的服务(因为还保留了一些"端口",这里最大值实际为240).我想知道,如果将这8位添加到16位短地址,这意味着实际地址有24位或者这8位是从短地址中取出,这意味着短地址实际上只有8位,这又意味着我可以"只"连接256个设备?
我现在有点困惑,特别是因为大多数关于ZigBee的论文/文章使用术语"节点",我认为这意味着类似于服务,但不一定是新的(不同的)设备.
有任何澄清吗?^^
这是我的情况:
我有一个由96个XBee S2B和S2C模块组成的网络.我的应用程序在ARM模块上运行,并有一个XBee S2C模块.所有模块(总共97个)都在同一个网络中,并且能够相互通信.
该软件启动并知道所有模块的64位地址.它将进行网络发现(Local AT - > ND)并等待响应.每次响应时,每个模块的16位地址都会更新.如果模块没有响应网络发现,它将每30秒再次发送(在大多数测试中,60秒后,将发现所有节点).
然后,在存储了所有64位和16位地址的情况下,应用程序将使用单播向每个节点发送消息.它不会在发送消息之间等待.我尝试使用36,42,78和96个节点.有36个节点,每个节点在3秒内收到消息(如预期的那样),42和78分别需要4到7秒才能到达每个节点.然而,96然后需要90秒(至少).
我无法检测到外部干扰,并且所有节点都可以到达(如果没有,则网络发现将失败).
我也尝试使用64位消息传递并忽略16位地址,使用此方法时需要更长时间.
我使用的是由attie制作的xbee3library(https://github.com/attie/libxbee3).
我的问题是:如何加快96个节点的通信时间(请记住,目标是能够处理更大的网络)以及为什么78和96个节点之间存在如此大的差异(为什么网络突然这么慢?)
如果有关于我的情况需要更多信息,我将很乐意提供.当我管理代码时,如果您需要更多信息,我可以执行测试.
我正在尝试让微控制器与桌面上的程序进行通信.我正在使用两端的Xbee无线电串口连接.
当我从微控制器向桌面发送内容并且桌面上的程序然后将某些内容发送回微控制器时,通信正常.
但是,当我要求将信息从控制器连续发送到桌面程序,直到桌面程序发送特定答案时,它不起作用.
这是我正在谈论的代码:
unsigned char ans = 'N';
unsigned int count = 0;
void main(void)
{
while(1)
{
if(count == 0)
{
Configure();
count = 1;
}
//there is some more code here but is irrelevant to the serial communication
}
}
void Configure()
{
//Repeat this until the user accepts the sent string as correct
while(ans == 'N')
{
BuildString();
Send();
Receive();
}
}
void Send()
{
unsigned int i;
TMOD = 0x20;
TH1 = 0xFD;
SCON = …Run Code Online (Sandbox Code Playgroud) ZigBee Mesh(系列 2)和 DigiMesh(系列 1)哪个更好?
我已经阅读了无线网状网络,ZigBee 与 DigiMesh(PDF 格式),但我注意到使用 DigiMesh 有很多优点,相反,我希望阅读系列 2 比系列 1 更好。
用于存储 EUI-64 地址(对于 ZigBee 节点)的良好数据类型是什么?
EUI-64 地址基本上是 8 个八位字节。据我所知,它们不应该被视为整数,尽管显然您可以用它们生成 64 位整数。那么使用 bigint 似乎是显而易见的,尽管不幸的是它们是“签名的”,这使得它有点混乱。
我可以使用 numeric(8),但没有内置转换来表示为十六进制(尽管我可以写一个)。
我可以使用 char(16),但这似乎很浪费。
所有这些选项都可用,但每个选项似乎都有点混乱。我只是想知道是否有人对此有任何想法或我没有想到的方法。我目前正在使用 bigint,到目前为止它运行良好。它允许我使用“to_hex”来表示地址,但除非我正确处理符号,否则我可以预见问题。
谢谢。
我有树莓派 B+,通过 USB 连接了 Telegesis ZigBee 模块(ETRX3 USB 棒)。使用命令:
debian:~# stty -F /dev/ttyUSB0 -raw ispeed 19200 ospeed 19200
debian:~# cat < /dev/ttyUSB0 &
debian:~# echo "ATI" > /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)
ZigBee 模块执行了 ATI 命令,我可以看到正确的输出:
Telegesis ETRX357
R308C
OK
Run Code Online (Sandbox Code Playgroud)
我想用 python 脚本做同样的事情。我用以下代码编写了 python 脚本:
#!/usr/bin/env python
# based on tutorials:
# http://www.roman10.net/serial-port-communication-in-python/
# http://www.brettdangerfield.com/post/raspberrypi_tempature_monitor_project/
import serial, time
SERIALPORT = "/dev/ttyUSB0"
BAUDRATE = 19200
ser = serial.Serial(SERIALPORT, BAUDRATE)
ser.bytesize = serial.EIGHTBITS #number of bits per bytes
ser.parity = serial.PARITY_NONE #set parity check: no parity …Run Code Online (Sandbox Code Playgroud) zigbee ×10
philips-hue ×2
serial-port ×2
xbee ×2
8051 ×1
api ×1
c ×1
c++ ×1
database ×1
embedded ×1
interface ×1
linux ×1
mac-address ×1
mesh-network ×1
networking ×1
postgresql ×1
python ×1
raspberry-pi ×1
sqldatatypes ×1
wireless ×1