npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ck-ewelink-sdk

v0.3.3

Published

外部调用功能时方法传递流程: manager 目录 => SDK 目录 => native 目录

Downloads

2

Readme

目录结构

外部调用功能时方法传递流程: manager 目录 => SDK 目录 => native 目录

native 目录

提供原生能力,仅对外暴露原生 module 提供的能力,主要功能为退出原生容器以及 bundle 与主程序通信

sdk 目录

对 native 目录的原生能力的功能封装

  • action 目录 提供命令主程序行为调用 比如控制设备
  • device 目录 提供设备相关功能 比如设备信息获取
  • user 目录 提供用户相关功能 比如设备信息获取
  • interactive 目录 提供交互类功能 比如原生页面调转
  • event 目录 提供事件监听功能 比如监听设备状态变化
  • imp 目录 提供 ts 类型定义
manager 目录

整个 CKSDK 对外暴露的所有功能,包括事件通信监听 网络状态监听等

event 目录

用于事件监听和事件触发的名称定义

func 目录

暂用于功能 id 的定义和使用

用法

初始化

调用以下函数初始化

Package.launch('uiid221_component', App, {
  locales,
  getImageSource,
});

locales 是语言标签为 key,翻译 map 为值的 map

// 插件自己的翻译 json
import en from './locale-en.json';
import zh from './locale-zh.json';

export default {
  en,
  zh,
};

目前只支持中文、英文。SDK 内部使用的翻译 json 路经为:

  • 英文: CKEweLinkSDK/manager/i18n/locale/locale-en.json
  • 中文: CKEweLinkSDK/manager/i18n/locale/locale-zh.json

getImageSource 文档见 package/readme.md

API

设备 API

device.setDeviceTags

设置设备标签

参数

  • tags: Record<string, T> 要设置的标签 key-value 对象

useDeviceTags

获取设备 tags 并监听 tags 变更

参数

  • tagKeys: 获取并监听变更的 tag 数组,不传表示获取所有 tags/监听所有 tags 字段变更,传空数组表示任意 tag 字段都不获取/监听变更

Slider

BaseSlider

提供手势处理,会在 onAnimatedValue 回调 SliderAnimatedValues

注意 width 必传

Props

{
  value: number;
  width: number;
  type?: SliderType;
  style?: ViewStyle;
  onValueChange: (value: number) => void;
  onAnimatedValue: (animatedValues: SliderAnimatedValues) => void;
}

SliderAnimatedValues

export interface SliderAnimatedValues {
  animatedX: Animated.Value;
  animatedValue: Animated.AnimatedDivision;
  animatedOffset: Animated.AnimatedInterpolation;
}

Slider

Props

与 BaseSlider props 相同

{
  value: number;
  width: number;
  type?: SliderType;
  style?: ViewStyle;
  onValueChange: (value: number) => void;
  onAnimatedValue: (animatedValues: SliderAnimatedValues) => void;
}

示例

<Slider
  value={0.3}
  width={windowWidth - 32}
  style={styles.slider}
  onSlidingComplete={(value) => {
    console.log('Slider value:' + value);
  }}
/>

ThinSlider

滑杆为细样式的 Slider,NOT READY!

Picker

ColorPicker

色盘选择器,NOT READY!

ColorPickerEx

色盘选择器,临时方案

CCTPicker

色温选择器,NOT READY!

CCTPickerEx

色温选择器,临时方案

Dialog

参数

export type DialogConfig = {
  dialogKey: string;
  type?: DialogType;
  // 点击遮罩区域及安卓硬返回键是否可以关闭 Modal
  isClosable?: boolean;
  // AlertDialogContent
  alertType?: AlertType;
  // MessageDialogContent, AlertDialogContent
  message?: ReactNode;
  // InputDialogContent
  title?: ReactNode;
  defaultValue?: string;
  tips?: ReactNode;
  style?: StyleProp<ViewStyle>;
  inputStyle?: StyleProp<TextStyle>;
  inputProps?: TextInputProps;
  onVerify?: (value: ValueType) => boolean;
  // 按钮
  buttons?: DiglogButton[];
  // 确定、保存等按钮
  positiveButtonText?: string;
  positiveButtonStyle?: StyleProp<ViewStyle>;
  positiveButtonTextStyle?: StyleProp<TextStyle>;
  onPositiveAction?(info: DialogCallbackInfo): void;
  // 取消等按钮
  negativeButtonText?: string;
  negativeButtonStyle?: StyleProp<ViewStyle>;
  negativeButtonTextStyle?: StyleProp<TextStyle>;
  onNegativeAction?(info: DialogCallbackInfo): void;
};

示例

输入对话框

Dialog.show({
  type: DialogType.INPUT,
  title: '最小电压(V)',
  tips: '*支持设置范围为: 100 ~ 250',
  defaultValue: '220',
  inputProps: {
    keyboardType: 'numeric',
  },
  negativeButtonText: '取消',
  positiveButtonText: '确认',
  onPositiveAction: (info: DialogCallbackInfo) => {
    console.log('onPositiveAction value', info.value);
  },
  onVerify: (text: string) => Number(text) >= 100 && Number(text) <= 250,
});

Screenshot_Dialog_Input.png

Header

页面头部组件,使用 ComposeHeader,不直接使用 Header

需在插件 AppContainer ref 处调用 NavigationService.setTopLevelNavigator

<AppContainer
  ref={(navigatorRef) => {
    NavigationService.setTopLevelNavigator(navigatorRef);
  }}
/>

参数

