Archives For gioxx

Mi rendo conto che il titolo è molto poco preciso ma provare a buttarci dentro “Come abilitare o disabilitare l’Home Mode di Synology Surveillance Station appoggiandosi a Fritz!Box e agli smartphone collegati alla WiFi di casa” sarebbe stato un pelo esagerato. La sostanza però è proprio questa: il Geofence integrato nell’applicazione DS cam fa oggettivamente schifo, non è assolutamente affidabile e si finisce per non riuscire mai a sfruttare la modalità Home dell’ottimo software di controllo telecamere disponibile per i NAS Synology. L’ostacolo si può aggirare tramite un router Fritz!Box (nella soluzione proposta da questo articolo, chiaro) e un paio di script da tenere sul NAS.

Synology Surveillance Station: automatizzare l'Home Mode tramite WiFi

AVM FRITZ!Box Synology Surveillance Home Mode Automation

Mark Schipper è lo sviluppatore che ha in origine pubblicato tutto il necessario in un repository GitHub qui disponibile. Le sue indicazioni sono già valide per poterle sfruttare in un ambiente casalingo dalle pari disponibilità, e dopo una mia segnalazione di possibile bug ha anche integrato una serie di novità e riscritto parte del codice che si occupa di:

  • verificare tramite query SOAP al router Fritz!Box di casa (uno o più) se un dispositivo è connesso alla rete WiFi (bisognerà dichiarare il MAC address del dispositivo, nda);
  • contattare la Surveillance Station tramite API e chiedere di abilitare o disabilitare la modalità Home nel caso in cui il dispositivo sia dentro o fuori casa.

In parole estremamente povere la modalità Home di Synology Surveillance Station si attiva se un tuo smartphone (o altro dispositivo a tua scelta) entra nella rete WiFi di casa, si disattiva invece quando esci da quel perimetro, il tutto lanciando controlli ripetuti a distanza di una quantità di minuti da te stabilita.

Tutto questo si è reso “necessario” perché la funzione di Geofence integrata nell’applicazione DS cam per Android e iOS non è esattamente questo gran mostro di precisione. Un esempio virtuoso che potrei farti in questo caso è tado° che difficilmente perde un colpo. Per questo motivo ho preferito mettere in campo e sperimentare quanto scritto da Mark, apportando poi delle piccole modifiche per rendere ancora migliore il risultato e colmando un gap che manca all’appello del README dello sviluppatore originale, che invita a installare il modulo PHP 7 di Synology senza però specificare che occorrerà ricordarsi di attivare l’estensione soap se precedentemente mai attivata.

DS cam
DS cam
Developer: Synology Inc.
Price: Free
DS cam
DS cam
Developer: Synology Inc.
Price: Free

Il fork

Synology Surveillance Station: automatizzare l'Home Mode tramite WiFi 1

Il mio fork nasce per integrare alcuni riferimenti in più rispetto al progetto originale e per proporre una modifica allo script di bash che ti permette di ottenere un aggiornamento di stato di Home Mode via Telegram. Quest’ultima funzione è chiaramente opzionale e può essere disabilitata facilmente.

Cosa ti serve

  • Un router Fritz!Box (non obbligatoriamente un 7490 come nel caso di Mark o un 7590 nel mio) e un NAS Synology (ma va?).
  • PHP 7 (disponibile nel Synology Package Manager) con estensioni soap e curl.
  • Utenza limitata per permettere di disabilitare o abilitare Home Mode della Surveillance Station (sconsigliato utilizzarne una già esistente con maggiori autorizzazioni).
  • Pacchetto file contenuti nel repository GitHub.
  • Opzionale: bot Telegram tramite il quale ricevere i cambi di stato.

Affrontiamo per passaggi ogni necessità sopra riportata

#1: PHP 7, soap & curl

Apri il Centro Pacchetti del tuo NAS Synology e cerca PHP 7, quindi installalo:

Synology Surveillance Station: Home Mode automatico tramite WiFi

