节点
节点.js / TypeScript 客户端 PetKit 智能宠物设备 过佩特基特云.
精神继承人 pypetkitapi 语法 ——同线协议,同云端点,TypeScript-native. 如果您能在PetKit移动应用程序中控制您的设备,您可以通过这个库控制它.
只有节点. 密码和
fetch20号节点有原始物可用. 它不运行在浏览器中 .
安装
npm i @apocaliss92/nodepetkit
要求节点20或更后.
快开始
import { Nodepetkit, FeederDevice } from '@apocaliss92/nodepetkit';
const petkit = new Nodepetkit(
{ email: '[email protected]', password: 'secret' },
{ region: 'us' }, // region name or ISO id — resolved to a gateway at login
);
// 1. Authenticate (resolves your region gateway, then logs in)
await petkit.login();
// 2. Discover devices registered to your account
const devices = await petkit.discoverDevices();
// 3. Create a typed device handle (fetches its initial state)
const feeder = (await petkit.createDevice(devices[0])) as FeederDevice;
// 4. React to polled state changes
feeder.on('stateChanged', ({ changed }) => console.log('changed:', changed));
// 5. Send commands
await feeder.feed(20); // dispense 20g now
await feeder.setChildLock(true);
// 6. Poll again whenever you like (PetKit has no realtime push)
await feeder.refresh();
基于托肯认证
如果您已经拥有会话符号 :
const petkit = new Nodepetkit({ token: 'your-session-id', region: 'us' });
await petkit.login(); // resolves the gateway; pass `gateway` too to skip that call
PetKit 只允许 每个账户一个活动会话。在此登录可以登录 离开你的手机应用(反之亦然). 考虑一个专门的共享"家庭成员" 根据家庭助理PetKit社区的建议.
支持的设备
| 设备类 | 系列 | 状态 |
|---|---|---|
FeederDevice | 新鲜元素/ 小型/ D3 / D4 / D4S (格米尼语) / D4H / D4SH | 核心命令 |
LitterDevice | Pura X (T3), Pura MAX (T4), T5 / T6 / T7 | 核心命令 |
PurifierDevice | K2 / K3 除臭剂 | 核心命令 |
FountainDevice | 相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相相接相接相相相相接相接相相接相接相接相接相相接相接相接相接相接相接相相相相接相接相接相相相相接相接相相相接相接相相接相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相 | 国家+设置; BLE 控制 @experimental |
UnknownDevice | 任何未识别类型 | 退后( 初始状态 + 通过命令) |
国家战地名称和命令有效载荷转自 pypetkitapi他们是
尚未进行硬件核查 在这个端口中——如果一个字段或命令错误,打开一个问题.
如何运作
- 地区 —— 说
login()电话GET v1/regionservers打开passport.petkt.com来映射您的 区域到网关( e)api.eu-pet.com, (中文(简体) ),api.petkt.com, (中文(简体) ),api.petktasia.com(中文(简体) ). - 认证 - 它的POSTs(英语:
user/login带有 MD5 隐藏密码; 返回的会话 id 是 以X-Session编号 :F-Session在以后的每一个电话. - 发现 —— 说
discoverDevices()读取group/family/list(加上共用设备名册). - 状态 —— 说
createDevice()职位{deviceType}/device_detail(或deviceData和存储它. - 图标 —— 说
updateSettings对于持久的选择,controlDevice暂时行动, 和每台设备的终点saveDailyFeed, (中文(简体) ),deodorantReset,... ) 对于其余的.
PetKit的经典 REST API 有 没有实时推 频道,所以州 通过投票刷新
(单位:千美元)device.refresh());没有WebSocket可以继续打开.
所有内部PetkitHttp, (中文(简体) ), CloudDeviceGateway, (中文(简体) ), login,加密帮助)
保护API稳定性的公众表面.
API 参考
Nodepetkit
new Nodepetkit(
creds: { email: string; password: string } | { token: string; region: string; gateway?: string },
opts?: { region?: string; timezone?: string },
)
| 方法 | 回返 | 说明 |
|---|---|---|
login() | Promise<void> | 解决区域网关和认证 |
discoverDevices() | Promise<PetkitDeviceInfo[]> | 账户上的列表设备 |
createDevice(info) | Promise<BaseDevice> | 构建打入的控点并获取其状态 |
getSession() | PetkitSession | null | 活动符号 + 已解决的网关 |
BaseDevice
所有设备类扩展 BaseDevice,一个已键入的事件发送器.
| 成员 | 类型 | 说明 |
|---|---|---|
id | string | PetKit 设备 ID |
deviceType | string | 原始类型( E)d4s, (中文(简体) ), t4, (中文(简体) ), w5, (...) (中文(简体) ) |
type | DeviceType | 家属: feeder 编号 : litter 编号 : fountain 编号 : purifier 编号 : unknown |
name | string | 友好名称 |
online | boolean | 最佳网络旗帜 |
state | Readonly<DeviceState> | 最新调查的细节 |
refresh() | Promise<void> | 打开云和合并状态 |
事件 stateChanged | { changed } | 在民意调查状态改变时被披露 |
FeederDevice
food • 妇女 food1 • 妇女 food2 • 妇女 batteryPower • 妇女 desiccantLeftDays • 妇女 feeding • 妇女 errorCode
• 妇女 feed(grams | { hopper1, hopper2 }) • 妇女 cancelFeed() • 妇女 resetDesiccant()
• 妇女 markFoodReplenished() • 妇女 callPet() (D3级) • 妇女 playSound(id) (D3/D4H/D4SH) (中文(简体) )
• 妇女 setChildLock() • 妇女 setIndicatorLight() • 妇女 setFeedSound() • 妇女 setVolume() • 妇女 setSetting(kv)
LitterDevice
boxFull • 妇女 sandPercent • 妇女 sandLack • 妇女 liquidLack • 妇女 deodorantLeftDays • 妇女 errorCode • 妇女 battery • 妇女 usedTimes
• 妇女 startCleaning() • 妇女 dumpLitter() • 妇女 removeOdor() • 妇女 levelLitter() • 妇女 resetN60Deodorizer()
• 妇女 resetN50Deodorant() • 妇女 setLight() • 妇女 setMaintenance() • 妇女 setPower() • 妇女 stop(code)
• 妇女 setAutoClean() • 妇女 setChildLock() • 妇女 setSandType(1|2|3) • 妇女 setAutoInterval(seconds) • 妇女 setSetting(kv)
PurifierDevice
mode • 妇女 power • 妇女 liquid • 妇女 liquidLack • 妇女 humidity • 妇女 temperature
• 妇女 setPower() • 妇女 setMode(PUR_MODE) • 妇女 setAutoWork() • 妇女 setChildLock() • 妇女 setSetting(kv)
FountainDevice
mode • 妇女 powered • 妇女 running • 妇女 filterPercent • 妇女 filterWarning • 妇女 lackWarning • 妇女 batteryPercent
· 云: setLightRing() • 妇女 setLightBrightness() • 妇女 setDoNotDisturb() • 妇女 setSetting(kv)
· BLE(@experimental: powerOn() • 妇女 powerOff() • 妇女 pause() • 妇女 resume() • 妇女 setNormalMode() • 妇女 setSmartMode() • 妇女 resetFilter()
喷泉没有直接控制云层——指令通过附近地区传送到BLE上空 PetKit 设备,所以 BLE 方法只有在您账户/网络上有这样的接力时才有效 .
诊断倾倒器
import { createDumper } from '@apocaliss92/nodepetkit';
const snapshot = createDumper(feeder, { redact: true }).dump();
// { id: '******1234', deviceType: 'd4', type: 'feeder', name: '***chen', state: {…} }
redact: true (默认)遮住设备的id和名称,这样垃圾可以安全共享.
错误类型
| 类 | 掷出时 |
|---|---|
PetkitError | 所有库错误的基准类 |
PetkitAuthError | 登录/ 区域分辨率/ 符号失败 |
PetkitApiError | PetKit 应用程序出错 (.code)或非-2xxHTTP 软件 |
PetkitTransportError | 网络错误到达 REST API |
PetkitDeviceOfflineError | 备用——尚未投出 |
信用范围
逆向工程从 pypetkitapi (图书馆)
后边 Jezza34000 家庭助理PetKit融入社会) (中文(简体) ).
见 docs/petkit-cloud-api-spec.md 整个协议
注意此端口的构建来源。 不隶属于PetKit或得到其认可.
许可证
麻省理工学院——见 自由主义。 。 。 .