Comme je le disais je ne connais pas (encore ?) GitHub ni ses fonctionnalités. Voici donc les modifs faites que tu pourras intégrer
Attention ça fonctionne pour mon modèle d’alarme Protexiom 5000 v10_3. Je te laisse le soin de voir la compatibilité avec la Protexial
Ajout des statuts :
- Signal gsm (Connecté au réseau ou pas)
- Réception gms (Niveau du signal de 1 à 5 de ce qu j’ai vu)
- Opérateur gsm
- Caméra (active ou pas)
Qund je tape le lien http://192.168.1.xxx/status.xml
J’ai ça : off off off ok ok ok ok ok GSM connecté au réseau 4 "Orange disabled
Dans le fichier protexial.py
class Status:
zoneA = "off"
zoneB = "off"
zoneC = "off"
battery = "ok"
radio = "ok"
door = "ok"
alarm = "ok"
box = "ok"
# Signal gsm
gsm = "GSM connecté au réseau"
# Réception gsm
recgsm = "4"
# Opérateur gsm
opegsm = "Orange"
# Caméra
camera = "Disabled"
def __getitem__(self, key):
return getattr(self, key)
# Ajout signal gsm / réception gsm / opérateur gsm / caméra à la fin
def __str__(self):
return f"zoneA:{self.zoneA}, zoneB:{self.zoneB}, zoneC:{self.zoneC}, battery:{self.battery}, radio:{self.radio}, door:{self.door}, alarm:{self.alarm}, box:{self.box}, gsm:{self.gsm}, recgsm:{self.recgsm}, opegsm:{self.opegsm}, camera:{self.camera}"
async def get_status(self):
status_response = await self.__do_call("get", Page.STATUS)
content = await status_response.text("latin1")
response = ET.fromstring(content)
status = Status()
for child in response:
match child.tag:
case "defaut0":
status.battery = child.text
case "defaut1":
status.radio = child.text
case "defaut2":
status.door = child.text
case "defaut3":
status.alarm = child.text
case "defaut4":
status.box = child.text
case "zone0":
status.zoneA = child.text
case "zone1":
status.zoneB = child.text
case "zone2":
status.zoneC = child.text
# Signal gsm
case "gsm":
status.gsm = child.text
# Réception gsm
case "recgsm":
status.recgsm = child.text
# Opérateur gsm
case "opegsm":
status.opegsm = child.text
# Caméra
case "camera":
status.camera = child.text
return status
J’ai ensuite rajouté un binary sensor à la fin du fichier const.py pour le signal gsm
{
# Signal gsm
"id": "gsm",
"name": "Communication gsm",
"device_class": BinarySensorDeviceClass.CONNECTIVITY,
"entity_category": EntityCategory.DIAGNOSTIC,
"icon_on": "mdi:cellphone",
"icon_off": "mdi:cellphone-off",
"on_if": "GSM connecté au réseau",
"state_on": "ok",
"state_off": "ko",
},
Une fois HA redémarré
2024-02-27 21:19:21.069 DEBUG (MainThread) [custom_components.somfy_protexial] zoneA:off, zoneB:off, zoneC:off, battery:ok, radio:ok, door:ok, alarm:ok, box:ok, gsm:GSM connecté au réseau, recgsm:4, opegsm:"Orange, camera:disabled
2024-02-27 21:19:21.069 DEBUG (MainThread) [custom_components.somfy_protexial] Finished fetching Somfy Protexial status update data in 0.922 seconds (success: True)
Voilà ma modeste contribution
Il faudrait que j’aille plus loin en créant les sensors pour la réception gsm et l’opérateur. Mais je n’ai pas encore trouvé comment faire. Je débute dans HA
A suivre donc
JC