Sapevate di poter controllare il vostro Raspberry remotamente tramite Telegram?
seguendo questa guida, sarete in grado di comandare il vostro Pi tramite un semplice messaggio, anche fuori casa!

Installazione e configurazione:
per prima cosa installiamo e configuriamo telegram-cli (istruzioni su github)
e la variante openbsd di netcat:

apt-get install netcat-openbsd

aggiungiamo al nostro /etc/crontab:

BASH_ENV=/home/pi/.profile   #oppure /root/.profile a seconda dell'utente*  
...
...
@reboot root bash -l -c '/bin/telegram-cli -WRD -S /tmp/tg.sck -s /etc/cron.d/script.lua'

*indicando il .profile dell’utente con cui è stato configurato telegram.

Creiamo script.lua:

function on_msg_receive (msg)  
  if started == 0 then
    return
  end
if (msg.from.phone==nostro_numero) then  
  if msg.out then    
    return
  end

 if (msg.text=='sorveglianza on') then    

questo blocco di controllo:

  • Processa solo i messaggi provenienti dal nostro numero
  • Non considera i messaggi inviati dallo script stesso
  • Esegue una operazione (a seguire) se riceve il messaggio "sorveglianza on"

di seguito scriviamo il comando shell da lanciare, il suo output verrà letto nella variabile result

local handle = io.popen('curl http://192.168.1.35:8080/1/detection/start -u user:password)  
local result = handle:read("*a")  
handle:close()  

^ comando di esempio tra singoli apici dentro io.popen(' comando ')

e ora, rispondiamo al mittente con l’output del comando

send_msg (msg.from.print_name, result, ok_cb, false)  
end

...e così via per tutti gli altri comandi che vogliamo prevedere:

 if (msg.text=='sorveglianza off') then
        local handle = io.popen('curl http://192.168.1.35:8080/1/detection/pause -u user:password)
        local result = handle:read("*a")
        handle:close()
        send_msg (msg.from.print_name, result, ok_cb, false)
  end
end  
  return
end  

Ora che il socket è creato e telegram viene avviato all’avvio del sistema, possiamo mandare messaggi nel seguente modo:

echo "msg Contatto ciao" | nc -U /tmp/tg.sck

per gli utenti motion: se tutto è andato a buon fine, possiamo ora modificare il nostro motion.conf con:

on_picture_save echo "send_photo Contatto %f" | nc -U /tmp/tg.sck

per ricevere le foto direttamente sul nostro contatto di telegram.

[ EXTRA ]

Opzione pericolosa:
Eseguire qualunque comando viene passato via telegram

è molto semplice, basterà aggiungere alle condizioni il seguente controllo:

 if (msg.text~='') then    
         local handle = io.popen(msg.text)
        local result = handle:read("*a")
        handle:close()
        send_msg (msg.from.print_name, result, ok_cb, false)
  end
  • se l’input non è vuoto
  • eseguilo direttamente in shell

Tutto insieme script.lua diventa:

function on_msg_receive (msg)  
  if started == 0 then
    return
  end

if (msg.from.phone==nostro_numero) then  
  if msg.out then                
    return
  end

 if (msg.text=='sorveglianza on') then        
        local handle = io.popen('curl http://192.168.1.35:8080/1/detection/start -u user:password)
        local result = handle:read("*a")
        handle:close()
        send_msg (msg.from.print_name, result, ok_cb, false)
 end
 if (msg.text=='sorveglianza off') then
        local handle = io.popen('curl http://192.168.1.35:8080/1/detection/pause -u user:password)
        local result = handle:read("*a")
        handle:close()
        send_msg (msg.from.print_name, result, ok_cb, false)
  end
end  
  return
end

Per chi non sapesse cosa sia motion e fosse interessato ad usare il proprio Raspberry Pi come DVR per la sorveglianza, vi lascio a Questo articolo

Buon divertimento!