interface HeaderProps {
  title: ReactNode;
  titleAlign: 'left' | 'center';
  hideBack?: boolean;
  onBackPress?: () => void;
  leftButtons?: HeaderButtonProps[];
  rightButtons?: HeaderButtonProps[];
  navigation: NavigationScreenProp<NavigationRoute>;
}

示例

const rightButtons: HeaderButtonProps[] = [
  {
    preset: 'SETTINGS',
    onPress: () => {},
  },
];
<ComposeHeader
  title={props.screenProps.name}
  titleAlign="left"
  rightButtons={rightButtons}
/>;

Settings 设置

配置

设置页面的「设备设置」列表有多少选项由配置文件 funcsForSetting 决定,但是每个字符串代表的选项的展示形式由插件跳转到 DeviceSettingsScreen 时传的 deviceSettings 决定。

{
  "funcsForSetting": ["PowerOnState"]
}

funcsForSetting 支持的 SDK 内置的选项如下:

  • 'DeviceName' 设备名称
  • 'FirmwareVersion' 当前版本
  • 'FirmwareName' 固件名称
  • 'MacSetting' MAC 地址
  • 'ShowAs' 显示为
  • 'AssignLocation' 位置管理
  • 'ShareDevice' 分享设备
  • 'GroupManage' 创建群组
  • 'ManageDeviceGroup' 创建群组
  • 'DeviceID' 设备 ID
  • 'RemoteControl' 轻智能遥控器
  • 'PowerOnState' 通电反应
  • 'Pulse' 点动
  • 'FadeOnOff' 开关渐变
  • 'OperationNotification' 操作通知
  • 'MiniProgram' 小程序控制
  • 'LanControl' 局域网控制
  • 'SwitchWIFI' WiFi 设置
  • 'IndicatorSettingItem' 网络指示灯
  • 'OperationRecord' 操作记录
  • 'TemperatureUnit' 温度单位
  • 'TemperatureUnitByTags' 温度单位(设置在 tags 里)
  • 'AlarmNotification' 报警通知

自定义设备设置

若默认的设置项的行为不符合产品需求,可在跳转至 DeviceSettingsScreen 传路由参数来自定义。

可以使用公用样式的设置项(比如带箭头或带开关的设置项),建议使用通用组件,不要设置项自己写个组件。

DeviceSettingsScreen 路由参数

| 选项 | 类型 | 是否必选 | 默认值 | 描述 | 说明 | | :-------: | :--------------: | :----: | :---: | :--- | :--- | | basicInfo | SettingConfig[] | 否 | ['DeviceName', 'FirmwareVersion'] | 基础信息 | | quickSettings | SettingConfig[] | 否 | ['AssignLocation', 'ShareDevice', 'GroupManage'] | 快捷设置 | | deviceSettings | SettingConfig[] | 否 | | 设备设置 | 用来自定义配置文件 funcsForSetting 配置的设置项 | | deviceInfo | SettingConfig[] | 否 | ['DeviceID', 'MacSetting', 'FirmwareName'] | 设备信息 | |

SettingConfig

如果不需要自定义设置项的行为,SettingConfigstring,否则 SettingConfigobject

SettingConfig 通用属性

| 选项 | 类型 | 是否必选 | 描述 | 说明 | | :-------: | :--------------: | :----: | :--- | :--- | | key | string | 是 | 匹配 funcsForSetting 的 key | 如:'PowerOnState' | name | string | 否 | 设置项的名称 | | screen | string | 否 | 跳转的页面 | 'PowerOnStateScreen' 单通道通电反应页面 'PowerOnStateLaunchScreen' 多通道通电反应落地页 | | supportFunc | string | 否 | 设备上报的用来表示是否支持这个设置项的字段 | 如果设备长链接状态 params[supportFunc]false,则不显示这个设置项 | | componentType | 'switch' | 否 | 组件类型 | 目前只支持开关样式 | | component | ReactElement | 否 | 组件实例 | 用来给插件完全自定义设置项组件 | | onPress | () => void | 否 | 点击组件回调 | |

SettingConfig 专有属性

| 选项 | 类型 | 支持的 key | 描述 | 说明 | | :-------: | :-------------: | :-------: | :--- | :--- | | options | Array<object> | 'PowerOnState' | 多通道通电反应落地页显示的通道列表选项 | screenPowerOnStateLaunchScreen 时必选 |

示例

示例:UIID 221 五路六档风扇灯通电反应

props.navigation.navigate('DeviceSettingsScreen', {
  deviceid: props.deviceid,
  deviceSettings: [
    {
      key: 'PowerOnState',
      screen: 'PowerOnStateLaunchScreen',
      options: [
        {
          name: '风扇',
          controlKey: 'fStartup',
        },
        {
          name: '灯',
          controlKey: 'lStartup',
        },
      ],
    },
  ],
});

示例:设备名称自定义跳转多通道名称编辑页面

props.navigation.navigate('DeviceSettingsScreen', {
  basicInfo: [
    {
      key: 'DeviceName',
      screen: 'DeviceFunctionNameLaunchScreen',
      options: ['switch_00', 'switch_01'],
    },
  ],
} as DeviceSettingsScreenParams);

示例:设备名称自定义跳转多通道名称编辑页面通过tags ck_channel_name

props.navigation.navigate('DeviceSettingsScreen', {
  basicInfo: [
    key: 'DeviceName',
    screen: 'DeviceFunctionNameLaunchScreen',
    showCkChannelName: true,
  ],
} as DeviceSettingsScreenParams);