Entwicklung/Forschung rund um die ALP-600 Sprechanlage [inkl. Modul]

Begonnen von choenig, 11 November 2019, 18:53:50

Vorheriges Thema - Nächstes Thema

choenig

Hallo zusammen,

in diesem Thread möchte ich die Entwicklung meines Moduls für die ALP-600 (https://www.alphago.de/de/lan-ip-sip-video-tuersprechanlage/lan-ip-sip-video-tuersprechanlage-alp-600) vorantreiben.

Es ist die Fortsetzung der Diskussion von https://forum.fhem.de/index.php/topic,50543.0.html.

Das Modul hängt an diesem Post an (Benutzung auf eigene Gefahr!).

Ich hab' das Modul seit über einem Jahr im Betrieb und bei mir funktioniert es fehlerfrei. Es ist aber noch nicht sehr gut dokumentiert :-/.

Der Code basiert auf dem Modul vom Nuki und verhält sich daher auch ähnlich:
* Die FHEM-Instanz wird als Callback in der ALP-600 registriert und bekommt dann ring, motion oder beides gepusht (set ALP600 callback [motion|ring|both]
* Das Modul kann die callbacks dann an den Offiziellen Service von Alphago weiterleiten, damit die ALP-600-App auch klingelt. Bisher weiss ich nur, dass das unter iOS funktioniert. Die Anleitung zum Aktivieren ist in der commandref
* Es unterstützt einen Ping Mechanismus, den man verwenden kann, um zu reagieren, falls jmd. die Ausseineinheit abklemmt. Die ALP-600 benötigt nämlich ein Netzwerkkabel an der Aussenstation, an welchem sich ein Angreifer Zugriff auf das interne Netzwerk des Hauses erhaschen kann. Ich deaktiviere hier meinen Port im Switch.

Changelog
0.3.0

  • allow some more ping intervals via drop down
  • disable ping by default
  • implement checkOutputInterval to repeatedly check the outputs (relais)
  • fix perl warnings
  • perl: s/or/||/g and s/and/&&/g"
  • bump version to 0.3.0
0.4.0

  • make Net::Ping and XML::Simple optional (but depend features on it)
0.5.0

  • password is now stored in a file rather than in an attribute
    Attention: the attribute 'basicAuth' has been removed. You have to store your username in the attribute 'username' (if it's not 'admin', which is the default) and then do 'set ALP600 password <yourpassword>' to make it work again.
0.6.0

  • very basic implementation of useWait for mr_petz :)
    This is not yet documented and ... well ... very basic: If you set the attribute 'useWait' to 1 and 'checkOutputInterval' to something other than 0, the state will be set to 'wait' as soon as output1 switches to 1.
0.7.0

  • New: reset state to 'idle' (renamed from 'wait')

    • via timeout (attr idleTimeout)
    • via door contact (attr idleDoorContact)
    • via output (attr idleOnOutput and attr outputCheckInterval)
  • Fixed: reinsert 'activateOutput' in SetFn
0.8.0

  • try to fill WEBHOOK_REGISTER with current callback status (may need to re-set webhookFWinstance to work properly)
  • use cgi- instead of .asp-endpoints
0.9.0

  • update commandref
0.10.0

  • fix bug that deleted password from uniqueID when rereadcfg was called
0.11.0

  • reduce log-level to not log passwords regularly (thanks to frober for the report)

LG
Christian

mr_petz

#1
Hi, bin bereiti zu helfen/testen.
schön das du weiter machen willst mit dem Modul-

schön wäre es wie ich es beschrieben habe, sowas wie die HTTPMOD zum auslesen des Kontaktstatus im Device.
Ich mache es so zur zeit:

defmod Door_Relais HTTPMOD http://xx.xx.xx.xx/cgi-bin/controller_cgi?action=get&user=fhem&pwd=xxx
attr Door_Relais userattr reading01Name reading01Regex readingsRegex_Schloss
attr Door_Relais enableControlSet 1
attr Door_Relais enforceGoodReadingNames 1
attr Door_Relais eventMap 1:geöffnet 0:geschlossen
attr Door_Relais reading01Name Schloss
attr Door_Relais reading01Regex Status1=(.*?.)
attr Door_Relais room Eingang
attr Door_Relais showBody 1
attr Door_Relais stateFormat Türöffner: Schloss
attr Door_Relais userReadings Türöffner {ReadingsVal("Door_Relais","Schloss","")}


ich habe einen Standardbenutzer namens fhem angelegt.

choenig

#2
Hi,

:)

Zitat von: mr_petz am 11 November 2019, 21:09:08
schön wäre es wie ich es beschrieben habe, sowas wie die HTTPMOD zum auslesen des Kontaktstatus im Device.

Das kannte ich nicht, bis Du mich drauf aufmerksam gemacht hast. Das bau' ich auf jeden Fall ein, finde ich ziemlich gut, auch wenn ich, wie gesagt, eher auf push denn auf pull stehe :).

Die Grundidee ist, dass in der ALP600 der FHEM-Server unter "Netzwerk > HTTP Ereignis" konfiguriert wird und die ALP-600 dann beim Klingeln (ring) oder bei Bewegung (motion) FHEM kontaktiert und Du es dann als Ereignis bekommst.

Wie geschrieben, das funktioniert auch, wenn man zusätzlich die original ALP-600 (iOS) App verwenden möchte, ist dann nur ein bissle komplizierter.

[Beides habe ich aus dem Gedächtnis geschrieben, hab' ich seit 'nem Jahr nicht mehr gemacht :)]

