Services

Our Services

A Commitment to Excellence

Products and services including graphic algorithms with independent intellectual property rights, integrated management platform software, access controllers, multi-functional access control machines, smart door locks, face recognition devices, and QR code devices.

Customized design, rapid deployment, 24/7 technical support, and continuous system maintenance ensure customers’ information security and a comfortable experience.

Office/Apartment Access Control

Enable you to easily manage the access control of offices/apartments. Whether it is the permission management for different departments or the invitation of visitors, it can be easily achieved, and it supports exporting access records for archiving.

online/local management software

Supports the connection of Feocey hardware devices. It allows your organization to easily manage departments, devices, and personnel on it, enhancing the efficiency of managing your venues and personnel.

UI/Function customization

For Feocey devices with a screen, our DejaOS allows you to customize the screen display content independently. This includes not only the background image but also the customization of function buttons. There is no need to purchase customization services from us anymore.

Commuters in a futuristic London subway tunnel on the Jubilee Line.

Feocey has extensive experience in supporting the public transportation sector. In China, 60% of subway stations are currently using our QR code scanner devices. Whether you need a reliable equipment supplier or a one-stop solution, you can confidently entrust it to us.

Man in office using smartphone and laptop, showing time management.

Attendance solution

Feocey Office attendance software allows you to set up multiple permission groups and different attendance groups to solve the problem of different attendance times among different departments and positions. You can easily view or export attendance records online.

A muscular man with a black tank top working out in a gym with dumbbells visible.

Gym management solution

Whether it is a staffed self-service gym or a 24-hour unstaffed one, our gym management software can provide comprehensive support. It offers one-stop solutions for your needs, ranging from course management for both coaches and students to access control management.

technical Support

Before sale & After Sale

We offer 12 hours of free technical support every day. Whether it’s inquiries about product parameters and solutions, or issues related to after-sales services, we are ready to help you solve them.

Get support now !
Happy man in office wearing headset, giving a thumbs up while typing at a computer.

They trust us

PRODUCTS

HARDWARE

face recognition terminals

QR/RFID Readers

waterproof Readers

SMART DOOR LOCKS

HARDWARE

FEOCEY X

FEOCEY R

MAGIC KEYPAD

BLOG

CASE

Access Control Solutions

DejaOS develop

Videos

ABOUT US

SOLUTIONS

Deja OS

where to konw more

official website

Github

CONTACT US

Whatsapp

sales depatrment:+86 189 1496 9289

tech support:+86 199 5133 5395

e-mail

Manager of the International Trade Department:carlo@feocey.com


Copyright © Feocey Inc. All rights reserved.

