palazzem / econnect-python

API adapter used to control programmatically an Elmo alarm system
BSD 3-Clause "New" or "Revised" License
8 stars 5 forks source link

Support e-connect for Homebridge/HomeKit #77

Closed palazzem closed 7 months ago

palazzem commented 1 year ago

From @nickbolero:

Ciao, scusa se sono fuori tema della discussione. Ma non sapevo come contattarti. Ho visto che hai creato un implementazione di econnect di elmo per Home Assistant, volevo chiederti se si potrebbe avere un qualcosa di simile per Homebridge/HomeKit in modo da integrarlo con la domotica di Apple Casa. Scusa ancora se sono off-topic. Puoi anche cancellare il mio intervento.

Translation:

Hello, I apologize if I am off-topic in this discussion. But I didn't know how to contact you. I saw that you created an implementation of Elmo's econnect for Home Assistant, and I wanted to ask if it would be possible to have something similar for Homebridge/HomeKit in order to integrate it with Apple's smart home system. I apologize again if I am off-topic. You can also delete my comment.

palazzem commented 1 year ago

Ciao @nickbolero! Ho spostato la conversazione visto che anche altri potrebbero essere interessati all'argomento. Dunque questa libreria non offre una soluzione per integrare e-connect tramite Homebridge/HomeKit poiche` accede direttamente ai servizi web di e-connect per pilotare il sistema di allarme tramite le loro API (non pubbliche quindi soggette a modifiche).

Sfortunatamente non sono un esperto di Homebridge/HomeKit non avendo mai creato una integrazione per la domotica Apple, tuttavia posso investigare nei prossimi giorni e verificare se e` possibile e quanto tempo potrebbe volerci.

Tu per caso hai altri esempi di servizi che sono supportati sia da Home Assistant che dalla domotica Apple? Un tuo aiuto/feedback da utilizzatore finale potrebbe aiutarmi a velocizzare i task sopra indicati. Grazie in anticipo!

nickbolero commented 1 year ago

Tu per caso hai altri esempi di servizi che sono supportati sia da Home Assistant che dalla domotica Apple? Un tuo aiuto/feedback da utilizzatore finale potrebbe aiutarmi a velocizzare i task sopra indicati. Grazie in anticipo!

Posso postarti come esempio questo del servizio di Lg: Home Bridge: https://github.com/nVuln/homebridge-lg-thinq#readme Home Assistant: https://github.com/ollo69/ha-smartthinq-sensors

Sfortunatamente non sono un esperto di Homebridge/HomeKit non avendo mai creato una integrazione per la domotica Apple, tuttavia posso investigare nei prossimi giorni e verificare se e` possibile e quanto tempo potrebbe volerci.

Per prove o altro posso fare io da test.

nickbolero commented 1 year ago

Ciao @palazzem novità per l’integrazione di Homebridge? Sei riuscito a capire se è fattibile? Poi volevo chiederti se sapevi dirmi come fare per impostare il pin automatico di inserimento/disinserimento nell’ integrazione di Home Assistant. Visto che lo stavo provando, esponendo poi tutte l’entità su HomeKit con l’integrazione apposita. Infatti ho postato anche sul canale ufficiale di Home Assistant quello dove si parla della tua integrazione, la richiesta di come inserire il pin in automatico.

palazzem commented 1 year ago

Ciao @nickbolero ! Purtroppo non avrò modo di guardarci prima di questo fine settimana. Ho visto il tuo post e da quel che ho visto sembra che tu sia riuscito ad usare la mia integrazione completa per Home Assistant (HA).

