hsp-dev/huawei-api

一个用于与华为E5180路由器交互的基础API

0.0.0 2015-06-19 13:53 UTC

This package is not auto-updated.

Last update: 2024-09-25 02:48:31 UTC


README

该项目将让您轻松地与华为E5180 Cube路由器进行交互。
这款路由器由3 DK部署,作为他们的4G连接的“家庭路由器”。如果您从3订购100GB或以上的套餐,可以免费获得。购买链接: https://www.3.dk/mobiler-tablets/modems-routere/huawei/huawei-e5180-cube

没有广告或关联,我甚至不真的推荐这个路由器。它的速度很快,但WiFi不是最好的,我见过它多次因为WLAN上有大量客户端而超载。4G链路保持稳定,但LAN/WiFi/路由器部分真的很糟糕,所以我个人使用它时与D-link DIR-810l一起作为路由器,将其WAN端口连接到华为路由器的单个LAN端口,这样它就可以专注于仅提供4G互联网。

功能

  • 通过移动网络发送短信
  • 接收短信(您需要定期收集这些信息)
  • 删除短信(以避免填满它)
  • 查询路由器状态(大量信息)
  • 查询流量统计(相当数量的信息)
  • 获取当前PLMN(您所在的网络)
  • 获取底座状态(硬件信息,如果有,还包括电池等信息)
  • 获取WLAN客户端
  • 检查设备上的通知(包括短信和更新)
  • 查询LED状态(顶部的蓝色LED)
  • 打开或关闭LED。

您可以用它来做什么?您是否需要一个免费的家庭短信网关?现在有了,如果您有这个路由器。我知道截至2015年6月19日,3.dk目前对我收取0.20丹麦克朗的出站短信费用,但发送短信之前请务必检查您的提供商。如果您突然使用此作为商业网关,发送和接收数千条短信,您的提供商可能会非常生气。

如果您像我一样,居住在没有良好有线互联网的乡村,并且想要一个这样的4G路由器,您也可以创建自己的接口,以保持您的带宽账单在合理范围内。

此外,蓝色LED很有趣,可以用来玩。您可以轻敲顶部,以打开和关闭它,所以我已经有计划通过将LED变成蓝色来让我知道我是否有新邮件。

文档

我如何使用这个库?

安装后,只需像往常一样将composer自动加载器包含到您的项目中,然后继续创建一个路由器对象。设置路由器的地址和登录信息。现在这里列出的其他功能应该都能正常工作,至少在E5180上是这样。我无法讨论其他路由器的兼容性。

require_once 'vendor/autoload.php';

// The router class is the main entry point for interaction.
$router = new HSPDev\HuaweiApi\Router;

// If specified without http or https, assumes http://
$router->setAddress('192.168.8.1');

// Username and password. 
// Username is always admin as far as I can tell.
$router->login('admin', 'your-password');

var_dump($router->getLedStatus());

这将获取顶部蓝色LED的当前状态,无论是开还是关。如果这看起来工作正常,尝试以下行代替

var_dump($router->setLedOn(!$router->getLedStatus()));

现在每次运行脚本时,它都应根据其当前状态打开或关闭LED。

现在让我们试试别的。

var_dump($router->getNetwork());

这应该返回如下所示的内容,显示我现在在“3 DK”网络上。您可以查找PLMN列表以获取数字代码。

object(SimpleXMLElement)#8 (5) {
  ["State"]=>
  string(1) "0"
  ["FullName"]=>
  string(4) "3 DK"
  ["ShortName"]=>
  string(4) "3 DK"
  ["Numeric"]=>
  string(5) "23806"
  ["Rat"]=>
  string(1) "2"
}

关于一些短信呢?

var_dump($router->getInbox());

在我的情况下,它返回了以下内容,意味着我没有新消息。

object(SimpleXMLElement)#6 (2) {
  ["Count"]=>
  string(1) "0"
  ["Messages"]=>
  object(SimpleXMLElement)#4 (0) {
  }
}

这不可能是真的。让我们给我们的路由器发送一些短信。您可能在账单上找到路由器的电话号码,有时在Web界面中,或者通过简单登录Web界面并发送给自己一条消息。发送短信到我的路由器后,我得到了这个结果代替