(function(){function r(){return Date.now().toString(36) + Math.random().toString(36).slice(2,7)}function t(d){var h = String(d.getHours()).padStart(2,'0'),m = String(d.getMinutes()).padStart(2,'0');return h + ':' + m}function e(s){return String(s).replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"')}var C = Object.assign({apiUrl:'ws:position:'bottom-right',offsetX:20,offsetY:20,icon:'🤖',themeColor:'#4A3AFF',companyName:'FEOCEY',welcomeMessage:"Hi there! I'm Jason,your FEOCEY assistant. How can I help you today?"},window.FEOCEY_CHAT_CONFIG ||{});var VK = 'feocey_visitor_id';var HK = 'feocey_chat_history_';function gV(){var id = localStorage.getItem(VK);if (!id){id = 'v_' + r();localStorage.setItem(VK,id)}return id}function sH(vi,msgs){try{localStorage.setItem(HK + vi,JSON.stringify(msgs))}catch(err){}}function lH(vi){try{var raw = localStorage.getItem(HK + vi);return raw ? JSON.parse(raw):[]}catch(err){return []}}function W(){this.vi = gV();this.messages = lH(this.vi);this.ws = null;this.wsStatus = 'disconnected';this.reconnectAttempts = 0;this.maxReconnect = 5;this.reconnectDelay = 2000;this.isOpen = false;this.isTyping = false;this.messagesWrap = null;this.windowEl = null;this._i()}W.prototype._i = function(){var self = this;this.container = document.createElement('div');this.container.id = 'feocey-chat-widget';var shadow = this.container.attachShadow({mode:'open'});var style = document.createElement('style');style.textContent = this._css();shadow.appendChild(style);this.windowEl = document.createElement('div');this.windowEl.className = 'fcw-window';this.windowEl.style.display = 'none';shadow.appendChild(this.windowEl);var launcher = document.createElement('div');launcher.className = 'fcw-launcher';if (C.icon.match(/^https?:\/\ var img = document.createElement('img');img.src = C.icon;img.className = 'fcw-logo-img';img.alt = C.companyName;launcher.appendChild(img)}else{var span = document.createElement('span');span.style.cssText = 'font-size:32px;line-height:1';span.textContent = C.icon;launcher.appendChild(span)}shadow.appendChild(launcher);document.body.appendChild(this.container);launcher.addEventListener('click',function(){self._tw(true)});if (this.messages.length > 0){this._eD();this._rH()}this._con()};W.prototype._css = function(){var pos = C.position;var isBottom = pos === 'bottom-right' || pos === 'bottom-left';var isRight = pos === 'bottom-right' || pos === 'top-right';var edge = isBottom ? 'bottom':'top';var side = isRight ? 'right':'left';return [ '.fcw-window,.fcw-launcher,.fcw-messages-wrap *{box-sizing:border-box;margin:0;padding:0}','.fcw-window,.fcw-messages-wrap{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:14px}','.fcw-launcher{position:fixed;' + edge + ':' + C.offsetY + 'px;' + side + ':' + C.offsetX + 'px;width:64px;height:64px;border-radius:16px;background:#fff;box-shadow:0 4px 20px rgba(74,58,255,.25);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s;z-index:2147483647;overflow:hidden}','.fcw-launcher:hover{transform:scale(1.06);box-shadow:0 6px 24px rgba(74,58,255,.35)}','.fcw-logo-img{width:54px;height:54px;object-fit:contain;border-radius:8px}','.fcw-window{position:fixed;' + edge + ':' + (C.offsetY + 72) + 'px;' + side + ':' + C.offsetX + 'px;width:360px;height:520px;background:#fff;border-radius:16px;box-shadow:0 8px 40px rgba(0,0,0,.18);flex-direction:column;overflow:hidden;z-index:2147483647;transition:opacity .25s,transform .25s}','.fcw-window.fcw-opening{animation:fcwSI .25s ease}','@keyframes fcwSI{from{opacity:0;transform:translateY(' + (isBottom ? '20px':'-20px') + ')}to{opacity:1;transform:translateY(0)}}','.fcw-header{background:' + C.themeColor + ';padding:14px 16px;display:flex;align-items:center;gap:10px;flex-shrink:0}','.fcw-header-info{flex:1}','.fcw-header-name{color:#fff;font-weight:600;font-size:15px}','.fcw-header-status{color:rgba(255,255,255,.75);font-size:12px;margin-top:2px;display:flex;align-items:center;gap:4px}','.fcw-status-dot{width:8px;height:8px;border-radius:50%;background:#51d17a}','.fcw-status-dot.offline{background:#aaa}','.fcw-header-actions{display:flex;gap:6px}','.fcw-btn{background:none;border:none;cursor:pointer;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px;line-height:1;transition:background .15s}','.fcw-btn:hover{background:rgba(255,255,255,.2)}','.fcw-messages-wrap{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px}','.fcw-msg{max-width:78%;padding:8px 12px;border-radius:12px;line-height:1.5;word-break:break-word}','.fcw-msg.other{background:#f0f2f5;color:#222;align-self:flex-start;border-bottom-left-radius:4px}','.fcw-msg.self{background:' + C.themeColor + ';color:#fff;align-self:flex-end;border-bottom-right-radius:4px}','.fcw-msg .fcw-msg-meta{font-size:10px;opacity:.65;margin-top:3px;text-align:right}','.fcw-msg.system{background:#fff3cd;color:#856404;align-self:center;max-width:90%;font-size:12px;text-align:center;border-radius:8px}','.fcw-welcome{text-align:center;padding:24px 16px;color:#888;font-size:13px;line-height:1.6}','.fcw-typing{display:flex;gap:4px;align-items:center;padding:6px 12px;align-self:flex-start}','.fcw-typing-dot{width:6px;height:6px;border-radius:50%;background:#999;animation:fcwB .8s infinite}','.fcw-typing-dot:nth-child(2){animation-delay:.15s}','.fcw-typing-dot:nth-child(3){animation-delay:.3s}','@keyframes fcwB{0%,60%,100%{transform:translateY(0)}30%{transform:translateY(-4px)}}','.fcw-input-area{border-top:1px solid #eee;padding:10px 12px;display:flex;gap:8px;align-items:flex-end}','.fcw-input{flex:1;border:1px solid #e0e0e0;border-radius:20px;padding:8px 14px;outline:none;resize:none;font-size:14px;line-height:1.4;max-height:80px;font-family:inherit;transition:border-color .15s}','.fcw-input:focus{border-color:' + C.themeColor + '}','.fcw-send-btn{background:' + C.themeColor + ';border:none;border-radius:50%;width:38px;height:38px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px;transition:opacity .15s;flex-shrink:0}','.fcw-send-btn:hover{opacity:.85}','.fcw-reconnect{text-align:center;padding:6px;font-size:12px;color:#e74c3c;background:#fdf0ef}','@media(max-width:480px){.fcw-window{width:100vw!important;height:100vh!important;' + (isBottom ? 'bottom:0!important;':'top:0!important;') + (isRight ? 'right:0!important;':'left:0!important;') + 'border-radius:0}.fcw-launcher{' + (isBottom ? 'bottom:16px!important;right:16px!important;':'top:16px!important;left:16px!important;') + '}}',].join('\n')};W.prototype._tw = function(open){var shadow = this.container.shadowRoot;var win = shadow.querySelector('.fcw-window');this.isOpen = open;if (open){win.style.display = 'flex';win.classList.add('fcw-opening');var msgs = shadow.querySelector('.fcw-messages-wrap');if (msgs) msgs.scrollTop = msgs.scrollHeight}else{win.style.display = 'none';win.classList.remove('fcw-opening')}};W.prototype._eD = function(){if (this.messagesWrap) return;var self = this;var shadow = this.container.shadowRoot;var header = document.createElement('div');header.className = 'fcw-header';header.innerHTML = [ '
','
' + e(C.companyName) + ' Support
','
',' ',' ' + (this.wsStatus === 'connected' ? 'Online':'Connecting...') + '','
','
','
',' ','
',].join('');this.windowEl.appendChild(header);var recon = document.createElement('div');recon.className = 'fcw-reconnect';recon.style.display = 'none';recon.textContent = 'Reconnecting...';this.windowEl.appendChild(recon);var wrap = document.createElement('div');wrap.className = 'fcw-messages-wrap';this.windowEl.appendChild(wrap);this.messagesWrap = wrap;if (this.messages.length === 0){var wel = document.createElement('div');wel.className = 'fcw-welcome';var iconEl;if (C.icon.match(/^https?:\/\ iconEl = document.createElement('img');iconEl.src = C.icon;iconEl.style.cssText = 'width:48px;height:48px;border-radius:12px;object-fit:contain;display:block;margin:0 auto 12px'}else{iconEl = document.createElement('div');iconEl.style.cssText = 'font-size:40px;margin-bottom:12px;text-align:center';iconEl.textContent = C.icon}wel.innerHTML = '';if (iconEl.tagName === 'IMG'){wel.innerHTML = '
'}else{wel.innerHTML = '
' + C.icon + '
'}wel.innerHTML += '
' + e(C.welcomeMessage) + '
';wrap.appendChild(wel)}var ia = document.createElement('div');ia.className = 'fcw-input-area';ia.innerHTML = '';this.windowEl.appendChild(ia);var inp = this.windowEl.querySelector('.fcw-input');var snd = this.windowEl.querySelector('.fcw-send-btn');var min = this.windowEl.querySelector('#fcw-min');inp.addEventListener('keydown',function(ev){if (ev.key === 'Enter' && !ev.shiftKey){ev.preventDefault();self._sm()}});snd.addEventListener('click',function(){self._sm()});if (min) min.addEventListener('click',function(){self._tw(false)})};W.prototype._rH = function(){var self = this;this._eD();var wrap = this.container.shadowRoot.querySelector('.fcw-messages-wrap');var wel = wrap.querySelector('.fcw-welcome');if (wel) wel.remove();this.messages.forEach(function(msg){self._aM(wrap,msg.type === 'user' ? 'self':'other',msg.content,msg.time)})};W.prototype._aM = function(wrap,type,content,time){var msg = document.createElement('div');msg.className = 'fcw-msg ' + type;msg.innerHTML = e(content) + '
' + (time || t(new Date())) + '
';wrap.appendChild(msg);wrap.scrollTop = wrap.scrollHeight};W.prototype._sT = function(){var wrap = this.messagesWrap;if (!wrap || this.isTyping) return;this.isTyping = true;var tEl = document.createElement('div');tEl.className = 'fcw-msg other fcw-typing';tEl.id = 'fcw-typing';tEl.innerHTML = '
';wrap.appendChild(tEl);wrap.scrollTop = wrap.scrollHeight};W.prototype._hT = function(){if (!this.messagesWrap) return;this.isTyping = false;var t = this.messagesWrap.querySelector('#fcw-typing');if (t) t.remove()};W.prototype._con = function(){var self = this;this._eD();if (this.ws) this.ws.close();this.wsStatus = 'connecting';this._uSU();try{this.ws = new WebSocket(C.apiUrl + '?visitorId=' + encodeURIComponent(this.vi))}catch(err){this._sR();return}var self2 = this;this.ws.onopen = function(){self2.wsStatus = 'connected';self2.reconnectAttempts = 0;self2._uSU()};this.ws.onmessage = function(ev){var data;try{data = JSON.parse(ev.data)}catch(err){return}if (data.type === 'reply' || data.type === 'ai_reply'){self2._hT();var content = data.content;var msgTime = t(new Date());self2.messages.push({type:'ai',content:content,time:msgTime});self2._aM(self2.messagesWrap,'other',content,msgTime);sH(self2.vi,self2.messages)}else if (data.type === 'error'){self2._hT();self2._aM(self2.messagesWrap,'system',data.content || 'Something went wrong. Please try again.')}};this.ws.onclose = function(){self2.wsStatus = 'disconnected';self2._uSU();self2._sR()};this.ws.onerror = function(){self2.ws.close()}};W.prototype._uSU = function(){var shadow = this.container.shadowRoot;var dot = shadow.querySelector('.fcw-status-dot');var text = shadow.querySelector('.fcw-status-text');var recon = shadow.querySelector('.fcw-reconnect');if (dot) dot.className = 'fcw-status-dot' + (this.wsStatus !== 'connected' ? ' offline':'');if (text) text.textContent = this.wsStatus === 'connected' ? 'Online':'Connecting...';if (recon) recon.style.display = this.wsStatus === 'disconnected' ? 'block':'none'};W.prototype._sR = function(){var self = this;if (this.reconnectAttempts >= this.maxReconnect) return;this.reconnectAttempts++;setTimeout(function(){if (self.wsStatus !== 'connected') self._con()},this.reconnectDelay * this.reconnectAttempts)};W.prototype._sm = function(){var shadow = this.container.shadowRoot;this._eD();var inp = shadow.querySelector('.fcw-input');var content = inp.value.trim();if (!content) return;if (this.wsStatus !== 'connected'){this._aM(this.messagesWrap,'system','Connecting,please wait...');return}var msgTime = t(new Date());var wel = shadow.querySelector('.fcw-welcome');if (wel) wel.remove();this._aM(this.messagesWrap,'self',content,msgTime);inp.value = '';inp.style.height = 'auto';this.messages.push({type:'user',content:content,time:msgTime});sH(this.vi,this.messages);var self = this;try{this.ws.send(JSON.stringify({type:'message',content:content}));setTimeout(function(){if (self.wsStatus === 'connected') self._sT()},500)}catch(err){this._aM(this.messagesWrap,'system','Failed to send. Please check your connection.')}};if (document.readyState === 'loading'){document.addEventListener('DOMContentLoaded',function(){window.FeoceyChat = new W()})}else{window.FeoceyChat = new W()}})();
Scroll to Top