Per quanto riguarda la tua domanda, ho sempre suggerito di evitare di registrare il PIN dell'allarme in HA in quanto a quel punto la sicurezza dell'allarme risiede nella sicurezza dell'installazione di HA. Detto questo e presa consapevolezza che se qualcuno accede ad HA può disattivare il tuo allarme senza conoscere il PIN, puoi implementare uno script da UI che attiva e disattiva l'allarme usando un PIN di default. I passi sono i seguenti:

  1. Vai su Impostazioni > Automazione & Scene > Scripts > Aggiungi Script
  2. Metti un nome, un'icona ed assicurati che la modalita` sia "Singola" ovvero che lo script venga eseguito in sequenza solo una volta
  3. Clicca "Aggiungi un'azione" > "Chiama un servizio"
  4. Su "Servizio", cerca qualcosa tipo "Alarm Control Panel: Arm Away". In pratica qua selezioni cosa vuoi far fare allo script (attivare l'allarme quando sei in casa, quando sei fuori o disattivarlo).
  5. Su "Target" (non ricordo la traduzione in italiano) clicca su "Entità" e cerca "Alarm Panel"
  6. A quel punto puoi spuntare "Code" (e` il PIN), dove puoi mettere il tuo PIN di default
  7. Salva
  8. (Bonus) non utilizzo Homekit, ma forse questo "script" (per come lo chiama HA) può essere messo a disposizione di Homekit per attivarlo direttamente dalla domotica Apple?

A quel punto, dalla dashboard di HA, puoi aggiungere il pulsante in una qualsiasi tab. Cliccandolo esegue l'azione senza richiederti di inserire il PIN.

Potrei essere stato leggermente inaccurato a causa della traduzione in italiano, ma chiedimi pure se qualcosa non va!

Oltre a questo avrei due domande:

  1. Se non ho capito male, immagino che stai utilizzando Homebridge per tutti i tuoi dispositivi con integrazione per Homekit, mentre utilizzi Home Assistant solo per e-connect vista la mancata integrazione. E` corretto?
  2. Vuoi inserire il PIN in automatico per una questione di semplicità, oppure perché è presente una limitazione nell'integrazione (e.g. il pannello dell'inserimento del PIN non funziona)?
nickbolero commented 1 year ago
  1. Se non ho capito male, immagino che stai utilizzando Homebridge per tutti i tuoi dispositivi con integrazione per Homekit, mentre utilizzi Home Assistant solo per e-connect vista la mancata integrazione. E` corretto?

Si utilizzo Homebridge per quei dispositivi che non sono nativamente compatibili con HomeKit. E stavo cercando di utilizzare Home Assistant per esporre e-connect.

  1. Vuoi inserire il PIN in automatico per una questione di semplicità, oppure perché è presente una limitazione nell'integrazione (e.g. il pannello dell'inserimento del PIN non funziona)?

No, la limitazione ce l’ho quando, una volta esposto tutte le entità di e-connect tra cui anche il pannello allarme che appare in HomeKit. Quando provo ad inserire uno stato, tipo Allarme Notte: non mi chiede da HomeKit di inserire il pin ma prova solo ad inserire quello stato, infatti quando lancio il comando vedo che su HomeAssistant il pannello allarmi si anima come se avessi premuto solo il tasto Allarme Notte senza inserire il pin. Da HomeAssistant se metto il codice e poi premo sullo stato che voglio inserire funziona tutto. Per questo, ti avevo chiesto come fare per inserire in automatico il codice. La limitazione ce l ho su HomeKit.

palazzem commented 1 year ago

Rimuovi pure la tua email, ti contatto in privato tra oggi e domani cosi` vedo se posso esserti di aiuto!

nickbolero commented 1 year ago

Ciao @palazzem voglio aggiornarti sulle prove che ho fatto:

Immagine WhatsApp 2023-04-22 ore 10 46 37

Immagine WhatsApp 2023-04-22 ore 10 46 36

palazzem commented 1 year ago

Perdonami, è che per l'appunto non sono un esperto di Homekit o della domotica Apple quindi non mi rendo conto di cosa sia atteso o meno! Quindi se ho capito bene, ti vengono esposti tutti gli stati, ma non appena metti uno stato (esempio notte), allora viene correttamente lanciata la richiesta di attivazione ma, poiché il PIN non è inserito e non c'è modo di inserirlo, la richiesta fallisce e quindi non funziona.

Quello che dici è corretto ma non so bene come mai non vedi il pannello dell'allarme da Homekit nonostante l'entità venga correttamente esposta. Infatti, nella mia integrazione, il pannello di allarme è già creato e presente come entità (codice).

In teoria dovresti fare come dici te, ma temo che tra fare un pannello manuale o utilizzare quello offerto dalla mia integrazione non faccia molta differenza (se non vedi uno forse non ti farà vedere nemmeno l'altro?).

Giusto per fare una prova che però non ti consiglio di tenere attiva:

  1. Dalla tua cartella di configurazione di HA, apri custom_components/econnect_alarm/alarm_control_panel.py con un qualsiasi editor di testo. Va bene lo stesso che usi per scrivere le configurazioni di Home Assistant.
  2. Da li, in tutti gli stati dell'allarme, modifica code=None in code=<IL_TUO_CODICE> (non postare mai screenshot qua con il tuo codice presente).

Per fare un esempio, questa funzione:

@set_device_state(STATE_ALARM_DISARMING)
async def async_alarm_disarm(self, code=None):
    """Send disarm command."""
    await self.hass.async_add_executor_job(self._device.disarm, code)

deve diventare:

@set_device_state(STATE_ALARM_DISARMING)
async def async_alarm_disarm(self, code=123456):  # ho cambiato solo questa parte, 123456 deve essere sostituito con il tuo codice numerico
    """Send disarm command."""
    await self.hass.async_add_executor_job(self._device.disarm, code)

Fai questo cambio in tutte le funzioni dove vedi code=None, poi dimmi cosa succede in Homekit e quanto sei distante da quello che vorresti ottenere.

palazzem commented 1 year ago

Ah dimenticavo:

  1. Sto dando per scontato che utilizzi la mia integrazione completa.
  2. Fatta la modifica, devi riavviare Home Assistant completamente.
nickbolero commented 1 year ago

Quello che dici è corretto ma non so bene come mai non vedi il pannello dell'allarme da Homekit nonostante l'entità venga correttamente esposta. Infatti, nella mia integrazione, il pannello di allarme è già creato e presente come entità (codice).

No, forse mi sono spiegato male. Allora il tuo pannello come anche quello che stavo cercando di creare in manuale. Vengono esposti e funzionano tranquillamente. O per meglio dire quando provo ad inserire uno di quei stati (Su HomeKit) che ti ho fatto lo screen. Il pannello su home assistant vedo che reagisce. Cioè in poche parole è come se io da HomeAssistant premessi solo il tasto Attiva Notte senza codice, per tanto non succede niente. Per questo ti avevo chiesto un modo tale che quando premo sul pannello di homeAssistant inserisci esempio: Attiva Notte si inserisca senza chiedere il codice. Cosa che succede realmente quando espongo il pannello su homekit e provo da li, ma senza risultato Perchè non viene inserito il codice in automatico alla pressione di quel tasto.

Cattura

Fai questo cambio in tutte le funzioni dove vedi code=None, poi dimmi cosa succede in Homekit e quanto sei distante da quello che vorresti ottenere.

Ho fatto la modifica che mi hai segnalato ma dopo il riavvio home Assistant mi ha dato questi errori. Se vedi nel log il codice 12345 l'ho cambiato io per oscurarlo. home-assistant_2023-04-22T13-41-19.385Z.log e sul pannello dopo questa modifica sono scomparsi i tasti per iserire gli stati.

palazzem commented 1 year ago

Ah giusto perdonami, la modifica richiede i doppi apici (" ") quindi partendo dall'esempio che ti ho fatto, deve diventare (sempre su tutte le funzioni):

@set_device_state(STATE_ALARM_DISARMING)
async def async_alarm_disarm(self, code="123456"):    # Basta aggiungere " "
    """Send disarm command."""
    await self.hass.async_add_executor_job(self._device.disarm, code)
nickbolero commented 1 year ago

Ok adesso ci siamo funziona cosi!! L'unica cosa non capisco perchè sul Allarm Pannel anche quando attivo notte come stato attivo mi vede sempre Allarme Fuori Casa. Non dovrebbe mostrarmi la dicitura attiva Allarme Notte? Volevo segnalarti che la tua integrazione manca l'iconcina di e-connect Cattura

Per il discorso dello stato errato dell'inserimento hai idee? Pensi sia fattibile avere questa integrazione direttamente in homebridge? Ti posto alcune integrazioni generiche di allarme per homebridge: https://github.com/vectronic/homebridge-alarm-panel https://github.com/MiguelRipoll23/homebridge-securitysystem

palazzem commented 1 year ago

Perfetto! Per ora puoi lasciare così. Magari modifico l'integrazione in modo che dalla pagina di configurazione si possa inserire un codice di default. Così potrai fare tutto da interfaccia grafica senza modificare il codice direttamente.

Per quanto riguarda la dicitura, mi ricordo che ho avuto qualche limitazione in quello che HA mi forniva. Tuttavia, sono oramai passati 2 anni, quindi è il momento giusto per ricontrollare e vedere se posso migliorare il cambio di dicitura!

Per ricapitolare, ammesso che domani abbia tempo, posso integrare il tuo feedback:

  1. Impostare il codice di default direttamente dalla pagina di configurazione dell'integrazione.
  2. Verificare se ci sono limitazioni sulla dicitura Allarme Fuori Casa / Notte, ed in caso sistemare il bug.
  3. Aggiungere l'icona di E-connect (pensavo di mettere questa, che ne dici?).

A parte questi tre elementi, ora riesci ad utilizzare correttamente l'integrazione o hai notato altre cose che ti impediscono di utilizzarla?

Terminate queste modifiche, posso verificare la difficoltà nell'avere questa integrazione per Homebridge.

nickbolero commented 1 year ago

3. Aggiungere l'icona di E-connect (pensavo di mettere questa, che ne dici?).

Si, questa va benissimo.

A parte questi tre elementi, ora riesci ad utilizzare correttamente l'integrazione o hai notato altre cose che ti impediscono di utilizzarla?

Si adesso per quello che devo fare va più che bene. Anche perché alla fine a me serve solo inserire lo stato Notte e Fuori Casa. Infatti volevo chiederti se cancello la parte di codice per l’ inserimento In Casa pensi che funziona lo stesso? Visto che su HomeKit mi espone anche questo tasto dell’ Allarm Pannel? image A me serve vedere solo: Notte-Fuori Casa e Non Attivo per disinserirli. Aspetto buone notizie per Homebridge. Spero che quando approfondirai, saprai dirmi se su homekit è possibile mettere il codice (manuale) dall’ Allarm Pannel da HomeKit.

nickbolero commented 1 year ago

Ciao @palazzem novità? So che sicuramente sei stato impegnato. Spero di sentirti presto 😉

palazzem commented 1 year ago

Ciao @nickbolero ! Purtroppo sono stato fuori l'altra settimana e per lavoro sarofuori anche questa. Posso darti qualche aggiornamento meta settimana prossima quando torno!

Per quanto riguarda la tua domanda, se non ricordo male, l'alarm panel di Home Assistant espone l'opzione se il codice e la funzione e` definita. Pertanto se cancelli questa parte del codice dovrebbe disattivarla completamente.

Ti tengo aggiornato per la settimana prossima! A presto e fammi sapere se incontri altri problemi o bug con questa integrazione!

nickbolero commented 1 year ago

Per quanto riguarda la tua domanda, se non ricordo male, l'alarm panel di Home Assistant espone l'opzione se il codice e la funzione e` definita. Pertanto se cancelli questa parte del codice dovrebbe disattivarla completamente.

ok faccio qualche prova e ti faccio sapere.

Ti tengo aggiornato per la settimana prossima! A presto e fammi sapere se incontri altri problemi o bug con questa integrazione!

Aspetto tue notizie riguardo:

Ok adesso ci siamo funziona cosi!! L'unica cosa non capisco perchè sul Pannello di Allarme anche quando attivo notte come stato attivo mi vede sempre Allarme Fuori Casa.

2. Verificare se ci sono limitazioni sulla dicitura Allarme Fuori Casa / Notte, ed in caso sistemare il bug.

palazzem commented 7 months ago

This is now supported by the main Home Assistant Integration: https://github.com/palazzem/ha-econnect-alarm#homekit-integration.

Closing as it seems resolved at least for who is using Home Assistant.