Merge branch 'Dev-Branch' into wxr0114
| | |
| | | 530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password. |
| | | 531=Password free unlocking within five minutes |
| | | 532=The device is offline and cannot be operated temporarily |
| | | 533=Statistical Chart |
| | | 534=Data |
| | | 535=Dew point temperature |
| | | 536=Temperature statistics |
| | | 537=Humidity statistics |
| | | 538=Uint |
| | | 539=Smart panel |
| | | 540=In Alarm |
| | | 541=Monitoring |
| | | 542=Wandering alarm |
| | | 543=Get more |
| | | |
| | | |
| | | 1000=Room Humidity |
| | |
| | | 5015=Bluetooth |
| | | 5016=Line input |
| | | 5017=Revise the name |
| | | 5018=Single |
| | | 5018=Single loop |
| | | 5019=Random play |
| | | 5020=List |
| | | 5021=Has shifted to |
| | |
| | | 5045=General volume |
| | | 5046=Adjust volume |
| | | 5047="QQ music" has not installed in your cell phone, please proceed in App center. |
| | | 5048= Progressive cycle |
| | | 5049=Single play |
| | | |
| | | |
| | | 6000=normal |
| | | 6001=Device status |
| | |
| | | 7152=Leave or arrive at a place |
| | | 7153=Leave |
| | | 7154=Arrive |
| | | 7155=Distress/Normal |
| | | 7156=Distress |
| | | 7157=whether to unlock |
| | | 7158=is |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |
| | | 530=为防止开关门的误触点击,保证家庭安全,请输入您的门锁开门密码。 |
| | | 531=五分钟内免密码开锁 |
| | | 532=设备离线中,暂时无法操作 |
| | | 533=访客管理 |
| | | 533=24小时统计图 |
| | | 534=数据 |
| | | 535=露点温度 |
| | | 536=温度统计图 |
| | | 537=湿度统计图 |
| | | 538=单位 |
| | | 539=智能面板 |
| | | 540=报警中 |
| | | 541=监控中 |
| | | 542=徘徊报警 |
| | | 543=获取更多 |
| | | |
| | | 1000=室内湿度 |
| | | 1001=童锁 |
| | |
| | | 5015=蓝牙 |
| | | 5016=线路输入 |
| | | 5017=修改名称 |
| | | 5018=单曲播放 |
| | | 5018=单曲循环播放 |
| | | 5019=随机播放 |
| | | 5020=列表播放 |
| | | 5021=已切换到 |
| | |
| | | 5045=总音量 |
| | | 5046=调节音量 |
| | | 5047=你手机暂未安装"QQ音乐"{\r\n}请前往手机商场安装 |
| | | 5048=循序循环 |
| | | 5049=单曲播放 |
| | | |
| | | |
| | | 6000=正常 |
| | |
| | | 7152=离开或到达某地 |
| | | 7153=离开 |
| | | 7154=到达 |
| | | |
| | | 7155=求救/正常 |
| | | 7156=求救 |
| | | 7157=是否开锁时 |
| | | 7158=是 |
| | | |
| | | |
| | | |
| | |
| | | 530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password. |
| | | 531=Password free unlocking within five minutes |
| | | 532=The device is offline and cannot be operated temporarily |
| | | |
| | | 533=Statistical Chart |
| | | 534=Data |
| | | 535=Dew point temperature |
| | | 536=Temperature statistics |
| | | 537=Humidity statistics |
| | | 538=Uint |
| | | 539=Smart panel |
| | | 540=Нормальный |
| | | 541=Monitoring |
| | | 542=Wandering alarm |
| | | 543=Get more |
| | | |
| | | |
| | | 1000=Влажность в Помещении |
| | |
| | | 10031=Устройство не должно быть пустым. |
| | | 10032=У пользователя нет разрешения. |
| | | 10033=Устройство не существует. |
| | | |
| | | |
| | | |
| | | [Spanish] |
| | | 1=Ingresar |
| | | 2=Número de teléfono |
| | | 3=Luz |
| | | 4=Correo |
| | | 5=Por favor ingrese numero de cuenta |
| | | 6=Contraseña |
| | | 7=Olvidar |
| | | 8=Registrarse |
| | | 9=Iniciar sesión |
| | | 10=Espere… |
| | | 11=Cerrar |
| | | 12=Código de verificación |
| | | 13=Contraseña de acceso |
| | | 14=Registrarse |
| | | 15=Número de teléfono |
| | | 16=Ingrese la contraseña |
| | | 17=Ingrese la contraseña nuevamente |
| | | 18=Código de verificación |
| | | 19=Número de teléfono incorrecto, ingrese nuevamente |
| | | 20=L a contraseña y la confirmación no coinciden. Ingrese la contraseña nuevamente |
| | | 21=El formato de la contraseña no cumple con los requisitos. Ingrese la contraseña nuevamente |
| | | 22=El usuario ya existe. Puede ingresar directamete |
| | | 23=Código de verificación incorrecto, vuelva a ingresarlo. |
| | | 24=Número de cuenta incorrrecta, por favor ingrese el correo correcto |
| | | 25=Correo |
| | | 26=Residencia |
| | | 27=Miembro |
| | | 28=Desarmar |
| | | 29=Armar |
| | | 30=Copia de seguridad |
| | | 31=Función auxiliar |
| | | 32=Añadir funciones |
| | | 33=Modo noche |
| | | 34=Configuración general |
| | | 35=Soporte |
| | | 36=Casa |
| | | 37=Categoría |
| | | 38=Inteligente |
| | | 39=Individual |
| | | 40=Inicio de sesión fallido, número de cuenta o contraseña incorrectos |
| | | 41=Error al enviar el codigo de verificación |
| | | 42=Error de red |
| | | 43=Error en el registo, inténtelo de nuevo |
| | | 44=Confirmar reinicio |
| | | 45=El numero de cuenta no existe, por favor asegúrese de estar registrado |
| | | 46=Inicio de sesion inválido, iniciar sesion nuevamente |
| | | 47=Centro Personal |
| | | 48=Nombre |
| | | 49=Código QR |
| | | 50=Teléfono |
| | | 51=Correo |
| | | 52=No enlazado |
| | | 53=Autorización de terceros |
| | | 54=Cambiar contraseña |
| | | 55=Configuración de desbloqueo |
| | | 56=Establecer contraseña, gesto, huella digital o identificación facil para proteger su provacidad |
| | | 57=Salir |
| | | 58=Habitación |
| | | 59=Equipo |
| | | 60=Función |
| | | 61=Brillo |
| | | 62=Configuración |
| | | 63=Locación |
| | | 64=Compartir |
| | | 65=Añadir acceso directo al escritorio |
| | | 66=Cambiar nombre |
| | | 67=Cancelar |
| | | 68=Confirmar |
| | | 69=Todo |
| | | 70=Cortina |
| | | 71=Nombre |
| | | 72=Address |
| | | 73=Gestión de plantas |
| | | 74=Gestión de habitaciones |
| | | 75=Migración de administrador |
| | | 76=Migración de privilegios |
| | | 77=Priviligio de depuración |
| | | 78=El administrador migra a otro usuario |
| | | 79=Toda los datos de la residencia migran al nuevo usuario |
| | | 80=Permitir que el personal visite su casa de forma remota |
| | | 81=Piso |
| | | 82=Añadir piso |
| | | 83=Cambiar nombre de piso |
| | | 84=Error al añadir, el piso ya existe |
| | | 85=Escena |
| | | 86=Borrar |
| | | 87=Inmediata |
| | | 88=Eliminar el piso o no? |
| | | 89=Añadir habitación |
| | | 90=Cmabiar la informacion de la habitación |
| | | 91=Información de la habitanción |
| | | 92=Nombre |
| | | 93=Piso |
| | | 94=Gestión funcionamiento |
| | | 95=Guardar |
| | | 96=Eliminar la habitación |
| | | 97=Galeria por defecto |
| | | 98=Camara |
| | | 99=Seleccionar de la galeria |
| | | 100=No asignado |
| | | 101=Asignado |
| | | 102=No asignado |
| | | 103=Eliminar la habitación o no? |
| | | 104=Tiempo de transición |
| | | 105=Temperatura interna |
| | | 106=AC |
| | | 107=Videoportero |
| | | 108=Sensor |
| | | 109=Monitor de seguridad |
| | | 110=Panel Inteligente |
| | | 111=Musica |
| | | 112=Aire fresco |
| | | 113=Ambiental |
| | | 114=Monitoreo de energía |
| | | 115=Electrodomésticos |
| | | 116=Bloqueo inteligente |
| | | 117=Calefacción |
| | | 118=Abrir |
| | | 119=Refrigeración |
| | | 120=Calefacción |
| | | 121=Deshumidificar |
| | | 122=Auto |
| | | 123=Suministro de aire |
| | | 124=Alto |
| | | 125=Medio |
| | | 126=Bajo |
| | | 127=Modo |
| | | 128=Velocidad del ventilador |
| | | 129=Estas seguro de apagar todas las funciones de la habitación? |
| | | 130=Abierta |
| | | 131=Añadido a favoritos |
| | | 132=Felicitaciones! Registro exitoso |
| | | 133=Inicio de sesion automático pronto…. |
| | | 134=El numero de no esta registrado, por favor registrese e ingrese nuevamente |
| | | 135=Por favor, obtener codigo de verificación |
| | | 136=La contraseña ha sido cambiada |
| | | 137=La direccion rsidencial no puede estar en blanco |
| | | 138=El nombre de la residencia no puede estar en blanco |
| | | 139=El nombre de la habitación no puede estar en blanco |
| | | 140=El nombre del piso no puede estar en blanco |
| | | 141=No se pudo revisar, el piso ya existe |
| | | 142=El nombre del equipo no puede estar en blanco |
| | | 143=El nombre del usuario no puede estar en blanco |
| | | 144=Nombre de usuario |
| | | 145=Seleccione la página para bloquear |
| | | 146=Puede seleccionar varias paginas que le gustaria mantener |
| | | 147=Error en codigo de verificación |
| | | 148=No protegido |
| | | 149=Cuando empieza |
| | | 150=Armar/Desarmar |
| | | 151=Desbloquear remotamente |
| | | 152=No se necesita contraseña/gesto al iniciar el software |
| | | 153=Iniciar sesión 5 minutos despues de salir de la página, se requiere el método de desbloqueo correspondiente. |
| | | 154=Centro de miembros - utiliza para debloquear la función de seguridad como armar/desarmar |
| | | 155=Usado para desbloquear la cerradura inteligente |
| | | 156=Configuración de desbloqueo |
| | | 157=Solo valido para host |
| | | 158=Desbloquear con contraseña |
| | | 159=Desbloquear con gesto |
| | | 160=Desbloquear con huella |
| | | 161=Desbloquear con identificación facial |
| | | 162=Configuración de contraseña numérica |
| | | 163=Configuración exitosa |
| | | 164=Configuración de gestos |
| | | 165=Por favor dibuja tu patron de desbloqueo |
| | | 166=Requiere al menos una conexión de 4 puntos, dibuje nuevamente |
| | | 167=El patron y la corfirmacion que dibujaste no coincide, dibuje nuevamente |
| | | 168=Por favor dibuje su patrón nuevamente |
| | | 169=Desbloquear con huella o no? |
| | | 170=Desbloquar con identificacion facial o no? |
| | | 171=Verificar la contraseña numérica |
| | | 172=Verificar el gesto |
| | | 173=Por favor ingrese el gesto original |
| | | 174=Por favor ingrese la contraseña numérica original |
| | | 175=Verificación fallida, error en la contraseña |
| | | 176=Cambiar la contraseña numérica |
| | | 177=Cambiar el gesto |
| | | 178=Cerrar la configuración de desbloqueo o no? |
| | | 179=Por favor verifique la huella |
| | | 180=Verificación fallida, error en el gesto |
| | | 181=General |
| | | 182=Dia |
| | | 183=Noche |
| | | 184=Abandonar |
| | | 185=Por favor enlace el piso |
| | | 186=Ajuste de la velocidad del ventilador |
| | | 187=Ventilador |
| | | 188=Enchufe |
| | | 189=Nivel |
| | | 190=Chl |
| | | 191=Vol |
| | | 192=TV |
| | | 193=La habitanción existe, error al cambiar |
| | | 194=Medio Ambiente |
| | | 195=Contaminación fuerte |
| | | 196=Contaminación leve |
| | | 197=Bueno |
| | | 198=Excelente |
| | | 199=Frio helado |
| | | 200=Frio |
| | | 201=Frio |
| | | 202=Confort |
| | | 203=Tibio |
| | | 204=Caliente |
| | | 205=Extremadamente caliente |
| | | 206=Hasta el estandar |
| | | 207=Contaminación leve |
| | | 208=Contaminación media |
| | | 209=Contaminación fuerte |
| | | 210=Fresco |
| | | 211=Turbidez |
| | | 212=Hipoxia |
| | | 213=Hipoxia severa |
| | | 214=Húmedo |
| | | 215=Húmedo |
| | | 216=Seco |
| | | 217=Temperatura |
| | | 218=Humedad |
| | | 219=Rango |
| | | 220=Nivel |
| | | 221=Valor de color |
| | | 222=PM1.0 |
| | | 223=PM2.5 |
| | | 224=Ruido |
| | | 225=Fuerza del viento |
| | | 226=CO2 |
| | | 227=TV02 |
| | | 228=Dia |
| | | 229=Semana |
| | | 230=Mes |
| | | 231=Otra región |
| | | 232=Administración de miembros |
| | | 233=Apodo |
| | | 234=Autoridad Administrativa |
| | | 235=Crear una escena |
| | | 236=Apodo no puede quedar en blanco |
| | | 237=Editar apodo |
| | | 238=La región utilizada |
| | | 239=Añadir miembro |
| | | 240=Por favor ingrese el número de cuenta del miembro |
| | | |
| | | 241=Escanear codigo QR |
| | | 242=Confirmar la invitación |
| | | 243=Error en número de cuenta, por favor chequear |
| | | 244=Agregue correctamente al miembro |
| | | 245=Error de datos, por favor intente de nuevo |
| | | 246=Error al añadir, el numero de cuenta del miembro no esta registrada |
| | | |
| | | 247=No puedes agregarte a ti mismo. |
| | | 248=El usuario no existe en esta residencia |
| | | 249=Se ha agregado el número de cuenta del miembro, por lo que no se puede volver a agregar. |
| | | |
| | | 250=Error de operación |
| | | 251=Error al agregar, autoridad no valida |
| | | 252=Guardado correctamente |
| | | 253=Guardando…espere un momento. |
| | | 254=Adopo editado |
| | | 255=Eliminar este miembro |
| | | 256=Sin favoritos |
| | | 257=Introduzca el contenido |
| | | 258=Bienvenido al nuevo miembro |
| | | 259=Esta seguro de elimianr este miembro? |
| | | 260=Introduzca la contraseña de inicio de sesión |
| | | 261=Cambio de residencia exitoso |
| | | 262=Seleccionar todo |
| | | 263=Compartir la selección funcional |
| | | 264=Confirmar uso compartido |
| | | 265=Compartir en |
| | | 266=Error de uso compartido funcional |
| | | 267=Uso compartido funcional exitoso |
| | | 268=Correo |
| | | 269=Cambiar el enlace |
| | | 270=Eliminar el enlace |
| | | 271=Correo |
| | | 272=Cambiar la dirección de correo |
| | | 273=Cambiar el método de verificación |
| | | 274=El código de verificación ha sido enviado, por favor ingrese |
| | | 275=Reenviar |
| | | 276=Verificación correcta |
| | | 277=Correo |
| | | 278=Por favor ingrese el nuevo correo |
| | | 279=Enlazar correctamente su correo electrónico a su cuenta |
| | | 280=No vincular su correo electrónica a su cuenta |
| | | 281=Eliminar el enlace de correo electrónico |
| | | 282=Eliminación correcta de enlace |
| | | 283=Número de telefono |
| | | 284=Número de telefono |
| | | 285=Número de telefono |
| | | 286=Vincular correctamente su numero de teléfono a su cuenta |
| | | 287=No puede vincular su numero de teléfono a su cuenta |
| | | 288=Cambiar el enlace |
| | | 289=Quitar el enlace |
| | | 290=No se puede obtener el historial |
| | | 291=Sin favoritos |
| | | 292=Acerca de ON+ |
| | | 293=Miembro |
| | | 294=Administrador |
| | | 295=Cambiar la contraseña |
| | | 296=Antes de cambiar la contraseña iniciar sesion |
| | | 297=Por favor verifique ID |
| | | 298=Verificación telefonica |
| | | 299=Verificación de correo electronico |
| | | 300=No se ha enlazado a la dirección de correo electronico, no puede verificar |
| | | 301=No se ha enlazado a un numero telefonico, no se puede verificar |
| | | 302=Proceder al enlace |
| | | 303=Eliminado correctamente el enlace a su numero de telefono |
| | | 304=El codigo de verificación se ha enviado a: |
| | | 305=Telefono |
| | | 306=Correo |
| | | 307=Recibió nuevos datos, esta seguro de anularlos? |
| | | 308=Automatización |
| | | 309=Crear una escena |
| | | 310=Añadir escena |
| | | 311=Configuración basica |
| | | 312=Nombre |
| | | 313=Region |
| | | 314=Completo |
| | | 315=Vista completa de la residencia |
| | | 316=Sleccionar |
| | | 317=Ya añadido |
| | | 318=Conmutador |
| | | 319=Velocidad del ventilador |
| | | 320=Modo |
| | | 321=Encendido |
| | | 322=Apagado |
| | | 323=Escena |
| | | 324=Retardo de escena |
| | | 325=Configuración de retardo |
| | | 326=Retardo |
| | | 327=Capturar la escena |
| | | 328=Escena de pelicula |
| | | 329=General |
| | | 330=Modo automático |
| | | 331=Potencia calentamiento suelo |
| | | 332=Refrigeración suelo |
| | | 333=Potencia de refrigeración del suelo |
| | | 334=Ajustar el porcentaje |
| | | 335=Sin retardo |
| | | 336=No hay escena disponible. Añade uno! |
| | | 337=Editar la escena |
| | | 338=El nombre de la escena no puede estar en blanco |
| | | 339=El nombre de la escena ya existe, por favor revise |
| | | 340=El nombre de la habitación ya existe, por favor revise |
| | | 341=Eliminar esta escena o no? |
| | | 342=La puerta de enlace esta fuera de linea, falla de conexión remota |
| | | 343=Error MAC, error de conexión remota. |
| | | 344=Error de conexión remota. |
| | | 345=Telefono |
| | | 346=Correo |
| | | 347=Ingrese el nuevo numero de telefono ceular |
| | | 348=Ya se ha utilizado el numero de telefono celular |
| | | 349=Ya se ha utilizado la direccion de correo electronico |
| | | 350=La dirección de correo electrónico es la misma que la actual, sin necesidad de cambiar. |
| | | 351=El número de teléfono es la mismo que la actual, sin necesidad de cambiar. |
| | | 352=Asignación de piso |
| | | 353=Separar |
| | | 354=Cerrar |
| | | 355=Acerca de |
| | | 356=Numero de version |
| | | 357=Esta funcion no esta disponible! |
| | | 358=Telefono |
| | | 359=Correo |
| | | 360=Escena de panel |
| | | 361=No añadido |
| | | 362=Seleccionar todo |
| | | 363=No se puede comunicar con el servidor, no se puede editar la información del dispositivo |
| | | 364=No se puede comunicar con el servidor, no se puede editar la información de la habitación |
| | | 365=No se puede comunicar con el servidor, no se puede editar la información de la escena |
| | | 366=No se puede comunicar con el servidor, no se puede eliminar la escena |
| | | 367=No se puede comunicar con el servidor, no se puede eliminar el piso |
| | | 368=Bienvenido a disfrutar de ON+ |
| | | 369=Añadir residencia |
| | | 370=Conviértete en miembro de la familia |
| | | 371=No se puede utilizar la funcion, por favor verifique su conexión |
| | | 372=No se puede crear una escena, por favro verifique su conexión |
| | | 373=Error al agregar un piso |
| | | 374=Los datos residenciales se han eliminado, APP cambiará automáticamente a otra residencia. |
| | | 375=El gateway no esta conectado al servidor, no se puede crear la escena |
| | | 376=No se puede introducir un carácter especial |
| | | 377=Toda la residencia |
| | | 378=Tiempo de transición |
| | | 379=Velocidad de transicion |
| | | 380=Esta funcion no esta disponible! |
| | | 381=Recargar |
| | | 400=Bienvenido a casa |
| | | 401=Codigo de barras no válido, intentelo de nuevo |
| | | 402=Inténtelo de nuevo |
| | | 403=Temperatura de color |
| | | 404=Ajuste rápido |
| | | 405=Acogedor |
| | | 406=Reunión |
| | | 407=Lectura |
| | | 408=Añadir |
| | | 409=Marca de función |
| | | 410=No ha agregado ningun dispositov de pataforma en la actualidad |
| | | 411=Otros dispositivos de plataforma son compatibles con proveedores de serviciso externos |
| | | 412=Añadir |
| | | 413=Controlador no activado |
| | | 414=Controlador activado |
| | | 415=Alguien |
| | | 416=Registro |
| | | 417=Fuga de agua |
| | | 418=En alarma |
| | | 419=Normal |
| | | 420=Seco caliente |
| | | 421=Secado al aire |
| | | 422=Desinfectar |
| | | 423=Iluminación |
| | | 424=Tiempo |
| | | 425=Tiempo seco caliente |
| | | 426=Tiempo de secado al aire |
| | | 427=Tiempo de desinfección |
| | | 428=Tiempo Anión |
| | | 429=H |
| | | 430=Min |
| | | 431=Actualmente esta agregando cualquier dispositivos de plataforma a |
| | | 432=Otros dispositivos de plataforma son compatibles con proveedores de serviciso externos |
| | | 433=Valvula de agua |
| | | 434=Interruptor de tiempo |
| | | 435=Control remoto |
| | | 436=Dispositivos añadido |
| | | 437=Lista de dispositivos |
| | | 438=humedad:{0}% aire:viento {1}:{2} |
| | | 439=Tiempo real: {0} kw |
| | | 440=Siguiente paso |
| | | 441=Seleccione todas las áreas de estado de captura |
| | | 442=Generar escena |
| | | 443=Implementación personalizada |
| | | 444=Centro de seguridad |
| | | 445=Defensa de la casa |
| | | 446=Defensa en casa |
| | | 447=Defensa de vacaciones |
| | | 448=Implementación fija |
| | | 449=*Deshacer defensa no afecta |
| | | 450=Defensa contra desastres |
| | | 451=Defensa de 24 horas |
| | | 452=Alarma antirrobo |
| | | 453=Silenciar alarma |
| | | 454=Información de implementación |
| | | 455=El nombre no puede estar en blanco |
| | | 456=Lienzo |
| | | 457=Consumo de energía |
| | | 458=Fecha |
| | | 459=Consumo de energía en tiempo real |
| | | 460=Consumo energético de este mes |
| | | 461=Exterior/Interior |
| | | 462=Aun no has añadido ningun dispositivo |
| | | |
| | | 463=Introduzca el código SN del dispositivo |
| | | 464=Puede empezar a usar la onda milimétrica Zhaoguan |
| | | 465=Eliminar dispositivo |
| | | 466=STB |
| | | 467=Proyector |
| | | 468=Alguien cayó |
| | | 469=Alguien está en |
| | | |
| | | 470=Bajo protección |
| | | 471=Sensor de onda milimétrica |
| | | 472=Exterior |
| | | 473=Columpio |
| | | 474=Oscilación hacia arriba y hacia abajo |
| | | 475=Gira a izquierda y derecha |
| | | 476=Añadir residencia |
| | | 477=Columpio |
| | | 478=Patrón |
| | | 479=Velocidad |
| | | 480=Sensor ambiental |
| | | 481=Puede empezar a usar el sensor ambiental |
| | | 482=Sensor de gas |
| | | 483=Introduzca el código MAC del dispositivo |
| | | 484=Abierto |
| | | 485=Comprobar/Modificar |
| | | 486=Función de defensa/Estado de alarma |
| | | 487=Objetivo de alarma despues de la activación |
| | | 488=Paso de rostro |
| | | 489=Aplicar identificación facil a: |
| | | 490=Control de acceso a la comunidad |
| | | 491=Acerda de identificacion facil y privacidad |
| | | 492=Borrar datos |
| | | 493=Resetear identificación facial |
| | | 494=Establecer identificación facial |
| | | 495=Configuración paso de rostro |
| | | 496=No hay ningun estado de implementacion de tareas asociado |
| | | 497=Personalizado |
| | | 498=Implementación retrasada |
| | | 499=Agregar función de defensa |
| | | 500=Agregar destino de alarma |
| | | 501=Alarma de seguridad: se activa en {0} |
| | | 502=Borrar la alarma de seguridad? |
| | | 503=Exceso de estandar |
| | | 504=Bueno |
| | | 505=Excelente |
| | | 506=Indentificacion facil ingresada correctamente |
| | | 507=Ingreso identificación facil fallida |
| | | 508=Formaldehído |
| | | 509=Introduzca el nombre de seguridad |
| | | 510=Seleccione el destino de implementación |
| | | 511=Atenuación combinada |
| | | 512=Mensajes no estan habilitados, vaya a configuración |
| | | 513=Introduzca el codigo de emparejamiento |
| | | 514=La información de la ubicación del gateway no está configurada |
| | | 515=Agregar seguridad |
| | | 516=Withdrawal |
| | | ------ |
| | | 517=Instantaneous value |
| | | 518=Cumulative power consumption |
| | | 519=Voltage (V) |
| | | 520=Electric Current (A) |
| | | 521=Power (W) |
| | | 522=Refresh |
| | | 523=Delay alarm |
| | | 524=Bypass |
| | | 525=Enable |
| | | 526=Cancel account |
| | | 527=Homekit support notes |
| | | 528=Firmware update |
| | | 529= |
| | | 530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password. |
| | | 531=Password free unlocking within five minutes |
| | | 532=The device is offline and cannot be operated temporarily |
| | | 533=Statistical Chart |
| | | 534=Data |
| | | 535=Dew point temperature |
| | | 536=Temperature statistics |
| | | 537=Humidity statistics |
| | | 538=Uint |
| | | 539=Smart panel |
| | | 540=En alarma |
| | | 541=Monitoring |
| | | 542=Wandering alarm |
| | | 543=Get more |
| | | |
| | | 1000=Humedad de ambiente |
| | | 1001=V-chip |
| | | 1002=Anión |
| | | 1003=Estirilización |
| | | 1004=Humidificar |
| | | 1005=Restablecimiento del elemento de filtro |
| | | 1006=Iluminación |
| | | 1007=Automático |
| | | 1008=Manual |
| | | 1009=Fuerte |
| | | 1010=Dormir |
| | | 1011=Tiempo |
| | | 1012=Velocidad del viento |
| | | 1013=Engranaje |
| | | 1014=Confirme si el elemento filtrante se ha restablecido y opere el equipo de acuerdo con el manual de instrucciones para que la vida útil del elemento filtrante se vuelva a cronometrar |
| | | 1015=Marcha baja |
| | | 1016=Engranaje medio |
| | | 1017=Marcha alta |
| | | 1018=Configuración de temportización |
| | | 1019=Hora |
| | | 1020=Tiempo del elemento de filtro: |
| | | 1021=Filtro de aire |
| | | 1022=Velocidad actual del viento |
| | | 1023=Cancelar tiempo |
| | | 1024=Robot de barrido de pisos |
| | | 1025=Succión |
| | | 1026=1° Marcha |
| | | 1027=2° Marcha |
| | | 1028=3° Marcha |
| | | 1029=Carga |
| | | 1030=Voz |
| | | 1031=Silenciar |
| | | 1032=Modo de limpieza |
| | | 1033=Gestion de consumibles |
| | | 1034=Historia |
| | | 1035=Automático |
| | | 1036=Aleatorio |
| | | 1037=Muro |
| | | 1038=Espiral |
| | | 1039=Área total limpia |
| | | 1040=Tiempo total de limpieza |
| | | 1041=Vida útil restante del cepillo lateral |
| | | 1042=Vida útil residual del cepillo de rodillos |
| | | 1043=Vida útil restante de la pantalla de filtro |
| | | 1044=Restablecer pincel de bordes |
| | | 1045=Restablecer cepillo de rollo |
| | | 1046=Restablecer pantalla |
| | | 1047=Confirmar para restablecer el pincel de bordes? |
| | | 1048=Confirmar para restablecer el cepillo de rollo? |
| | | 1049=Confirmar para restablecer la pantalla? |
| | | 1050=Agregar dispositivo |
| | | 1051=Mini control remoto inteligente |
| | | 1052=Agregar control remoto por infrarrojos |
| | | 1053=Presione el botón del control remoto infrarrojo{0} durante 3 segundos y la luz indicadora{0} se enciende en azul rápidamente |
| | | 1054=Asegúrese de que su Bluetooth{0} esté activado y se pueda buscar |
| | | 1055=Siguiente paso |
| | | 1056=Buscando dispositivo… |
| | | 1057=No se ha encontrado ningún mando a distancia por infrarrojos |
| | | 1058=1.Compruebe si el dispositivo está{0} encendido normalmente{0}2.Compruebe si la función Bluetooth{0} está activada normalmente{0}3.Compruebe si el indicador{0} luz parpadea en azul |
| | | 1059=Buscar de nuevo |
| | | 1060=Conectar WiFi |
| | | 1061=En la actualidad, solo es compatible con la red WiFi 2.4G{0} y no admite nombres WiFi{0} con caracteres chinos |
| | | 1062=Contraseña |
| | | 1063=Conectando… |
| | | 1064=Haga que el control remoto por infrarrojos{0} lo más cerca posible del enrutador WiFi |
| | | 1065=Enlace de red |
| | | 1066=Subir a nube |
| | | 1067=Conectado con éxito |
| | | 1068=1.Compruebe si el dispositivo está{0} encendido normalmente{0}2.Active la función Bluetooth{0}3.Presione el botón durante 10 s y el indicador{0} luz estará encendida |
| | | 1069=Error al agregar |
| | | 1070=Agregado con éxito |
| | | 1071=¡Puedes empezar a usar el control infrarrojo{0}remote! |
| | | 1072=Empezar a usar |
| | | 1073=Por favor encender Bluethooth |
| | | 1074=Información de ubicación (GBS) no disponible |
| | | 1075=Red no disponible |
| | | 1076=Seleccione el mando a distancia por infrarrojos |
| | | 1077=Aire fresco |
| | | 1078=Pantalla de filtro residual |
| | | 1079=Energia |
| | | 1080=Ventilado |
| | | ;别 |
| | | 1081=1° Marcha |
| | | 1082=2° Marcha |
| | | 1083=3° Marcha |
| | | 1084=1° Marcha |
| | | 1085=2° Marcha |
| | | 1086=3° Marcha |
| | | 1087=Desbloquear |
| | | 1088=Temp. Contraseña |
| | | 1089=Conectado |
| | | 1090=Desconectado |
| | | 1091=Generar |
| | | 1092=Tiempo efectivo |
| | | 1093=Tiempo de caducidad |
| | | 1094=Seleccionar hora |
| | | 1095=Seleccionar fecha |
| | | 1096=Generar |
| | | 1097=Se ha copiado la contraseña actual |
| | | 1098=Borrar contraseña? |
| | | 1099=El tiempo de caducidad debe ser posterior al tiempo efectivo |
| | | 1100=Método de desbloqueo |
| | | 1101=Se sincronizará con el bloqueo real, ¿confirmar para eliminar? |
| | | 1102=Borrar |
| | | 1103=Comentar |
| | | 1104=El comentario no puede estar en blanco |
| | | 1105=Asignar a: |
| | | 1106=Escena de destino no existe |
| | | 1107=Seleccionar escena |
| | | 1108=Desbloquear |
| | | 1109=Siempre encendido |
| | | 1110=Configuración |
| | | 1111=Automatización |
| | | 1112=Activar el modo "Siempre encendido" |
| | | 1113=Desactivar el modo "Siempre encendido" |
| | | 1114=Editar |
| | | 1115=Siempre Encendido estará apagado {0} |
| | | 1116=Condición |
| | | 1117=Movimiento |
| | | 1118=Siempre encendido |
| | | 1119=Bloquear |
| | | 1120=Usuario |
| | | 1121=Método de desbloqueo |
| | | 1122=Huella digital |
| | | 1123=Tarjeta |
| | | 1124=Clave |
| | | 1125=Información |
| | | 1126=Desbloquear |
| | | 1127=Alarma |
| | | 1128=Sin conexión |
| | | 1129=Para el primer usuario, introduzca la contraseña. |
| | | 1130=Introduzca la contraseña de administrador |
| | | 1131=Enlace correcto |
| | | 1132=Saltar a la contraseña personal para desbloquear |
| | | 1133=Saltar |
| | | 1134=Por favor, dibuja tu patrón |
| | | 1135=El bloqueo estará siempre encendido después de la configuración, confirme para continuar |
| | | 1136=Confirmar |
| | | 1137=Caducar |
| | | 1138=Siempre Encendido caducará despues de {0} horas |
| | | 1139=Introduzca el tiempo de caducidad |
| | | 1140=El tiempo de caducidad no debe ser superior a 72 horas |
| | | 1141=El tiempo de caducidad no debe ser inferior a 1 hora |
| | | 1142=Error al establecer conexión, intentelo de nuevo |
| | | 1143=No se puede verificar el ID de administrador, vuelva a iniciar sesión en la cuenta |
| | | 1144=Su residencia está siendo migrada a otro HDL |
| | | 1145=Nota: |
| | | 1. Todos sus datos de residencia se migrarán a un nuevo usuario. {0} 2. Después de la migración, el miembro original será{0}automáticamente desvinculado de esta residencia. {0} 3. La nueva cuenta es una HDL válida. {0} 4. La cuenta del receptor no puede ser la misma{0} que la del lado de la migración. |
| | | 1147=Confirmar |
| | | 1148=Cuenta del receptor de entrada |
| | | 1149=Perfil |
| | | 1150=Confirmar migración de administrador de {0} a {1} |
| | | 1151=La cuenta no existe |
| | | 1152=No transferir la propiedad a usted mismo |
| | | 1153=Terminar |
| | | 1154=Transferir al usuario, por favor espere... |
| | | 1155={0} se ha convertido en administrador residencial |
| | | 1156=Los datos de residencia se eliminarán de su cuenta |
| | | 1157=No se puede migrar |
| | | 1158=Inténtelo de nuevo |
| | | 1159=Migración de la autoridad de administración |
| | | 1160=Su autoridad de administración se está migrando a otros miembros |
| | | 1161=1.Sus datos (datos en la nube) de la residencia serán{0}migrabados al nuevo administrador{0}2.Sus datos se intercambiarán con el miembro objetivo{0}y su permiso se cambiará al miembro objetivo{0} |
| | | 1162=Confirmar |
| | | 1163=No hay miembros para elegir |
| | | 1164=Confirmar la migración de la autoridad de administración de {0} a {1} |
| | | 1165=Migrar correctamente |
| | | 1166=No se puede migrar |
| | | 1167=Migrar correctamente, y sus permisos se convertirán en miembros normales |
| | | |
| | | 4000=Videoportero |
| | | 4001=Registro de llamadas |
| | | 4002=*Los registros en la nube solo se conservan durante 30 días |
| | | 4003=Llamada telefónica a domicilio |
| | | 4004=Contestado |
| | | 4005=Desbloqueado |
| | | 4006=Año |
| | | 4007=De |
| | | 4008=Llamada |
| | | 4009=Desbloqueado |
| | | 4010=Perdido |
| | | 4011=Rechazado |
| | | 4012=¡Los parámetros de configuración son anormales! |
| | | 4013=Código QR de control de acceso |
| | | 4014=Contraseña temporal |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | 5000=Musica |
| | | 5001=Grupo |
| | | 5002=Configuracion |
| | | 5003=Información general |
| | | 5004=Reproductor multimedia |
| | | 5005=Bluetooth |
| | | 5006=Region |
| | | 5007=Lista de canciones |
| | | 5008=Mis favoritos |
| | | 5009=Mi lista |
| | | 5010=Seleccionar fuente |
| | | 5011=Local |
| | | 5012=USB |
| | | 5013=Radio en linea |
| | | 5014=QQ musica |
| | | 5015=Bluetooth |
| | | 5016=Entrada de linea |
| | | 5017=Revisar el nombre |
| | | 5018=Individual |
| | | 5019=Juego aleatorio |
| | | 5020=Lista |
| | | 5021=Ha cambiado a: |
| | | 5022=Cancelar |
| | | 5023=Borrar |
| | | 5024=Editar |
| | | 5025=El nombre de la lista es el mismo |
| | | 5026=El nombre de la lista esta en blanco |
| | | 5027=Introduzca el nombre de la lista |
| | | 5028=Agregar nueva lista |
| | | 5029=Preguntar |
| | | 5030=Eliminar la carpeta o no? |
| | | 5031=Confirmar |
| | | 5032=El nombre está en blanco |
| | | 5033=Añadido a la lista de canciones |
| | | 5034=Radio |
| | | 5035=Seleccionar grupo |
| | | 5036=Play |
| | | 5037=Seleccione al menos mas de 2 reproductores multimedia |
| | | 5038=No se pueden seleccionar 2 o más de 2 reproductores multimedia principales para convertirse en un grupo |
| | | 5039=No ha seleccionado el reproductor multimedia |
| | | 5040=Seleccione esta opción para quitar el reproductor multimedia |
| | | 5041=No se ha seleccionado quitar el reproductor multimedia |
| | | 5042=Configurando |
| | | 5043=Borrando… |
| | | 5044=Volumen |
| | | 5045=Volumen general |
| | | 5046=Ajustar volumen |
| | | 5047="QQ music" no se ha instalado en su teléfono celular, proceda en el Centro de aplicaciones. |
| | | |
| | | 6000=Normal |
| | | 6001=Estado del dispositivo |
| | | 6002=piezas |
| | | 6003=Dispositivo de control IR actual |
| | | 6004=Se ha añadido el mando a distancia |
| | | 6005=AC |
| | | 6006=TV |
| | | 6007=Ventilador |
| | | 6008=Decodificador |
| | | 6009=DVD |
| | | 6010=Proyector |
| | | 6011=Personalizado |
| | | 6012=IR Control |
| | | 6013=Administración de dispositivos |
| | | 6014=Agregar mando de distancia |
| | | 6015=En linea |
| | | 6016=Sin conexión |
| | | 6017=Número de version |
| | | 6018=Introduzca el nombre de mando a distancia |
| | | 6019=Recordatorio: Después de crear el mando a distancia, se puede encontrar y utilizar en Function-Electrical Category{\r\n} |
| | | 6020=Boton recomendado |
| | | 6021=Introduzca el nombre del botón |
| | | 6022=Siguiente |
| | | 6023=Potencia |
| | | 6024=Volumen+ |
| | | 6025=Volumen- |
| | | 6026=Channel+ |
| | | 6027=Channel- |
| | | 6028=Subir |
| | | 6029=Bajar |
| | | 6030=Izquierda |
| | | 6031=Derecha |
| | | 6032=Silenciar |
| | | 6034=Confirmar |
| | | 6035=Reproducir |
| | | 6037=Salir |
| | | 6038=Menu |
| | | 6039=Pausar |
| | | 6040=Volver |
| | | 6041=Detener |
| | | 6042=Pagina de inicio |
| | | 6043=Avance rápido |
| | | 6044=Rebobinar |
| | | 6045=Tiempo |
| | | 6046=Copiar funcion de control remoto |
| | | 6047=Apunta al centro del mando a distancia y pulsa el mismo botón |
| | | 6048=Mando a distancia inteligente |
| | | 6049=Agregar botón |
| | | 6050=*Pulsación larga para la clasificación personalizada |
| | | 6051=Hecho |
| | | 6052=Agregado correctmente |
| | | 6053=Se puede clasificar -funcion-operación electrica y uso |
| | | 6054=Clasificación |
| | | 6055=Nombre del mando a distancia |
| | | 6056=Región |
| | | 6057=Continuar agregando |
| | | 6058=Eléctrico |
| | | 6059=Error al agregar |
| | | 6060=Reintentar |
| | | 6061=Hacer coincidir el mando a distancia |
| | | 6062=Haga clic en el botón de abajo |
| | | 6063=Confirmar si el dispositivo esta respondiendo |
| | | 6064=Error de control |
| | | 6065=Control exitoso |
| | | 6066=Encendido |
| | | 6067=Modo de enfriamiento |
| | | 6068= |
| | | 6069=Temperatura 26° |
| | | 6070=Eliminar dispositivo |
| | | 6071=Modificar nombre |
| | | 6072=Confirmar eliminación |
| | | 6073=Cancelar |
| | | 6074=El mando a distancia no puede superar los 10 puntos |
| | | 6075=El área donde pertenece el control remoto: |
| | | 6076=Editar información |
| | | 6077=Actualización de la versión |
| | | 6078=El sistema está en mantenimiento ~ Inténtelo de nuevo más tarde ~ |
| | | 6079=Error al obtener datos |
| | | 6080=Esta funcion no se admite temporalmente |
| | | 6081=Seleccionar banda IR |
| | | 6082= |
| | | 6083=Baja velocidad |
| | | 6084=Interruptor de velocidad del viento |
| | | 6085=Alta velocidad |
| | | 6086=Auto |
| | | 6087=Temperatura+ |
| | | 6088=Temperatura- |
| | | 6089=Purificador de aire |
| | | 6090=Calentador de agua |
| | | 6091=Producto no existe |
| | | 6092=El dispositivo no existe |
| | | 6093=El dispositivo no esta en linea |
| | | 6094=El dispositivo de puerta de enlace no existe |
| | | 6095=Mas de 30 botondes de adición |
| | | 6000=Renombrar |
| | | 6001=Introduzca el nombre |
| | | 6002=Xiaodu |
| | | 6003=aispeech |
| | | 6004=El sistema está en mantenimiento ~ Inténtelo de nuevo más tarde ~ |
| | | 6005=Desvinculado |
| | | 6006=Altavoz inteligente |
| | | 6007=Controlar contenido |
| | | 6008=Error al cagar datos |
| | | 6009=Error al configurar datos |
| | | 6010="Todavía no hay altavoz", "Vaya a la aplicación de terceros para vincular el altavoz inteligente". |
| | | 6011=La modificación de los comentarios no tiene éxito |
| | | 6012=Quieres desvincularte? |
| | | 6013=Desvinculación |
| | | 6014=transferir a app de terceros |
| | | 6015=Añadir altavoces |
| | | 7000=Crear automatización |
| | | 7001=Etidar automatización |
| | | 7002=Si |
| | | 7003=Cuando cumple las siguientes condiciones al mismo tiempo |
| | | 7004=Cundo cumple una de las condiciones siguintes |
| | | 7005=Continuar con la ejecución |
| | | 7006=L asiguiente acción |
| | | 7007=Método de reciclaje |
| | | 7008=Ejecutar una vez |
| | | 7009=Todos los días |
| | | 7010=Cada semana |
| | | 7011=Cada mes |
| | | 7012=Guardar |
| | | 7013=Mensaje push |
| | | 7014=Enviar notificación |
| | | 7015=Seleccionar la condición |
| | | 7016=Momento |
| | | 7017=Seleccione la condición de tiempo |
| | | 7018=Hora |
| | | 7019=Intervalo de tiempo |
| | | 7020=Hora |
| | | 7021=Minuto |
| | | 7022=Segundo |
| | | 7023=Cancelar |
| | | 7024=Seguro |
| | | 7025=*Debe ejecutar la automatización que establezca una vez durante el intervalo de tiempo establecido. |
| | | 7026=Hora de inicio |
| | | 7027=Hora de finalización |
| | | 7028=Función |
| | | 7029=Seleccionar condición funcional |
| | | 7030=Toda la región |
| | | 7031=Toda la función |
| | | 7032=Encendido |
| | | 7033=Apagado |
| | | 7034=Conmutador |
| | | 7035=Completo |
| | | 7036=Agregar ejecución |
| | | 7037=Lunes |
| | | 7038=Martes |
| | | 7039=Miércoles |
| | | 7040=Jueves |
| | | 7041=Viernes |
| | | 7042=Sábado |
| | | 7043=Domingo |
| | | 7044=Cumplir con la condición |
| | | 7045=Configuración |
| | | 7046=Nombre |
| | | 7047=Cambiar el nombre |
| | | 7048=El nombre de la automatización ya existe |
| | | 7049=Eliminar automatización o no? |
| | | 7050=Agregar escena |
| | | 7051=Retraso |
| | | 7052=No se puede guardar, inténtelo de nuevo |
| | | 7053=No se puede eliminar, inténtelo de nuevo |
| | | 7054=Pausar |
| | | 7055=Brillo |
| | | 7056=Porcentaje |
| | | 7057=Modo |
| | | 7058=Enfriamiento |
| | | 7059=Calefacción |
| | | 7060=Automático |
| | | 7061=Deshumidificar |
| | | 7062=Temperatura |
| | | 7063=Velocidad de ventilador |
| | | 7064=Día |
| | | 7065=Noche |
| | | 7066=Abandonar |
| | | 7067=General |
| | | 7068=Tiempo |
| | | 7069=No ha configurado la automatización, procesa a configurar |
| | | 7070=Nada está aquí |
| | | 7071=No se ha establecido la hora de inicio, por favor configurar |
| | | 7072=La hora de finalización no se ha establecido, por favor estableza |
| | | 7073=La hora de inicio y la hora de finalizacion no deben ser las mismas |
| | | 7074=La hora de inicio no debe ser mayor a la hora de finalización |
| | | 7075=La condicion no debe estar en blanco |
| | | 7076=Target no debe estar en blanco |
| | | 7077=La hora no se ha establecido, por favor establezca |
| | | 7078=L a condición o el objetivo no deben estar en blanco |
| | | 7079=L a puerta de enlace esta fuera de línea |
| | | 7080=Salida/Puesta de sol/Mediodía |
| | | 7081=Amanecer |
| | | 7082=Puesta de sol |
| | | 7083=Mediodía |
| | | 7084=A tiempo |
| | | 7085=Avance |
| | | 7086=Minutos |
| | | 7087=Cambio exterior |
| | | 7088=Seleccionar condicion de cambio al aire libre |
| | | 7089=Temperatura exterior, humedad, cambio de PM2.5 |
| | | 7090=Cambio de clima (clima urbano) |
| | | 7091=Cambio en el entorno exterior |
| | | 7092=Temperatura superior a |
| | | 7093=Temperatura inferior |
| | | 7094=Humedad superior a |
| | | 7095=Humedad por debajo |
| | | 7096=PM2.5 supeior a |
| | | 7097=PM2.5 por debajo |
| | | 7098=Día soleado |
| | | 7099=Nublado |
| | | 7100= |
| | | 7101=*Establezca el valor en este rango (1 ~ 100). |
| | | 7102=Sin valor establecido |
| | | 7103=Excelente: 0 ~ 35ug/m3 |
| | | 7104=Bueno: 36 ~ 75ug/m3 |
| | | 7105=Contaminación lumínica: 76 ~ 115ug/m3 |
| | | 7106=Contaminación moderada: 116 ~ 150ug/m3 |
| | | 7107=Contaminación intensa: > 150ug/m3 |
| | | 7108=Fuga/Sin fuga |
| | | 7109=Fuga |
| | | 7110=Sin fuga |
| | | 7111=Fuga de agua/sin fugas de agua |
| | | 7112=Fuga de agua |
| | | 7113=Sin fuga de agua |
| | | 7114=Alguien/Nadie |
| | | 7115=Alguien |
| | | 7116=Nadie |
| | | 7117=Abierto/Cerrado |
| | | 7118=Activado |
| | | 7119=Cerrar |
| | | 7120=Función anti-desmantelamiento |
| | | 7121=En linea |
| | | 7122=Fuera de linea |
| | | 7123=Calidad del aire |
| | | 7124=Excelente |
| | | 7125=Bueno |
| | | 7126=Pobre |
| | | 7127=Enviar notificación |
| | | 7128=Contenido de la notificación |
| | | 7129=(dentro de los 100 caracteres) |
| | | 7130=Selección de cuenta |
| | | 7131=Aplicación push |
| | | 7132=Automatización |
| | | 7133=Ejecutado |
| | | 7134=Estado de destino |
| | | 7135=Caída |
| | | 7136=Temperatura |
| | | 7137=Humedad |
| | | 7138=PM2.5 |
| | | 7139=CO2 |
| | | 7140=TVOC |
| | | 7141=Exceder |
| | | 7142=Grave |
| | | 7143=Alto |
| | | 7144=Excelencia |
| | | 7145=Seguridad |
| | | 7146=Añadir seguridad |
| | | 7147=Armado |
| | | 7148=Desarmado |
| | | 7149=Manualmente |
| | | 7150=Inteligente |
| | | 7151=Bueno |
| | | 7152=Dejar o Arrivar a un lugar |
| | | 7153=Salir |
| | | 7154=Llegar |
| | | 9000=Inicio sesión con un nuevo número de teléfono celular |
| | | 9001=Inicie sesión con una nueva dirección de correo eléctrónico |
| | | 9002=Nuevo numero de celular revisado |
| | | 9003=Nuevo numero de celular enlazado |
| | | 9004=Nueva dirección de correo electrónico revisado |
| | | 9005=Nueva dirección de correo electrónico enlazado |
| | | 9006=El código de verificación puede enviarse más tarde, espere. |
| | | 9007=Por favor, espere |
| | | 9008=Volver |
| | | 9009=El usuario no desea ser nombrado |
| | | 9010=Nueva contraseña |
| | | 9011=Introduzca la nueva contraseña nuevamente |
| | | 9012=De acuerdo |
| | | 9013=Acuerdo de servicio |
| | | 9014=Normativa de protección de la información del usuario |
| | | 9015=y |
| | | 9016=Lea y acepte el Acuerdo de servicio del usuario y las regulaciones de protección de la información del usuario. |
| | | 9017=Esta seguro de cerrar sesión? |
| | | 9018=Seleccione pais/región |
| | | 9019=Actualizar ahora |
| | | 9020=Ahora no |
| | | 9021=País/región |
| | | 9022=Información del servidor |
| | | 9023=Servidor actual |
| | | 9024=*El servidor hace referencia a la base de datos para la nube, sin necesidad alguna, no se recomienda realizar migración de datos. |
| | | 9025=Si es necesaria la migración de datos, marque |
| | | 9026=Introducción a la función |
| | | 9027=Quejas |
| | | 9028=Actualización de la versión |
| | | 9029=(por favor indique "quejas" en el título, luego procesaremos en prioridad.) |
| | | 9030=Copia realizada |
| | | 9031=No hay nada aquí |
| | | 9032=Obtener nueva versión |
| | | 9033=Última versión |
| | | 9034=Que puedo hacer por ti? |
| | | 9035=Problema de función |
| | | 9036=Problema de escena |
| | | 9037=Soporte de aplicaciones |
| | | 9038=(Preguntas frecuentes) |
| | | 9039=Compartir y función |
| | | 9040=Alertas |
| | | 9041=Información del sistema |
| | | 9042=Centro de información |
| | | 9043=Tenga en cuenta que su número de cuenta ha iniciado sesión en otro lugar. Si no lo hace usted mismo, cambie la contraseña de inmediato. |
| | | 9044=Cargado correctamente |
| | | 9045=No se puede cargar |
| | | 9046=Revisado correctamente |
| | | 9047=La contraseña que ha revisado ha entrado en vigor, vuelva a iniciar sesión. |
| | | 9048=Iniciar sesion con la contraseña del numero de cuenta |
| | | 9049=Contraseña incorrecta para muchas veces, ¡el número de cuenta está bloqueado! |
| | | 9050=Verificar la identificación facial |
| | | 9051=Error al guardar la identificación facial del usuario |
| | | 9052=La notificación push de registro esta disponible |
| | | 9053=La notificación push de registro es anormal |
| | | 9054=Verificación numerica de contraseña |
| | | 9055=Verificación de gestos |
| | | 9056=Año |
| | | 9057=Sin función regional |
| | | 9058=Guardar o no? |
| | | 9059=No compartir ahora |
| | | 9060=Usos-permiso |
| | | 9061=Encuentra tu contraseña haciendo clic en "Olvidé mi contraseña", o inténtalo de nuevo en {0} minuto. |
| | | 9062=Comprobar |
| | | 9063=Todavía tienes {0} veces. |
| | | 9064=Altavoz inteligente |
| | | 9065=Gestión de datos |
| | | 9066=Comentarios |
| | | 9067=Los comentarios no pueden estar en blanco |
| | | 9068=Desea desvincularse? |
| | | 9069=Aviso de propiedad |
| | | 10000=Contrasela no válida, vuelva a iniciar sesión |
| | | 10001=Error al solicitar el servidor, inténtelo de nuevo más tarde. |
| | | 10002=Mantenimiento del sistema, inténtalo de nuevo mas tarde |
| | | 10003=No puede iniciar sesión, agregue la residencia al principio. |
| | | 10004=El número de cuenta ya existe |
| | | 10005=Envías el código de verificación con demasiada frecuencia, inténtalo de nuevo más tarde. |
| | | 10006=Error de firma |
| | | 10007=Sistema ocupado, intentelo de nuevo mas tarde! |
| | | 10008=Contrasea no válida para iniciar sesión |
| | | 10009=El usuario ha sido deshabilitado |
| | | 10010=Error de contraseña original |
| | | 10011=El número de subcuenta ya existe |
| | | 10012=El npumero de subcuenta no existe |
| | | 10013=No esta permitido agregarse como miembro |
| | | 10014=La residencia actual no pertenece al este número de cuenta |
| | | 10015=El nombre de la residencia ya existe |
| | | 10016=La residencia no existe |
| | | 10017=Error de solicitud, parámetro anormal! |
| | | 10018=El número que enlazaste es duplicado |
| | | 10019=Enlazar el gateway primero |
| | | 10020=El gateway no existe |
| | | 10021=El gateway esta fuera de línea |
| | | 10022=El dispositivo está fuera de línea |
| | | 10023=Error de control |
| | | 10024=La escena ya existe |
| | | 10025=La automatización ya existe |
| | | 10026=Spk no admite esta función |
| | | 10027=Spk no admite este valor funcional |
| | | 10028=No tienes permiso |
| | | 10029=El destino del dispositivo está duplicado |
| | | 10030=No tiene permiso para el control remoto |
| | | 10031=El dispositivo no debe estar en blanco |
| | | 10032=El usuario no tiene permiso |
| | | 10033=El dispositivo no existe |
| | |
| | | <Reference Include="ScanSdk"> |
| | | <HintPath>..\DLL\Scan\ScanSdk.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="Shared.Droid.HDLLinphone"> |
| | | <HintPath>..\DLL\Linphone\Android\Shared.Droid.HDLLinphone.dll</HintPath> |
| | | </Reference> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <Compile Include="MainActivity.cs" /> |
| | |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\EnvironmentalScience\HistoryOpionBg3.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\EnvironmentalScience\HistoryOpionBg4.png" /> |
| | | <AndroidAsset Include="Assets\Phone\Collection\FunctionOfflineBg.png" /> |
| | | <AndroidAsset Include="Assets\Phone\Public\MsgIcon\CallIcon.png" /> |
| | | <AndroidAsset Include="Assets\Phone\Public\MsgIcon\AnswerIcon.png" /> |
| | | <AndroidAsset Include="Assets\Phone\Public\MsgIcon\HangUpIcon.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\CAC\DataIcon.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\CAC\JinMaoIcon.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\hvaccac.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\hvaccac_blue.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\hvaccac_white.png" /> |
| | | <AndroidAsset Include="Assets\Phone\Public\dialogBg2.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensorhelp.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\sensorhelp_blue.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\sensorhelp_white.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\Panel\PanelHelpAlarmBgIcon.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\Panel\PanelHelpNormalBgIcon.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\screenpanel.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\Panel\PanelEnviBg.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\FloorHeating\EconomicIcon.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\FloorHeating\EconomicIconGray.png" /> |
| | | <AndroidAsset Include="Assets\Phone\MusicIcon\order.png" /> |
| | | <AndroidAsset Include="Assets\Phone\MusicIcon\single_cycle.png" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <AndroidResource Include="Resources\values\colors.xml" /> |
| | |
| | | <ItemGroup> |
| | | <Folder Include="libs\arm64-v8a\" /> |
| | | <Folder Include="Zxing\" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <ProjectReference Include="..\..\HDLLinphoneSDK_AndroidNew\Shared.Droid.HDLLinphone\Shared.Droid.HDLLinphone\Shared.Droid.HDLLinphone.csproj"> |
| | | <Project>{703D29ED-674F-44A8-8AAD-863035899D4B}</Project> |
| | | <Name>Shared.Droid.HDLLinphone</Name> |
| | | </ProjectReference> |
| | | <Folder Include="Assets\Phone\FunctionIcon\CAC\" /> |
| | | <Folder Include="Assets\Phone\FunctionIcon\Panel\" /> |
| | | </ItemGroup> |
| | | <Import Project="..\HDL_ON\HDL_ON.projitems" Label="Shared" Condition="Exists('..\HDL_ON\HDL_ON.projitems')" /> |
| | | <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" /> |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.5.6" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202205241"> |
| | | <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.5.6" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202206082"> |
| | | <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" /> |
| | | <!--友盟--> |
| | | <!--<uses-sdk android:minSdkVersion="8"></uses-sdk>--> |
| | |
| | | <Reference Include="Shared.IOS.LCVideoOnSDK"> |
| | | <HintPath>..\DLL\LC\IOS\Shared.IOS.LCVideoOnSDK.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="Shared.IOS.HDLSceneSiri"> |
| | | <HintPath>..\DLL\IOS\Shared.IOS.HDLSceneSiri.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="Shared.IOS.HDLLinphoneSDK"> |
| | | <HintPath>..\DLL\Linphone\iOS\Shared.IOS.HDLLinphoneSDK.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="Shared.IOS.HDLFVSDK"> |
| | | <HintPath>..\DLL\IOS\Shared.IOS.HDLFVSDK.dll</HintPath> |
| | | <Reference Include="Shared.IOS.HDLSceneSiri"> |
| | | <HintPath>..\DLL\IOS\Shared.IOS.HDLSceneSiri.dll</HintPath> |
| | | </Reference> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | |
| | | <Folder Include="Resources\Phone\PersonalCenter\FacePassage\" /> |
| | | <Folder Include="Resources\Phone\FunctionIcon\Electrical\AirSwitch\" /> |
| | | <Folder Include="Base.lproj\" /> |
| | | <Folder Include="Resources\Phone\FunctionIcon\CAC\" /> |
| | | <Folder Include="Resources\Phone\FunctionIcon\Panel\" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <InterfaceDefinition Include="LaunchScreen.storyboard" /> |
| | |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\HistoryOpionBg3.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\HistoryOpionBg4.png" /> |
| | | <BundleResource Include="Resources\Phone\Collection\FunctionOfflineBg.png" /> |
| | | <BundleResource Include="Resources\Phone\Public\MsgIcon\CallIcon.png" /> |
| | | <BundleResource Include="Resources\Phone\Public\MsgIcon\AnswerIcon.png" /> |
| | | <BundleResource Include="Resources\Phone\Public\MsgIcon\HangUpIcon.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\CAC\DataIcon.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\CAC\JinMaoIcon.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\Icon\hvaccac.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\hvaccac_blue.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\hvaccac_white.png" /> |
| | | <BundleResource Include="Resources\Phone\Public\dialogBg2.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensorhelp.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\sensorhelp_blue.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\sensorhelp_white.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\Panel\PanelHelpAlarmBgIcon.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\Panel\PanelHelpNormalBgIcon.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\Icon\screenpanel.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\Panel\PanelEnviBg.png" /> |
| | | <BundleResource Include="Resources\Phone\MusicIcon\order.png" /> |
| | | <BundleResource Include="Resources\Phone\MusicIcon\single_cycle.png" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <ITunesArtwork Include="iTunesArtwork" /> |
| | |
| | | <key>UIStatusBarStyle</key> |
| | | <string>UIStatusBarStyleLightContent</string> |
| | | <key>CFBundleShortVersionString</key> |
| | | <string>1.5.502205201</string> |
| | | <string>1.5.502205241</string> |
| | | <key>CFBundleVersion</key> |
| | | <string>1.5.505201</string> |
| | | <string>1.5.505241</string> |
| | | <key>NSLocationWhenInUseUsageDescription</key> |
| | | <string>Use geographic location to provide services such as weather</string> |
| | | <key>NSAppleMusicUsageDescription</key> |
| | |
| | | 530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password. |
| | | 531=Password free unlocking within five minutes |
| | | 532=The device is offline and cannot be operated temporarily |
| | | 533=Statistical Chart |
| | | 534=Data |
| | | 535=Dew point temperature |
| | | 536=Temperature statistics |
| | | 537=Humidity statistics |
| | | 538=Uint |
| | | 539=Smart panel |
| | | 540=In Alarm |
| | | 541=Monitoring |
| | | 542=Wandering alarm |
| | | 543=Get more |
| | | |
| | | |
| | | 1000=Room Humidity |
| | |
| | | 5015=Bluetooth |
| | | 5016=Line input |
| | | 5017=Revise the name |
| | | 5018=Single |
| | | 5018=Single loop |
| | | 5019=Random play |
| | | 5020=List |
| | | 5021=Has shifted to |
| | |
| | | 5045=General volume |
| | | 5046=Adjust volume |
| | | 5047="QQ music" has not installed in your cell phone, please proceed in App center. |
| | | 5048= Progressive cycle |
| | | 5049=Single play |
| | | |
| | | 6000=normal |
| | | 6001=Device status |
| | |
| | | 7152=Leave or arrive at a place |
| | | 7153=Leave |
| | | 7154=Arrive |
| | | 7155=Distress/Normal |
| | | 7156=Distress |
| | | 7157=whether to unlock |
| | | 7158=is |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |
| | | 530=为防止开关门的误触点击,保证家庭安全,请输入您的门锁开门密码。 |
| | | 531=五分钟内免密码开锁 |
| | | 532=设备离线中,暂时无法操作 |
| | | 533=访客管理 |
| | | |
| | | 533=24小时统计图 |
| | | 534=数据 |
| | | 535=露点温度 |
| | | 536=温度统计图 |
| | | 537=湿度统计图 |
| | | 538=单位 |
| | | 539=智能面板 |
| | | 540=报警中 |
| | | 541=监控中 |
| | | 542=徘徊报警 |
| | | 543=获取更多 |
| | | |
| | | 1000=室内湿度 |
| | | 1001=童锁 |
| | |
| | | 5015=蓝牙 |
| | | 5016=线路输入 |
| | | 5017=修改名称 |
| | | 5018=单曲播放 |
| | | 5018=单曲循环播放 |
| | | 5019=随机播放 |
| | | 5020=列表播放 |
| | | 5021=已切换到 |
| | |
| | | 5045=总音量 |
| | | 5046=调节音量 |
| | | 5047=你手机暂未安装"QQ音乐"{\r\n}请前往手机商场安装 |
| | | 5048=循序循环 |
| | | 5049=单曲循环 |
| | | |
| | | |
| | | 6000=正常 |
| | |
| | | 7152=离开或到达某地 |
| | | 7153=离开 |
| | | 7154=到达 |
| | | |
| | | 7155=求救/正常 |
| | | 7156=求救 |
| | | 7157=是否开锁时 |
| | | 7158=是 |
| | | |
| | | |
| | | |
| | |
| | | 530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password. |
| | | 531=Password free unlocking within five minutes |
| | | 532=The device is offline and cannot be operated temporarily |
| | | |
| | | 533=Statistical Chart |
| | | 534=Data |
| | | 535=Dew point temperature |
| | | 536=Temperature statistics |
| | | 537=Humidity statistics |
| | | 538=Uint |
| | | 539=Smart panel |
| | | 540=Нормальный |
| | | 541=Monitoring |
| | | 542=Wandering alarm |
| | | 543=Get more |
| | | |
| | | |
| | | 1000=Влажность в Помещении |
| | |
| | | 10031=Устройство не должно быть пустым. |
| | | 10032=У пользователя нет разрешения. |
| | | 10033=Устройство не существует. |
| | | |
| | | |
| | | |
| | | [Spanish] |
| | | 1=Ingresar |
| | | 2=Número de teléfono |
| | | 3=Luz |
| | | 4=Correo |
| | | 5=Por favor ingrese numero de cuenta |
| | | 6=Contraseña |
| | | 7=Olvidar |
| | | 8=Registrarse |
| | | 9=Iniciar sesión |
| | | 10=Espere… |
| | | 11=Cerrar |
| | | 12=Código de verificación |
| | | 13=Contraseña de acceso |
| | | 14=Registrarse |
| | | 15=Número de teléfono |
| | | 16=Ingrese la contraseña |
| | | 17=Ingrese la contraseña nuevamente |
| | | 18=Código de verificación |
| | | 19=Número de teléfono incorrecto, ingrese nuevamente |
| | | 20=L a contraseña y la confirmación no coinciden. Ingrese la contraseña nuevamente |
| | | 21=El formato de la contraseña no cumple con los requisitos. Ingrese la contraseña nuevamente |
| | | 22=El usuario ya existe. Puede ingresar directamete |
| | | 23=Código de verificación incorrecto, vuelva a ingresarlo. |
| | | 24=Número de cuenta incorrrecta, por favor ingrese el correo correcto |
| | | 25=Correo |
| | | 26=Residencia |
| | | 27=Miembro |
| | | 28=Desarmar |
| | | 29=Armar |
| | | 30=Copia de seguridad |
| | | 31=Función auxiliar |
| | | 32=Añadir funciones |
| | | 33=Modo noche |
| | | 34=Configuración general |
| | | 35=Soporte |
| | | 36=Casa |
| | | 37=Categoría |
| | | 38=Inteligente |
| | | 39=Individual |
| | | 40=Inicio de sesión fallido, número de cuenta o contraseña incorrectos |
| | | 41=Error al enviar el codigo de verificación |
| | | 42=Error de red |
| | | 43=Error en el registo, inténtelo de nuevo |
| | | 44=Confirmar reinicio |
| | | 45=El numero de cuenta no existe, por favor asegúrese de estar registrado |
| | | 46=Inicio de sesion inválido, iniciar sesion nuevamente |
| | | 47=Centro Personal |
| | | 48=Nombre |
| | | 49=Código QR |
| | | 50=Teléfono |
| | | 51=Correo |
| | | 52=No enlazado |
| | | 53=Autorización de terceros |
| | | 54=Cambiar contraseña |
| | | 55=Configuración de desbloqueo |
| | | 56=Establecer contraseña, gesto, huella digital o identificación facil para proteger su provacidad |
| | | 57=Salir |
| | | 58=Habitación |
| | | 59=Equipo |
| | | 60=Función |
| | | 61=Brillo |
| | | 62=Configuración |
| | | 63=Locación |
| | | 64=Compartir |
| | | 65=Añadir acceso directo al escritorio |
| | | 66=Cambiar nombre |
| | | 67=Cancelar |
| | | 68=Confirmar |
| | | 69=Todo |
| | | 70=Cortina |
| | | 71=Nombre |
| | | 72=Address |
| | | 73=Gestión de plantas |
| | | 74=Gestión de habitaciones |
| | | 75=Migración de administrador |
| | | 76=Migración de privilegios |
| | | 77=Priviligio de depuración |
| | | 78=El administrador migra a otro usuario |
| | | 79=Toda los datos de la residencia migran al nuevo usuario |
| | | 80=Permitir que el personal visite su casa de forma remota |
| | | 81=Piso |
| | | 82=Añadir piso |
| | | 83=Cambiar nombre de piso |
| | | 84=Error al añadir, el piso ya existe |
| | | 85=Escena |
| | | 86=Borrar |
| | | 87=Inmediata |
| | | 88=Eliminar el piso o no? |
| | | 89=Añadir habitación |
| | | 90=Cmabiar la informacion de la habitación |
| | | 91=Información de la habitanción |
| | | 92=Nombre |
| | | 93=Piso |
| | | 94=Gestión funcionamiento |
| | | 95=Guardar |
| | | 96=Eliminar la habitación |
| | | 97=Galeria por defecto |
| | | 98=Camara |
| | | 99=Seleccionar de la galeria |
| | | 100=No asignado |
| | | 101=Asignado |
| | | 102=No asignado |
| | | 103=Eliminar la habitación o no? |
| | | 104=Tiempo de transición |
| | | 105=Temperatura interna |
| | | 106=AC |
| | | 107=Videoportero |
| | | 108=Sensor |
| | | 109=Monitor de seguridad |
| | | 110=Panel Inteligente |
| | | 111=Musica |
| | | 112=Aire fresco |
| | | 113=Ambiental |
| | | 114=Monitoreo de energía |
| | | 115=Electrodomésticos |
| | | 116=Bloqueo inteligente |
| | | 117=Calefacción |
| | | 118=Abrir |
| | | 119=Refrigeración |
| | | 120=Calefacción |
| | | 121=Deshumidificar |
| | | 122=Auto |
| | | 123=Suministro de aire |
| | | 124=Alto |
| | | 125=Medio |
| | | 126=Bajo |
| | | 127=Modo |
| | | 128=Velocidad del ventilador |
| | | 129=Estas seguro de apagar todas las funciones de la habitación? |
| | | 130=Abierta |
| | | 131=Añadido a favoritos |
| | | 132=Felicitaciones! Registro exitoso |
| | | 133=Inicio de sesion automático pronto…. |
| | | 134=El numero de no esta registrado, por favor registrese e ingrese nuevamente |
| | | 135=Por favor, obtener codigo de verificación |
| | | 136=La contraseña ha sido cambiada |
| | | 137=La direccion rsidencial no puede estar en blanco |
| | | 138=El nombre de la residencia no puede estar en blanco |
| | | 139=El nombre de la habitación no puede estar en blanco |
| | | 140=El nombre del piso no puede estar en blanco |
| | | 141=No se pudo revisar, el piso ya existe |
| | | 142=El nombre del equipo no puede estar en blanco |
| | | 143=El nombre del usuario no puede estar en blanco |
| | | 144=Nombre de usuario |
| | | 145=Seleccione la página para bloquear |
| | | 146=Puede seleccionar varias paginas que le gustaria mantener |
| | | 147=Error en codigo de verificación |
| | | 148=No protegido |
| | | 149=Cuando empieza |
| | | 150=Armar/Desarmar |
| | | 151=Desbloquear remotamente |
| | | 152=No se necesita contraseña/gesto al iniciar el software |
| | | 153=Iniciar sesión 5 minutos despues de salir de la página, se requiere el método de desbloqueo correspondiente. |
| | | 154=Centro de miembros - utiliza para debloquear la función de seguridad como armar/desarmar |
| | | 155=Usado para desbloquear la cerradura inteligente |
| | | 156=Configuración de desbloqueo |
| | | 157=Solo valido para host |
| | | 158=Desbloquear con contraseña |
| | | 159=Desbloquear con gesto |
| | | 160=Desbloquear con huella |
| | | 161=Desbloquear con identificación facial |
| | | 162=Configuración de contraseña numérica |
| | | 163=Configuración exitosa |
| | | 164=Configuración de gestos |
| | | 165=Por favor dibuja tu patron de desbloqueo |
| | | 166=Requiere al menos una conexión de 4 puntos, dibuje nuevamente |
| | | 167=El patron y la corfirmacion que dibujaste no coincide, dibuje nuevamente |
| | | 168=Por favor dibuje su patrón nuevamente |
| | | 169=Desbloquear con huella o no? |
| | | 170=Desbloquar con identificacion facial o no? |
| | | 171=Verificar la contraseña numérica |
| | | 172=Verificar el gesto |
| | | 173=Por favor ingrese el gesto original |
| | | 174=Por favor ingrese la contraseña numérica original |
| | | 175=Verificación fallida, error en la contraseña |
| | | 176=Cambiar la contraseña numérica |
| | | 177=Cambiar el gesto |
| | | 178=Cerrar la configuración de desbloqueo o no? |
| | | 179=Por favor verifique la huella |
| | | 180=Verificación fallida, error en el gesto |
| | | 181=General |
| | | 182=Dia |
| | | 183=Noche |
| | | 184=Abandonar |
| | | 185=Por favor enlace el piso |
| | | 186=Ajuste de la velocidad del ventilador |
| | | 187=Ventilador |
| | | 188=Enchufe |
| | | 189=Nivel |
| | | 190=Chl |
| | | 191=Vol |
| | | 192=TV |
| | | 193=La habitanción existe, error al cambiar |
| | | 194=Medio Ambiente |
| | | 195=Contaminación fuerte |
| | | 196=Contaminación leve |
| | | 197=Bueno |
| | | 198=Excelente |
| | | 199=Frio helado |
| | | 200=Frio |
| | | 201=Frio |
| | | 202=Confort |
| | | 203=Tibio |
| | | 204=Caliente |
| | | 205=Extremadamente caliente |
| | | 206=Hasta el estandar |
| | | 207=Contaminación leve |
| | | 208=Contaminación media |
| | | 209=Contaminación fuerte |
| | | 210=Fresco |
| | | 211=Turbidez |
| | | 212=Hipoxia |
| | | 213=Hipoxia severa |
| | | 214=Húmedo |
| | | 215=Húmedo |
| | | 216=Seco |
| | | 217=Temperatura |
| | | 218=Humedad |
| | | 219=Rango |
| | | 220=Nivel |
| | | 221=Valor de color |
| | | 222=PM1.0 |
| | | 223=PM2.5 |
| | | 224=Ruido |
| | | 225=Fuerza del viento |
| | | 226=CO2 |
| | | 227=TV02 |
| | | 228=Dia |
| | | 229=Semana |
| | | 230=Mes |
| | | 231=Otra región |
| | | 232=Administración de miembros |
| | | 233=Apodo |
| | | 234=Autoridad Administrativa |
| | | 235=Crear una escena |
| | | 236=Apodo no puede quedar en blanco |
| | | 237=Editar apodo |
| | | 238=La región utilizada |
| | | 239=Añadir miembro |
| | | 240=Por favor ingrese el número de cuenta del miembro |
| | | |
| | | 241=Escanear codigo QR |
| | | 242=Confirmar la invitación |
| | | 243=Error en número de cuenta, por favor chequear |
| | | 244=Agregue correctamente al miembro |
| | | 245=Error de datos, por favor intente de nuevo |
| | | 246=Error al añadir, el numero de cuenta del miembro no esta registrada |
| | | |
| | | 247=No puedes agregarte a ti mismo. |
| | | 248=El usuario no existe en esta residencia |
| | | 249=Se ha agregado el número de cuenta del miembro, por lo que no se puede volver a agregar. |
| | | |
| | | 250=Error de operación |
| | | 251=Error al agregar, autoridad no valida |
| | | 252=Guardado correctamente |
| | | 253=Guardando…espere un momento. |
| | | 254=Adopo editado |
| | | 255=Eliminar este miembro |
| | | 256=Sin favoritos |
| | | 257=Introduzca el contenido |
| | | 258=Bienvenido al nuevo miembro |
| | | 259=Esta seguro de elimianr este miembro? |
| | | 260=Introduzca la contraseña de inicio de sesión |
| | | 261=Cambio de residencia exitoso |
| | | 262=Seleccionar todo |
| | | 263=Compartir la selección funcional |
| | | 264=Confirmar uso compartido |
| | | 265=Compartir en |
| | | 266=Error de uso compartido funcional |
| | | 267=Uso compartido funcional exitoso |
| | | 268=Correo |
| | | 269=Cambiar el enlace |
| | | 270=Eliminar el enlace |
| | | 271=Correo |
| | | 272=Cambiar la dirección de correo |
| | | 273=Cambiar el método de verificación |
| | | 274=El código de verificación ha sido enviado, por favor ingrese |
| | | 275=Reenviar |
| | | 276=Verificación correcta |
| | | 277=Correo |
| | | 278=Por favor ingrese el nuevo correo |
| | | 279=Enlazar correctamente su correo electrónico a su cuenta |
| | | 280=No vincular su correo electrónica a su cuenta |
| | | 281=Eliminar el enlace de correo electrónico |
| | | 282=Eliminación correcta de enlace |
| | | 283=Número de telefono |
| | | 284=Número de telefono |
| | | 285=Número de telefono |
| | | 286=Vincular correctamente su numero de teléfono a su cuenta |
| | | 287=No puede vincular su numero de teléfono a su cuenta |
| | | 288=Cambiar el enlace |
| | | 289=Quitar el enlace |
| | | 290=No se puede obtener el historial |
| | | 291=Sin favoritos |
| | | 292=Acerca de ON+ |
| | | 293=Miembro |
| | | 294=Administrador |
| | | 295=Cambiar la contraseña |
| | | 296=Antes de cambiar la contraseña iniciar sesion |
| | | 297=Por favor verifique ID |
| | | 298=Verificación telefonica |
| | | 299=Verificación de correo electronico |
| | | 300=No se ha enlazado a la dirección de correo electronico, no puede verificar |
| | | 301=No se ha enlazado a un numero telefonico, no se puede verificar |
| | | 302=Proceder al enlace |
| | | 303=Eliminado correctamente el enlace a su numero de telefono |
| | | 304=El codigo de verificación se ha enviado a: |
| | | 305=Telefono |
| | | 306=Correo |
| | | 307=Recibió nuevos datos, esta seguro de anularlos? |
| | | 308=Automatización |
| | | 309=Crear una escena |
| | | 310=Añadir escena |
| | | 311=Configuración basica |
| | | 312=Nombre |
| | | 313=Region |
| | | 314=Completo |
| | | 315=Vista completa de la residencia |
| | | 316=Sleccionar |
| | | 317=Ya añadido |
| | | 318=Conmutador |
| | | 319=Velocidad del ventilador |
| | | 320=Modo |
| | | 321=Encendido |
| | | 322=Apagado |
| | | 323=Escena |
| | | 324=Retardo de escena |
| | | 325=Configuración de retardo |
| | | 326=Retardo |
| | | 327=Capturar la escena |
| | | 328=Escena de pelicula |
| | | 329=General |
| | | 330=Modo automático |
| | | 331=Potencia calentamiento suelo |
| | | 332=Refrigeración suelo |
| | | 333=Potencia de refrigeración del suelo |
| | | 334=Ajustar el porcentaje |
| | | 335=Sin retardo |
| | | 336=No hay escena disponible. Añade uno! |
| | | 337=Editar la escena |
| | | 338=El nombre de la escena no puede estar en blanco |
| | | 339=El nombre de la escena ya existe, por favor revise |
| | | 340=El nombre de la habitación ya existe, por favor revise |
| | | 341=Eliminar esta escena o no? |
| | | 342=La puerta de enlace esta fuera de linea, falla de conexión remota |
| | | 343=Error MAC, error de conexión remota. |
| | | 344=Error de conexión remota. |
| | | 345=Telefono |
| | | 346=Correo |
| | | 347=Ingrese el nuevo numero de telefono ceular |
| | | 348=Ya se ha utilizado el numero de telefono celular |
| | | 349=Ya se ha utilizado la direccion de correo electronico |
| | | 350=La dirección de correo electrónico es la misma que la actual, sin necesidad de cambiar. |
| | | 351=El número de teléfono es la mismo que la actual, sin necesidad de cambiar. |
| | | 352=Asignación de piso |
| | | 353=Separar |
| | | 354=Cerrar |
| | | 355=Acerca de |
| | | 356=Numero de version |
| | | 357=Esta funcion no esta disponible! |
| | | 358=Telefono |
| | | 359=Correo |
| | | 360=Escena de panel |
| | | 361=No añadido |
| | | 362=Seleccionar todo |
| | | 363=No se puede comunicar con el servidor, no se puede editar la información del dispositivo |
| | | 364=No se puede comunicar con el servidor, no se puede editar la información de la habitación |
| | | 365=No se puede comunicar con el servidor, no se puede editar la información de la escena |
| | | 366=No se puede comunicar con el servidor, no se puede eliminar la escena |
| | | 367=No se puede comunicar con el servidor, no se puede eliminar el piso |
| | | 368=Bienvenido a disfrutar de ON+ |
| | | 369=Añadir residencia |
| | | 370=Conviértete en miembro de la familia |
| | | 371=No se puede utilizar la funcion, por favor verifique su conexión |
| | | 372=No se puede crear una escena, por favro verifique su conexión |
| | | 373=Error al agregar un piso |
| | | 374=Los datos residenciales se han eliminado, APP cambiará automáticamente a otra residencia. |
| | | 375=El gateway no esta conectado al servidor, no se puede crear la escena |
| | | 376=No se puede introducir un carácter especial |
| | | 377=Toda la residencia |
| | | 378=Tiempo de transición |
| | | 379=Velocidad de transicion |
| | | 380=Esta funcion no esta disponible! |
| | | 381=Recargar |
| | | 400=Bienvenido a casa |
| | | 401=Codigo de barras no válido, intentelo de nuevo |
| | | 402=Inténtelo de nuevo |
| | | 403=Temperatura de color |
| | | 404=Ajuste rápido |
| | | 405=Acogedor |
| | | 406=Reunión |
| | | 407=Lectura |
| | | 408=Añadir |
| | | 409=Marca de función |
| | | 410=No ha agregado ningun dispositov de pataforma en la actualidad |
| | | 411=Otros dispositivos de plataforma son compatibles con proveedores de serviciso externos |
| | | 412=Añadir |
| | | 413=Controlador no activado |
| | | 414=Controlador activado |
| | | 415=Alguien |
| | | 416=Registro |
| | | 417=Fuga de agua |
| | | 418=En alarma |
| | | 419=Normal |
| | | 420=Seco caliente |
| | | 421=Secado al aire |
| | | 422=Desinfectar |
| | | 423=Iluminación |
| | | 424=Tiempo |
| | | 425=Tiempo seco caliente |
| | | 426=Tiempo de secado al aire |
| | | 427=Tiempo de desinfección |
| | | 428=Tiempo Anión |
| | | 429=H |
| | | 430=Min |
| | | 431=Actualmente esta agregando cualquier dispositivos de plataforma a |
| | | 432=Otros dispositivos de plataforma son compatibles con proveedores de serviciso externos |
| | | 433=Valvula de agua |
| | | 434=Interruptor de tiempo |
| | | 435=Control remoto |
| | | 436=Dispositivos añadido |
| | | 437=Lista de dispositivos |
| | | 438=humedad:{0}% aire:viento {1}:{2} |
| | | 439=Tiempo real: {0} kw |
| | | 440=Siguiente paso |
| | | 441=Seleccione todas las áreas de estado de captura |
| | | 442=Generar escena |
| | | 443=Implementación personalizada |
| | | 444=Centro de seguridad |
| | | 445=Defensa de la casa |
| | | 446=Defensa en casa |
| | | 447=Defensa de vacaciones |
| | | 448=Implementación fija |
| | | 449=*Deshacer defensa no afecta |
| | | 450=Defensa contra desastres |
| | | 451=Defensa de 24 horas |
| | | 452=Alarma antirrobo |
| | | 453=Silenciar alarma |
| | | 454=Información de implementación |
| | | 455=El nombre no puede estar en blanco |
| | | 456=Lienzo |
| | | 457=Consumo de energía |
| | | 458=Fecha |
| | | 459=Consumo de energía en tiempo real |
| | | 460=Consumo energético de este mes |
| | | 461=Exterior/Interior |
| | | 462=Aun no has añadido ningun dispositivo |
| | | |
| | | 463=Introduzca el código SN del dispositivo |
| | | 464=Puede empezar a usar la onda milimétrica Zhaoguan |
| | | 465=Eliminar dispositivo |
| | | 466=STB |
| | | 467=Proyector |
| | | 468=Alguien cayó |
| | | 469=Alguien está en |
| | | |
| | | 470=Bajo protección |
| | | 471=Sensor de onda milimétrica |
| | | 472=Exterior |
| | | 473=Columpio |
| | | 474=Oscilación hacia arriba y hacia abajo |
| | | 475=Gira a izquierda y derecha |
| | | 476=Añadir residencia |
| | | 477=Columpio |
| | | 478=Patrón |
| | | 479=Velocidad |
| | | 480=Sensor ambiental |
| | | 481=Puede empezar a usar el sensor ambiental |
| | | 482=Sensor de gas |
| | | 483=Introduzca el código MAC del dispositivo |
| | | 484=Abierto |
| | | 485=Comprobar/Modificar |
| | | 486=Función de defensa/Estado de alarma |
| | | 487=Objetivo de alarma despues de la activación |
| | | 488=Paso de rostro |
| | | 489=Aplicar identificación facil a: |
| | | 490=Control de acceso a la comunidad |
| | | 491=Acerda de identificacion facil y privacidad |
| | | 492=Borrar datos |
| | | 493=Resetear identificación facial |
| | | 494=Establecer identificación facial |
| | | 495=Configuración paso de rostro |
| | | 496=No hay ningun estado de implementacion de tareas asociado |
| | | 497=Personalizado |
| | | 498=Implementación retrasada |
| | | 499=Agregar función de defensa |
| | | 500=Agregar destino de alarma |
| | | 501=Alarma de seguridad: se activa en {0} |
| | | 502=Borrar la alarma de seguridad? |
| | | 503=Exceso de estandar |
| | | 504=Bueno |
| | | 505=Excelente |
| | | 506=Indentificacion facil ingresada correctamente |
| | | 507=Ingreso identificación facil fallida |
| | | 508=Formaldehído |
| | | 509=Introduzca el nombre de seguridad |
| | | 510=Seleccione el destino de implementación |
| | | 511=Atenuación combinada |
| | | 512=Mensajes no estan habilitados, vaya a configuración |
| | | 513=Introduzca el codigo de emparejamiento |
| | | 514=La información de la ubicación del gateway no está configurada |
| | | 515=Agregar seguridad |
| | | 516=Withdrawal |
| | | ------ |
| | | 517=Instantaneous value |
| | | 518=Cumulative power consumption |
| | | 519=Voltage (V) |
| | | 520=Electric Current (A) |
| | | 521=Power (W) |
| | | 522=Refresh |
| | | 523=Delay alarm |
| | | 524=Bypass |
| | | 525=Enable |
| | | 526=Cancel account |
| | | 527=Homekit support notes |
| | | 528=Firmware update |
| | | 529= |
| | | 530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password. |
| | | 531=Password free unlocking within five minutes |
| | | 532=The device is offline and cannot be operated temporarily |
| | | 533=Statistical Chart |
| | | 534=Data |
| | | 535=Dew point temperature |
| | | 536=Temperature statistics |
| | | 537=Humidity statistics |
| | | 538=Uint |
| | | 539=Smart panel |
| | | 540=En alarma |
| | | 541=Monitoring |
| | | 542=Wandering alarm |
| | | 543=Get more |
| | | |
| | | 1000=Humedad de ambiente |
| | | 1001=V-chip |
| | | 1002=Anión |
| | | 1003=Estirilización |
| | | 1004=Humidificar |
| | | 1005=Restablecimiento del elemento de filtro |
| | | 1006=Iluminación |
| | | 1007=Automático |
| | | 1008=Manual |
| | | 1009=Fuerte |
| | | 1010=Dormir |
| | | 1011=Tiempo |
| | | 1012=Velocidad del viento |
| | | 1013=Engranaje |
| | | 1014=Confirme si el elemento filtrante se ha restablecido y opere el equipo de acuerdo con el manual de instrucciones para que la vida útil del elemento filtrante se vuelva a cronometrar |
| | | 1015=Marcha baja |
| | | 1016=Engranaje medio |
| | | 1017=Marcha alta |
| | | 1018=Configuración de temportización |
| | | 1019=Hora |
| | | 1020=Tiempo del elemento de filtro: |
| | | 1021=Filtro de aire |
| | | 1022=Velocidad actual del viento |
| | | 1023=Cancelar tiempo |
| | | 1024=Robot de barrido de pisos |
| | | 1025=Succión |
| | | 1026=1° Marcha |
| | | 1027=2° Marcha |
| | | 1028=3° Marcha |
| | | 1029=Carga |
| | | 1030=Voz |
| | | 1031=Silenciar |
| | | 1032=Modo de limpieza |
| | | 1033=Gestion de consumibles |
| | | 1034=Historia |
| | | 1035=Automático |
| | | 1036=Aleatorio |
| | | 1037=Muro |
| | | 1038=Espiral |
| | | 1039=Área total limpia |
| | | 1040=Tiempo total de limpieza |
| | | 1041=Vida útil restante del cepillo lateral |
| | | 1042=Vida útil residual del cepillo de rodillos |
| | | 1043=Vida útil restante de la pantalla de filtro |
| | | 1044=Restablecer pincel de bordes |
| | | 1045=Restablecer cepillo de rollo |
| | | 1046=Restablecer pantalla |
| | | 1047=Confirmar para restablecer el pincel de bordes? |
| | | 1048=Confirmar para restablecer el cepillo de rollo? |
| | | 1049=Confirmar para restablecer la pantalla? |
| | | 1050=Agregar dispositivo |
| | | 1051=Mini control remoto inteligente |
| | | 1052=Agregar control remoto por infrarrojos |
| | | 1053=Presione el botón del control remoto infrarrojo{0} durante 3 segundos y la luz indicadora{0} se enciende en azul rápidamente |
| | | 1054=Asegúrese de que su Bluetooth{0} esté activado y se pueda buscar |
| | | 1055=Siguiente paso |
| | | 1056=Buscando dispositivo… |
| | | 1057=No se ha encontrado ningún mando a distancia por infrarrojos |
| | | 1058=1.Compruebe si el dispositivo está{0} encendido normalmente{0}2.Compruebe si la función Bluetooth{0} está activada normalmente{0}3.Compruebe si el indicador{0} luz parpadea en azul |
| | | 1059=Buscar de nuevo |
| | | 1060=Conectar WiFi |
| | | 1061=En la actualidad, solo es compatible con la red WiFi 2.4G{0} y no admite nombres WiFi{0} con caracteres chinos |
| | | 1062=Contraseña |
| | | 1063=Conectando… |
| | | 1064=Haga que el control remoto por infrarrojos{0} lo más cerca posible del enrutador WiFi |
| | | 1065=Enlace de red |
| | | 1066=Subir a nube |
| | | 1067=Conectado con éxito |
| | | 1068=1.Compruebe si el dispositivo está{0} encendido normalmente{0}2.Active la función Bluetooth{0}3.Presione el botón durante 10 s y el indicador{0} luz estará encendida |
| | | 1069=Error al agregar |
| | | 1070=Agregado con éxito |
| | | 1071=¡Puedes empezar a usar el control infrarrojo{0}remote! |
| | | 1072=Empezar a usar |
| | | 1073=Por favor encender Bluethooth |
| | | 1074=Información de ubicación (GBS) no disponible |
| | | 1075=Red no disponible |
| | | 1076=Seleccione el mando a distancia por infrarrojos |
| | | 1077=Aire fresco |
| | | 1078=Pantalla de filtro residual |
| | | 1079=Energia |
| | | 1080=Ventilado |
| | | ;别 |
| | | 1081=1° Marcha |
| | | 1082=2° Marcha |
| | | 1083=3° Marcha |
| | | 1084=1° Marcha |
| | | 1085=2° Marcha |
| | | 1086=3° Marcha |
| | | 1087=Desbloquear |
| | | 1088=Temp. Contraseña |
| | | 1089=Conectado |
| | | 1090=Desconectado |
| | | 1091=Generar |
| | | 1092=Tiempo efectivo |
| | | 1093=Tiempo de caducidad |
| | | 1094=Seleccionar hora |
| | | 1095=Seleccionar fecha |
| | | 1096=Generar |
| | | 1097=Se ha copiado la contraseña actual |
| | | 1098=Borrar contraseña? |
| | | 1099=El tiempo de caducidad debe ser posterior al tiempo efectivo |
| | | 1100=Método de desbloqueo |
| | | 1101=Se sincronizará con el bloqueo real, ¿confirmar para eliminar? |
| | | 1102=Borrar |
| | | 1103=Comentar |
| | | 1104=El comentario no puede estar en blanco |
| | | 1105=Asignar a: |
| | | 1106=Escena de destino no existe |
| | | 1107=Seleccionar escena |
| | | 1108=Desbloquear |
| | | 1109=Siempre encendido |
| | | 1110=Configuración |
| | | 1111=Automatización |
| | | 1112=Activar el modo "Siempre encendido" |
| | | 1113=Desactivar el modo "Siempre encendido" |
| | | 1114=Editar |
| | | 1115=Siempre Encendido estará apagado {0} |
| | | 1116=Condición |
| | | 1117=Movimiento |
| | | 1118=Siempre encendido |
| | | 1119=Bloquear |
| | | 1120=Usuario |
| | | 1121=Método de desbloqueo |
| | | 1122=Huella digital |
| | | 1123=Tarjeta |
| | | 1124=Clave |
| | | 1125=Información |
| | | 1126=Desbloquear |
| | | 1127=Alarma |
| | | 1128=Sin conexión |
| | | 1129=Para el primer usuario, introduzca la contraseña. |
| | | 1130=Introduzca la contraseña de administrador |
| | | 1131=Enlace correcto |
| | | 1132=Saltar a la contraseña personal para desbloquear |
| | | 1133=Saltar |
| | | 1134=Por favor, dibuja tu patrón |
| | | 1135=El bloqueo estará siempre encendido después de la configuración, confirme para continuar |
| | | 1136=Confirmar |
| | | 1137=Caducar |
| | | 1138=Siempre Encendido caducará despues de {0} horas |
| | | 1139=Introduzca el tiempo de caducidad |
| | | 1140=El tiempo de caducidad no debe ser superior a 72 horas |
| | | 1141=El tiempo de caducidad no debe ser inferior a 1 hora |
| | | 1142=Error al establecer conexión, intentelo de nuevo |
| | | 1143=No se puede verificar el ID de administrador, vuelva a iniciar sesión en la cuenta |
| | | 1144=Su residencia está siendo migrada a otro HDL |
| | | 1145=Nota: |
| | | 1. Todos sus datos de residencia se migrarán a un nuevo usuario. {0} 2. Después de la migración, el miembro original será{0}automáticamente desvinculado de esta residencia. {0} 3. La nueva cuenta es una HDL válida. {0} 4. La cuenta del receptor no puede ser la misma{0} que la del lado de la migración. |
| | | 1147=Confirmar |
| | | 1148=Cuenta del receptor de entrada |
| | | 1149=Perfil |
| | | 1150=Confirmar migración de administrador de {0} a {1} |
| | | 1151=La cuenta no existe |
| | | 1152=No transferir la propiedad a usted mismo |
| | | 1153=Terminar |
| | | 1154=Transferir al usuario, por favor espere... |
| | | 1155={0} se ha convertido en administrador residencial |
| | | 1156=Los datos de residencia se eliminarán de su cuenta |
| | | 1157=No se puede migrar |
| | | 1158=Inténtelo de nuevo |
| | | 1159=Migración de la autoridad de administración |
| | | 1160=Su autoridad de administración se está migrando a otros miembros |
| | | 1161=1.Sus datos (datos en la nube) de la residencia serán{0}migrabados al nuevo administrador{0}2.Sus datos se intercambiarán con el miembro objetivo{0}y su permiso se cambiará al miembro objetivo{0} |
| | | 1162=Confirmar |
| | | 1163=No hay miembros para elegir |
| | | 1164=Confirmar la migración de la autoridad de administración de {0} a {1} |
| | | 1165=Migrar correctamente |
| | | 1166=No se puede migrar |
| | | 1167=Migrar correctamente, y sus permisos se convertirán en miembros normales |
| | | |
| | | 4000=Videoportero |
| | | 4001=Registro de llamadas |
| | | 4002=*Los registros en la nube solo se conservan durante 30 días |
| | | 4003=Llamada telefónica a domicilio |
| | | 4004=Contestado |
| | | 4005=Desbloqueado |
| | | 4006=Año |
| | | 4007=De |
| | | 4008=Llamada |
| | | 4009=Desbloqueado |
| | | 4010=Perdido |
| | | 4011=Rechazado |
| | | 4012=¡Los parámetros de configuración son anormales! |
| | | 4013=Código QR de control de acceso |
| | | 4014=Contraseña temporal |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | 5000=Musica |
| | | 5001=Grupo |
| | | 5002=Configuracion |
| | | 5003=Información general |
| | | 5004=Reproductor multimedia |
| | | 5005=Bluetooth |
| | | 5006=Region |
| | | 5007=Lista de canciones |
| | | 5008=Mis favoritos |
| | | 5009=Mi lista |
| | | 5010=Seleccionar fuente |
| | | 5011=Local |
| | | 5012=USB |
| | | 5013=Radio en linea |
| | | 5014=QQ musica |
| | | 5015=Bluetooth |
| | | 5016=Entrada de linea |
| | | 5017=Revisar el nombre |
| | | 5018=Individual |
| | | 5019=Juego aleatorio |
| | | 5020=Lista |
| | | 5021=Ha cambiado a: |
| | | 5022=Cancelar |
| | | 5023=Borrar |
| | | 5024=Editar |
| | | 5025=El nombre de la lista es el mismo |
| | | 5026=El nombre de la lista esta en blanco |
| | | 5027=Introduzca el nombre de la lista |
| | | 5028=Agregar nueva lista |
| | | 5029=Preguntar |
| | | 5030=Eliminar la carpeta o no? |
| | | 5031=Confirmar |
| | | 5032=El nombre está en blanco |
| | | 5033=Añadido a la lista de canciones |
| | | 5034=Radio |
| | | 5035=Seleccionar grupo |
| | | 5036=Play |
| | | 5037=Seleccione al menos mas de 2 reproductores multimedia |
| | | 5038=No se pueden seleccionar 2 o más de 2 reproductores multimedia principales para convertirse en un grupo |
| | | 5039=No ha seleccionado el reproductor multimedia |
| | | 5040=Seleccione esta opción para quitar el reproductor multimedia |
| | | 5041=No se ha seleccionado quitar el reproductor multimedia |
| | | 5042=Configurando |
| | | 5043=Borrando… |
| | | 5044=Volumen |
| | | 5045=Volumen general |
| | | 5046=Ajustar volumen |
| | | 5047="QQ music" no se ha instalado en su teléfono celular, proceda en el Centro de aplicaciones. |
| | | |
| | | 6000=Normal |
| | | 6001=Estado del dispositivo |
| | | 6002=piezas |
| | | 6003=Dispositivo de control IR actual |
| | | 6004=Se ha añadido el mando a distancia |
| | | 6005=AC |
| | | 6006=TV |
| | | 6007=Ventilador |
| | | 6008=Decodificador |
| | | 6009=DVD |
| | | 6010=Proyector |
| | | 6011=Personalizado |
| | | 6012=IR Control |
| | | 6013=Administración de dispositivos |
| | | 6014=Agregar mando de distancia |
| | | 6015=En linea |
| | | 6016=Sin conexión |
| | | 6017=Número de version |
| | | 6018=Introduzca el nombre de mando a distancia |
| | | 6019=Recordatorio: Después de crear el mando a distancia, se puede encontrar y utilizar en Function-Electrical Category{\r\n} |
| | | 6020=Boton recomendado |
| | | 6021=Introduzca el nombre del botón |
| | | 6022=Siguiente |
| | | 6023=Potencia |
| | | 6024=Volumen+ |
| | | 6025=Volumen- |
| | | 6026=Channel+ |
| | | 6027=Channel- |
| | | 6028=Subir |
| | | 6029=Bajar |
| | | 6030=Izquierda |
| | | 6031=Derecha |
| | | 6032=Silenciar |
| | | 6034=Confirmar |
| | | 6035=Reproducir |
| | | 6037=Salir |
| | | 6038=Menu |
| | | 6039=Pausar |
| | | 6040=Volver |
| | | 6041=Detener |
| | | 6042=Pagina de inicio |
| | | 6043=Avance rápido |
| | | 6044=Rebobinar |
| | | 6045=Tiempo |
| | | 6046=Copiar funcion de control remoto |
| | | 6047=Apunta al centro del mando a distancia y pulsa el mismo botón |
| | | 6048=Mando a distancia inteligente |
| | | 6049=Agregar botón |
| | | 6050=*Pulsación larga para la clasificación personalizada |
| | | 6051=Hecho |
| | | 6052=Agregado correctmente |
| | | 6053=Se puede clasificar -funcion-operación electrica y uso |
| | | 6054=Clasificación |
| | | 6055=Nombre del mando a distancia |
| | | 6056=Región |
| | | 6057=Continuar agregando |
| | | 6058=Eléctrico |
| | | 6059=Error al agregar |
| | | 6060=Reintentar |
| | | 6061=Hacer coincidir el mando a distancia |
| | | 6062=Haga clic en el botón de abajo |
| | | 6063=Confirmar si el dispositivo esta respondiendo |
| | | 6064=Error de control |
| | | 6065=Control exitoso |
| | | 6066=Encendido |
| | | 6067=Modo de enfriamiento |
| | | 6068= |
| | | 6069=Temperatura 26° |
| | | 6070=Eliminar dispositivo |
| | | 6071=Modificar nombre |
| | | 6072=Confirmar eliminación |
| | | 6073=Cancelar |
| | | 6074=El mando a distancia no puede superar los 10 puntos |
| | | 6075=El área donde pertenece el control remoto: |
| | | 6076=Editar información |
| | | 6077=Actualización de la versión |
| | | 6078=El sistema está en mantenimiento ~ Inténtelo de nuevo más tarde ~ |
| | | 6079=Error al obtener datos |
| | | 6080=Esta funcion no se admite temporalmente |
| | | 6081=Seleccionar banda IR |
| | | 6082= |
| | | 6083=Baja velocidad |
| | | 6084=Interruptor de velocidad del viento |
| | | 6085=Alta velocidad |
| | | 6086=Auto |
| | | 6087=Temperatura+ |
| | | 6088=Temperatura- |
| | | 6089=Purificador de aire |
| | | 6090=Calentador de agua |
| | | 6091=Producto no existe |
| | | 6092=El dispositivo no existe |
| | | 6093=El dispositivo no esta en linea |
| | | 6094=El dispositivo de puerta de enlace no existe |
| | | 6095=Mas de 30 botondes de adición |
| | | 6000=Renombrar |
| | | 6001=Introduzca el nombre |
| | | 6002=Xiaodu |
| | | 6003=aispeech |
| | | 6004=El sistema está en mantenimiento ~ Inténtelo de nuevo más tarde ~ |
| | | 6005=Desvinculado |
| | | 6006=Altavoz inteligente |
| | | 6007=Controlar contenido |
| | | 6008=Error al cagar datos |
| | | 6009=Error al configurar datos |
| | | 6010="Todavía no hay altavoz", "Vaya a la aplicación de terceros para vincular el altavoz inteligente". |
| | | 6011=La modificación de los comentarios no tiene éxito |
| | | 6012=Quieres desvincularte? |
| | | 6013=Desvinculación |
| | | 6014=transferir a app de terceros |
| | | 6015=Añadir altavoces |
| | | 7000=Crear automatización |
| | | 7001=Etidar automatización |
| | | 7002=Si |
| | | 7003=Cuando cumple las siguientes condiciones al mismo tiempo |
| | | 7004=Cundo cumple una de las condiciones siguintes |
| | | 7005=Continuar con la ejecución |
| | | 7006=L asiguiente acción |
| | | 7007=Método de reciclaje |
| | | 7008=Ejecutar una vez |
| | | 7009=Todos los días |
| | | 7010=Cada semana |
| | | 7011=Cada mes |
| | | 7012=Guardar |
| | | 7013=Mensaje push |
| | | 7014=Enviar notificación |
| | | 7015=Seleccionar la condición |
| | | 7016=Momento |
| | | 7017=Seleccione la condición de tiempo |
| | | 7018=Hora |
| | | 7019=Intervalo de tiempo |
| | | 7020=Hora |
| | | 7021=Minuto |
| | | 7022=Segundo |
| | | 7023=Cancelar |
| | | 7024=Seguro |
| | | 7025=*Debe ejecutar la automatización que establezca una vez durante el intervalo de tiempo establecido. |
| | | 7026=Hora de inicio |
| | | 7027=Hora de finalización |
| | | 7028=Función |
| | | 7029=Seleccionar condición funcional |
| | | 7030=Toda la región |
| | | 7031=Toda la función |
| | | 7032=Encendido |
| | | 7033=Apagado |
| | | 7034=Conmutador |
| | | 7035=Completo |
| | | 7036=Agregar ejecución |
| | | 7037=Lunes |
| | | 7038=Martes |
| | | 7039=Miércoles |
| | | 7040=Jueves |
| | | 7041=Viernes |
| | | 7042=Sábado |
| | | 7043=Domingo |
| | | 7044=Cumplir con la condición |
| | | 7045=Configuración |
| | | 7046=Nombre |
| | | 7047=Cambiar el nombre |
| | | 7048=El nombre de la automatización ya existe |
| | | 7049=Eliminar automatización o no? |
| | | 7050=Agregar escena |
| | | 7051=Retraso |
| | | 7052=No se puede guardar, inténtelo de nuevo |
| | | 7053=No se puede eliminar, inténtelo de nuevo |
| | | 7054=Pausar |
| | | 7055=Brillo |
| | | 7056=Porcentaje |
| | | 7057=Modo |
| | | 7058=Enfriamiento |
| | | 7059=Calefacción |
| | | 7060=Automático |
| | | 7061=Deshumidificar |
| | | 7062=Temperatura |
| | | 7063=Velocidad de ventilador |
| | | 7064=Día |
| | | 7065=Noche |
| | | 7066=Abandonar |
| | | 7067=General |
| | | 7068=Tiempo |
| | | 7069=No ha configurado la automatización, procesa a configurar |
| | | 7070=Nada está aquí |
| | | 7071=No se ha establecido la hora de inicio, por favor configurar |
| | | 7072=La hora de finalización no se ha establecido, por favor estableza |
| | | 7073=La hora de inicio y la hora de finalizacion no deben ser las mismas |
| | | 7074=La hora de inicio no debe ser mayor a la hora de finalización |
| | | 7075=La condicion no debe estar en blanco |
| | | 7076=Target no debe estar en blanco |
| | | 7077=La hora no se ha establecido, por favor establezca |
| | | 7078=L a condición o el objetivo no deben estar en blanco |
| | | 7079=L a puerta de enlace esta fuera de línea |
| | | 7080=Salida/Puesta de sol/Mediodía |
| | | 7081=Amanecer |
| | | 7082=Puesta de sol |
| | | 7083=Mediodía |
| | | 7084=A tiempo |
| | | 7085=Avance |
| | | 7086=Minutos |
| | | 7087=Cambio exterior |
| | | 7088=Seleccionar condicion de cambio al aire libre |
| | | 7089=Temperatura exterior, humedad, cambio de PM2.5 |
| | | 7090=Cambio de clima (clima urbano) |
| | | 7091=Cambio en el entorno exterior |
| | | 7092=Temperatura superior a |
| | | 7093=Temperatura inferior |
| | | 7094=Humedad superior a |
| | | 7095=Humedad por debajo |
| | | 7096=PM2.5 supeior a |
| | | 7097=PM2.5 por debajo |
| | | 7098=Día soleado |
| | | 7099=Nublado |
| | | 7100= |
| | | 7101=*Establezca el valor en este rango (1 ~ 100). |
| | | 7102=Sin valor establecido |
| | | 7103=Excelente: 0 ~ 35ug/m3 |
| | | 7104=Bueno: 36 ~ 75ug/m3 |
| | | 7105=Contaminación lumínica: 76 ~ 115ug/m3 |
| | | 7106=Contaminación moderada: 116 ~ 150ug/m3 |
| | | 7107=Contaminación intensa: > 150ug/m3 |
| | | 7108=Fuga/Sin fuga |
| | | 7109=Fuga |
| | | 7110=Sin fuga |
| | | 7111=Fuga de agua/sin fugas de agua |
| | | 7112=Fuga de agua |
| | | 7113=Sin fuga de agua |
| | | 7114=Alguien/Nadie |
| | | 7115=Alguien |
| | | 7116=Nadie |
| | | 7117=Abierto/Cerrado |
| | | 7118=Activado |
| | | 7119=Cerrar |
| | | 7120=Función anti-desmantelamiento |
| | | 7121=En linea |
| | | 7122=Fuera de linea |
| | | 7123=Calidad del aire |
| | | 7124=Excelente |
| | | 7125=Bueno |
| | | 7126=Pobre |
| | | 7127=Enviar notificación |
| | | 7128=Contenido de la notificación |
| | | 7129=(dentro de los 100 caracteres) |
| | | 7130=Selección de cuenta |
| | | 7131=Aplicación push |
| | | 7132=Automatización |
| | | 7133=Ejecutado |
| | | 7134=Estado de destino |
| | | 7135=Caída |
| | | 7136=Temperatura |
| | | 7137=Humedad |
| | | 7138=PM2.5 |
| | | 7139=CO2 |
| | | 7140=TVOC |
| | | 7141=Exceder |
| | | 7142=Grave |
| | | 7143=Alto |
| | | 7144=Excelencia |
| | | 7145=Seguridad |
| | | 7146=Añadir seguridad |
| | | 7147=Armado |
| | | 7148=Desarmado |
| | | 7149=Manualmente |
| | | 7150=Inteligente |
| | | 7151=Bueno |
| | | 7152=Dejar o Arrivar a un lugar |
| | | 7153=Salir |
| | | 7154=Llegar |
| | | 9000=Inicio sesión con un nuevo número de teléfono celular |
| | | 9001=Inicie sesión con una nueva dirección de correo eléctrónico |
| | | 9002=Nuevo numero de celular revisado |
| | | 9003=Nuevo numero de celular enlazado |
| | | 9004=Nueva dirección de correo electrónico revisado |
| | | 9005=Nueva dirección de correo electrónico enlazado |
| | | 9006=El código de verificación puede enviarse más tarde, espere. |
| | | 9007=Por favor, espere |
| | | 9008=Volver |
| | | 9009=El usuario no desea ser nombrado |
| | | 9010=Nueva contraseña |
| | | 9011=Introduzca la nueva contraseña nuevamente |
| | | 9012=De acuerdo |
| | | 9013=Acuerdo de servicio |
| | | 9014=Normativa de protección de la información del usuario |
| | | 9015=y |
| | | 9016=Lea y acepte el Acuerdo de servicio del usuario y las regulaciones de protección de la información del usuario. |
| | | 9017=Esta seguro de cerrar sesión? |
| | | 9018=Seleccione pais/región |
| | | 9019=Actualizar ahora |
| | | 9020=Ahora no |
| | | 9021=País/región |
| | | 9022=Información del servidor |
| | | 9023=Servidor actual |
| | | 9024=*El servidor hace referencia a la base de datos para la nube, sin necesidad alguna, no se recomienda realizar migración de datos. |
| | | 9025=Si es necesaria la migración de datos, marque |
| | | 9026=Introducción a la función |
| | | 9027=Quejas |
| | | 9028=Actualización de la versión |
| | | 9029=(por favor indique "quejas" en el título, luego procesaremos en prioridad.) |
| | | 9030=Copia realizada |
| | | 9031=No hay nada aquí |
| | | 9032=Obtener nueva versión |
| | | 9033=Última versión |
| | | 9034=Que puedo hacer por ti? |
| | | 9035=Problema de función |
| | | 9036=Problema de escena |
| | | 9037=Soporte de aplicaciones |
| | | 9038=(Preguntas frecuentes) |
| | | 9039=Compartir y función |
| | | 9040=Alertas |
| | | 9041=Información del sistema |
| | | 9042=Centro de información |
| | | 9043=Tenga en cuenta que su número de cuenta ha iniciado sesión en otro lugar. Si no lo hace usted mismo, cambie la contraseña de inmediato. |
| | | 9044=Cargado correctamente |
| | | 9045=No se puede cargar |
| | | 9046=Revisado correctamente |
| | | 9047=La contraseña que ha revisado ha entrado en vigor, vuelva a iniciar sesión. |
| | | 9048=Iniciar sesion con la contraseña del numero de cuenta |
| | | 9049=Contraseña incorrecta para muchas veces, ¡el número de cuenta está bloqueado! |
| | | 9050=Verificar la identificación facial |
| | | 9051=Error al guardar la identificación facial del usuario |
| | | 9052=La notificación push de registro esta disponible |
| | | 9053=La notificación push de registro es anormal |
| | | 9054=Verificación numerica de contraseña |
| | | 9055=Verificación de gestos |
| | | 9056=Año |
| | | 9057=Sin función regional |
| | | 9058=Guardar o no? |
| | | 9059=No compartir ahora |
| | | 9060=Usos-permiso |
| | | 9061=Encuentra tu contraseña haciendo clic en "Olvidé mi contraseña", o inténtalo de nuevo en {0} minuto. |
| | | 9062=Comprobar |
| | | 9063=Todavía tienes {0} veces. |
| | | 9064=Altavoz inteligente |
| | | 9065=Gestión de datos |
| | | 9066=Comentarios |
| | | 9067=Los comentarios no pueden estar en blanco |
| | | 9068=Desea desvincularse? |
| | | 9069=Aviso de propiedad |
| | | 10000=Contrasela no válida, vuelva a iniciar sesión |
| | | 10001=Error al solicitar el servidor, inténtelo de nuevo más tarde. |
| | | 10002=Mantenimiento del sistema, inténtalo de nuevo mas tarde |
| | | 10003=No puede iniciar sesión, agregue la residencia al principio. |
| | | 10004=El número de cuenta ya existe |
| | | 10005=Envías el código de verificación con demasiada frecuencia, inténtalo de nuevo más tarde. |
| | | 10006=Error de firma |
| | | 10007=Sistema ocupado, intentelo de nuevo mas tarde! |
| | | 10008=Contrasea no válida para iniciar sesión |
| | | 10009=El usuario ha sido deshabilitado |
| | | 10010=Error de contraseña original |
| | | 10011=El número de subcuenta ya existe |
| | | 10012=El npumero de subcuenta no existe |
| | | 10013=No esta permitido agregarse como miembro |
| | | 10014=La residencia actual no pertenece al este número de cuenta |
| | | 10015=El nombre de la residencia ya existe |
| | | 10016=La residencia no existe |
| | | 10017=Error de solicitud, parámetro anormal! |
| | | 10018=El número que enlazaste es duplicado |
| | | 10019=Enlazar el gateway primero |
| | | 10020=El gateway no existe |
| | | 10021=El gateway esta fuera de línea |
| | | 10022=El dispositivo está fuera de línea |
| | | 10023=Error de control |
| | | 10024=La escena ya existe |
| | | 10025=La automatización ya existe |
| | | 10026=Spk no admite esta función |
| | | 10027=Spk no admite este valor funcional |
| | | 10028=No tienes permiso |
| | | 10029=El destino del dispositivo está duplicado |
| | | 10030=No tiene permiso para el control remoto |
| | | 10031=El dispositivo no debe estar en blanco |
| | | 10032=El usuario no tiene permiso |
| | | 10033=El dispositivo no existe |
| | |
| | | endTime = DateTime.Now.AddSeconds(5); |
| | | |
| | | MainPage.Log($"读取设备信息成功"); |
| | | var deviceList = JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString()); |
| | | MainPage.Log($"sid列表获取===="+ deviceResult.Data.ToString()); |
| | | var deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString()); |
| | | if (deviceList == null) |
| | | { |
| | | deviceList = new DevcieApiPack(); |
| | |
| | | var deviceResult2 = Ins.HttpRequest.GetDeviceList("30", Convert.ToInt32(deviceList.pageNo) + 1 + ""); |
| | | if (deviceResult2.Code == StateCode.SUCCESS) |
| | | { |
| | | var deviceList2 = JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString()); |
| | | var deviceList2 = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString()); |
| | | deviceList.pageNo = deviceList2.pageNo; |
| | | deviceList.list.AddRange(deviceList2.list); |
| | | } |
| | |
| | | { |
| | | public static class StringId |
| | | { |
| | | |
| | | /// <summary> |
| | | /// 访客管理 |
| | | /// 获取更多 |
| | | /// </summary> |
| | | public const int VisitorManage = 533; |
| | | public const int GetMore = 543; |
| | | /// <summary> |
| | | /// 徘徊报警 |
| | | /// </summary> |
| | | public const int WanderingAlarm = 542; |
| | | /// <summary> |
| | | /// 监控中 |
| | | /// </summary> |
| | | public const int Monitoring = 541; |
| | | /// <summary> |
| | | /// 报警中 |
| | | /// </summary> |
| | | public const int InAlarming = 540; |
| | | /// <summary> |
| | | /// 智能面板 |
| | | /// </summary> |
| | | public const int SmartPanel = 539; |
| | | /// <summary> |
| | | /// 单位 |
| | | /// </summary> |
| | | public const int Uint = 538; |
| | | /// <summary> |
| | | /// 湿度统计图 |
| | | /// </summary> |
| | | public const int HumidityStatistics = 537; |
| | | |
| | | /// <summary> |
| | | /// 温度统计图 |
| | | /// </summary> |
| | | public const int TemperatureStatistics = 536; |
| | | /// <summary> |
| | | /// 露点温度 |
| | | /// </summary> |
| | | public const int DewPointTemp = 535; |
| | | /// <summary> |
| | | /// 数据 |
| | | /// </summary> |
| | | public const int Data = 534; |
| | | /// <summary> |
| | | /// 24小时统计图 |
| | | /// </summary> |
| | | public const int StatisticalChart24Hour = 533; |
| | | /// <summary> |
| | | /// 设备离线中,暂时无法操作 |
| | | /// </summary> |
| | |
| | | /// </summary> |
| | | public const int modifyName = 5017; |
| | | /// <summary> |
| | | /// 单曲播放 |
| | | /// 单曲循环播放 |
| | | /// </summary> |
| | | public const int singleMode = 5018; |
| | | public const int singleCycleMode = 5018; |
| | | /// <summary> |
| | | /// 随机播放 |
| | | /// </summary> |
| | |
| | | /// 你手机暂未安装"QQ音乐"{\r\n}请前往手机商场安装 |
| | | /// </summary> |
| | | public const int qqMsuicTip = 5047; |
| | | /// <summary> |
| | | /// 循序循环 |
| | | /// </summary> |
| | | public const int orderMode =5048; |
| | | /// <summary> |
| | | /// 单曲播放 |
| | | /// </summary> |
| | | public const int single =5049; |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 正常 |
| | |
| | | /// 到达 |
| | | /// </summary> |
| | | public const int daoda = 7154; |
| | | /// <summary> |
| | | /// 求救/正常 |
| | | /// </summary> |
| | | public const int qiujiuandzhengchang = 7155; |
| | | /// <summary> |
| | | /// 求救 |
| | | /// </summary> |
| | | public const int qiujiu = 7156; |
| | | /// <summary> |
| | | /// 是否开锁时 |
| | | /// </summary> |
| | | public const int shifoukaisuoshi = 7157; |
| | | /// <summary> |
| | | /// 是 |
| | | /// </summary> |
| | | public const int shi = 7158; |
| | | |
| | | |
| | | |
| | |
| | | } |
| | | if (DB_ResidenceData.Instance.GatewayType == 0) |
| | | { |
| | | new Control_Udp().ControlBytesSend(Command.ReadGateway, 255, 255, new byte[] { (byte)new Random().Next(255), (byte)new Random().Next(255) }); |
| | | new Control_Udp().ControlBytesSend(Command.ReadGateway, 255, 255, |
| | | new byte[] { (byte)new Random().Next(255), (byte)new Random().Next(255) }); |
| | | } |
| | | else if (DB_ResidenceData.Instance.GatewayType == 1) |
| | | { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | var localFunction = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (localFunction == null) |
| | |
| | | |
| | | /// <summary> |
| | | /// 控制bus场景 |
| | | /// todo |
| | | /// </summary> |
| | | public void ControlBusScenes(Scene scene) |
| | | { |
| | |
| | | |
| | | /// <summary> |
| | | /// 数据包处理 |
| | | /// ps:由commonpage转移过来,还需要转移合适的位置管理 |
| | | /// </summary> |
| | | /// <param name="subnetID"></param> |
| | | /// <param name="deviceID"></param> |
| | |
| | | { |
| | | try |
| | | { |
| | | var mMes = Encoding.UTF8.GetString(e.ApplicationMessage.Payload); |
| | | Newtonsoft.Json.Linq.JObject pairs = Newtonsoft.Json.Linq.JObject.Parse(mMes); |
| | | var pairSid = pairs.GetValue("sid").ToString(); |
| | | var pairOnline = pairs.GetValue("online"); |
| | | if (!string.IsNullOrEmpty(pairSid.ToString())) |
| | | { |
| | | var function_online = FunctionList.List.Functions.Find((obj) => obj.sid == pairSid); |
| | | if (function_online != null){ |
| | | function_online.online = (bool)pairOnline; |
| | | HomePage.LoadEvent_RefreshDevcieOnline(function_online); |
| | | FunctionPage.UpdataOnline(function_online); |
| | | RoomPage.UpdataOnline(function_online); |
| | | } |
| | | } |
| | | //var mMes = Encoding.UTF8.GetString(e.ApplicationMessage.Payload); |
| | | //Newtonsoft.Json.Linq.JObject pairs = Newtonsoft.Json.Linq.JObject.Parse(mMes); |
| | | //var pairSid = pairs.GetValue("sid").ToString(); |
| | | //var pairOnline = pairs.GetValue("online"); |
| | | //if (!string.IsNullOrEmpty(pairSid.ToString())) |
| | | //{ |
| | | // var function_online = FunctionList.List.Functions.Find((obj) => obj.sid == pairSid); |
| | | // if (function_online != null){ |
| | | // function_online.online = (bool)pairOnline; |
| | | // HomePage.LoadEvent_RefreshDevcieOnline(function_online); |
| | | // FunctionPage.UpdataOnline(function_online); |
| | | // RoomPage.UpdataOnline(function_online); |
| | | // } |
| | | //} |
| | | |
| | | } |
| | | catch(Exception ex) |
| | |
| | | { |
| | | try |
| | | { |
| | | var securityBytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, DB_ResidenceData.Instance.HomeGateway.aesKey); |
| | | var securityBytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, |
| | | DB_ResidenceData.Instance.HomeGateway.aesKey); |
| | | var securityString = Encoding.UTF8.GetString(securityBytes); |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<SecurityStatusObj>(securityString); |
| | | MainPage.Log($"安防状态变化:{securityString}"); |
| | |
| | | } |
| | | #endregion |
| | | //A网关设备状态-包含涂鸦设备 |
| | | //Tag 网络状态解析 |
| | | else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/property/send") |
| | | { |
| | | var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey); |
| | | var revString = Encoding.UTF8.GetString(bytes); |
| | | MainPage.Log($"mqtt 状态更新:{revString}"); |
| | | Control.Ins.UpdataFunctionStatus(revString, null, true); |
| | | //Control.Ins.MsgInfoList.Add($"mqtt 状态更新:{revString}"); |
| | | //Control.Ins.MsgInfoList.Add(revString + "\r\n"); |
| | | } |
| | | //一端口数据解析 |
| | |
| | | |
| | | if (!string.IsNullOrEmpty(DB_ResidenceData.Instance.HomeGateway.aesKey)) |
| | | { |
| | | packet.Bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, DB_ResidenceData.Instance.HomeGateway.aesKey); |
| | | packet.Bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, |
| | | DB_ResidenceData.Instance.HomeGateway.aesKey); |
| | | } |
| | | else |
| | | { |
| | |
| | | /// <summary> |
| | | /// 红外宝下的遥控器列表 |
| | | /// </summary> |
| | | public const string API_POST_Ir_List = ":/home-wisdom/app/device/ir/list"; |
| | | public const string API_POST_Ir_List = "/home-wisdom/app/device/ir/list"; |
| | | /// <summary> |
| | | /// 遥控器红外码学习 |
| | | /// </summary> |
| | |
| | | /// </summary> |
| | | public byte timeFlag = 0; |
| | | |
| | | public string GetWrokModeIconPath(string value, bool lighting = true) |
| | | { |
| | | var imagePath = "FunctionIcon/AC/HeatingIcon.png"; |
| | | |
| | | switch (value) |
| | | { |
| | | case "heat": |
| | | imagePath = lighting ? "FunctionIcon/AC/HeatingIcon.png" : "FunctionIcon/AC/HeatingIconGray.png"; |
| | | break; |
| | | case "cool": |
| | | imagePath = lighting ? "FunctionIcon/AC/CoolIcon.png" : "FunctionIcon/AC/CoolIconGray.png"; |
| | | break; |
| | | case "economic": |
| | | imagePath = lighting ? "FunctionIcon/FloorHeating/EconomicIcon.png" : "FunctionIcon/FloorHeating/EconomicIconGray.png"; |
| | | break; |
| | | } |
| | | |
| | | return imagePath; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取模式的icon路径 |
| | | /// <param name="lightingIcon">获取的图标类型,默认是点亮</param> |
| | |
| | | /// <returns></returns> |
| | | public string GetAttrState(string key) |
| | | { |
| | | //一级查询keyValue值 |
| | | var attrState = attributes.Find((s) => s.key == key.ToString()); |
| | | if (attrState == null || string.IsNullOrEmpty(attrState.state)) |
| | | if (attrState == null) |
| | | { |
| | | return "0"; |
| | | } |
| | | if (string.IsNullOrEmpty(attrState.state)) |
| | | { |
| | | //二级查询keyValue值 |
| | | return GetOriginalState(key); |
| | | } |
| | | return attrState.state; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取初始状态 |
| | | /// 默认值:0 |
| | | /// </summary> |
| | | /// <param name="key">语雀定义的属性值</param> |
| | | /// <returns></returns> |
| | | public string GetOriginalState(string key) |
| | | { |
| | | var originalState = status.Find((s) => s.key == key.ToString()); |
| | | if (originalState == null || string.IsNullOrEmpty(originalState.value)) |
| | | { |
| | | return "0"; |
| | | } |
| | | return originalState.value; |
| | | } |
| | | /// <summary> |
| | | /// 设置属性状态 |
| | |
| | | public List<string> roomIds = new List<string>(); |
| | | |
| | | /// <summary> |
| | | /// 存储属性配置 |
| | | /// 环境传感器的等级 |
| | | /// </summary> |
| | | public List<AttrKeyConfig> attrKeyConfigs = new List<AttrKeyConfig>(); |
| | | |
| | | public List<AttrKeyConfig> GetAttrKeyConfigs(string key) |
| | | { |
| | | if (attrKeyConfigs.Count == 0) |
| | | { |
| | | switch (key) |
| | | { |
| | | case "pm2.5": |
| | | // |
| | | break; |
| | | } |
| | | } |
| | | return attrKeyConfigs; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// bus协议数据格式 |
| | | /// 使用A协议控制时,改属性为空 |
| | | /// </summary> |
| | |
| | | /// 是否在线 |
| | | /// </summary> |
| | | public bool online = true; |
| | | |
| | | /// <summary> |
| | | /// 环境面板 绑定的 设备目标sid列表 |
| | | /// </summary> |
| | | public List<string> targetSids = new List<string>(); |
| | | /// <summary> |
| | | /// 云端数据创建的时间 |
| | | /// </summary> |
| | |
| | | /// 空调 |
| | | /// </summary> |
| | | public const string HvacAC = "hvac.ac"; |
| | | /// <summary> |
| | | /// 毛细管空调 |
| | | /// </summary> |
| | | public const string HvacCac = "hvac.cac"; |
| | | |
| | | /// <summary> |
| | | /// 空调spk列表 |
| | |
| | | spkList.Add(AcStandard); |
| | | spkList.Add(HvacAC); |
| | | spkList.Add(AcIr); |
| | | spkList.Add(HvacCac); |
| | | return spkList; |
| | | } |
| | | #endregion |
| | |
| | | public const string SenesorMegahealth = "sensor.megahealth"; |
| | | public const string SenesorMegahealth2 = "sensor.megahealth.zg"; |
| | | /// <summary> |
| | | /// 紧急呼叫 |
| | | /// </summary> |
| | | public const string SensorHelp = "sensor.help"; |
| | | /// <summary> |
| | | /// 安防传感器spk列表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | |
| | | return spkList; |
| | | } |
| | | #endregion |
| | | |
| | | public const string PanelEnvironment = "screen.panel"; |
| | | /// <summary> |
| | | /// 面板spk列表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static List<string> PanelSpkList() |
| | | { |
| | | var spkList = new List<string>(); |
| | | spkList.Add(SensorHelp); |
| | | spkList.Add(PanelEnvironment); |
| | | return spkList; |
| | | } |
| | | |
| | | #region 环境传感器 |
| | | /// <summary> |
| | |
| | | public string module = ""; |
| | | public string version = ""; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 功能属性相关配置信息 |
| | | /// 环境传感器等级使用 |
| | | /// </summary> |
| | | public class AttrKeyConfig |
| | | { |
| | | public string key = string.Empty; |
| | | /// <summary> |
| | | /// 配置类型 |
| | | /// interval 区间 |
| | | /// 目前只支持:interval |
| | | /// </summary> |
| | | public string type = string.Empty; |
| | | |
| | | public string unit = string.Empty; |
| | | |
| | | public List<AttrKeyInfo> configs = new List<AttrKeyInfo>(); |
| | | |
| | | } |
| | | |
| | | public class AttrKeyInfo |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public string start = string.Empty; |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public string end = string.Empty; |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public string color = string.Empty; |
| | | /// <summary> |
| | | /// 描述 |
| | | /// </summary> |
| | | public string desc = string.Empty; |
| | | } |
| | | } |
| | |
| | | }; |
| | | dimmerControlBar.OnProgressChangedEvent = (sender, e) => { |
| | | dimmerControlBar.ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1; |
| | | //light.brightness = e; |
| | | //light.trait_on_off.curValue = e > 0 ? "on" : "off"; |
| | | function.SetAttrState(FunctionAttributeKey.Brightness, e); |
| | | function.trait_on_off.curValue = e > 0 ? "on" : "off"; |
| | | |
| | | //if (e == 0 || e == 100) |
| | | //{ |
| | | // //Control.Send(CommandType_A.write, light); |
| | | // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | // d.Add("brightness", light.brightness.ToString()); |
| | | // Control.Ins.SendWriteCommand(light, d); |
| | | //} |
| | | //else |
| | | //{ |
| | | // var tm = (DateTime.Now - light.refreshTime).TotalMilliseconds; |
| | | // Console.WriteLine("skip time "+tm); |
| | | // if (300 < tm) |
| | | // { |
| | | // light.refreshTime = DateTime.Now; |
| | | // new System.Threading.Thread(() => |
| | | // { |
| | | // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | // d.Add("brightness", light.brightness.ToString()); |
| | | // Control.Ins.SendWriteCommand(light, d); |
| | | // }) |
| | | // { IsBackground = true }.Start(); |
| | | // } |
| | | //} |
| | | if (e == 0 || e == 100) |
| | | { |
| | | //Control.Send(CommandType_A.write, light); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add("brightness", e.ToString()); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | } |
| | | else |
| | | { |
| | | var tm = (DateTime.Now - function.refreshTime).TotalMilliseconds; |
| | | Console.WriteLine("skip time " + tm); |
| | | if (500 < tm) |
| | | { |
| | | function.refreshTime = DateTime.Now; |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add("brightness", e.ToString()); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | |
| | |
| | | { |
| | | Tag = "Logic"; |
| | | } |
| | | |
| | | public void Show() |
| | | { |
| | | LogicView.TopView topView = new LogicView.TopView(); |
| | |
| | | likiadaodaView.frameLayout.Y = shiwaiView.frameLayout.Bottom; |
| | | likiadaodaView.btnText.TextID = StringId.likiadaoda; |
| | | likiadaodaView.btnIcon.UnSelectedImagePath = "LogicIcon/location.png"; |
| | | int count = 0;//输入类型个数 |
| | | if (MainView.IsGatewayType) |
| | | { |
| | | count = 4; |
| | | viewLayout.AddChidren(likiadaodaView.FLayoutView()); |
| | | } |
| | | int count = 3;//输入类型个数 |
| | | //2022年05月24日15:08:22 隐藏掉地理围栏 |
| | | //if (MainView.IsGatewayType) |
| | | //{ |
| | | // count = 4; |
| | | // viewLayout.AddChidren(likiadaodaView.FLayoutView()); |
| | | //} |
| | | ////功能 |
| | | ///产品经理君焕要求,设备功能移到这里。<2022-3-7> |
| | | new FunTpye(LogicMethod.condition_if).FunTypeView(viewLayout, likiadaodaView.frameLayout.Bottom, count); |
| | | new FunTpye(LogicMethod.condition_if).FunTypeView(viewLayout, shiwaiView.frameLayout.Bottom, count); |
| | | |
| | | #endregion |
| | | |
| | |
| | | //时间 |
| | | timeView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | |
| | | TimeTpye timeTpye = new TimeTpye(); |
| | | MainPage.BasePageView.AddChidren(timeTpye); |
| | | timeTpye.Show(); |
| | |
| | | //tvoc |
| | | case SPK.SensorTVOC: |
| | | { |
| | | |
| | | ///tvoc |
| | | LogicView.FunTypeView tvocView = new LogicView.FunTypeView(); |
| | | tvocView.btnText.TextID = StringId.tvoc; |
| | |
| | | PmCo2TvocAction(this, device, "hcho", StringId.Formaldehyde, index, edit); |
| | | |
| | | }; |
| | | } |
| | | break; |
| | | //门锁 |
| | | case SPK.DoorLock: |
| | | { |
| | | |
| | | LogicView.FunTypeView view = new LogicView.FunTypeView(); |
| | | view.btnText.TextID = StringId.shifoukaisuoshi; |
| | | fLayout.AddChidren(view.FLayoutView()); |
| | | view.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | DeviceView(device, view.btnState, StringId.shi, StringId.offLogic,1); |
| | | }; |
| | | if (edit) |
| | | { |
| | | GetEditState(device, index, view.btnState, null, null, null); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | |
| | | /// <param name="button">选中状态显示文本Btn控件</param> |
| | | /// <param name="btnText1">属性状态值文本1</param> |
| | | /// <param name="btnText2">属性状态值文本2</param> |
| | | private void DeviceView(Entity.Function device, Button button, int btnText1, int btnText2) |
| | | /// <param name="viewCount">view数量</param> |
| | | private void DeviceView(Entity.Function device, Button button, int btnText1, int btnText2,int viewCount=2) |
| | | { |
| | | FrameLayout frame = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence }; |
| | | this.AddChidren(frame); |
| | | LogicView.SwitchView switchView = new LogicView.SwitchView(); |
| | | switchView.FLayoutView(frame, btnText1, btnText2, button.Text, (intValue) => |
| | | switchView.FLayoutView(frame, btnText1, btnText2, button.Text, viewCount,(intValue) => |
| | | { |
| | | //设备属性值,云雀上定义好的; |
| | | string keyVlaue = "on_off"; |
| | |
| | | } |
| | | } |
| | | break; |
| | | case SPK.DoorLock: |
| | | { |
| | | keyVlaue = "door_status"; |
| | | } |
| | | break; |
| | | |
| | | } |
| | | switch (intValue) |
| | |
| | | } |
| | | } |
| | | break; |
| | | case StringId.shi: |
| | | case StringId.kaiqi: |
| | | { |
| | | value = "open"; |
| | |
| | | { |
| | | value = "fall"; |
| | | }; break; |
| | | |
| | | |
| | | } |
| | | //显示文本 |
| | | button.TextID = intValue; |
| | |
| | | } |
| | | } |
| | | PublicInterface view = new PublicInterface(); |
| | | var listStr = view.GetViewList(key); |
| | | view.SingleSelectionShow(frame, listStr, Language.StringByID(title), view.GetString(key, stateValue) |
| | | //var listStr = view.GetViewList(key); |
| | | var listStr = view.GetSensorLevelList(device);//2022年05月25日10:01:33 产品经理君煌要求改成动态 |
| | | view.SingleSelectionShow(frame, listStr, Language.StringByID(title), view.GetSensorLevelText(device, stateValue,true) |
| | | , (text) => |
| | | { |
| | | |
| | | var value = view.GetValue(key, text); |
| | | //var value = view.GetValue(key, text); |
| | | var values = view.GetSensorLevelText(device,text,false); |
| | | selectedState = device.spk + "_" + key; |
| | | switch (device.spk) |
| | | { |
| | |
| | | } |
| | | break; |
| | | } |
| | | AddDictionary(key, value, "integer", "in"); |
| | | AddDictionary(key, values, "integer", "in"); |
| | | Save(device, index, edit); |
| | | }); |
| | | } |
| | |
| | | { |
| | | public FunTpye(string str) |
| | | { |
| | | if_type = str; |
| | | if_Type = str; |
| | | } |
| | | /// <summary> |
| | | /// 表示是(条件/目标) |
| | | /// </summary> |
| | | private string if_type; |
| | | |
| | | private string if_Type; |
| | | Loading loading = new Loading(); |
| | | /// <summary> |
| | | /// 设备功能ui |
| | | /// </summary> |
| | |
| | | /// <param name="bottm"></param> |
| | | /// <param name="funCount">支持功能类型个数<表示上面所占高度></param> |
| | | public void FunTypeView(FrameLayout viewLayout,int bottm,int funCount) { |
| | | viewLayout.AddChidren(loading); |
| | | LogicView.FunAllAreaView funAllAreaView = new LogicView.FunAllAreaView(); |
| | | funAllAreaView.frameLayout.Y = bottm + Application.GetRealHeight(8); |
| | | viewLayout.AddChidren(funAllAreaView.FLayoutView()); |
| | |
| | | ///切换房间默认:全部功能 |
| | | UserInfo.Current.logicselectedFunction = Language.StringByID(StringId.allFun); |
| | | ///获取显示设备列表 |
| | | var list = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(areaView.btnClick.Tag as Entity.Room, if_type); |
| | | var list = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(areaView.btnClick.Tag as Entity.Room, if_Type); |
| | | |
| | | DeviceListView(vv, list); |
| | | this.LoadingDeviceListView(vv, list); |
| | | }; |
| | | if (roomList.Count - 1 == i) |
| | | { |
| | |
| | | { |
| | | |
| | | //获取最终显示列表 |
| | | var functionList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_type); |
| | | var functionList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_Type); |
| | | //获取设备列表的类型(例如:灯光类,窗帘类。。。) |
| | | var deviceTypeList = LogicMethod.CurrLogicMethod.GetDeviceTypeList(functionList); |
| | | if (deviceTypeList.Count == 0) |
| | |
| | | areaView.btnClick.MouseUpEventHandler += (sender, e2) => |
| | | { |
| | | fLayout.RemoveFromParent(); |
| | | funAllAreaView.btnText2.Text = areaView.btnClick.Tag.ToString(); |
| | | UserInfo.Current.logicselectedFunction = areaView.btnClick.Tag.ToString(); |
| | | ///获取单个类型(例如:灯光类。。)设备FunctionType列表<简称:spk列表> |
| | | var typeFunctionList2 = LogicMethod.CurrLogicMethod.GetDeviceTypeFunctionList(UserInfo.Current.logicselectedFunction); |
| | | ///获取单个灯光类型(例如:灯光1,灯光2。。)设备列表 |
| | | string clickText = areaView.btnClick.Tag.ToString(); |
| | | funAllAreaView.btnText2.Text = clickText; |
| | | UserInfo.Current.logicselectedFunction = clickText; |
| | | ///获取设备单个大类spk列表(例如:灯光类,空调类...) |
| | | var typeFunctionList2 = LogicMethod.CurrLogicMethod.GetDeviceTypeFunctionList(clickText); |
| | | ///获取设备单个小类列表(例如:灯光1,灯光2...) |
| | | var lists2 = LogicMethod.CurrLogicMethod.GetShowDeviceList(typeFunctionList2, functionList); |
| | | DeviceListView(vv, lists2); |
| | | this.LoadingDeviceListView(vv, lists2); |
| | | |
| | | }; |
| | | if (deviceTypeList.Count - 1 == i) |
| | |
| | | funAllAreaView.btnText2.MouseUpEventHandler += funClick; |
| | | funAllAreaView.btnIcon2.MouseUpEventHandler += funClick; |
| | | ///获取房间支持的设备列表 |
| | | var deviceList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_type); |
| | | ///获取单个类型(例如:灯光类。。)设备FunctionType列表<简称:spk列表> |
| | | var deviceList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_Type); |
| | | ///获取设备单个大类spk列表(例如:灯光类,空调类...) |
| | | var typeFunctionList = LogicMethod.CurrLogicMethod.GetDeviceTypeFunctionList(UserInfo.Current.logicselectedFunction); |
| | | ///获取单个灯光类型(例如:灯光1,灯光2。。)设备列表 |
| | | ///获取设备单个小类列表(例如:灯光1,灯光2...) |
| | | var lists = LogicMethod.CurrLogicMethod.GetShowDeviceList(typeFunctionList, deviceList); |
| | | ///房间名称 |
| | | funAllAreaView.btnText1.Text = UserInfo.Current.logicselectedRoom.roomName; |
| | | ///功能类型名称<灯光类。。。。。> |
| | | ///设备大类名称<灯光类。。。。。> |
| | | funAllAreaView.btnText2.Text = UserInfo.Current.logicselectedFunction; |
| | | DeviceListView(vv, lists); |
| | | this.LoadingDeviceListView(vv, lists); |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 显示设备的View |
| | | /// </summary> |
| | | /// <param name="verticalScrolView">上下滑动</param> |
| | | /// <param name="deviceList"></param> |
| | | public void DeviceListView(VerticalScrolViewLayout verticalScrolView, List<HDL_ON.Entity.Function> deviceList) |
| | | private void LoadingDeviceListView(VerticalScrolViewLayout verticalScrolView, List<HDL_ON.Entity.Function> deviceList) |
| | | { |
| | | |
| | | loading.Start(); |
| | | System.Threading.Tasks.Task.Run(() => |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | loading.Hide(); |
| | | verticalScrolView.RemoveAll(); |
| | | foreach (var dev in deviceList) |
| | | { |
| | |
| | | funView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(dev.spk); |
| | | funView.btnDeviceName.Text = dev.name; |
| | | funView.btnRoomName.Text = dev.GetRoomListName(); |
| | | funView.btnClick.MouseUpEventHandler += (sen, e) => { |
| | | if (if_type == LogicMethod.condition_if) |
| | | funView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | if (if_Type == LogicMethod.condition_if) |
| | | { |
| | | ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList(); |
| | | MainPage.BasePageView.AddChidren(conditionDeviceFunList); |
| | |
| | | |
| | | }; |
| | | } |
| | | |
| | | }); |
| | | |
| | | }); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | break; |
| | | case SPK.SensorCO2: |
| | | { |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "co2"); |
| | | inputView.btnState.Text = str; |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorPm25: |
| | | { |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "pm25"); |
| | | inputView.btnState.Text = str; |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorTVOC: |
| | | { |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "tvoc"); |
| | | inputView.btnState.Text = str; |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorHcho: |
| | | { |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "hcho"); |
| | | string strvalue = ""; |
| | | foreach (var dic in dicList) |
| | | { |
| | | strvalue = dic["value"]; |
| | | break; |
| | | } |
| | | string str = new PublicInterface().GetSensorLevelText(device, strvalue, true); |
| | | inputView.btnState.Text = str; |
| | | } |
| | | break; |
| | | case SPK.DoorLock: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "open") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.kaiqi); |
| | | } |
| | | |
| | | } |
| | | } |
| | | break; |
| | | } |
| | |
| | | } |
| | | } |
| | | break; |
| | | case SPK.DoorLock: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "open") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.shi); |
| | | } |
| | | |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | /// <summary> |
| | |
| | | strPath = "LogicIcon/airconditionerlogic.png"; |
| | | } |
| | | break; |
| | | case SPK.HvacCac: |
| | | strPath = "FunctionIcon/Icon/hvaccac.png"; |
| | | break; |
| | | case SPK.FloorHeatStandard: |
| | | case SPK.HvacFloorHeat: |
| | | { |
| | |
| | | case SPK.SensorPm25: |
| | | case SPK.SensorTVOC: |
| | | case SPK.SensorHcho: |
| | | case SPK.SensorHelp: |
| | | { |
| | | strPath = "LogicIcon/sensor.png"; |
| | | } |
| | | break; |
| | | case SPK.DoorLock: |
| | | { |
| | | strPath = "FunctionIcon/DoorLock/DoorLock.png"; |
| | | } |
| | | break; |
| | | |
| | |
| | | || device.spk == SPK.SensorPm25 |
| | | || device.spk == SPK.SensorTVOC |
| | | || device.spk == SPK.SensorHcho |
| | | || device.spk == SPK.SensorHelp |
| | | ); |
| | | if (sensor != null) |
| | | { |
| | |
| | | if (electric != null) |
| | | { |
| | | deviceStrTypeList.Add(Language.StringByID(StringId.Electric)); |
| | | } |
| | | ///门锁类 |
| | | var doorlock = deviceList.Find((device) => device.spk == SPK.DoorLock); |
| | | if (doorlock != null) |
| | | { |
| | | deviceStrTypeList.Add(Language.StringByID(StringId.DoorLock)); |
| | | } |
| | | return deviceStrTypeList; |
| | | |
| | |
| | | { |
| | | functionTypeList.Add(SPK.AcStandard); |
| | | functionTypeList.Add(SPK.HvacAC); |
| | | functionTypeList.Add(SPK.HvacCac); |
| | | } |
| | | ///地暖类 |
| | | else if (deviceType == Language.StringByID(StringId.FloorHeating)) |
| | |
| | | functionTypeList.Add(SPK.SensorPm25); |
| | | functionTypeList.Add(SPK.SensorTVOC); |
| | | functionTypeList.Add(SPK.SensorHcho); |
| | | functionTypeList.Add(SPK.SensorHelp); |
| | | |
| | | |
| | | } |
| | |
| | | functionTypeList.Add(SPK.PanelSocket); |
| | | functionTypeList.Add(SPK.ElectricSocket); |
| | | } |
| | | else { |
| | | ///门锁类 |
| | | else if (deviceType == Language.StringByID(StringId.DoorLock)) |
| | | { |
| | | functionTypeList.Add(SPK.DoorLock); |
| | | } |
| | | else |
| | | { |
| | | functionTypeList.Add(SPK.LightSwitch); |
| | | functionTypeList.Add(SPK.LightDimming); |
| | | functionTypeList.Add(SPK.LightRGB); |
| | |
| | | functionTypeList.Add(SPK.AirSwitch); |
| | | functionTypeList.Add(SPK.PanelSocket); |
| | | functionTypeList.Add(SPK.ElectricSocket); |
| | | |
| | | |
| | | functionTypeList.Add(SPK.HvacCac); |
| | | functionTypeList.Add(SPK.SensorHelp); |
| | | functionTypeList.Add(SPK.DoorLock); |
| | | } |
| | | |
| | | |
| | |
| | | deviceTypeList.Add(SPK.AirSwitch); |
| | | deviceTypeList.Add(SPK.PanelSocket); |
| | | deviceTypeList.Add(SPK.ElectricSocket); |
| | | deviceTypeList.Add(SPK.HvacCac); |
| | | deviceTypeList.Add(SPK.SensorHelp); |
| | | deviceTypeList.Add(SPK.DoorLock); |
| | | |
| | | } |
| | | break; |
| | |
| | | /// View的方法 |
| | | /// </summary> |
| | | /// <param name="frame">父控件</param> |
| | | /// <param name="i">显示选择View数量</param> |
| | | /// <param name="i">表示View数量</param> |
| | | ///<param name="stateVuale">之前的状态值</param> |
| | | /// <param name="action">返回回调</param> |
| | | /// <returns></returns> |
| | |
| | | /// View的方法 |
| | | /// </summary> |
| | | /// <param name="frame">父控件</param> |
| | | /// <param name="text1">父控件</param> |
| | | /// <param name="text2">显示选择View数量</param> |
| | | /// <param name="text1">第一个备注</param> |
| | | /// <param name="text2">第二个备注</param> |
| | | ///<param name="stateVuale">之前的状态值</param> |
| | | /// <param name="i">表示View数量</param> |
| | | /// <param name="action">返回回调</param> |
| | | /// <returns></returns> |
| | | public void FLayoutView(FrameLayout frame, int text1, int text2, string stateVuale, Action<int> action,bool tag=true) |
| | | public void FLayoutView(FrameLayout frame, int text1, int text2, string stateVuale, int i, Action<int> action,bool tag=true) |
| | | { |
| | | int i = 2; |
| | | frameLayout.Y = Application.GetRealHeight(603 - (44 * i)); |
| | | frameLayout.Height = Application.GetRealHeight(44 * i); |
| | | frame.AddChidren(frameLayout); |
| | | frame.AddChidren(btnCancel); |
| | | btnOn.TextID = text1; |
| | | btnOff.TextID = text2; |
| | | if (i == 1) |
| | | { |
| | | frameLayout.AddChidren(btnOn); |
| | | } |
| | | else if (i == 2) |
| | | { |
| | | frameLayout.AddChidren(btnOn); |
| | | frameLayout.AddChidren(btnLine); |
| | | frameLayout.AddChidren(btnOff); |
| | | } |
| | | //取消点击事件 |
| | | btnCancel.MouseUpEventHandler += (sender1, e1) => |
| | | { |
| | |
| | | return list; |
| | | } |
| | | /// <summary> |
| | | /// 动态获取传感器等级列表 |
| | | /// </summary> |
| | | /// <param name="device">功能(sid)</param> |
| | | /// <returns></returns> |
| | | public List<string> GetSensorLevelList(Entity.Function device) |
| | | { |
| | | List<string> list = new List<string>(); |
| | | var dic = GetSensorLevelDic(device); |
| | | foreach (var d in dic) { |
| | | list.Add(d.Key); |
| | | } |
| | | return list; |
| | | } |
| | | /// <summary> |
| | | /// 指定获取等级拼接的字符串 |
| | | /// </summary> |
| | | /// <param name="device">功能(sid)</param> |
| | | /// <param name="s">初始值</param> |
| | | /// <param name="isTextBoolean">表示true(返回key);false(返回values)</param> |
| | | /// <returns></returns>isTextBoolean |
| | | public string GetSensorLevelText(Entity.Function device, string s, bool isTextBoolean) |
| | | { |
| | | if (device == null || device.attrKeyConfigs == null) |
| | | { |
| | | return ""; |
| | | } |
| | | var dic = GetSensorLevelDic(device); |
| | | if (isTextBoolean) |
| | | { |
| | | foreach (var d in dic) |
| | | { |
| | | if (d.Value==s) |
| | | { |
| | | //如果values值存在,返回key值 |
| | | return d.Key.ToString(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | foreach (var d in dic) |
| | | { |
| | | if (d.Key==s) |
| | | { |
| | | //如果key值存在,返回values值 |
| | | return d.Value.ToString(); |
| | | } |
| | | } |
| | | } |
| | | return ""; |
| | | } |
| | | /// <summary> |
| | | /// 动态获取传感器等级字典 |
| | | /// </summary> |
| | | /// <param name="device">功能(sid)</param> |
| | | /// <returns></returns> |
| | | public Dictionary<string,string> GetSensorLevelDic(Entity.Function device) |
| | | { |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | | if (device == null || device.attrKeyConfigs == null) |
| | | { |
| | | return dic; |
| | | } |
| | | string strKey = ""; |
| | | string strKeyValues = ""; |
| | | for (int i = 0; i < device.attrKeyConfigs.Count; i++) |
| | | { |
| | | var attrKeyConfig = device.attrKeyConfigs[i]; |
| | | foreach (var attrKeyInfo in attrKeyConfig.configs) |
| | | { |
| | | //动态拼接字符串 |
| | | strKey = attrKeyInfo.desc + ":" + attrKeyInfo.start + "~" + attrKeyInfo.end + attrKeyConfig.unit; |
| | | strKeyValues = "(" + attrKeyInfo.start + "," + attrKeyInfo.end + "]"; |
| | | if (!dic.ContainsKey(strKey)) |
| | | { |
| | | //没有再添加 |
| | | dic.Add(strKey, strKeyValues); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | return dic; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 模式/风速互相转换值的方法 |
| | | /// </summary> |
| | | /// <param name="text">文本</param> |
| | |
| | | logicIfon.Add("noticeConfig", noticeConfigJObject); |
| | | logicIfon.Add("pushConfigs", pushConfigsArray); |
| | | logicjArray.Add(logicIfon); |
| | | //string str = logicIfon.ToString(); |
| | | var jObject = new JObject { { "homeId", LogicMethod.CurrLogicMethod.HomeId }, { "logics", logicjArray } }; |
| | | responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Add, 5); |
| | | //如果是token过期则刷新token |
| | |
| | | ///开关点击事件 |
| | | curtainSwitchView.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | SwitchViewMethod(device, curtainSwitchView.btnState, 3); |
| | | SwitchViewMethod(device, curtainSwitchView.btnState, 2); |
| | | }; |
| | | if (edit) |
| | | { |
| | |
| | | |
| | | public void LoadPage(Action backRefresh) |
| | | { |
| | | DB_ResidenceData.Instance.SupportFacePass |
| | | //DB_ResidenceData.Instance.sceneChooseRoomId |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.EditScene)).LoadTopView(backRefresh); |
| | | initPage(); |
| | | } |
| | |
| | | str = Language.StringByID(StringId.shebeibucunzai); |
| | | } |
| | | break; |
| | | |
| | | case "124006": |
| | | case "14006": |
| | | { |
| | | str = Language.StringByID(StringId.shebeibuzaixian); |
| | |
| | | /// <returns></returns> |
| | | public static ResponsePackNew RequestServerhomeId(object o, string api_Url, int mTimeout = 20) |
| | | { |
| | | MainPage.Log("请求数据=="+o.ToString()); |
| | | var requestJson = HttpUtil.GetSignRequestJson(o); |
| | | return HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout); |
| | | |
| | |
| | | /// </summary> |
| | | private void InitFrameWhiteContent1() |
| | | { |
| | | //获取温度值 |
| | | temp = (int)Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")); |
| | | if (temp <= 0) |
| | | { |
| | | //默认值改成16,2022年06月10日10:03:19 成甫要求的 |
| | | temp = 16; |
| | | device.SetAttrState(FunctionAttributeKey.SetTemp, temp.ToString()); |
| | | } |
| | | |
| | | arcBar = new DiyArcSeekBar() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | |
| | | arcBar.IsOffline = device.GetAttrState(FunctionAttributeKey.OnOff) == "off"; |
| | | arcBar.MinValue = device.GetAttribute(FunctionAttributeKey.SetTemp).min; |
| | | arcBar.MaxValue = device.GetAttribute(FunctionAttributeKey.SetTemp).max; |
| | | arcBar.Progress = (int)Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")); |
| | | arcBar.Progress = temp; |
| | | |
| | | btnTemp = new Button() |
| | | { |
| | |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = 50, |
| | | IsBold = true, |
| | | Text = Convert.ToDouble( device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")).ToString(), |
| | | Text = Convert.ToDouble(temp).ToString(), |
| | | TextAlignment = TextAlignment.Center, |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnTemp); |
New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.DriverLayer; |
| | | using HDL_ON.Entity; |
| | | using HDL_ON.Stan; |
| | | using HDL_ON.UI.CSS; |
| | | using Shared; |
| | | |
| | | namespace HDL_ON.UI |
| | | { |
| | | public class CacControlPage : DeviceFunctionCardCommonForm |
| | | { |
| | | #region ■ 变量声明___________________________ |
| | | /// <summary> |
| | | /// 空调温度控制控件 |
| | | /// </summary> |
| | | DiyArcSeekBar arcBar; |
| | | /// <summary> |
| | | /// 减号按钮 |
| | | /// </summary> |
| | | Button btnMinus; |
| | | /// <summary> |
| | | /// 加号按钮 |
| | | /// </summary> |
| | | Button btnPlus; |
| | | /// <summary> |
| | | /// 温度按钮 |
| | | /// </summary> |
| | | Button btnTemp; |
| | | Button btnTempUint; |
| | | /// <summary> |
| | | /// 室内温度按钮 |
| | | /// </summary> |
| | | Button btnIndoorTemp; |
| | | /// <summary> |
| | | /// 模式按钮 |
| | | /// </summary> |
| | | Button btnMode; |
| | | /// <summary> |
| | | /// 风速按钮 |
| | | /// </summary> |
| | | Button btnWindSpeed; |
| | | /// <summary> |
| | | /// 开关按钮 |
| | | /// </summary> |
| | | Button btnSwitch; |
| | | |
| | | AC acFunction = new AC(); |
| | | |
| | | /// <summary> |
| | | /// 控制时间 |
| | | /// </summary> |
| | | DateTime controlTime = DateTime.MinValue.AddDays(10); |
| | | /// <summary> |
| | | /// 控制温度 |
| | | /// </summary> |
| | | int temp = 16; |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 初始化_____________________________ |
| | | |
| | | /// <summary> |
| | | /// 初始化白色区域的内容 |
| | | /// </summary> |
| | | public override void InitFrameWhiteContent() |
| | | { |
| | | |
| | | var sk = device.GetAttribute(FunctionAttributeKey.SetTemp); |
| | | if (sk != null) |
| | | { |
| | | if (sk.min == 0) |
| | | { |
| | | sk.min = 16; |
| | | } |
| | | if (sk.max == 0) |
| | | { |
| | | sk.max = 32; |
| | | } |
| | | } |
| | | |
| | | base.ShowColltionButton = false; |
| | | base.SetTitleText(Language.StringByID(StringId.Electric)); |
| | | |
| | | //初始化第一个索引页的内容 |
| | | this.InitFrameWhiteContent1(); |
| | | |
| | | //刷新当前设备的状态缓存 |
| | | this.RefreshNowDeviceStatuMemory(this.device); |
| | | //刷新界面状态 |
| | | this.RefreshFormStatu(); |
| | | //读取状态 |
| | | new System.Threading.Thread(() => |
| | | { |
| | | while (true) |
| | | { |
| | | if (controlTime == DateTime.MinValue) |
| | | { |
| | | |
| | | } |
| | | else if (controlTime.AddSeconds(2) < DateTime.Now) |
| | | { |
| | | Control.Ins.SendReadCommand(device); |
| | | controlTime = DateTime.MinValue; |
| | | } |
| | | System.Threading.Thread.Sleep(1000); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 初始化第一个索引页的内容 |
| | | /// </summary> |
| | | private void InitFrameWhiteContent1() |
| | | { |
| | | Button btnJinmaoIcon = new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(94), |
| | | Width = Application.GetRealWidth(164), |
| | | Height = Application.GetRealHeight(43), |
| | | UnSelectedImagePath = "FunctionIcon/CAC/JinMaoIcon.png" |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnJinmaoIcon); |
| | | |
| | | |
| | | temp = (int)Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")); |
| | | if (temp <= 0) |
| | | { |
| | | //默认值改成16,2022年06月10日10:03:19 成甫要求的 |
| | | temp = 16; |
| | | device.SetAttrState(FunctionAttributeKey.SetTemp, temp.ToString()); |
| | | } |
| | | arcBar = new DiyArcSeekBar() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | OpenAngle = 160, |
| | | ThumbImageHeight = Application.GetRealWidth(50), |
| | | ProgressBarColor = CSS_Color.MainColor, |
| | | OfflineProgressBarColor = CSS_Color.PromptingColor2, |
| | | ArcColor = CSS_Color.BackgroundColor, |
| | | #if __IOS__ |
| | | Y = Application.GetRealHeight(120 + 25), |
| | | Width = Application.GetRealWidth(260 - 40), |
| | | Height = Application.GetRealWidth(260 - 40), |
| | | SeekBarPadding = Application.GetRealWidth(8), |
| | | #else |
| | | Y = Application.GetRealHeight(120 + 40), |
| | | Width = Application.GetRealWidth(260 - 40), |
| | | Height = Application.GetRealWidth(260 - 40), |
| | | SeekBarPadding = Application.GetRealWidth(7), |
| | | #endif |
| | | |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(arcBar); |
| | | |
| | | |
| | | arcBar.ThumbImagePath = device.GetAttrState(FunctionAttributeKey.OnOff) == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png"; |
| | | arcBar.IsOffline = device.GetAttrState(FunctionAttributeKey.OnOff) == "off"; |
| | | arcBar.MinValue = device.GetAttribute(FunctionAttributeKey.SetTemp).min; |
| | | arcBar.MaxValue = device.GetAttribute(FunctionAttributeKey.SetTemp).max; |
| | | arcBar.Progress =temp; |
| | | |
| | | btnTemp = new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(206), |
| | | Width = Application.GetRealWidth(71), |
| | | Height = Application.GetRealWidth(60), |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = 50, |
| | | IsBold = true, |
| | | Text = Convert.ToDouble(temp).ToString(), |
| | | TextAlignment = TextAlignment.Center, |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnTemp); |
| | | |
| | | btnTempUint = new Button() |
| | | { |
| | | X = btnTemp.Right, |
| | | Y = btnTemp.Y, |
| | | Width = Application.GetRealWidth(30), |
| | | Height = Application.GetRealHeight(30), |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.EmphasisFontSize_Secondary, |
| | | IsBold = true, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | Text = "°C", |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnTempUint); |
| | | |
| | | btnIndoorTemp = new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = btnTemp.Bottom, |
| | | Width = Application.GetRealWidth(120), |
| | | Height = Application.GetRealHeight(20), |
| | | Text = Language.StringByID(StringId.IndoorTemp) + "20°C/" + Language.StringByID(StringId.Humidity) +"45%", |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnIndoorTemp); |
| | | |
| | | btnMinus = new Button() |
| | | { |
| | | X = Application.GetRealWidth(21), |
| | | Y = Application.GetRealHeight(263), |
| | | Width = Application.GetRealWidth(32), |
| | | Height = Application.GetRealWidth(32), |
| | | UnSelectedImagePath = "Public/MinusSignIcon.png", |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnMinus); |
| | | |
| | | btnPlus = new Button() |
| | | { |
| | | X = Application.GetRealWidth(275), |
| | | Y = Application.GetRealHeight(263), |
| | | Width = Application.GetRealWidth(32), |
| | | Height = Application.GetRealWidth(32), |
| | | UnSelectedImagePath = "Public/PlusSignIcon.png", |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnPlus); |
| | | |
| | | btnMode = new Button() |
| | | { |
| | | X = Application.GetRealWidth(60), |
| | | Y = Application.GetRealHeight(334), |
| | | Width = Application.GetRealWidth(30), |
| | | Height = Application.GetRealWidth(30), |
| | | UnSelectedImagePath = acFunction.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode),true), |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnMode); |
| | | |
| | | Button btnModeText = new Button() |
| | | { |
| | | X = Application.GetRealWidth(30), |
| | | Y = btnMode.Bottom, |
| | | Width = Application.GetRealWidth(90), |
| | | Height = Application.GetRealHeight(20), |
| | | TextAlignment = TextAlignment.Center, |
| | | TextSize = 12, |
| | | TextColor = CSS_Color.TextualColor, |
| | | TextID = StringId.Mode |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnModeText); |
| | | |
| | | btnWindSpeed = new Button() |
| | | { |
| | | X = Application.GetRealWidth(238), |
| | | Y = Application.GetRealHeight(333), |
| | | Width = Application.GetRealWidth(38), |
| | | Height = Application.GetRealWidth(38), |
| | | UnSelectedImagePath = "FunctionIcon/CAC/DataIcon.png", |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnWindSpeed); |
| | | |
| | | Button btnDataText = new Button() |
| | | { |
| | | X = Application.GetRealWidth(212), |
| | | Y = btnWindSpeed.Bottom, |
| | | Width = Application.GetRealWidth(90), |
| | | Height = Application.GetRealHeight(20), |
| | | TextAlignment = TextAlignment.Center, |
| | | TextSize = 12, |
| | | TextColor = CSS_Color.TextualColor, |
| | | TextID = StringId.Data |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnDataText); |
| | | |
| | | btnSwitch = new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(466), |
| | | Width = Application.GetRealWidth(32), |
| | | Height = Application.GetRealWidth(32), |
| | | UnSelectedImagePath = "Public/PowerClose.png", |
| | | SelectedImagePath = "Public/PowerOpen.png", |
| | | IsSelected = device.GetAttrState(FunctionAttributeKey.OnOff) == "on" |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnSwitch); |
| | | |
| | | LoadEvent_TempChange(); |
| | | LoadEvent_AcStatesChange(); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 加载修改模式区域 |
| | | /// </summary> |
| | | void LoadDiv_ChangeModeView() |
| | | { |
| | | Dialog dialog = new Dialog(); |
| | | |
| | | FrameLayout dialogView = new FrameLayout() |
| | | { |
| | | BackgroundColor = CSS_Color.DialogTransparentColor1, |
| | | }; |
| | | dialog.AddChidren(dialogView); |
| | | |
| | | FrameLayout modeChangeView; |
| | | modeChangeView = new FrameLayout() |
| | | { |
| | | X = Application.GetRealWidth(30), |
| | | Y = Application.GetRealHeight(128 + 135), |
| | | Width = Application.GetRealWidth(160), |
| | | Height = Application.GetRealHeight(152), |
| | | BackgroundImagePath = "Public/dialogBg2.png", |
| | | }; |
| | | dialogView.AddChidren(modeChangeView); |
| | | |
| | | Button btnTitle; |
| | | btnTitle = new Button() |
| | | { |
| | | X = Application.GetRealWidth(8 + 16), |
| | | Y = Application.GetRealHeight(8), |
| | | Width = Application.GetRealWidth(112), |
| | | Height = Application.GetRealHeight(44), |
| | | TextID = StringId.ChooseMode, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.EmphasisFontSize_Secondary, |
| | | }; |
| | | modeChangeView.AddChidren(btnTitle); |
| | | |
| | | Button btnLine = new Button() |
| | | { |
| | | X = btnTitle.X, |
| | | Y = btnTitle.Bottom, |
| | | Width = Application.GetRealWidth(112), |
| | | Height = Application.GetRealHeight(1), |
| | | BackgroundColor = CSS_Color.BackgroundColor, |
| | | }; |
| | | modeChangeView.AddChidren(btnLine); |
| | | |
| | | var modeList = device.GetAttribute(FunctionAttributeKey.Mode).value; |
| | | foreach (var m in modeList) |
| | | { |
| | | Button btnModeIcon = new Button() |
| | | { |
| | | X = btnTitle.X, |
| | | Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 10 + 8), |
| | | Width = Application.GetRealWidth(24), |
| | | Height = Application.GetRealWidth(24), |
| | | IsSelected = device.GetAttrState(FunctionAttributeKey.Mode) == m, |
| | | }; |
| | | modeChangeView.AddChidren(btnModeIcon); |
| | | |
| | | Button btnModeText = new Button() |
| | | { |
| | | X = Application.GetRealWidth(12) + btnModeIcon.Right, |
| | | Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 8), |
| | | Height = Application.GetRealHeight(44), |
| | | Width = Application.GetRealWidth(90), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | SelectedTextColor = CSS_Color.MainColor, |
| | | IsSelected = device.GetAttrState(FunctionAttributeKey.Mode) == m, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | }; |
| | | modeChangeView.AddChidren(btnModeText); |
| | | |
| | | btnModeIcon.UnSelectedImagePath = acFunction.GetModeIconPath(m, false); |
| | | btnModeIcon.SelectedImagePath = acFunction.GetModeIconPath(m); |
| | | btnModeText.Text = acFunction.GetModeAttrText(m); |
| | | |
| | | if (modeList.IndexOf(m) < modeList.Count - 1) |
| | | { |
| | | modeChangeView.AddChidren(new Button() |
| | | { |
| | | X = btnTitle.X, |
| | | Y = btnModeText.Bottom, |
| | | Width = Application.GetRealWidth(112), |
| | | Height = Application.GetRealHeight(1), |
| | | BackgroundColor = CSS_Color.BackgroundColor, |
| | | }); |
| | | } |
| | | EventHandler<MouseEventArgs> eventHandler = (sender, e) => |
| | | { |
| | | dialog.Close(); |
| | | }; |
| | | EventHandler<MouseEventArgs> eventHandler1 = (sender, e) => |
| | | { |
| | | //if (!device.online) |
| | | //{ |
| | | // new Tip() |
| | | // { |
| | | // CloseTime = 1, |
| | | // Text = Language.StringByID(StringId.DeviceOfflineCannotOption), |
| | | // Direction = AMPopTipDirection.None, |
| | | // }.Show(MainPage.BaseView); |
| | | //} |
| | | btnModeIcon.IsSelected = btnModeText.IsSelected = true; |
| | | device.SetAttrState(FunctionAttributeKey.Mode, m); |
| | | btnMode.UnSelectedImagePath = acFunction.GetModeIconPath(m); |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.Mode, m); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | dialog.Close(); |
| | | if (device.GetAttrState(FunctionAttributeKey.Mode) == "fan") |
| | | { |
| | | arcBar.IsClickable = false; |
| | | arcBar.IsOffline = true; |
| | | } |
| | | else |
| | | { |
| | | arcBar.IsOffline = false; |
| | | arcBar.IsClickable = true; |
| | | } |
| | | }; |
| | | btnModeIcon.MouseUpEventHandler = eventHandler1; |
| | | btnModeText.MouseUpEventHandler = eventHandler1; |
| | | dialogView.MouseUpEventHandler = eventHandler; |
| | | |
| | | } |
| | | |
| | | dialogView.MouseUpEventHandler = (sender, e) => { |
| | | dialog.Close(); |
| | | }; |
| | | dialog.Show(); |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 设备状态反馈_______________________ |
| | | |
| | | /// <summary> |
| | | /// 设备状态反馈 |
| | | /// </summary> |
| | | /// <param name="i_LocalDevice"></param> |
| | | public override void DeviceStatuPush(Function i_LocalDevice) |
| | | { |
| | | //不是同一个东西 |
| | | if (this.device.sid != i_LocalDevice.sid) { return; } |
| | | |
| | | //刷新当前设备的状态缓存 |
| | | this.RefreshNowDeviceStatuMemory(i_LocalDevice); |
| | | //刷新界面状态 |
| | | this.RefreshFormStatu(); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 发送各种命令_______________________ |
| | | |
| | | /// <summary> |
| | | /// 温度改变模式 |
| | | /// </summary> |
| | | void LoadEvent_TempChange() |
| | | { |
| | | btnMinus.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | //if (!device.online) |
| | | //{ |
| | | // new Tip() |
| | | // { |
| | | // CloseTime = 1, |
| | | // Text = Language.StringByID(StringId.DeviceOfflineCannotOption), |
| | | // Direction = AMPopTipDirection.None, |
| | | // }.Show(MainPage.BaseView); |
| | | //} |
| | | if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan") |
| | | { |
| | | return; |
| | | } |
| | | |
| | | if (temp <= device.GetAttribute(FunctionAttributeKey.SetTemp).min) |
| | | { |
| | | return; |
| | | } |
| | | --temp; |
| | | Console.WriteLine($"temp == {temp}"); |
| | | controlTime = DateTime.Now; |
| | | arcBar.Progress = temp; |
| | | btnTemp.Text = temp.ToString(); |
| | | device.SetAttrState(FunctionAttributeKey.SetTemp, temp.ToString()); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.SetTemp, temp.ToString()); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | }; |
| | | btnPlus.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | //if (!device.online) |
| | | //{ |
| | | // new Tip() |
| | | // { |
| | | // CloseTime = 1, |
| | | // Text = Language.StringByID(StringId.DeviceOfflineCannotOption), |
| | | // Direction = AMPopTipDirection.None, |
| | | // }.Show(MainPage.BaseView); |
| | | //} |
| | | if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan") |
| | | { |
| | | return; |
| | | } |
| | | if (temp >= device.GetAttribute(FunctionAttributeKey.SetTemp).max) |
| | | { |
| | | return; |
| | | } |
| | | ++temp; |
| | | controlTime = DateTime.Now; |
| | | arcBar.Progress = temp; |
| | | btnTemp.Text = temp.ToString(); |
| | | device.SetAttrState(FunctionAttributeKey.SetTemp, temp.ToString()); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.SetTemp, temp.ToString()); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | }; |
| | | //if (device.online) |
| | | { |
| | | arcBar.OnStopTrackingTouchEvent = (sender, e) => |
| | | { |
| | | temp = arcBar.Progress; |
| | | device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString()); |
| | | btnTemp.Text = arcBar.Progress.ToString(); |
| | | controlTime = DateTime.Now; |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString()); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | }; |
| | | arcBar.OnProgressChangedEvent = (sender, e) => |
| | | { |
| | | device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString()); |
| | | btnTemp.Text = e.ToString(); |
| | | }; |
| | | //arcBar.MouseDownEventHandler = (sender, e) => { |
| | | // Console.WriteLine("ddd"); |
| | | // MainPage.BasePageView.ScrollEnabled =false; |
| | | //}; |
| | | //arcBar.MouseUpEventHandler = (sender, e) => { |
| | | // Console.WriteLine("ddd2"); |
| | | // MainPage.BasePageView.ScrollEnabled = true; |
| | | //}; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 控制模式事件 |
| | | /// </summary> |
| | | void LoadEvent_AcStatesChange() |
| | | { |
| | | btnMode.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | if (device.trait_on_off.curValue.ToString() == "off") |
| | | { |
| | | return; |
| | | } |
| | | LoadDiv_ChangeModeView(); |
| | | }; |
| | | btnWindSpeed.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | var page = new CacHistoryChoosePage(device); |
| | | MainPage.BasePageView.AddChidren(page); |
| | | page.InitView(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }; |
| | | |
| | | btnSwitch.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | //if (!device.online) |
| | | //{ |
| | | // new Tip() |
| | | // { |
| | | // CloseTime = 1, |
| | | // Text = Language.StringByID(StringId.DeviceOfflineCannotOption), |
| | | // Direction = AMPopTipDirection.None, |
| | | // }.Show(MainPage.BaseView); |
| | | //} |
| | | btnSwitch.IsSelected = !btnSwitch.IsSelected; |
| | | device.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off"; |
| | | if (device.trait_on_off.curValue.ToString() == "on") |
| | | { |
| | | arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIconOn.png"; |
| | | btnSwitch.IsSelected = true; |
| | | arcBar.IsOffline = false; |
| | | } |
| | | else |
| | | { |
| | | arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png"; |
| | | btnSwitch.IsBold = false; |
| | | arcBar.IsOffline = true; |
| | | } |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.OnOff, device.trait_on_off.curValue.ToString()); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | }; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 刷新界面状态_______________________ |
| | | |
| | | /// <summary> |
| | | /// 刷新界面状态 |
| | | /// </summary> |
| | | private void RefreshFormStatu() |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | //app自己控制的不用更新,会造成跳动 |
| | | if (controlTime.AddSeconds(2) > DateTime.Now) |
| | | { |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.RoomTemp).Replace(",", "."))) + "°C" |
| | | + Language.StringByID(StringId.Humidity) + Convert.ToInt32(Convert.ToDouble(device.GetAttrState("room_humidity").Replace(", ", "."))) + "%"; |
| | | btnMode.UnSelectedImagePath = acFunction.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode)); |
| | | temp = Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", "."))); |
| | | |
| | | |
| | | arcBar.Progress = temp; |
| | | btnTemp.Text = temp.ToString(); |
| | | |
| | | if (device.trait_on_off.curValue.ToString() == "on") |
| | | { |
| | | arcBar.IsOffline = false; |
| | | btnSwitch.IsSelected = true; |
| | | arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIconOn.png"; |
| | | if (device.GetAttrState(FunctionAttributeKey.Mode) == "fan") |
| | | { |
| | | arcBar.IsClickable = false; |
| | | } |
| | | else |
| | | { |
| | | arcBar.IsClickable = true; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | arcBar.IsOffline = true; |
| | | btnSwitch.IsSelected = false; |
| | | arcBar.IsClickable = false; |
| | | arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png"; |
| | | } |
| | | |
| | | if (device.GetAttrState(FunctionAttributeKey.Mode) == "dry") |
| | | { |
| | | arcBar.IsOffline = true; |
| | | arcBar.IsClickable = false; |
| | | |
| | | } |
| | | } |
| | | |
| | | }); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 一般方法___________________________ |
| | | |
| | | /// <summary> |
| | | /// 刷新当前设备的状态缓存 |
| | | /// </summary> |
| | | private void RefreshNowDeviceStatuMemory(Function i_LocalDevice) |
| | | { |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | } |
| | |
| | | /// </summary> |
| | | Button btnMode; |
| | | /// <summary> |
| | | /// 工作模式按钮 |
| | | /// </summary> |
| | | Button btnWrokMode; |
| | | |
| | | /// <summary> |
| | | /// 开关按钮 |
| | | /// </summary> |
| | | Button btnSwitch; |
| | |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnPlus); |
| | | |
| | | if (device.GetAttribute("mode_work") != null) |
| | | { |
| | | btnWrokMode = new Button() |
| | | { |
| | | X = Application.GetRealWidth(60), |
| | | Y = Application.GetRealHeight(334), |
| | | Width = Application.GetRealWidth(30), |
| | | Height = Application.GetRealWidth(30), |
| | | UnSelectedImagePath = fhTemp.GetWrokModeIconPath(device.GetAttrState("mode_work")), |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnWrokMode); |
| | | if (device.GetAttribute("mode_work").value.Count > 1) |
| | | { |
| | | btnMode.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | LoadDiv_ChangeModeView(); |
| | | }; |
| | | } |
| | | } |
| | | if (device.GetAttribute(FunctionAttributeKey.Mode) != null) |
| | | { |
| | | btnMode = new Button() |
| | |
| | | LoadEvent_AcStatesChange(); |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 加载修改模式区域 |
| | | /// </summary> |
| | | void LoadDiv_ChangeWorkModeView() |
| | | { |
| | | Dialog dialog = new Dialog(); |
| | | |
| | | FrameLayout dialogView = new FrameLayout() |
| | | { |
| | | BackgroundColor = CSS_Color.DialogTransparentColor1, |
| | | }; |
| | | dialog.AddChidren(dialogView); |
| | | |
| | | FrameLayout modeChangeView; |
| | | modeChangeView = new FrameLayout() |
| | | { |
| | | X = Application.GetRealWidth(30), |
| | | Y = Application.GetRealHeight(128), |
| | | Width = Application.GetRealWidth(160), |
| | | Height = Application.GetRealHeight(287), |
| | | BackgroundImagePath = "FunctionIcon/AC/DivBg1.png", |
| | | }; |
| | | dialogView.AddChidren(modeChangeView); |
| | | |
| | | Button btnTitle; |
| | | btnTitle = new Button() |
| | | { |
| | | X = Application.GetRealWidth(8 + 16), |
| | | Y = Application.GetRealHeight(8), |
| | | Width = Application.GetRealWidth(112), |
| | | Height = Application.GetRealHeight(44), |
| | | TextID = StringId.ChooseMode, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.EmphasisFontSize_Secondary, |
| | | }; |
| | | modeChangeView.AddChidren(btnTitle); |
| | | |
| | | Button btnLine = new Button() |
| | | { |
| | | X = btnTitle.X, |
| | | Y = btnTitle.Bottom, |
| | | Width = Application.GetRealWidth(112), |
| | | Height = Application.GetRealHeight(1), |
| | | BackgroundColor = CSS_Color.BackgroundColor, |
| | | }; |
| | | modeChangeView.AddChidren(btnLine); |
| | | |
| | | var modeList = device.GetAttribute(FunctionAttributeKey.WorkMode).value; |
| | | foreach (var m in modeList) |
| | | { |
| | | Button btnModeIcon = new Button() |
| | | { |
| | | X = btnTitle.X, |
| | | Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 10 + 8), |
| | | Width = Application.GetRealWidth(24), |
| | | Height = Application.GetRealWidth(24), |
| | | IsSelected = device.GetAttrState(FunctionAttributeKey.WorkMode) == m, |
| | | }; |
| | | modeChangeView.AddChidren(btnModeIcon); |
| | | |
| | | Button btnModeText = new Button() |
| | | { |
| | | X = Application.GetRealWidth(12) + btnModeIcon.Right, |
| | | Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 8), |
| | | Height = Application.GetRealHeight(44), |
| | | Width = Application.GetRealWidth(90), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | SelectedTextColor = CSS_Color.MainColor, |
| | | IsSelected = device.GetAttrState(FunctionAttributeKey.Mode) == m, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | }; |
| | | modeChangeView.AddChidren(btnModeText); |
| | | |
| | | btnModeIcon.UnSelectedImagePath = fhTemp.GetModeIconPath(m, false); |
| | | btnModeIcon.SelectedImagePath = fhTemp.GetModeIconPath(m); |
| | | btnModeText.Text = fhTemp.GetModeAttrText(m); |
| | | |
| | | if (modeList.IndexOf(m) < modeList.Count - 1) |
| | | { |
| | | modeChangeView.AddChidren(new Button() |
| | | { |
| | | X = btnTitle.X, |
| | | Y = btnModeText.Bottom, |
| | | Width = Application.GetRealWidth(112), |
| | | Height = Application.GetRealHeight(1), |
| | | BackgroundColor = CSS_Color.BackgroundColor, |
| | | }); |
| | | } |
| | | EventHandler<MouseEventArgs> eventHandler = (sender, e) => |
| | | { |
| | | dialog.Close(); |
| | | }; |
| | | EventHandler<MouseEventArgs> eventHandler1 = (sender, e) => |
| | | { |
| | | //if (!device.online) |
| | | //{ |
| | | // new Tip() |
| | | // { |
| | | // CloseTime = 1, |
| | | // Text = Language.StringByID(StringId.DeviceOfflineCannotOption), |
| | | // Direction = AMPopTipDirection.None, |
| | | // }.Show(MainPage.BaseView); |
| | | //} |
| | | btnModeIcon.IsSelected = btnModeText.IsSelected = true; |
| | | device.SetAttrState(FunctionAttributeKey.WorkMode, m); |
| | | btnMode.UnSelectedImagePath = fhTemp.GetWrokModeIconPath(m); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | btnMode.UnSelectedImagePath = btnModeIcon.UnSelectedImagePath; |
| | | d.Add(FunctionAttributeKey.WorkMode, m); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | dialog.Close(); |
| | | |
| | | }; |
| | | btnModeIcon.MouseUpEventHandler = eventHandler1; |
| | | btnModeText.MouseUpEventHandler = eventHandler1; |
| | | dialogView.MouseUpEventHandler = eventHandler; |
| | | |
| | | } |
| | | |
| | | dialogView.MouseUpEventHandler = (sender, e) => { |
| | | dialog.Close(); |
| | | }; |
| | | dialog.Show(); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 加载修改模式区域 |
| | |
| | | arcBar.IsClickable = false; |
| | | arcBar.IsOffline = true; |
| | | } |
| | | |
| | | if(btnWrokMode!=null){ |
| | | var dd = device.GetAttrState("mode_work"); |
| | | if (dd != "0") |
| | | { |
| | | btnWrokMode.UnSelectedImagePath = fhTemp.GetWrokModeIconPath(dd); |
| | | } |
| | | } |
| | | |
| | | }); |
| | | } |
| | | |
| | |
| | | //{ |
| | | // controlView.AddChidren(btnCollection); |
| | | //} |
| | | |
| | | //获取温度值 |
| | | var tempValue = (int)Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")); |
| | | if (tempValue<=0) { |
| | | //默认值改成16,2022年06月10日10:03:19 成甫要求的 |
| | | tempValue = 16; |
| | | function.SetAttrState(FunctionAttributeKey.SetTemp, tempValue.ToString()); |
| | | } |
| | | arcBar = new DiyArcSeekBar() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | |
| | | MaxValue = function.GetAttribute(FunctionAttributeKey.SetTemp).max, |
| | | //IsClickable = function.trait_on_off.curValue.ToString() == "on", |
| | | ArcColor = CSS_Color.BackgroundColor, |
| | | Progress = (int)Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",",".")), |
| | | Progress = tempValue, |
| | | #if __IOS__ |
| | | Y = Application.GetRealHeight(120 + 25), |
| | | Width = Application.GetRealWidth(260 - 40), |
| | |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = 50, |
| | | IsBold = true, |
| | | Text = Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")).ToString(), |
| | | Text = Convert.ToDouble(tempValue).ToString(), |
| | | TextAlignment = TextAlignment.Center, |
| | | }; |
| | | controlView.AddChidren(btnTemp); |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.Common; |
| | | using HDL_ON.DAL.Server; |
| | | using Shared; |
| | | |
| | | namespace HDL_ON.UI |
| | |
| | | function.roomIds.Remove(room.roomId); |
| | | //room.RemoveRoomFunction(function); |
| | | } |
| | | function.UpdataRoomIds(); |
| | | //function.UpdataRoomIds(); |
| | | |
| | | new System.Threading.Thread(() => |
| | | { |
| | | try |
| | | { |
| | | var pack = ApiUtlis.Ins.HttpRequest.UpdataDevcieBindRoomInfo(function); |
| | | //直接保存本地, |
| | | function.SaveFunctionFile(); |
| | | if (pack.Code == StateCode.SUCCESS) |
| | | { |
| | | if (UI.RoomPage.bodyView != null) |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | UI.RoomPage.bodyView.ReLoadPage(); |
| | | }); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | IMessageCommon.Current.ShowErrorInfoAlter(pack.Code); |
| | | } |
| | | } |
| | | catch (Exception ex){ |
| | | MainPage.Log("房间绑定设备异常" + ex.Message); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | |
| | | if (function.roomIds.Count == Entity.SpatialInfo.CurrentSpatial.RoomList.Count) |
| | | { |
| | | btnChooseAll.IsSelected = true; |
| | |
| | | bodyView.arcBar.IsClickable = false; |
| | | bodyView.arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png"; |
| | | } |
| | | //自动模式不允许调温度 2021-10-27 09:41:35 wxr 陈琳反馈 |
| | | if (updateTemp.GetAttrState(FunctionAttributeKey.Mode) == "auto"|| updateTemp.GetAttrState(FunctionAttributeKey.Mode) == "timer") |
| | | { |
| | | bodyView.btnPlus.Enable = false; |
| | | bodyView.btnMinus.Enable = false; |
| | | bodyView.arcBar.IsClickable = false; |
| | | bodyView.arcBar.IsOffline = true; |
| | | } |
| | | |
| | | ////自动模式不允许调温度 2021-10-27 09:41:35 wxr 陈琳反馈 |
| | | //if (updateTemp.GetAttrState(FunctionAttributeKey.Mode) == "auto" || updateTemp.GetAttrState(FunctionAttributeKey.Mode) == "timer") |
| | | //{ |
| | | // bodyView.btnPlus.Enable = false; |
| | | // bodyView.btnMinus.Enable = false; |
| | | // bodyView.arcBar.IsClickable = false; |
| | | // bodyView.arcBar.IsOffline = true; |
| | | //} |
| | | //更新不同界面状态 2022年06月09日19:22:55 wjc 修改 |
| | | bodyView.updateStatusPage(); |
| | | }); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = function.GetRoomListName(); |
| | | //function.SaveFunctionData(true); |
| | | }; |
| | | //自动模式不允许调温度 2021-10-27 09:41:35 wxr 陈琳反馈 |
| | | if (function.GetAttrState(FunctionAttributeKey.Mode) == "auto" || function.GetAttrState(FunctionAttributeKey.Mode) == "timer") |
| | | { |
| | | btnPlus.Enable = false; |
| | | btnMinus.Enable = false; |
| | | arcBar.IsClickable = false; |
| | | arcBar.IsOffline = true; |
| | | } |
| | | |
| | | ////自动模式不允许调温度 2021-10-27 09:41:35 wxr 陈琳反馈 |
| | | //if (function.GetAttrState(FunctionAttributeKey.Mode) == "auto" || function.GetAttrState(FunctionAttributeKey.Mode) == "timer") |
| | | //{ |
| | | // btnPlus.Enable = false; |
| | | // btnMinus.Enable = false; |
| | | // arcBar.IsClickable = false; |
| | | // arcBar.IsOffline = true; |
| | | //} |
| | | //初始化不同界面状态 2022年06月09日19:22:55 wjc 修改 |
| | | this.updateStatusPage(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | btn2.MouseUpEventHandler = eventHandler1; |
| | | dialogView.MouseUpEventHandler = eventHandler; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新不同界面状态 |
| | | /// </summary> |
| | | private void updateStatusPage() |
| | | { |
| | | btnPlus.Enable = true; |
| | | btnMinus.Enable = true; |
| | | arcBar.IsClickable = true; |
| | | arcBar.IsOffline = false; |
| | | switch (getModeValue) |
| | | { |
| | | case "auto"://自动 |
| | | case "timer":// |
| | | btnPlus.Enable = false; |
| | | btnMinus.Enable = false; |
| | | arcBar.IsClickable = false; |
| | | arcBar.IsOffline = true; |
| | | break; |
| | | |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 获取模式value值 |
| | | /// </summary> |
| | | private string getModeValue |
| | | { |
| | | get |
| | | { |
| | | return function.GetAttrState(FunctionAttributeKey.Mode); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | dimmerBar.OnProgressChangedEvent = (sender, e) => |
| | | { |
| | | |
| | | //function.fadeTime = 0; |
| | | //if (!btnSwitch.IsSelected) |
| | | //{ |
| | | // dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); |
| | | //} |
| | | //btnSwitch.IsSelected = e > 0 ? true : false; |
| | | //function.brightness = e; |
| | | //function.trait_on_off.curValue = e > 0 ? "on" : "off"; |
| | | //if (e == 0 || e == 100) |
| | | //{ |
| | | // //Control.Send(CommandType_A.write, this.function); |
| | | // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | // d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString()); |
| | | // Control.Ins.SendWriteCommand(function, d); |
| | | //} |
| | | //else |
| | | //{ |
| | | // if (200 < (DateTime.Now - function.refreshTime).TotalMilliseconds) |
| | | // { |
| | | // function.refreshTime = DateTime.Now; |
| | | // new System.Threading.Thread(() => |
| | | // { |
| | | // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | // d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString()); |
| | | // Control.Ins.SendWriteCommand(function, d); |
| | | // }) |
| | | // { IsBackground = true }.Start(); |
| | | // } |
| | | //} |
| | | if (!btnSwitch.IsSelected) |
| | | { |
| | | dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1); |
| | | } |
| | | btnSwitch.IsSelected = e > 0 ? true : false; |
| | | function.SetAttrState(FunctionAttributeKey.Brightness, e); |
| | | function.trait_on_off.curValue = e > 0 ? "on" : "off"; |
| | | if (e == 0 || e == 100) |
| | | { |
| | | //Control.Send(CommandType_A.write, this.function); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.Brightness, e.ToString()); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | } |
| | | else |
| | | { |
| | | if (500 < (DateTime.Now - function.refreshTime).TotalMilliseconds) |
| | | { |
| | | function.refreshTime = DateTime.Now; |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.Brightness, e.ToString()); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | } |
| | | btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(288 - 16 - 16) / 100) + Application.GetRealWidth(40); |
| | | btnBrightnessText.Text = dimmerBar.Progress + "%"; |
| | | }; |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.Entity; |
| | | using Shared; |
| | | |
| | |
| | | new System.Threading.Thread(() => |
| | | { |
| | | function.trait_on_off.curValue = btnSwitchIcon.IsSelected ? "on" : "off"; |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add("on_off", function.trait_on_off.curValue.ToString()); |
| | | DriverLayer.Control.Ins.SendWriteCommand(function, d); |
| | | }) |
| | |
| | | |
| | | /// <summary> |
| | | /// 上一次更新的时间 |
| | | /// 记录数据反馈的时间(因为有时间网络差数据不回复,导致刷新当前播放音乐时间不正确) |
| | | /// 记录数据反馈的时间(因为有时候网络差数据不回复,导致刷新当前播放音乐时间不正确) |
| | | /// ((当前时间)DateTime.Now - (记录时间)LastDateTimeLastDateTime).TotalSeconds=误差时间(秒) |
| | | /// </summary> |
| | | public DateTime LastDateTime; |
| | |
| | | using System.Collections.Generic; |
| | | using System.Security; |
| | | using HDL_ON.UI.UI2.FuntionControlView.Music; |
| | | using HDL_ON.Entity; |
| | | |
| | | namespace HDL_ON.UI.Music |
| | | { |
| | |
| | | /// </summary> |
| | | View.PlayView playView = new View.PlayView(); |
| | | TopView topView; |
| | | |
| | | |
| | | public void Show() |
| | | { |
| | | |
| | |
| | | ///切换播放模式点击事件; |
| | | playView.playOrderBtn.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | string modeValueString = string.Empty; |
| | | string msg = Language.StringByID(StringId.switchTo); |
| | | switch (A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.mode)) |
| | | //获取当前播放模式 |
| | | string currModeKeyValue = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.mode); |
| | | //获取音乐播放模式列表 |
| | | var attributes = A31MusicModel.Current.functionMusic.GetAttribute(KeyProperty.mode); |
| | | if (attributes == null) |
| | | { |
| | | attributes = new FunctionAttributes(); |
| | | } |
| | | var attributesList = attributes.value; |
| | | //找到当前播放模式索引值 |
| | | int currModeIndexe = attributesList.IndexOf(currModeKeyValue); |
| | | //记录选中的播放模式的索引值 |
| | | int count = 0; |
| | | if (currModeIndexe >= attributesList.Count - 1) |
| | | { |
| | | //重置索引值 |
| | | count = 0; |
| | | } |
| | | else |
| | | { |
| | | count = currModeIndexe + 1; |
| | | } |
| | | //通过索引值找到模式value值 |
| | | string modeValueString = attributesList[count]; |
| | | switch (modeValueString) |
| | | { |
| | | //list_cycle列表循环,single_cycle单曲循环,random随机播放; |
| | | case ValueProperty.list_cycle: |
| | | modeValueString=ValueProperty.single_cycle; |
| | | playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/single.png"; |
| | | msg += Language.StringByID(StringId.singleMode); |
| | | break; |
| | | case ValueProperty.single_cycle: |
| | | modeValueString =ValueProperty.random; |
| | | playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/random.png"; |
| | | msg += Language.StringByID(StringId.randomMode); |
| | | break; |
| | | case ValueProperty.random: |
| | | modeValueString = ValueProperty.list_cycle; |
| | | playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/list.png"; |
| | | msg += Language.StringByID(StringId.listMode); |
| | | break; |
| | | case ValueProperty.single_cycle: |
| | | playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/single_cycle.png"; |
| | | msg += Language.StringByID(StringId.singleCycleMode); |
| | | break; |
| | | case ValueProperty.random: |
| | | playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/random.png"; |
| | | msg += Language.StringByID(StringId.randomMode); |
| | | break; |
| | | case ValueProperty.single: |
| | | playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/single.png"; |
| | | msg += Language.StringByID(StringId.single); |
| | | break; |
| | | case ValueProperty.order: |
| | | playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/order.png"; |
| | | msg += Language.StringByID(StringId.orderMode); |
| | | break; |
| | | |
| | | } |
| | | //写入缓存 |
| | | A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.mode, modeValueString); |
| | | new PublicAssmebly().TipMsgAutoClose(msg, false,1000); |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | | dic.Add(KeyProperty.mode,modeValueString); |
| | | //发送控制指令 |
| | | SendMethod.mMethod.SendControlCommand(A31MusicModel.Current.functionMusic,dic); |
| | | }; |
| | | ///添加喜爱点击事件; |
| | |
| | | playView.volValueBtn.Text = playView.volSeekBar.Progress + "%"; |
| | | if (startVolume != e) |
| | | { |
| | | ///更新最新值 |
| | | A31MusicModel.ProgressDateTime = DateTime.Now; |
| | | startVolume = e; |
| | | A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.volume, startVolume); |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | |
| | | { |
| | | playView.playBtn.IsSelected = false; |
| | | status = ValueProperty.off; |
| | | |
| | | } |
| | | else |
| | | { |
| | |
| | | int totalMusicMinute = totalSecond / 60; |
| | | //秒钟 |
| | | int totalMusicSecond = totalSecond % 60; |
| | | |
| | | //转化歌曲总时间时间格式 |
| | | string totalTime = (totalMusicMinute.ToString().Length < 2 ? "0" + totalMusicMinute.ToString() : totalMusicMinute.ToString()) + ":" + (totalMusicSecond.ToString().Length < 2 ? "0" + totalMusicSecond.ToString() : totalMusicSecond.ToString()); |
| | | //显示总时间 |
| | | playView.endTimeBtn.Text = totalTime; |
| | | |
| | | //显示播放器名称 |
| | | topView.topNameBtn.Text = A31MusicModel.Current.functionMusic.name; |
| | | string s = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.mode); |
| | | //显示播放模式图标 |
| | | switch (A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.mode)) |
| | | { |
| | | case ValueProperty.list_cycle://列表循环 |
| | | playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/list.png"; |
| | | break; |
| | | case ValueProperty.single_cycle://单曲循环 |
| | | playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/single.png"; |
| | | playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/single_cycle.png"; |
| | | break; |
| | | case ValueProperty.random://随机播放 |
| | | playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/random.png"; |
| | | break; |
| | | case ValueProperty.single:// 单曲<single> |
| | | playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/single.png"; |
| | | break; |
| | | case ValueProperty.order://循序循环 |
| | | playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/order.png"; |
| | | break; |
| | | } |
| | | |
| | |
| | | // playView.loveBtn.IsSelected = false; |
| | | // } |
| | | //} |
| | | //显示播放器区域 |
| | | playView.regionBtn.Text = A31MusicModel.Current.functionMusic.GetRoomListName(); |
| | | //显示播放器收藏状态 |
| | | if (A31MusicModel.Current.functionMusic.collect) |
| | | { |
| | | //收藏 |
| | | playView.collectIconBtn.IsSelected = true; |
| | | } |
| | | else |
| | | { |
| | | //不收藏 |
| | | playView.collectIconBtn.IsSelected = false; |
| | | } |
| | | //if (A31MusicModel.Current.A31PlayStatus.IsMute) |
| | |
| | | // playView.volValueBtn.Text = A31MusicModel.Current.A31PlayStatus.vol + "%"; |
| | | // } |
| | | //} |
| | | |
| | | if (1000 < (DateTime.Now - A31MusicModel.ProgressDateTime).TotalMilliseconds) |
| | | //为了防止音量条跳动,延长更新时间(多加1s) |
| | | if (2000 < (DateTime.Now - A31MusicModel.ProgressDateTime).TotalMilliseconds || A31MusicModel.ProgressDateTime == DateTime.MinValue) |
| | | { |
| | | //音量进度条; |
| | | //显示音量进度条值; |
| | | playView.volSeekBar.Progress = int.Parse(A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.volume)); |
| | | //显示当前音量值; |
| | | playView.volValueBtn.Text = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.volume) + "%"; |
| | | } |
| | | //更新播放器音量给系统音量 |
| | | Volume.MusicVolume = playView.volSeekBar.Progress; |
| | | //Volume.MusicVolume = playView.volSeekBar.Progress; |
| | | //当前播放音乐时间 |
| | | //按道理不会为空,GetAttrState("playing_time")值可能为空,强制转换int.Parse()会出现异常,不过也做了异常处理了 |
| | | int playSecond = int.Parse(A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.playing_time))+ (int)(DateTime.Now - A31MusicModel.Current.LastDateTime).TotalSeconds; |
| | | |
| | | int playSecond = int.Parse(A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.playing_time)); |
| | | //识别音乐状态是否在播放状态 |
| | | if (A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.on_off) == ValueProperty.on) |
| | | { |
| | | //音乐在播放时,再计算播放时间(现在时间=原来时间+1秒) |
| | | playSecond += (int)(DateTime.Now - A31MusicModel.Current.LastDateTime).TotalSeconds; |
| | | playSecond += 1;//表示加上等待的时间1s |
| | | ///歌曲记录暂时时间写入缓存; |
| | | A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.playing_time, playSecond); |
| | | } |
| | | if (playSecond <= 0) |
| | | { |
| | | ///播放时间不能小于0; |
| | | playSecond = 0; |
| | | } |
| | | if (playSecond >= totalSecond) |
| | | { |
| | | ///播放时间不能超过总时间; |
| | | playSecond = totalSecond; |
| | | } |
| | | int playMusicMinute = playSecond / 60; |
| | | //秒钟 |
| | | int playMusicSecond = playSecond % 60; |
| | | |
| | | //转化播放时间时间格式 |
| | | string playTime = (playMusicMinute.ToString().Length < 2 ? "0" + playMusicMinute.ToString() : playMusicMinute.ToString()) + ":" + (playMusicSecond.ToString().Length < 2 ? "0" + playMusicSecond.ToString() : playMusicSecond.ToString()); |
| | | |
| | | //显示播放时间 |
| | | playView.startTimeBtn.Text = playTime; |
| | | //显示播放状态 |
| | | if (A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.on_off) == ValueProperty.on) |
| | | { |
| | | //播放 |
| | | playView.playBtn.IsSelected = true; |
| | | //如果在播放,时间就不断变化 |
| | | playView.startTimeBtn.Text = playTime; |
| | | } |
| | | else |
| | | { |
| | | //暂停 |
| | | playView.playBtn.IsSelected = false; |
| | | ///记录歌曲暂停时间;<LastDateTime 计算播放时间有用到> |
| | | A31MusicModel.Current.LastDateTime = DateTime.Now; |
| | | } |
| | | //显示进度条值 |
| | | if (totalSecond == 0) |
| | | { |
| | | //歌曲进度条 |
| | | //歌曲播放进度 |
| | | playView.diyArcSeekBar.Progress = 0; |
| | | } |
| | | else |
| | | { |
| | | //歌曲进度条 |
| | | //歌曲播放进度 |
| | | playView.diyArcSeekBar.Progress = (int)(playSecond * 100.0 / totalSecond);//+1 |
| | | } |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | | playView.playBtn.IsSelected = false; |
| | | //停止播放 |
| | | playView.startTimeBtn.Text =playTime; |
| | | } |
| | | //显示歌曲名称 |
| | | playView.songNameTextView.Text = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.song_name) == null ? "Unkown" : A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.song_name); |
| | | //显示歌手名称 |
| | | playView.singerBtn.Text = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.song_name) == null ? "Unkown" : A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.song_name); |
| | | //更新源的界面 |
| | | // showSourcePage(); |
| | |
| | | void PlayListView(FrameLayout frameLayout, VerticalRefreshLayout verticalScrolViewLayout) |
| | | { |
| | | verticalScrolViewLayout.RemoveAll(); |
| | | //获取播放器名称 |
| | | var listName = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.playlist_name); |
| | | //获取缓存歌曲列表 |
| | | var musicList = A31MusicModel.Current.GetSongList(listName); |
| | | if (musicList.Count == 0) |
| | | { |
| | |
| | | A31MusicModel.Current.palyLists.Clear(); |
| | | if (A31MusicModel.Current.palyLists.Count == 0) |
| | | { |
| | | //获取歌曲列表 |
| | | SendMethod.mMethod.GetPalyList(A31MusicModel.Current.functionMusic); |
| | | |
| | | } |
| | |
| | | { |
| | | UpdateThread.updateCurrMusicThread(frameLayout, middViewLayout, A31MusicModel.Current); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | { |
| | | var function = musicListFunction[i]; |
| | | var music = A31MusicModel.A31MusicModelList.Find((obj) => |
| | | (obj.functionMusic.deviceId == function.deviceId && function.spk == "music.standard") || ( |
| | | obj.functionMusic.deviceId == function.deviceId && function.spk == "av.music") |
| | | (obj.functionMusic.deviceId == function.deviceId && function.spk == SPK.MusicStandard) || ( |
| | | obj.functionMusic.deviceId == function.deviceId && function.spk == SPK.AvMusic) |
| | | ); |
| | | if (music == null) |
| | | { |
| | |
| | | { |
| | | new System.Threading.Thread(() => |
| | | { |
| | | DriverLayer.Control.Ins.SendWriteCommand(function, dic); |
| | | DriverLayer.Control.Ins.SendWriteCommand(function, dic,false,0); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | |
| | | |
| | | case ValueProperty.single_cycle: |
| | | orderIconBtn.UnSelectedImagePath = "MusicIcon/single.png"; |
| | | orderTxetBtn.Text = Language.StringByID(StringId.singleMode); |
| | | orderTxetBtn.Text = Language.StringByID(StringId.singleCycleMode); |
| | | |
| | | break; |
| | | case ValueProperty.random: |