Una volta terminata l’installazione, collegati via SSH al tuo NAS (non sai come fare? Guarda qui), quindi spostati in /usr/local/etc/php70 e modifica il file php.ini (esempio: vi php.ini). Per salvare le modifiche che apporterai ti sarò richiesto quasi sicuramente di essere utenza root, lancia un sudo -i seguito da invio, quindi inserisci la password della tua utenza amministrativa e premi invio (non sai di cosa sto parlando? Guarda qui). Ora:

  • cerca la stringa extension_dir = "/usr/local/lib/php70/modules"
  • Aggiungi subito sotto l’abilitazione delle due estensioni per soap e curl:
    extension=soap.so
    extension=curl.so
  • Salva il file e chiudilo (tasto ESC, poi :wq seguito da invio).
  • Torna ora nel Gestore Pacchetti di Synology e riavvia PHP 7.

Il php.ini modificato dovrebbe assomigliare a questo:

Synology Surveillance Station: Home Mode automatico tramite WiFi 1

#2: api_user

Un’utenza limitata che possa solo disabilitare o abilitare Home Mode in Synology Surveillance Station, è ciò di cui hai bisogno in questo momento. Avvia Surveillance Station e apri il menu in alto a sinistra con un clic, quindi seleziona Utente. Aggiungi un nuovo utente seguendo la procedura guidata, ti riepilogo i passaggi e ti propongo poi qualche screenshot:

  • nome utente: api_user (uso questo perché richiamato dagli script, tu puoi decidere di cambiarlo ma ti invito poi a leggere il paragrafo Troubleshooting nella parte finale dell’articolo);
  • descrizione: inserisci una descrizione che possa ricordarti un domani a cosa serve l’utente che stai creando;
  • password: scegline una sufficientemente robusta, puoi crearne una random qui;
  • fai clic su Avanti e crea un nuovo profilo privilegio;
  • dai un nome e una descrizione al profilo privilegio (scegli un nome che possa un domani ricordarti a cosa serve quel privilegio), mantenendo Gestore come tipo;
  • NON aggiungere autorizzazioni nella schermata Videocamere, E-Map e Layout. Arrivato alla schermata dei Privilegi avanzati, spunta l’opzione in corrispondenza di Passa manualmente alla modalità Home.

#3 scarica e modifica gli script

Scarica il contenuto del repository da GitHub, scompatta il file ZIP e ottieni così i file fritz_activemac.php e switch_homemode.sh (puoi buttare via il README). Prima di caricare i file sul NAS ti suggerisco di modificarli in base a ciò che è stato fatto fino a ora (utenza generica, eventuale bot Telegram, ecc.).

Il primo file citato (fritz_activemac.php) non dovrebbe necessitare di modifica alcuna (tranne se hai scelto di creare un utente limitato diverso da quello da me suggerito, quindi non “api_user“, ti rimando a questa nota nel Wiki), contrariamente allo script bash switch_homemode.sh. Aprilo con un buon editor di testo (Notepad++ o Atom) quindi segui queste indicazioni:

  • SYNO_SS_USER: inserisci qui l’utenza limitata che hai precedentemente creato. Se hai seguito scrupolosamente le indicazioni, lascerai probabilmente api_user;
  • SYNO_SS_PASS: inserisci la password che hai scelto e inserito quando hai creato l’utenza limitata;
  • SYNO_URL: inserisci l’IP e la porta utilizzata per collegarsi al tuo NAS;
  • FRITZ_URL: inserisci l’IP (o gli IP se più d’uno, intervallati dai due punti, esempio: 192.168.1.2:192.168.1.3);
  • TELEGRAM: può avere solo due valori, 0 e 1. 0 disabilita le funzionalità legate al bot di Telegram, 1 le attiva;
  • BOT_TOKEN: inserisci qui il token che ti ha rilasciato BotFather quando hai creato il tuo nuovo bot;
  • CHAT_ID: l’ID della chat in cui il bot dovrà riportare i messaggi riguardanti il cambio di stato di Home Mode;
  • MSG_SS_ACTIVE: riporta qui il messaggio che il bot ti invierà quando la modalità Home sarà attiva;
  • MSG_SS_INACTIVE: riporta qui il messaggio che il bot ti invierà quando la modalità Home sarà disattiva.

Fai attenzione: modifica esclusivamente ciò che ho riportato qui sopra, facendo attenzione a mantenere le virgolette dove specificate. Lascia tutto il resto invariato per scongiurare possibili malfunzionamenti. Se non sai come creare un bot Telegram fammi un cenno, sto valutando se scrivere qualche riga di testo nel Wiki su GitHub o meno.

