ccohen/huawei-api

用于与华为E5180路由器交互的简单API

0.0.0 2015-06-19 13:53 UTC

This package is auto-updated.

Last update: 2024-09-10 04:43:06 UTC


README

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

没有广告或联盟,我甚至不会真的推荐这款路由器。它速度很快,但WiFi不是最好的,我见过当有很多客户端在您的(W)LAN上时,它多次过载。4G链路是稳定的,但LAN/WiFi/路由器部分真的很差,所以我个人使用D-link DIR-810l作为路由器,将其WAN端口连接到华为路由器的单个LAN端口,这样它就可以专注于仅提供4G互联网。

特性

  • 通过移动网络发送短信
  • 接收短信(您需要定期轮询此操作)
  • 删除短信(以避免填满)
  • 将短信标记为已读
  • 查询路由器状态(很多信息)
  • 查询流量统计信息(相当多的信息)
  • 获取当前PLMN(您所在的网络)
  • 获取摇篮状态(硬件信息,如果有的话,电池等)
  • 获取WLAN客户端
  • 检查设备上的通知(包括短信和更新)
  • 查询LED状态(顶部的蓝色LED)
  • 开启或关闭LED。

您可以用它做什么?您是否需要一个免费的家用短信网关?现在您有了,如果您有这款路由器。我知道3.dk截至2015年6月19日,外发短信费用为0.20 DKK,但请在发送短信之前检查您自己的服务提供商。如果您突然使用它作为商业网关,发送和接收数千条短信消息,您的服务提供商可能会对此感到愤怒。

如果您像我一样,住在没有通过有线网络提供良好互联网的农村,并且想要一个像这样的4G路由器,您也可以创建自己的接口来监控您的带宽账单。

此外,蓝色LED很有趣。您可以轻敲顶部,以开启和关闭它,所以我已经有了通过将LED变为蓝色来让我知道我是否收到新电子邮件的计划。

文档

我该如何使用这个库?

安装后,像往常一样将composer自动加载器包含到您的项目中,然后创建一个Router对象。设置您的路由器地址和登录。现在这里列出的其他所有功能都应该工作,至少在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的当前状态,true或false表示开启或关闭。如果这似乎有效,请尝试以下行代替

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"。密码是Web界面的密码。
  • 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) 提供用于删除的SMS索引。如果没有找到也返回true。
  • sendSms($receiver, $message) 非常直观。可能返回true但不会发送。存在一个API用于查询发送状态,但我不关心它。
  • maskSMSAsRead($index) 将短信标记为已读。

我不保证这些功能会像广告宣传的那样或根本不起作用,只是玩得开心。它应该能帮助你入门。

华为路由器API错误代码

有时,如果您正在尝试使用华为API并与它通信,您将收到随机的错误代码。这很糟糕,但说得好听一点,因为没有关于发生什么错误的信息。因此,我已经找到了华为API的错误代码列表,我知道它适用于E5180,也可能适用于其他设备。所以如果你搜索了“华为路由器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