English

The General Purpose Input Output over Internet.*


首页 | iGPIO | 资源

 
 

设备用户界面(DUI)说明

用户可以使远程设备经由DUI与iGPIO网站通讯。要实现这一点,该设备必须设置成能与iGPIO网站进行通讯。在本页中,我们将提供使用DUI的必要信息。示例代码都是python,但界面并不是仅限于python。

用于客户端(远程设备)和服务器(即iGPIO)之间的请求-响应的方法是POST。由于通讯中可能被包括敏感信息,强烈建议使用HTTPS而不是HTTP。请求POST数据结构如下:

  • url = 'https://www.igpio.net/scripts/dui.php' #这是DUI在iGPIO网站的URL
  • query_args = {'u':uid,'p':pw,'d':device,'t':'TS', 'r':rstr,'w':wstr,'m':mstr,'s':sstr} # query_args是要发送到iGPIO网站的字符串
  • data = urllib.urlencode(query_args) # data 是query_args的编码版本
  • request = urllib2.request(url, data) # request是POST到网站的data
  • response = urllib2.urlopen(request).read() # response是网站发送回给设备的响应

请注意:用户需要设置正确query_args。我们用一个例子来解释所有的参数:

query_args = {'u':'me@my_company.com','p':'safe_code','d':1,'t':'TS','r':'1;2@=0','w':'3@=3.14;4@=1.23','m':'my message','s':'my subject'}

参数'u'是用户ID,me@my_company.com; 它是用户已在iGPIO注册的一个电邮地址。如果您还未注册,您可以点击这个链接进行注册

参数'p'是密码,safe_code,您在iGPIO注册时选择的密码

用户ID和密码是必需的。如果这两个字符串设置不正确,iGPIO会拒绝您的请求。

参数'd'是远程设备编号。如果你只有一台设备,将其设置为1。如果不设置此参数,默认为1。

参数't'是可选的。如果设置此参数,iGPIO会送回一个时间戳,开头是您输入的字符串,TS,例如:

TS1420576594。

参数'r'是要读取/更新的iGPIO通道列表。所有启用的通道一无论iGPIO的标记设置均可读取。标记设置为1的通道是可读取和更新。在这个例子中,通道2中的标记必须设置为1。@是可选的;如果选用,相应通道可设定指定数值,在本例中通道2的数值在读取后将被置0。

对应每个读请求的通道,iGPIO将返回的以下信息:

Chn,Value,Value 2,Value 3,Label,Flag

例如,对于通道1

CH1,2.000,0.000,0.000,my_label,0

及通道2

CH2,5.000,0.000,0.000,my_label2,1

请注意,在这个例子中,通道2中的数值5.000在读取后将被设置为0.000。iGPIO这个读取的响应将是

READ_RESULT:
CH1,2.000,0.000,0.000,my_label,0
CH2,5.000,0.000,0.000,my_label2,1
CH2,Info,my_label2,0,updated
END_READ_RESULT

参数'w'是要更新的iGPIO通道列表。标记设置为0的通道可以更新。在这个例子中,在通道3和4中的标记被设置为0。对所有写请求@是必需的,用于设置给定通道的特定数值。

对应指定的写请求的通道,iGPIO将返回的以下信息:

WRITE_RESULT:
CH3,Info,my_label3,3.14,updated
CH4,Info,my_label4,1.23,updated
END_WRITE_RESULT

参数'm'和's'是远程设备的电邮信息,m是邮件正文,s是主题。当任意一个被设置时,一个电子邮件将被发送给用户。但是,如果两个电子邮件请求的时间间隔小于在iGPIO(设备管理器)设定为给定设备的设备邮件间隔,例如,3600秒(一小时),第二个电子邮件请求将被iGPIO拒绝。

关键词(行以字符'\n'结尾)

REQUEST_STATUS

iGPIO的响应中,会有一行REQUEST_STATUS=1 以表示该请求被接受,或一行REQUEST_STATUS=0 以表示该请求被拒绝,它可以发生在两个请求的时间间隔小于设备更新间隔,例如,iGPIO(设备管理器)设置的300秒。

BUI_UPDATE

一行BUI_UPDATE=1表示有些参数已经被通过浏览器用户界面(BUI)改变。它在远程设备做出读取请求之后被设置为BUI_UPDATE=0。

READ_RESULT:
...
END_READ_RESULT

全部读取请求的响应放置在READ_RESULT:, END_READ_RESULT行之间。

WRITE_RESULT:
...
END_WRITE_RESULT

全部写请求的响应放置在WRITE_RESULT:, END_WRITE_RESULT行之间。

EMAIL_STATUS

iGPIO响应中,可能有一行EMAIL_STATUS=1以表指示该设备的电子邮件已发送或一行EMAIL_STATUS=0以表示该设备的电子邮件尚未发送,这可能发生的两个电子邮件请求的时间间隔小于iGPIO(设备管理器)设定的设备邮件间隔,例如,3600秒(一小时)。

TOKEN_STATUS

一行TOKEN_STATUS=n,k 表示当前查询用掉了k块令牌,此设备还有n块令牌。令牌可用于超越由"更新间隔"和"设备邮件间隔"定义的限制。如果设备还有令牌,"更新间隔"的限制将被自动超越(花费一块令牌)。要超越"设备邮件间隔"的限制(花费一块令牌),必须在参数'm'或's'中包括一个字符串"urgent"。

 

*US Patent No. 9,727,046, ©2018 iGPIO All Rights Reserved | 服务条款和隐私政策 | 联系我们