Salva il file, questo lavoro è terminato. Carica ora i due script all’interno della cartella /var/services/homes/api_user del tuo NAS, dove “api_user” ovviamente dovrà essere modificato se hai scelto di creare un utente dallo username differente. A questo punto sei pronto a verificare il funzionamento.

#4 test e programmazione

Salvo errori, gli script sono ora pronti a lavorare. Puoi provare tu stesso lanciando da terminale

./switch_homemode.sh MAC1 MAC2

dove MAC1 e MAC2 dovranno essere sostituiti con due MAC Address appartenenti a dispositivi che sono collegati alla rete casalinga. Sia chiaro, puoi specificare anche solo un MAC Address, non c’è bisogno di metterne due o più (ma puoi farlo). A questo punto verrà lanciata la query SOAP al router e il risultato (un semplice true o false) verrà salvato all’interno del file synohomemode.state (che verrà creato sul momento se non esistente).

Se il dispositivo non è collegato alla WiFi casalinga, Home Mode verrà disattivato, diversamente verrà attivato.

Manca l’ultimo passaggio, programmare l’esecuzione dello script tramite Utilità di pianificazione di Synology. Accedi all’utilità tramite Pannello di controllo, quindi crea una nuova operazione e compila i dati richiesti:

  • Attività: dai un nome all’attività, uno “parlante” (che ti ricordi immediatamente di cosa si tratta).
  • Utente: lascia che sia root a eseguire l’attività.
  • Programmazione: l’esecuzione dovrà essere giornaliera, a partire dalla mezzanotte, ogni 5 minuti fino alle 23:55. I 5 minuti possono anche essere diminuiti o aumentati, dipende dalla tua esigenza.
  • Impostazioni attività: dovrai semplicemente inserire nel box di testo la stringa che ti permetterà di avviare il controllo, quindi
bash /var/services/homes/api_user/switch_homemode.sh MAC1 MAC2

Sostituisci chiaramente MAC1 e MAC2 con i veri MAC Address dei dispositivi che vuoi tenere sotto controllo, puoi specificarne solo uno o anche più di due.

Il gioco è ormai fatto :-)

Se ci sono dubbi o problemi l’area commenti è a tua disposizione, io qui di seguito inserisco già un paio di risposte ad altrettante domande che potresti avere, ma sentiti libero di chiedere altro se dovesse servire.

Synology Surveillance Station: Home Mode automatico tramite WiFi 9

Buon Natale!

Troubleshooting

Cambiare lo username dell’utente generico

Puoi chiaramente scegliere di utilizzare un nome utente che non corrisponda ad api_user come riportato nell’articolo, dovrai però ricordarti di modificare quel SYNO_SS_USER="api_user"; in switch_homemode.sh, oltre che eventuali operazioni programmate nell’Utilità di pianificazione del NAS. Modifica poi, sempre in switch_homemode.sh, tutto il blocco relativo ai file di stato e il richiamo dello script PHP:

## State file configuration (don't touch anything if not necessary)
STATEFILE='/var/services/homes/api_user/synohomemode.state';
RETRYFILE='/var/services/homes/api_user/synohomemode.retry';
CHECKFRITZ='/usr/local/bin/php70 /var/services/homes/api_user/fritz_activemac.php';

dove al posto di api_user dovrai chiaramente inserire il nome utente da te scelto.

Wiki: github.com/gioxx/AVM-FRITZ-Box-Synology-Surveillance-Home-Mode-Automation/wiki/Cambiare-lo-username-dell%E2%80%99utente-generico

Errore nella query SOAP

Qualcosa non torna e lanciando lo script di bash manualmente ottieni errori sulla query SOAP? Forse è necessario copiare i moduli delle due estensioni, prova a dare un’occhiata al documento che ho salvato nel Wiki del repository GitHub: github.com/gioxx/AVM-FRITZ-Box-Synology-Surveillance-Home-Mode-Automation/wiki/PHP-7:-abilitare-CURL-e-SOAP-su-Synology-DSM.


credits:

Condividi l'articolo con i tuoi contatti:

Notepad++ LogoLa pillola di oggi torna a parlare di Notepad++ su Windows e relative espressioni regolari per filtrare la sorgente, cercando ciò che ti serve al suo interno. Nello specifico si parla di estrarre tutti gli indirizzi di posta elettronica a prescindere dal testo che li circonda. Editor alla mano e Regular Expression come da tradizione.

