Source code for caspia.gateway_mock.services.temperature

import asyncio
import logging
import random

from caspia.meadow.services import TemperatureSensorBase

from .base import MockService

logger = logging.getLogger('mock-status')


[docs]class TemperatureSensor(MockService, TemperatureSensorBase): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._generate_temp() asyncio.ensure_future(self._temp_generator_loop()) def _generate_temp(self): self.temp.value = 21.5 + random.uniform(-2.5, 2.5) @property def interval(self): for value in self.config.values(): if hasattr(value, 'interval'): return value.interval return 0 async def _temp_generator_loop(self): interval = self.interval if interval > 0: while True: self._generate_temp() await asyncio.sleep(interval + random.uniform(-1, 1))