Limitation des SMS
This commit is contained in:
12
.env
12
.env
@@ -16,7 +16,7 @@ GYRO_CHECK_SEC=20
|
||||
GYRO_NORMAL_CONFIRM=2
|
||||
GYRO_MODE_CONTINUOUS=1
|
||||
GYRO_HYSTERESIS=0.3
|
||||
ALERT_OK_SMS_GYRO=1
|
||||
ALERT_OK_SMS_GYRO=0
|
||||
ALERT_OK_SMS=0
|
||||
GYRO_SMS_MIN_SEC=120
|
||||
GYRO_MQTT_TOPIC_SACLAY=Saclay/gyrophare
|
||||
@@ -48,12 +48,18 @@ OVH_CONSUMER_KEY=305f2e8611e58b83930de84ee65c99f9
|
||||
OVH_SMS_SERVICE=sms-jm164396-1
|
||||
OVH_SMS_SENDER=DOMO91FR
|
||||
SMS_RECEIVER=+33759600180
|
||||
ALERT_SMS_TO_SACLAY=Michel:+33635164680
|
||||
ALERT_SMS_TO_MEUDON=Michel:+33635164680
|
||||
ALERT_SMS_TO_SACLAY=Michel:+33759600180
|
||||
ALERT_SMS_TO_MEUDON=Michel:+33759600180
|
||||
|
||||
ALERT_SMS_CLIENT_TO_MEUDON=Sekou:+33625903364,Damien:+33680388259
|
||||
ALERT_SMS_CLIENT_TO_SACLAY=Nicolas:+33682069405,Sabrina:+33650270939,Mirceta:+33601162960
|
||||
# Activer/désactiver globalement l’envoi client
|
||||
ALERT_SMS_CLIENT_ENABLED=1
|
||||
# 1) couper les SMS internes
|
||||
ALERT_INTERNAL_SMS_ENABLED=0# 0 = coupe tous les SMS “internes” (déclenchement)
|
||||
|
||||
# 2) limiter le flux par cooldown (par sonde)
|
||||
ALERT_SMS_COOLDOWN_SEC=3600# 3600s = 1 SMS max / sonde / heure
|
||||
# (compatibilité: si non défini, on retombe sur GYRO_SMS_MIN_SEC ou 120s)
|
||||
|
||||
|
||||
|
||||
@@ -14,6 +14,10 @@ from dotenv import load_dotenv, find_dotenv
|
||||
load_dotenv(find_dotenv(usecwd=True), override=False)
|
||||
from utils_sms import normaliser_sms
|
||||
|
||||
def _env_bool(name: str, default: bool) -> bool:
|
||||
v = os.getenv(name, str(int(default))).strip().lower()
|
||||
return v in ("1", "true", "yes", "on")
|
||||
|
||||
# MySQL
|
||||
import mysql.connector
|
||||
from mysql.connector import Error as MySQLError
|
||||
@@ -698,7 +702,7 @@ class GyroPulseController:
|
||||
|
||||
# Anti-spam SMS & SMS OK activé par défaut
|
||||
self._last_sms: dict[str, float] = {} # {sonde: ts dernier envoi}
|
||||
self._sms_min_sec = int(os.getenv("GYRO_SMS_MIN_SEC", "120"))
|
||||
self._sms_min_sec = int(os.getenv("ALERT_SMS_COOLDOWN_SEC") or os.getenv("GYRO_SMS_MIN_SEC", "120"))
|
||||
self._send_ok = (os.getenv("ALERT_OK_SMS_GYRO", "1") == "1")
|
||||
|
||||
# Conserver le dernier déclencheur (pour SMS OK)
|
||||
@@ -730,6 +734,8 @@ class GyroPulseController:
|
||||
return False
|
||||
|
||||
def _send_alert_sms(self, trigger: tuple[str, float, float] | None):
|
||||
if not _env_bool("ALERT_INTERNAL_SMS_ENABLED", True):
|
||||
return
|
||||
if not trigger:
|
||||
return
|
||||
sonde, temp, seuil = trigger
|
||||
@@ -738,6 +744,8 @@ class GyroPulseController:
|
||||
self.notifier.send_sms(sms_text)
|
||||
|
||||
def _send_ok_sms_from_last_trigger(self):
|
||||
if not _env_bool("ALERT_OK_SMS_GYRO", True):
|
||||
return
|
||||
if not self._send_ok or not self._last_trigger:
|
||||
return
|
||||
sonde, _temp_prev, seuil = self._last_trigger
|
||||
|
||||
@@ -14,6 +14,10 @@ from dotenv import load_dotenv, find_dotenv
|
||||
load_dotenv(find_dotenv(usecwd=True), override=False)
|
||||
from utils_sms import normaliser_sms
|
||||
|
||||
def _env_bool(name: str, default: bool) -> bool:
|
||||
v = os.getenv(name, str(int(default))).strip().lower()
|
||||
return v in ("1", "true", "yes", "on")
|
||||
|
||||
# MySQL
|
||||
import mysql.connector
|
||||
from mysql.connector import Error as MySQLError
|
||||
@@ -698,7 +702,7 @@ class GyroPulseController:
|
||||
|
||||
# Anti-spam SMS & SMS OK activé par défaut
|
||||
self._last_sms: dict[str, float] = {} # {sonde: ts dernier envoi}
|
||||
self._sms_min_sec = int(os.getenv("GYRO_SMS_MIN_SEC", "120"))
|
||||
self._sms_min_sec = int(os.getenv("ALERT_SMS_COOLDOWN_SEC") or os.getenv("GYRO_SMS_MIN_SEC", "120"))
|
||||
self._send_ok = (os.getenv("ALERT_OK_SMS_GYRO", "1") == "1")
|
||||
|
||||
# Conserver le dernier déclencheur (pour SMS OK)
|
||||
@@ -730,6 +734,8 @@ class GyroPulseController:
|
||||
return False
|
||||
|
||||
def _send_alert_sms(self, trigger: tuple[str, float, float] | None):
|
||||
if not _env_bool("ALERT_INTERNAL_SMS_ENABLED", True):
|
||||
return
|
||||
if not trigger:
|
||||
return
|
||||
sonde, temp, seuil = trigger
|
||||
@@ -738,6 +744,8 @@ class GyroPulseController:
|
||||
self.notifier.send_sms(sms_text)
|
||||
|
||||
def _send_ok_sms_from_last_trigger(self):
|
||||
if not _env_bool("ALERT_OK_SMS_GYRO", True):
|
||||
return
|
||||
if not self._send_ok or not self._last_trigger:
|
||||
return
|
||||
sonde, _temp_prev, seuil = self._last_trigger
|
||||
|
||||
Reference in New Issue
Block a user