Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

di Luigi Duchi

22 Dicembre 2018

Home Assistant

Luigi Duchi

Oggi parliamo del mondo Xiaomi, il nome di un'azienda che tutti gli amanti della domotica conoscono molto bene per la quantià di soluzioni che offre a prezzi decisamente accessibili. Nello specifico oggi parleremo delle IP cam Xiaofang.

Il termine IPcam non calza proprio alla perfezione su questi dispositivi, infatti le telecamere Xiaomi funzionano unicamente mediante Server proprietari obbligando gli utenti a transitare tramite il cloud Xiaomi per videosorvegliare i proprio appartamento. Questo, oltre a comportare rischi per la privacy, limita l'uso delle Cam esclusivamente all'app Mi Home.

Oggi vedremo come renderci indipendenti dall'ecosistema Xiaomi e come gestire le nostre telecamere mediante il flusso RTSP all'interno della nostra rete locale, con possibilità naturalmente di accedervi dall'esterno.

Apriamo prima una breve parentesi per elencare le caratteristiche della famosa cam Xiaomi Xiaofang

la Cam si presenta di forma cubica, dall'aspetto molto gradevole e dalle ridottissime dimensioni (L x P x A): 5.00 x 5.00 x 5.60 cm.

La risoluzione è FHD (1080P) grazie ad un Sensore CMOS da 1/2,7 pollici e zoom digitale 8X, Apertura F2.0, super-grand angolo FOV da 110 gradi, presenta a bordo anche dei led ir per la visione notturna o comunque per situazioni di scarsissima luminosità. Gode di Audio bidirezionale (in pratica per esempio puoi parlare con la famiglia quando non sei a casa) e supporto fino a 64GB di memoria aggiuntiva mediante lo slot per microsd.

Grazie alla staffa magnetica, può essere montata su qualsiasi superficie metallica. Nel caso si decida di metterla sottosopra si può ruotare l'immagine, quindi di fatto è posizionabile in ogni modo, offre infatti una testina snodabile che permette di installarla ovunque.

L'alimentazione è la classica microusb sul retro, 5V. Necessita, a tale tensione, di 1A per essere alimentata correttamente.

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

Vi ricordo che la Xiao Fang è acquistabile su Amazon al seguente link:

https://amzn.to/2BthQnQ

Ora che abbiamo fatto una panoramica, addentriamoci nel mondo dell'hacking per la piccola cam di casa Xiaomi.

Con gli ultimi firmware è preclusa la possibilità di caricare la modifica che ci serve sulle cam, quindi dovremo effettuare un downgrade del firmware; niente paura l'operazione è piuttosto semplice.

Vi occorrerà un micro SD da 16GB (in realtà basterebbe una da 2 GB ma ormai non si trovano più e se si trovano si trovano sono esattamente allo stesso prezzo, quindi va benissimo quella da 16 GB), la potrete reperire QUI .

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

Collegate la vostra sd e caricateci sopra il firmware più vecchio che permetterà la modifica, lo potrete scaricare QUI

Sarà necessario che sulla sd ci sia solo quel file, dovreste trovarvi in una situazione del genere:

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

Bene se avete già registrato la vostra cam Xiaomi sull'applicazione Mi Home cancellatela

staccate l'alimentazione alla vostra cam, inserite la sd con il firmware all'interno nell'apposito slot e premete (e tenete premuto) il pulsante reset.

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

Con il pulsante reset sempre premuto reinserite il cavo di alimentazione alla vostra cam continuando a tenere premuto il pulsante una volta alimentata per 10 secondi almeno.

A questo punto il vostro dispositivo avrà caricato il vecchio firmware.

Sempre con la sd all'interno aprite l'APP Mi Home e riaccoppiate il vostro dispositivo, vedrete che vi proporrà un aggiornamento firmware, ovviamente dovrete ignorarlo.

Arrivati a questo punto rimuovete la scheda sd dalla cam, lasciate il dispositivo connesso a Mi Home e prendete nota dell'indirizzo IP assegnato al vostro dispositivo, potrete farlo dalle impostazioni della cam o dalle impostazioni del vostro router. A proposito del vostro router vi consiglio di assegnare un ip fisso alla vostra cam o comunque di prenotare l'indirizzo ip per il dispositivo in modo che venga assegnato sempre il solito ad ogni riconnessione.

Reinserite nuovamente la sd nel computer e eliminate il firmware al suo interno.

A questo punto ci servirà un programma per estrarre un'immagine sulla sd. In ambiente windows vi consiglio di utilizzare Win32 Disk Imager scaricabile gratuitamente dalla rete, in ambiente Mac o Linux invece potrete utilizzare Etcher anch'esso reperibile gratuitamente in rete (Nel mio caso Etcher mi ha restituito un errore, ma probabilmente era un problema del mio Mac, ho risolto utilizzando Win32 Disk imager su windows.)

scaricate l'hack da QUI 

Decomprimete il file.

Lanciate Win32 Disk Imager (o Etcher)

Fate clic sul pulsante sfoglia (browse), cercate e selezionate il file che avete appena decompresso.

Selezionate successivamente la vostra scheda sd come destinazione e successivamente selezionate il tasto scrivi (write)

Attendete la fine del processo.

Inserite la sd all'interno della vostra cam e attendete, dopo poco dovreste sentire un suono provenire dal dispositivo, indica che l'hack è stato caricato.

Se tutto è andato a buon fine digitando il seguente indirizzo all'interno di un browser web:

http://ipdella vostra camera/cgi-bin/status    

ovviamente dovrete inserire l'ip della vostra cam ad esempio:

http://192.168.1.13/cgi-bin/status

dovreste trovarvi di fronte ad una schermata del genere:

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

Fate click su apply in alto a sinistra per attivare lo script dell'hack.

Nella schermata che vi comparirà a fine procedura cliccate su back

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

Cliccate su yes quando tornate alla schermata principale, vi servirà ad espandere il file system dell'hack su tutta la sd

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

Cliccate nuovamente su back arrivati alla schermata seguente

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

Adesso dovrete cliccare sul tasto reboot .

Arrivati davanti a questa schermata dovrete attendere un po' prima di premere back, vi consiglio circa 10 minuti (l'attesa varia a seconda della grandezza della sd.)

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

Una volta tornati nella pagina principale dell'hack potrete adesso:

settare ora e nome del dispositivo selezionando GMT-2:00 (per orario italiano). Cliccate su set per salvare.

Cliccate su manage script e controllate che la situazione sia la seguente, se così non fosse riattivate i servizi disattivi.

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

Spostatevi sul vostro router e aprite la porta 554 sia interna che esterna sull'indirizzo ip della vostra cam.

Benissimo non ci resta che provare il funzionamento.

Aprite l'applicazione VLC Player sul vostro pc/mac, se non lo avete reperitelo gratuitamente in rete.

Nelle impostazioni cliccate su apri rete:

e su url srcivete la seguente stringa rtsp://il vostro indirizzo ip/unicast (es. rtsp://192.168.1.13/unicast)

Vedrete comparire la vostra immagine con tanto di audio.

Adesso che abbiamo hackerato la nostra Xiaofang possiamo vederne il flusso rtsp tramite rete locale. Per vederla anche dall'esterno procedete come segue (ricordate abbiamo aperto la porta 554).

Create un account su di un servizio ddns (nel caso non abbiate una connessione ad internet con IP statico), vi consiglio di farlo con l'ormai collaudato Duck DNS

In questo caso il vostro indirizzo di flusso rtsp sarà una cosa del genere:

rtsp://vostroddns.duckdns.org:554/unicast

Cosi avrete accesso alla vostra telecamera anche dall'esterno.

Cosa accade se abbiamo più di una telecamera Xiaofang hackerata?

In questo caso dovremo aprire sul router tante porte esterne diverse quante sono le cam, ma con porta interna sempre 554

Il numero della porta esterna lo potete scegliere a piacere (a patto che quel numero non sia usato da un altro servizio)

es. cam1 - porta esterna 554 - porta interna 554

cam 2 - porta esterna 555 - porta interna 554

cam 3 - porta esterna 556 - porta interna 554

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

perciò i flussi rtsp diventeranno ad esempio cosi: 

rtsp://vostroddns.duckdns.org:554/unicast

rtsp://vostroddns.duckdns.org:555/unicast

rtsp://vostroddns.duckdns.org:556/unicast

e così via aggiungendo altre cam.

vi consiglio un app android (non conosco la controparte per iOS ma una vale l'altra) per leggere tutti i flussi rtsp e poter visualizzare le vostre cam.

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

vi basterà aprire l'app e aggiungere tutti i vostri flussi rtsp ricavati. Avrete la possibilità di visionare le vostre cam con tanto di audio.

COME INSTALLARE MOTYON EYE SUL NOSTRO RASPBERRY:

Le cam possono essere gestite direttamente da Home Assistant come vedremo più avanti oppure, scelta che consiglio, potete installare (sempre sullo stesso Raspberry) un software dedicato alla gestione delle CAM di nome MOTION EYE 

C'è anche un eventuale plug-in per chi utilizza hass.io

Come procedere

Aprite un terminale del vostro Raspbian e lanciate i seguenti comandi.

tutti i comandi vanno lanciato come amministratore, potremo inserire sudo prima di ogni comando, oppure diventare amministratore per tutta la sessione digitando la seguente stringa:

sudo -i

installa ffmpeg e v4l-utils con il seguente comando:

apt-get install ffmpeg v4l-utils

Installa libmariadbclient18e libpq5richiesto da motion:

apt-get install libmariadbclient18 libpq5

installa poi motion con questo comando:

wget https://github.com/Motion-Project/motion/releases/download/release-4.1.1/pi_stretch_motion_4.1.1-1_armhf.deb dpkg -i pi_stretch_motion_4.1.1-1_armhf.deb

installa le dipendenze dai repository:

apt-get install python-pip python-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libz-dev

Installare motioneye, che farà rientrare automaticamente le dipendenze Python (tornado, jinja2, pillowe pycurl)

pip install motioneye

Preparare la directory di configurazione:

mkdir -p /etc/motioneye cp /usr/local/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf

Preparare la directory multimediale:

mkdir -p /var/lib/motioneye

Aggiungi uno script di init, configuralo per l'esecuzione all'avvio e avvia il motionEyeserver:

cp /usr/local/share/motioneye/extra/motioneye.systemd-unit-local /etc/systemd/system/motioneye.service

poi:

systemctl daemon-reload

poi:

systemctl enable motioneye

poi:

systemctl start motioneye

ed infine per aggiornare motyon eye alla versione più recente digitate:

pip install motioneye --upgrade

ed infine:

systemctl restart motioneye

riavviate il vostro raspberry con il comando:

sudo reboot

A questo punto avrete a disposizione MotionEye, vi consiglio di collegarvi ad esso dal browser di qualsiasi computer in rete. Non fatelo dal raspberry in quanto non ha la potenza sufficiente per gestirlo e rischiereste di bloccarlo.

Perciò andate sul browser web di un altro pc e inserite il seguente indirizzo:

http://raspberrypi:8765/

vi ritroverete di fronte a questa schermata:

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

la username di default è admin (potrete cambiarla dopo)

la password lasciatela vuota e cliccate su login

nel menù a tendina cliccate su add camera 

selezionate network camera dal menù a tendina che vi si presenterà vi troverete di fronte ad una schermata del genere

Hackeriamo le CAM Xiaomi Xiaofang e usiamo Motion EYE per visualizzarle in Home Assistant

Inserite l'indirizzo come segue dove al posto delle xx mettete l'indirizzo ip della vostra cam.

rtsp://192.168.1.xx/unicast

selezionate il protocollo udp all'ultima voce e aggiungete la cam.

una volta aggiunta la cam potrete selezionare vari parametri come la risoluzione e il frame rate.

Una volta scelte le varie preferenze andate su video streaming, cliccate su streaming URL, prendete nota dell'indirizzo che visualizzate (vi servirà dopo per integrare le cam in Home Assistant). Fate questa operazione per ogni cam integrata in MotyonEye, noterete che l'indirizzo sarà diverso per ogni cam. 

Le opzioni disponibili all'interno di questo software saranno diverse ed andranno dalla possibilità di registrare i video a quella di farvi notificare l'avvenuta rilevazione di un movimento anche mediante l'utilizzo di un comando mqtt che vi permetterà di attivare ad esempio in un allarme su Home Assistant. Di questo probabilmente parleremo in futuro.

Come integrare le nostre cam in Home Assistant

Apriamo prima una parentesi, Home assistant non è il massimo per gestire il flusso video delle cam, oltretutto non da neanche la possibilità di ascoltare l'audio della nostra videosorveglianza e l'immagine delle nostre Xiaofang sarà tutto tranne che fluida. 

In ogni caso, recatevi sul vostro Home Assistant nel solto file configuration.yaml

scrivete la seguente stringa:

ffmpeg:

e poi aggiungete anche questa stringa:

camera: !include camera.yaml

create un file chiamato camera.yaml allo stesso livello di configuration.yaml e dentro inserite tutte le vostre cam con gli url che avete ricavato da motion eye come ad esempio:

- platform: ffmpeg
  input: http://raspberrypi:8081
  name: camera di prova


salvate e riavviate HA e potrete vedere le cam direttamente su Home Assistant.

Il mio consiglio è quello di utilizzare Motyon Eye per poter caricare qualsiasi tipo di IP cam, potendole cosi integrare in Home Assistant avendo la possibilità di configurare registrazione e motion detect.

Bene per questo articolo è tutto vi lascio al solito video di fine articolo. Buona visione!

Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.

Luigi Duchi

Luigi Duchi

Nato a Grosseto il 24 Dicembre 1982 perito elettrotecnico che lavora nel mondo della domotica e installazione di impianti elettrici, impianti di allarmi, videosorveglianza e automazioni in genere. Appassionato da sempre di tecnologia e aperto alla conoscenza di nuove soluzioni.

Disqus loading...