Ohne iOS-App:
* define Alp600 ALP600 <IP>
* attr Alp600 basicauth <USER>:<PASSWORD>
* attr webhookFWinstance auf WEB stellen
* und webhookHttpHostname setzen (auf die IP vom FHEM-Server)
* set Alp600 callbacks ring

Sobald Du jetzt klingelts an der ALP-600 bekommst du im Alp600 ein event: ring worauf Du reagieren kannst.

Um es mit iOS-APP zu nutzen, muss es auf allen Handies aktiviert werden, die genutzt werden sollen, bevor die Callbacks gesetzt werden:
* Auf allen Handies in der ALP-600 App das Klingeln aktivieren in den Einstellungen (weiss nicht mehr ganz genau, wie das aussieht)
* set Alp600 callbacks ring
* attr Alp600 notifyOfficialApp ring

Jetzt Informiert die ALP-600 beim klingeln zunächst Dein FHEM unter der angegebenen IP (webhookHttpHostname) und dann informiert Dein FHEM die offizielle ALP-600 APP (unter der IP im Quellcode).

LG
Christian

mr_petz

#3
ich glaube ich muss noch was am csrfToken machen das ich das reading ring bekomme oder?
bis jetzt passiert nichts.


defmod EingangCam ALP600 IP_ALP
attr EingangCam basicauth fhem:xxx
attr EingangCam icon ring
attr EingangCam pingInterval 60
attr EingangCam webhookFWinstance WEB
attr EingangCam webhookHttpHostname IP_fhem


* set EingangCam callbacks ring  #gesetzt
* set EingangCam notifyOfficialApp ring #gibt es im auswahlfenster nicht

benutze android und fritzfon

choenig

Hi,

Zitat von: mr_petz am 11 November 2019, 22:35:14
ich glaube ich muss noch was am csrfToken machen das ich das reading ring bekomme oder?
bis jetzt passiert nichts.

Gute Punkt, den musst Du deaktivieren.

Ich habe dafür eine zusätzliche WEB Instanz, bei der der csrfToken auf none steht, die ich für zugriff von Nuki und ALP-600 verwende.

Zitat von: mr_petz am 11 November 2019, 22:35:14

defmod EingangCam ALP600 IP_ALP
attr EingangCam basicauth fhem:xxx
attr EingangCam icon ring
attr EingangCam pingInterval 60
attr EingangCam webhookFWinstance WEB
attr EingangCam webhookHttpHostname IP_fhem


* set EingangCam callbacks ring  #gesetzt
* set EingangCam notifyOfficialApp ring #gibt es im auswahlfenster nicht

Mh, sieht gut aus, gibts denn im Auswahlfenster garnichts? Bei mir wird das gelistet, neben both, motion und none.

LG
Christian

mr_petz

ok mache auch eine neue WEB instanz.
das notifyOfficialApp sehe ich nicht???

mr_petz

hier die API´s

1. ist von Alphago
2. ist von Sysvideo (API ist gleich) (auf der Webseite gibt es auch die SDK)

Es gibt auch noch von Axis eine API, wo der param.cgi beschrieben ist. Da teste ich aber gerade noch was da geht. Bisher nur das:
/cgi-bin/param.cgi?action=list

mr_petz

#7
Zitat von: choenig am 11 November 2019, 21:35:33

Um es mit iOS-APP zu nutzen, muss es auf allen Handies aktiviert werden, die genutzt werden sollen, bevor die Callbacks gesetzt werden:
* Auf allen Handies in der ALP-600 App das Klingeln aktivieren in den Einstellungen (weiss nicht mehr ganz genau, wie das aussieht)
* set Alp600 callbacks ring
* set Alp600 notifyOfficialApp ring

Jetzt Informiert die ALP-600 beim klingeln zunächst Dein FHEM unter der angegebenen IP (webhookHttpHostname) und dann informiert Dein FHEM die offizielle ALP-600 APP (unter der IP im Quellcode).

Das braucht man nicht mehr, da in der aktuellen Firmware (3.1.14.0.6.18.28) das automatisch von der ALP an die APP (Android) gesendet wird.

choenig


mr_petz

Zitat von: choenig am 12 November 2019, 10:00:00
Die neue Firmware hab ich leider noch nicht.

LG

Die bekommst du über den Support. Einfach anrufen. Bei mir war die schon drauf. wenn du willst kann ich mich auch drum kümmern. Brauche da nur deinen Firmwarestand.

ps.: oben sind die API´s angehangen

choenig

Interessant,

als ich Kontakt mit ihnen hatte, sagten sie, ich muss abwarten, das ist aber schon ~3-6 Monate her. Dann werde ich es nochmal versuchen :)

LG
Christian

choenig

Zitat von: mr_petz am 11 November 2019, 22:43:09
ok mache auch eine neue WEB instanz.
das notifyOfficialApp sehe ich nicht???

notifyOfficialApp ist ein Attribut, siehst Du es da auch nicht?

mr_petz

in der APP kann ich unter Meldungen-> Türklingeln die Benachichtigung einschalten. das selbe bei Bewegung.
in der Weboberfläche könnte ich HTTP-GET Befehle bei Türklingel eintragen/senden...

mr_petz

#13
was genau macht dein set callback ring Befehl in fhem?
was passiert da? also wie ist der aufgebaut?

mr_petz

Die Instanz habe ich angelegt
defmod allowed_EingangCam allowed
attr allowed_EingangCam icon message_service
attr allowed_EingangCam validFor EingangCam


EinfangCam ist die ALP.
notifyOfficialApp sehe ich weiterhin nicht.