@engr.nazrul/device-temperature-monitor
v1.0.4
Published
Vue 3 + Quasar device temperature monitoring composable and banner component.
Maintainers
Readme
@engr.nazrul/device-temperature-monitor
Vue 3 + Quasar helper to display and monitor device temperature readings. It ships:
<DeviceTemperatureBanner>— a small status banner that color-codes the reading.useDeviceTemperature— a composable that derives level, labels, and messages from a temperature source.
Installation
npm install @engr.nazrul/device-temperature-monitor
# peer deps
npm install vue quasarQuick start (banner)
<template>
<DeviceTemperatureBanner
:temperature="temperature"
:limits="{ normalMax: 40, warningMax: 50 }"
:hide-when-normal="true"
/>
</template>
<script setup lang="ts">
import { DeviceTemperatureBanner } from '@engr.nazrul/device-temperature-monitor';
// Replace with your native bridge / API value
const temperature = 42.3;
</script>Quick start (composable)
import { useDeviceTemperature } from '@engr.nazrul/device-temperature-monitor';
const { temperature, level, colorClass, label, message, start, stop, setManualTemperature } =
useDeviceTemperature({
limits: { normalMax: 40, warningMax: 50 },
fetchTemperature: async () => {
// Example: fetch from native bridge / API
return await window.nativeTemperature?.getCelsius?.() ?? null;
},
intervalMs: 10_000,
});Key behaviors:
- Defaults:
limits{ normalMax: 40, warningMax: 50 },intervalMs10_000ms. start()begins polling whenfetchTemperatureis provided;stop()clears it.setManualTemperaturelets you override the value (e.g., from an event callback).- Helpers:
level,colorClass,label, andmessagederived from the current temperature.
Component props
temperature?: number | null— current reading in °C.limits?: TemperatureLimits— thresholds (normalMax: 40,warningMax: 50by default).hideWhenNormal?: boolean— hide banner when level isnormal(defaultfalse).floating?: boolean— render the banner as a fixed overlay at the top center (defaultfalse).
Banner visuals:
- Colors: normal
bg-green-7, warningbg-yellow-7, dangerousbg-red-7, unknownbg-grey-7. - Icons: normal
check_circle, warningwarning, dangerousreport_problem, unknowndevice_unknown.
Types
type TemperatureLevel = 'unknown' | 'normal' | 'warning' | 'dangerous';
interface TemperatureLimits {
normalMax: number;
warningMax: number;
}
interface UseDeviceTemperatureOptions {
limits?: TemperatureLimits;
fetchTemperature?: () => Promise<number | null>;
intervalMs?: number;
}Building locally
npm install
npm run buildOutputs are written to dist/ (ESM, CJS, and type declarations). Quasar and Vue are externalized as peer dependencies.
