ck-ewelink-sdk

0.3.3 • Public • Published

目录结构

外部调用功能时方法传递流程: 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);

    Readme

    Keywords

    none

    Package Sidebar

    Install

    npm i ck-ewelink-sdk

    Weekly Downloads

    1

    Version

    0.3.3

    License

    ISC

    Unpacked Size

    1.62 MB

    Total Files

    365

    Last publish

    Collaborators

    • taolongliang