Add notifications to pet mode
This commit is contained in:
parent
fe9f7e81e9
commit
d4a19060e8
|
@ -3,16 +3,38 @@ import PropTypes from "prop-types";
|
||||||
import GenericPageWithIcon from "./GenericPageWithIcon";
|
import GenericPageWithIcon from "./GenericPageWithIcon";
|
||||||
import { Sun } from "grommet-icons";
|
import { Sun } from "grommet-icons";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { CAR_API } from "../config";
|
|
||||||
|
import Telegram from "../utils/telegram";
|
||||||
|
import { CAR_API, TG_API, TG_USERID } from "../config";
|
||||||
|
|
||||||
|
function sendNotification(temp) {
|
||||||
|
if (window.sendingPetAlert)
|
||||||
|
return;
|
||||||
|
window.sendingPetAlert = true;
|
||||||
|
const bot = new Telegram(TG_API);
|
||||||
|
bot.sendMessage(TG_USERID, `The temperature in the car is ${temp}°C. Please check your child/pet.`);
|
||||||
|
window.sendingPetAlert = false;
|
||||||
|
}
|
||||||
|
|
||||||
function PetMode(props) {
|
function PetMode(props) {
|
||||||
const [ temp, setTemp ] = useState(null);
|
const [ temp, setTemp ] = useState(null);
|
||||||
|
const [ , setNotified ] = useState(false);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
axios.get(`${CAR_API}data/InsideTemperature`)
|
axios.get(`${CAR_API}data/InsideTemperature`)
|
||||||
.then(resp => setTemp(resp.data.value));
|
.then(resp => setTemp(resp.data.value));
|
||||||
const id = setInterval(
|
const id = setInterval(
|
||||||
() => axios.get(`${CAR_API}data/InsideTemperature`)
|
() => axios.get(`${CAR_API}data/InsideTemperature`)
|
||||||
.then(resp => setTemp(resp.data.value)),
|
.then(resp => {
|
||||||
|
setTemp(resp.data.value);
|
||||||
|
if (resp.data.value > 35 || resp.data.value < 5) {
|
||||||
|
setNotified(notified => {
|
||||||
|
if (notified)
|
||||||
|
return true;
|
||||||
|
sendNotification(resp.data.value);
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
1000
|
1000
|
||||||
);
|
);
|
||||||
return () => clearInterval(id);
|
return () => clearInterval(id);
|
||||||
|
|
Loading…
Reference in New Issue