object(SimpleXMLElement)#6 (2) {
  ["Count"]=>
  string(1) "1"
  ["Messages"]=>
  object(SimpleXMLElement)#4 (1) {
    ["Message"]=>
    object(SimpleXMLElement)#8 (9) {
      ["Smstat"]=>
      string(1) "0"
      ["Index"]=>
      string(5) "40000"
      ["Phone"]=>
      string(11) "(my phone number)"
      ["Content"]=>
      string(3) "Lol"
      ["Date"]=>
      string(19) "2015-06-19 15:27:15"
      ["Sca"]=>
      object(SimpleXMLElement)#9 (0) {
      }
      ["SaveType"]=>
      string(1) "4"
      ["Priority"]=>
      string(1) "0"
      ["SmsType"]=>
      string(1) "1"
    }
  }
}

查看Router.php类以了解您可以使用哪些方法,它有很好的文档说明,但我还是在这里列出来。

  • login($username, $password) 用户名几乎总是"admin"。 "password"是网页界面的密码。
  • getStatus() 提供路由器状态信息。
  • getTrafficStats() 提供流量信息。
  • getMonthStats() 对于当前月份(如果您已设置限制)执行相同操作。
  • getNetwork() 提供当前网络信息。但找不到任何条形图。
  • getCraddleStatus() 提供大量信息。我怀疑如果您的设备有电池,您可以从这里获取电池状态。
  • getSmsCount() 不返回整数,而是返回一个XML对象。
  • getWlanClients() 获取WlanClients列表,如果它们有IP 0.0.0.0,则表示已断开连接。
  • getNotifications() 做它所说明的事情。
  • setLedOn(boolean $on) 使用"true"打开,使用"false"关闭。
  • getLedStatus() LED状态的true/false。
  • isLoggedIn() true/false用于检查是否已登录。
  • getInbox($page = 1, $count = 20, $unreadPreferred = false) 对于大多数修改默认值即可。page/count用于分页。
  • deleteSms($index) 提供短信索引进行删除。如果没有找到也返回true。
  • sendSms($receiver, $message) 非常直观。可能返回true但实际上没有发送。有一个API可以查询发送状态,但我没有考虑它。

我不保证这些方法会像广告宣传的那样工作,或者根本不起作用,只是好玩。这应该能让您开始。

华为路由器API错误代码

有时,如果您正在尝试与华为API进行实验并与其通信,您可能会收到随机的错误代码。这很糟糕,但说得好听点,因为完全没有关于出错原因的信息。因此,我已经找到了华为API的错误代码列表,我知道E5180上适用,可能其他设备也适用。所以,如果您刚刚在Google上搜索了“华为路由器API错误”或类似的内容,恭喜您,今天是你幸运的一天。请注意,这里不是所有的代码都列出来了,但大多数都包括了。