Lancia la ricerca con sostituzione (CTRL + H da tastiera o menu CercaSostituisci), inserisci l’espressione regolare nel campo Trova e lascia vuoto il campo Sostituisci con, ricordati di selezionare l’opzione “Espressione regolare” nel tipo di ricerca:

\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b

Puoi testare l’espressione regolare passando dalla pagina web regex101.com/r/dR9cK6/1. Se preferisci utilizzare direttamente il sito web dandogli in pasto il file sorgente dal quale effettuare l’estrazione, puoi poi esportarne il risultato selezionando Export Matchesplain text, come nelle immagini di seguito.

Buon lavoro! :-)

×

Pillole

Le pillole sono articoli di veloce lettura dedicati a notizie, script o qualsiasi altra cosa possa essere "divorata e messa in pratica" con poco. Uno spazio del blog riservato ai post "a bruciapelo"!
Condividi l'articolo con i tuoi contatti:

Quello nel titolo è un errore che potresti ritrovarti di fronte se lanci lo script di aggiornamento di ServiceDesk manualmente. Spiego meglio: lanciando con il classico doppio clic l’Update Manager potresti ritrovarti davanti al nulla più completo, una finestra che si apre solo per un secondo e che si richiude subito dopo. Per questo motivo apri un prompt dei comandi, ti sposti nella cartella di Manage Engine e quindi nella relativa scripts in bin, lanciando il UpdMgr.bat per arrivare a questo:

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

ServiceDesk: Could not reserve enough space for object heap

Non sei tu il problema, sono io!” (cit.). Sì perché è proprio così, apparentemente la macchina non ha sufficienti risorse da riservare all’Update Manager per le sue operazioni. Per questo motivo rimani fermo al palo a meno di andare a mettere mano a quella richiesta di risorse che si trova all’interno dello script batch (C:\ManageEngine\ServiceDesk\bin\scripts\UpdMgr.bat), e più precisamente in questa istruzioni che occupa (a oggi) la penultima riga del file:

"%JAVA_HOME%\bin\java" -Xmx2512m %JAVA_OPTS% -Dtier-type=BE -Djava.library.path=.\lib\native -Dtier-id=BE1 com.adventnet.tools.update.installer.UpdateManager -u conf %*

Da quanto imparato e provato sul campo, ti basterà andare a variare la memoria richiesta per l’ambiente virtuale (JVM), portando quel -Xmx2512m a –Xmx512m, trasformando quindi l’istruzione in qualcosa di molto simile (se non identico) a questo:

"%JAVA_HOME%\bin\java" -Xmx512m %JAVA_OPTS% -Dtier-type=BE -Djava.library.path=.\lib\native -Dtier-id=BE1 com.adventnet.tools.update.installer.UpdateManager -u conf %*

Come discusso su stackoverflow.com/questions/4401396/could-not-reserve-enough-space-for-object-heap, il parametro -XX:MaxHeapSize=512m può essere accorciato nel più conciso -Xmx512m, all’interno del quale tu puoi tranquillamente variare il valore dei megabyte messi a disposizione della JVM, per evitare di ottenere l’errore riportato in apertura articolo. Io mi sono fermato a 512 MB messi a disposizione del processo, e sono più che sufficienti per eseguire l’Update Manager, ho poi modificato nuovamente il batch e riportato il valore al suo stato originale (nel frattempo ci sarà modo di riavviare la macchina e scaricarla un po’).

Buon lavoro.

×

Pillole

Le pillole sono articoli di veloce lettura dedicati a notizie, script o qualsiasi altra cosa possa essere "divorata e messa in pratica" con poco. Uno spazio del blog riservato ai post "a bruciapelo"!
Condividi l'articolo con i tuoi contatti:

L’ultima versione di Sticky Notes Backup & Restore per Windows 10 risale ormai a circa un anno fa, da quel giorno le cose sono leggermente cambiate e oggi si può agire diversamente per ciò che riguarda backup e restore delle note di Microsoft e dei file da prendere in considerazione. La versione 0.3 del programma porta con sé alcune correzioni dovute a banali distrazioni del passato e lo snellimento dell’eseguibile che rinuncia al 7-Zip da riga di comando, diventato inutile nel momento in cui Microsoft ha introdotto l’uso del file SQLite per conservare le informazioni.

