diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasReqBean.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasReqBean.kt
index 1e81942..2eb580f 100644
--- a/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasReqBean.kt
+++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasReqBean.kt
@@ -1,6 +1,7 @@
 package com.yinuo.safetywatcher.watcher.bean
 
 import com.common.commonlib.db.entity.Gas
+import com.yinuo.safetywatcher.watcher.port.GasCache
 
 data class GasReqBean(
     val gasName: String = "",
@@ -16,8 +17,8 @@ data class GasReqBean(
         gasValue = gas.gasValue.toString(),
         gasUnit = gas.unit,
         reportTime = gas.time.toString(),
-        sensorName = "",
-        status = "",
+        sensorName = GasCache.getNickname(gas.gasName),
+        status = GasCache.getStatus(gas.gasName),
         alarmName = ""
     )
 }
diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasCache.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasCache.kt
new file mode 100644
index 0000000..2bffe25
--- /dev/null
+++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasCache.kt
@@ -0,0 +1,42 @@
+package com.yinuo.safetywatcher.watcher.port
+
+import com.common.commonlib.CommonApplication
+import com.common.commonlib.db.DBUtils
+import kotlinx.coroutines.DelicateCoroutinesApi
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.launch
+
+@OptIn(DelicateCoroutinesApi::class)
+object GasCache {
+    private val statusCache = HashMap<String, String>()
+    private val nicknameCache = HashMap<String, String>()
+
+    init {
+        GlobalScope.launch(Dispatchers.IO) {
+            val typeDao = DBUtils.gasTypeDao()
+            val all = typeDao.getAll()
+            val context = CommonApplication.getContext()
+            all.forEach {
+                setNickname(it.type, it.nickName ?: "")
+                setStatus(it.type, getShowStatus(context, it.status))
+            }
+        }
+    }
+
+    fun getNickname(gas: String): String {
+        return nicknameCache[gas] ?: ""
+    }
+
+    fun getStatus(gas: String): String {
+        return statusCache[gas] ?: ""
+    }
+
+    fun setNickname(gas: String, nickname: String) {
+        nicknameCache[gas] = nickname
+    }
+
+    fun setStatus(gas: String, status: String) {
+        statusCache[gas] = status
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt
index 7d2d44c..ba066ad 100644
--- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt
+++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt
@@ -1,10 +1,13 @@
 package com.yinuo.safetywatcher.watcher.port
 
+import android.content.Context
 import com.common.commonlib.utils.MMKVUtils
+import com.yinuo.safetywatcher.R
 import com.yinuo.safetywatcher.watcher.port.cmd.C02
 import com.yinuo.safetywatcher.watcher.port.cmd.CH4
 import com.yinuo.safetywatcher.watcher.port.cmd.CL2
 import com.yinuo.safetywatcher.watcher.port.cmd.CO
+import com.yinuo.safetywatcher.watcher.port.cmd.GasPortStatus
 import com.yinuo.safetywatcher.watcher.port.cmd.GasTypeEnum
 import com.yinuo.safetywatcher.watcher.port.cmd.H2
 import com.yinuo.safetywatcher.watcher.port.cmd.H2S
@@ -185,4 +188,16 @@ fun convertData(
         retValue = mgm3ToPpm(retValue, gasType.molecular)
     }
     return retValue
+}
+
+fun getShowStatus(context: Context?, state: Int): String {
+    return context?.getString(
+        when (state) {
+            GasPortStatus.PRE_HOT -> R.string.status_prehot
+            GasPortStatus.OK -> R.string.status_ok
+            GasPortStatus.ERROR -> R.string.status_error
+            GasPortStatus.OUTLINE -> R.string.status_offline
+            else -> R.string.status_offline
+        }
+    ) ?: ""
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt
index 3fd1ec9..9290aff 100644
--- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt
+++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt
@@ -2,6 +2,7 @@ package com.yinuo.safetywatcher.watcher.port
 
 import android.os.Handler
 import android.os.Looper
+import com.common.commonlib.CommonApplication
 import com.common.commonlib.db.DBUtils
 import com.common.commonlib.db.entity.Gas
 import com.common.commonlib.db.entity.GasType
@@ -259,6 +260,7 @@ object ParseHelper {
         GlobalScope.launch {
             val typeDao = DBUtils.gasTypeDao()
             val gasType = typeDao.getByName(type.desc)
+            GasCache.setStatus(type.desc, getShowStatus(CommonApplication.getContext(), status))
             gasType?.status = status
             gasType?.sensorIndex = sensorIndex
             typeDao.insert(gasType ?: GasType(type.desc, status, sensorIndex))
diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt
index a2a0507..e8050ab 100644
--- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt
+++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt
@@ -8,6 +8,7 @@ import com.common.commonlib.db.DBUtils
 import com.yinuo.safetywatcher.R
 import com.yinuo.safetywatcher.databinding.ActivitySensorSettingBinding
 import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity
+import com.yinuo.safetywatcher.watcher.port.GasCache
 import com.yinuo.safetywatcher.watcher.port.UNIT_MGM3
 import com.yinuo.safetywatcher.watcher.port.UNIT_PPM
 import com.yinuo.safetywatcher.watcher.port.cmd.O2
@@ -128,14 +129,14 @@ class SensorSettingActivity : NoOptionsActivity() {
 
     private fun saveSetting() {
         val nickName = mBinding.etName.text.toString()
-        if (!nickName.isNullOrEmpty()) {
-            GlobalScope.launch {
-                val typeDao = DBUtils.gasTypeDao()
-                val gasType = typeDao.getByName(gasName)
-                gasType?.nickName = nickName
-                if (gasType != null) {
-                    typeDao.insert(gasType)
-                }
+        GlobalScope.launch {
+            val typeDao = DBUtils.gasTypeDao()
+            val gasType = typeDao.getByName(gasName)
+            val ifEmpty = nickName.ifEmpty { "${gasName}传感器" }
+            gasType?.nickName = ifEmpty
+            GasCache.setNickname(gasName, ifEmpty)
+            if (gasType != null) {
+                typeDao.insert(gasType)
             }
         }
         val checkedRadioButtonId = mBinding.rgUnit.checkedRadioButtonId
diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/SensorAdapter.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/SensorAdapter.kt
index 16c6e64..e960cdf 100644
--- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/SensorAdapter.kt
+++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/SensorAdapter.kt
@@ -8,6 +8,7 @@ import com.yinuo.safetywatcher.R
 import com.yinuo.safetywatcher.databinding.LayoutItemSensorBinding
 import com.yinuo.safetywatcher.watcher.base.BaseRvAdapter
 import com.yinuo.safetywatcher.watcher.port.cmd.GasPortStatus
+import com.yinuo.safetywatcher.watcher.port.getShowStatus
 import com.yinuo.safetywatcher.watcher.ui.SensorSettingActivity
 
 class SensorAdapter :
@@ -39,7 +40,7 @@ class SensorAdapter :
 
             binding.sensorName.text = data.nickName ?: "${data.type}传感器"
             val state = data.status
-            binding.sensorStatus.text = context.getText(getShowStatus(state))
+            binding.sensorStatus.text = getShowStatus(context, state)
             binding.sensorStatus.setTextColor(context.getColor(getShowStatusColor(state)))
         }
 
@@ -52,15 +53,5 @@ class SensorAdapter :
                 else ->  R.color.color_offline
             }
         }
-
-        private fun getShowStatus(state: Int): Int {
-            return when(state){
-                GasPortStatus.PRE_HOT -> R.string.status_prehot
-                GasPortStatus.OK -> R.string.status_ok
-                GasPortStatus.ERROR -> R.string.status_error
-                GasPortStatus.OUTLINE -> R.string.status_offline
-                else -> R.string.status_offline
-            }
-        }
     }
 }