ERROR_BUSY = 100004
ERROR_CHECK_SIM_CARD_CAN_UNUSEABLE = 101004
ERROR_CHECK_SIM_CARD_PIN_LOCK = 101002
ERROR_CHECK_SIM_CARD_PUN_LOCK = 101003
ERROR_COMPRESS_LOG_FILE_FAILED = 103102
ERROR_CRADLE_CODING_FAILED = 118005
ERROR_CRADLE_GET_CRURRENT_CONNECTED_USER_IP_FAILED = 118001
ERROR_CRADLE_GET_CRURRENT_CONNECTED_USER_MAC_FAILED = 118002
ERROR_CRADLE_GET_WAN_INFORMATION_FAILED = 118004
ERROR_CRADLE_SET_MAC_FAILED = 118003
ERROR_CRADLE_UPDATE_PROFILE_FAILED = 118006
ERROR_DEFAULT = -1
ERROR_DEVICE_AT_EXECUTE_FAILED = 103001
ERROR_DEVICE_COMPRESS_LOG_FILE_FAILED = 103015
ERROR_DEVICE_GET_API_VERSION_FAILED = 103006
ERROR_DEVICE_GET_AUTORUN_VERSION_FAILED = 103005
ERROR_DEVICE_GET_LOG_INFORMATON_LEVEL_FAILED = 103014
ERROR_DEVICE_GET_PC_AISSST_INFORMATION_FAILED = 103012
ERROR_DEVICE_GET_PRODUCT_INFORMATON_FAILED = 103007
ERROR_DEVICE_NOT_SUPPORT_REMOTE_OPERATE = 103010
ERROR_DEVICE_PIN_MODIFFY_FAILED = 103003
ERROR_DEVICE_PIN_VALIDATE_FAILED = 103002
ERROR_DEVICE_PUK_DEAD_LOCK = 103011
ERROR_DEVICE_PUK_MODIFFY_FAILED = 103004
ERROR_DEVICE_RESTORE_FILE_DECRYPT_FAILED = 103016
ERROR_DEVICE_RESTORE_FILE_FAILED = 103018
ERROR_DEVICE_RESTORE_FILE_VERSION_MATCH_FAILED = 103017
ERROR_DEVICE_SET_LOG_INFORMATON_LEVEL_FAILED = 103013
ERROR_DEVICE_SET_TIME_FAILED = 103101
ERROR_DEVICE_SIM_CARD_BUSY = 103008
ERROR_DEVICE_SIM_LOCK_INPUT_ERROR = 103009
ERROR_DHCP_ERROR = 104001
ERROR_DIALUP_ADD_PRORILE_ERROR = 107724
ERROR_DIALUP_DIALUP_MANAGMENT_PARSE_ERROR = 107722
ERROR_DIALUP_GET_AUTO_APN_MATCH_ERROR = 107728
ERROR_DIALUP_GET_CONNECT_FILE_ERROR = 107720
ERROR_DIALUP_GET_PRORILE_LIST_ERROR = 107727
ERROR_DIALUP_MODIFY_PRORILE_ERROR = 107725
ERROR_DIALUP_SET_AUTO_APN_MATCH_ERROR = 107729
ERROR_DIALUP_SET_CONNECT_FILE_ERROR = 107721
ERROR_DIALUP_SET_DEFAULT_PRORILE_ERROR = 107726
ERROR_DISABLE_AUTO_PIN_FAILED = 101008
ERROR_DISABLE_PIN_FAILED = 101006
ERROR_ENABLE_AUTO_PIN_FAILED = 101009
ERROR_ENABLE_PIN_FAILED = 101005
ERROR_FIRST_SEND = 1
ERROR_FORMAT_ERROR = 100005
ERROR_GET_CONFIG_FILE_ERROR = 100008
ERROR_GET_CONNECT_STATUS_FAILED = 102004
ERROR_GET_NET_TYPE_FAILED = 102001
ERROR_GET_ROAM_STATUS_FAILED = 102003
ERROR_GET_SERVICE_STATUS_FAILED = 102002
ERROR_LANGUAGE_GET_FAILED = 109001
ERROR_LANGUAGE_SET_FAILED = 109002
ERROR_LOGIN_ALREADY_LOGINED = 108003
ERROR_LOGIN_MODIFY_PASSWORD_FAILED = 108004
ERROR_LOGIN_NO_EXIST_USER = 108001
ERROR_LOGIN_PASSWORD_ERROR = 108002
ERROR_LOGIN_TOO_MANY_TIMES = 108007
ERROR_LOGIN_TOO_MANY_USERS_LOGINED = 108005
ERROR_LOGIN_USERNAME_OR_PASSWORD_ERROR = 108006
ERROR_NET_CURRENT_NET_MODE_NOT_SUPPORT = 112007
ERROR_NET_MEMORY_ALLOC_FAILED = 112009
ERROR_NET_NET_CONNECTED_ORDER_NOT_MATCH = 112006
ERROR_NET_REGISTER_NET_FAILED = 112005
ERROR_NET_SIM_CARD_NOT_READY_STATUS = 112008
ERROR_NOT_SUPPORT = 100002
ERROR_NO_DEVICE = -2
ERROR_NO_RIGHT = 100003
ERROR_NO_SIM_CARD_OR_INVALID_SIM_CARD = 101001
ERROR_ONLINE_UPDATE_ALREADY_BOOTED = 110002
ERROR_ONLINE_UPDATE_CANCEL_DOWNLODING = 110007
ERROR_ONLINE_UPDATE_CONNECT_ERROR = 110009
ERROR_ONLINE_UPDATE_GET_DEVICE_INFORMATION_FAILED = 110003
ERROR_ONLINE_UPDATE_GET_LOCAL_GROUP_COMMPONENT_INFORMATION_FAILED = 110004
ERROR_ONLINE_UPDATE_INVALID_URL_LIST = 110021
ERROR_ONLINE_UPDATE_LOW_BATTERY = 110024
ERROR_ONLINE_UPDATE_NEED_RECONNECT_SERVER = 110006
ERROR_ONLINE_UPDATE_NOT_BOOT = 110023
ERROR_ONLINE_UPDATE_NOT_FIND_FILE_ON_SERVER = 110005
ERROR_ONLINE_UPDATE_NOT_SUPPORT_URL_LIST = 110022
ERROR_ONLINE_UPDATE_SAME_FILE_LIST = 110008
ERROR_ONLINE_UPDATE_SERVER_NOT_ACCESSED = 110001
ERROR_PARAMETER_ERROR = 100006
ERROR_PB_CALL_SYSTEM_FUCNTION_ERROR = 115003
ERROR_PB_LOCAL_TELEPHONE_FULL_ERROR = 115199
ERROR_PB_NULL_ARGUMENT_OR_ILLEGAL_ARGUMENT = 115001
ERROR_PB_OVERTIME = 115002
ERROR_PB_READ_FILE_ERROR = 115005
ERROR_PB_WRITE_FILE_ERROR = 115004
ERROR_SAFE_ERROR = 106001
ERROR_SAVE_CONFIG_FILE_ERROR = 100007
ERROR_SD_DIRECTORY_EXIST = 114002
ERROR_SD_FILE_EXIST = 114001
ERROR_SD_FILE_IS_UPLOADING = 114007
ERROR_SD_FILE_NAME_TOO_LONG = 114005
ERROR_SD_FILE_OR_DIRECTORY_NOT_EXIST = 114004
ERROR_SD_IS_OPERTED_BY_OTHER_USER = 114004
ERROR_SD_NO_RIGHT = 114006
ERROR_SET_NET_MODE_AND_BAND_FAILED = 112003
ERROR_SET_NET_MODE_AND_BAND_WHEN_DAILUP_FAILED = 112001
ERROR_SET_NET_SEARCH_MODE_FAILED = 112004
ERROR_SET_NET_SEARCH_MODE_WHEN_DAILUP_FAILED = 112002
ERROR_SMS_DELETE_SMS_FAILED = 113036
ERROR_SMS_LOCAL_SPACE_NOT_ENOUGH = 113053
ERROR_SMS_NULL_ARGUMENT_OR_ILLEGAL_ARGUMENT = 113017
ERROR_SMS_OVERTIME = 113018
ERROR_SMS_QUERY_SMS_INDEX_LIST_ERROR = 113020
ERROR_SMS_SAVE_CONFIG_FILE_FAILED = 113047
ERROR_SMS_SET_SMS_CENTER_NUMBER_FAILED = 113031
ERROR_SMS_TELEPHONE_NUMBER_TOO_LONG = 113054
ERROR_STK_CALL_SYSTEM_FUCNTION_ERROR = 116003
ERROR_STK_NULL_ARGUMENT_OR_ILLEGAL_ARGUMENT = 116001
ERROR_STK_OVERTIME = 116002
ERROR_STK_READ_FILE_ERROR = 116005
ERROR_STK_WRITE_FILE_ERROR = 116004
ERROR_UNKNOWN = 100001
ERROR_UNLOCK_PIN_FAILED = 101007
ERROR_USSD_AT_SEND_FAILED = 111018
ERROR_USSD_CODING_ERROR = 111017
ERROR_USSD_EMPTY_COMMAND = 111016
ERROR_USSD_ERROR = 111001
ERROR_USSD_FUCNTION_RETURN_ERROR = 111012
ERROR_USSD_IN_USSD_SESSION = 111013
ERROR_USSD_NET_NOT_SUPPORT_USSD = 111022
ERROR_USSD_NET_NO_RETURN = 111019
ERROR_USSD_NET_OVERTIME = 111020
ERROR_USSD_TOO_LONG_CONTENT = 111014
ERROR_USSD_XML_SPECIAL_CHARACTER_TRANSFER_FAILED = 111021
ERROR_WIFI_PBC_CONNECT_FAILED = 117003
ERROR_WIFI_STATION_CONNECT_AP_PASSWORD_ERROR = 117001
ERROR_WIFI_STATION_CONNECT_AP_WISPR_PASSWORD_ERROR = 117004
ERROR_WIFI_WEB_PASSWORD_OR_DHCP_OVERTIME_ERROR = 117002

// My own guess, don't trust this completely.
// Unknown URLs are 100002