Microsoft Notes Backup and Restore 0.3: si passa al plum.sqlite

Cosa cambia oggi?

Microsoft Notes Backup and Restore for Windows 10 (il nuovo nome che l’eseguibile mostrerà in apertura) si occuperà di conservare una copia del file plum.sqlite che trovi nella cartella %LOCALAPPDATA%\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState, per poi ripristinarla quando ne avrai necessità, sostituendo quella esistente a prescindere dal suo stato (occhio quindi a ciò che sovrascrivi! :-)).

La nuova versione è già disponibile al solito indirizzo, che per comodità ho anche trasformato in URL breve un pelo più “leggibile“: go.gioxx.org/win10-msnotes-backuprestore. Al solito, tutto gratuito, ma le donazioni sono sempre ben accette.

Gioxx’s Wall loves Dropbox

Gioxx's Wall loves Dropbox

Microsoft Notes Backup and Restore è stato sviluppato e testato per funzionare “live“, senza necessità di installazione alcuna, portalo con te salvandolo sul tuo account Dropbox (o qualsiasi altro fornitore di Cloud Storage), puoi scegliere di effettuare backup e restore delle tue preziose note appoggiandoti direttamente alle cartelle del tuo account di Storage in Cloud.

Next Step (?)

Rimane quanto specificato precedentemente (ma sto valutando l’interesse pubblico): mi piacerebbe integrare la possibilità di pilotare l’applicazione da riga di comando permettendoti così di inserire i comandi diretti tra le schedulazioni di Windows e utilizzare Microsoft Notes Backup and Restore senza che sia più necessario il tuo intervento. Se hai altre idee, utilizza pure l’area commenti per raccontarmele.

Buon lavoro!

Condividi l'articolo con i tuoi contatti:

Ti sei mai chiesto perché di tanto in tanto può capitare ancora oggi che le tue mail non arrivino a destinazione correttamente? Non sto parlando di problemi tecnici del server di turno, ma di filtri antispam più o meno aggressivi che possono interpretare in maniera differente i contenuti della tua mail, decidendo poi di scartarla se questa dovesse superare un certo punteggio. Questo può variare in base al software antispam utilizzato, ho trovato un articolo abbastanza completo per permetterti di farti un’idea a riguardo (nel caso fossi a digiuno di queste nozioni), lo trovi qui.

Posta elettronica: come calcolare il proprio punteggio Spam

Ciò detto, hai mai provato a calcolare il punteggio Spam di una singola mail da te inviata? No? Neanche io fino a qualche tempo fa, poi ho deciso di farmi un’idea e lanciare un self-test tramite il servizio gratuito messo a disposizione da mail-tester.com. Il funzionamento è estremamente banale: ti viene messo a disposizione un indirizzo di posta elettronica al quale inviare una mail dal tuo account (e dal tuo client preferito), a quel punto tu potrai confermare l’invio, attendere qualche secondo e procedere con la verifica del tuo punteggio, corredato di spiegazioni e consigli di mail-tester per ottenerne -eventualmente- uno migliore.

Ti faccio vedere un esempio basato su una mia mail praticamente vuota (corpo e oggetto di test):

Posta elettronica: come calcolare il proprio punteggio Spam 1

Aver utilizzato un testo così corto nell’oggetto e nel corpo mail mi ha penalizzato abbassando il punteggio (meno testo rispetto a immagini e contenuti caricati dall’esterno, chiaramente sbagliato), ma per il resto è quasi tutto in ordine e un 8 su 10 è certamente un buon motivo per passare indenni i controlli dei software antispam (salvo particolari regole impostate dagli amministratori di sistema). Ora tocca a te, fai un controllo basato sul tuo indirizzo di posta elettronica (quindi relativa configurazione server, record SPF e DKIM) e sul contenuto delle tue mail, potrai toglierti una curiosità e capire se è vera la scusa che ogni tanto qualcuno tira fuori (un po’ come fosse un passaggio nostalgico), quella del “Mi spiace, non ho ricevuto la tua mail” o “Scusa, mi è finita nello spam” ;-)

Condividi l'articolo con i tuoi contatti: