× Benvenuti sul nostro forum su Sint Wind PI!

Postate qui domande o segnalate problemi / bug che riscontrate,

map-pin Telegram Plugin

More
7 years 9 months ago - 7 years 2 months ago #7162 by seven
Telegram Plugin was created by seven
Aloha ragazzi, rieccomi qua dopo un po' di assenza (tra vacanze e magagne varie). Allegato a questo messaggio c'è il mio bot per Telegram, secondo me non è venuto malaccio... :cheer:
Ricordo per chi si fosse sintonizzato solo ora che si tratta di un bot per Telegram, piattaforma di messaggistica gratuita alternativa a WhatsApp.

Le funzioni del bot ricalcano quelle del plugin WhatsApp, con l'aggiunta del supporto vocale, una -abbastanza pratica- gestione utenti (si può restringere l'accesso ad utenti selezionati oppure aprirlo a chiunque), si può chiedere l'immagine webcam, si può controllare lo stato del sistema (temperatura cpu, spazio disco libero...), si può anche rebootare la Raspberry (solo Admin).


Mentre su WhatsApp l'utilizzo di bot è vietato (e può portare al ban del numero di cellulare associato al bot), per quanto riguarda Telegram l'utilizzo dei bot è addirittura incoraggiato, con tanto di messa a disposizione di API dedicate. Il qui presente usa le API fornite dalla libreria python-telegram-bot versione 3.4. Attenzione: NON credo funzioni con le versioni più recenti, ecco perché la libreria da installare la fornisco io allegata a questo messaggio.
Allego inoltre il pacchetto da installare per la generazione vocale (pico2wave.deb).


Nell'immagine 3 di SWPI la libreria python-telegram-bot-3.4 è già installata; saltare quindi la parte relativa e passare all'installazione di pico2wave.deb e del bot stesso.

Chi invece sta usando la versione 2 deve fare così:



- sistema in rw

- copiare i files python-telegram-bot-3.4.tar e pico2wave.tgz in /home/pi


poi:

cd /home/pi

sudo apt-get update

sudo apt-get install libpopt-dev vorbis-tools



### INSTALLAZIONE LIBRERIA TELEGRAM (solo V.2)

tar -zxvf python-telegram-bot-3.4.tar.gz

cd python-telegram-bot-3.4

sudo python setup.py install



### INSTALLAZIONE SUPPORTO VOCALE (tutte le versioni)


tar -zxvf ./pico2wave.tgz

sudo dpkg --install ./pico2wave.deb



Se tutto è andato bene avremo installato il supporto per il bot. E' tempo di installare il bot stesso:

- decomprimere il file SWPIBot.zip in /swpi/plugins

- Modificare il file SWPIBot_ITA.py: incollare il token del proprio bot nella riga 172 del file, sovrascrivendo le 'xxxxxxxx' che ivi si trovano.


Riavviare SWPI e attendere una quindicina di secondi, quindi da Telegram inviare al proprio bot la parola 'sysadmin' (escluse virgolette).
A questo punto si è amministratore del bot e seguendo le istruzioni che trovate commentate nel file SWPIBot_ITA.py dovreste riuscire a farlo funzionare abbastanza facilmente. Altrimenti l'ufficio magagne è qui, sempre aperto. :lol:

Infine una nota: come già accennato il bot può essere messo in modalità "rispondo solo agli utenti autorizzati", oppure in modalità "accesso libero" (freeaccess). Se qualcuno lo lascia in quest'ultima modalità sarebbe -secondo me- carino se postasse in questo thread il nome del proprio bot, così da renderlo accessibile a chiunque lo desideri (tranquilli, i comandi amministratore (es.: reboot) NON sono accessibili agli utenti ma solo agli Admin :lol: :lol: :lol: )


Ciaoo

Nik (Seven)


EDIT 21/02/2017: Di seguito la versione 0.9.4, che arrotonda i valori di pressione e temperatura forniti da alcuni tipi di sensore a valori più 'umani' (sia la parte testuale che quella vocale) :P
A fine post invece le librerie citate e la versione 0.9.2 di SWPIBot, meno recente.
Per aggiornare da 0.9.2 a 0.9.4 basta sovrascrivere in /swpi/plugins il file SWPIBot_ITA.py, ma PRIMA ASSICURARSI DI ESSERSI COPIATI IL TOKEN in modo da poterlo incollare nel nuovo file.



File Attachment:

File Name: SWPIBot.0.9.4.zip
File Size:11 KB





----
Attachments:
Last edit: 7 years 2 months ago by seven.
The following user(s) said Thank You: tony, Bigo

Please Log in to join the conversation.

More
7 years 2 months ago #7650 by andreajvc
Replied by andreajvc on topic Telegram Plugin
Ciao,
posso aggiungere queste informazioni sul wiki? se si, come posso farlo se il wiki mi dice che non ho i permessi per modificare le pagine?

Ciao e grazie per questo progetto!
Andrea

Please Log in to join the conversation.

  • ispanico
  • ispanico's Avatar
  • Visitor
  • Visitor
7 years 2 months ago #7653 by ispanico
Replied by ispanico on topic Telegram Plugin
Ciao, dove lo trovo il token? Grazie

Please Log in to join the conversation.

More
7 years 2 months ago - 7 years 2 months ago #7654 by seven
Replied by seven on topic Telegram Plugin
Ciao!

@andreajvc: devi chiedere a Tony che ti sblocchi l'accesso in editing al wiki.
Grazie a te, è un'ottima idea integrare il wiki!


@ispanico: devi cercare in Telegram l'utente BotFather (è lui stesso un bot!) ed inviargli il comando /newbot .
Ti chederà il nome che vuoi dare al bot che stai creando. Indicaglielo, poi lui ti chiederà l'username del nuovo bot (puoi usare lo stesso nome, ma dovrà terminare in _bot).

Ad esempio se il nome da te scelto per il tuo bot è "MioSWPIBot", potrai indicare come username "MioSWPIBot_bot".

Quello che apparirà nella lista degli utenti è il nome, mentre l'username è quello che contraddistinguerà il tuo bot a livello di sistema (per assurdo potresti usare come username "xfjlwergif5_bot" ma nell'elenco contatti vedresti come nome MioSWPIBot).

Se l'username da te scelto è disponibile ti risponderà che la creazione del bot è andata a buon fine e tra le altre cose ti dirà:

Use this token to access the HTTP API:
xxxXXxXXXxxxXXXXXX.....


dove al posto delle xxx ci sarà il tuo token. Quella è la "password" che dovrai inserire in swpibot.



Se invece l'username da te scelto non è disponibile dovrai ovviamente indicarne un altro finché non ne troverai uno libero.
Last edit: 7 years 2 months ago by seven.

Please Log in to join the conversation.

  • ispanico
  • ispanico's Avatar
  • Visitor
  • Visitor
7 years 2 months ago #7655 by ispanico
Replied by ispanico on topic Telegram Plugin
Ciao, grazie per la risposta, ottimo plugin, ti volevo chiedere se e possibile far inviare un messaggio dalla centralina ad una determinata condizione meteo, grazie

Please Log in to join the conversation.

More
7 years 2 months ago #7659 by andreajvc
Replied by andreajvc on topic Telegram Plugin
Ciao Seven,
potresti far in modo che i dati di temperatura e pressione abbiano una sola cifra decimale? 10 cifre sono veramente troppe :)

Ciao e grazie,
Andrea

Please Log in to join the conversation.

More
7 years 2 months ago #7663 by seven
Replied by seven on topic Telegram Plugin
@ispanico: grazie! E' una buona idea, ma penso converrà implementarla con un plugin ex-novo (magari chiamandolo EVENTI), perchè il plugin Telegram da sé non prende iniziative (come quelle che dovrebbe prendere in caso di eventi particolari), risponde soltanto all'input utente. Ci penso un po' e vediamo, potrebbe essere utile anche per interagire con altre funzioni di SWPI.


@andreajvc: non mi ero accorto della magagna perchè i sensori che utilizzo sputano fuori i dati coi decimali già giusti. Ho editato il primo post, verso la fine ho uppato la nuova versione 0.9.3 che arrotonda. Dimmi come va.

Ciaoo!
The following user(s) said Thank You: ispanico

Please Log in to join the conversation.

More
7 years 2 months ago #7664 by andreajvc
Replied by andreajvc on topic Telegram Plugin
Ciao Seven,
grazie per il supporto!
sto facendo prove a banco e sto usando come sensori un DHT22 e un BMP280. I dati comunicati dal bot vengono presi da quest'ultimo.
La risposta Dati del bot ora è perfetta, con un decimale per la temperatura e 2 decimali per la pressione.
Se riesci sarebbe da sistemare ancora la Voce che legge sempre 10 decimali :)
Ciao e grazie,
Andrea

Please Log in to join the conversation.

  • ispanico
  • ispanico's Avatar
  • Visitor
  • Visitor
7 years 2 months ago #7665 by ispanico
Replied by ispanico on topic Telegram Plugin
Ciao, grazie per la risposta, guardando in rete ho visto che non è difficile implementare il bot per fargli inviare i messaggi, volevo sapere se posso utilizzare il solito Token oppure bisogna crearlo un altro?, comunque questa sera provo a fare delle prove...

Please Log in to join the conversation.

  • ispanico
  • ispanico's Avatar
  • Visitor
  • Visitor
7 years 2 months ago #7667 by ispanico
Replied by ispanico on topic Telegram Plugin
Ho trovato una libreria chiamata telepot, con questa di può inviare messaggi, basta sapere id chat, non mi riesce a trovare L id della chat ,sapere come trovarlo?

Please Log in to join the conversation.

More
7 years 2 months ago - 7 years 2 months ago #7669 by seven
Replied by seven on topic Telegram Plugin
@andreajvc: hai ragione :P Uppata al solito posto la 0.9.4 che dovrebbe risolvere.


@ispanico: telepot in sé è appunto solo una libreria, così come python-telegram-bot, già installata se stai usando SWPIBot.

Se hai un minimo di dimestichezza con Python ti conviene secondo me partire da SWPIBot, visto che è già fatto, e vedere come funziona per poi modificarlo ed adattarlo alle tue esigenze.
Nel tuo caso specifico ti serve a mio avviso un thread separato che periodicamente confronti i parametri meteo con le soglie di segnalazione da te impostate e se vengono superate 'obblighi' il tuo Bot a comunicartelo.

Non è impossibile farlo all'interno di SWPIBot stesso, ma credo sia un 'lavoro' che conviene far fare ad un plugin pensato appositamente, esterno a SWPIBot.


Ti do' una dritta per fare qualche prova, creiamo un file python che ogni volta che lo lanci manda un messaggio al tuo ID Telegram (tu). Per prima cosa dobbiamo conoscere il tuo ID e per questo ci serviremo di SWPIBot : modifica SWPIBot.py,

esattamente sotto la riga 849 che inizia per:
txtmessage = (update.message.text).encode('utf-8') #<---


crea una riga nuova con questo comando (ripeto, SOTTO la precedente):

print update


Salva il file e riavvia SWPI. Se tutto è andato bene e SWPIBot è in esecuzione, tieni d'occhio la console di SWPI e scrivi qualcosa in Telegram al tuo bot: in console ti apparirà un (lungo) messaggio in formato json che contiene tra le altre cose il nome di chi ha inviato il messaggio (tu), il testo del messaggio e soprattutto il tuo ID.

Ora puoi creare un file python (con il sistema in rw) in /home/pi chiamandolo ad esempio test.py ed incolla al suo interno quanto segue:

#!/usr/bin/env python
# encoding: utf-8

import telegram

bot = telegram.Bot(token='xxxxxxxxxxxxxxxxxxxxxx')
ispanico = '12345678'
bot.sendMessage(ispanico, text='Ciao, sono il tuo splendido Bot!')


Ovviamente sostituisci le xxxx con il token del tuo bot, ed '12345678' con il tuo vero ID che avrai rilevato prima tramite SWPIBot.

Per lanciare il file usa 'python test.py', ogni volta che lo lancerai il tuo bot ti saluterà. :)
Last edit: 7 years 2 months ago by seven.
The following user(s) said Thank You: andreajvc, ispanico

Please Log in to join the conversation.

More
7 years 2 months ago #7674 by andreajvc
Replied by andreajvc on topic Telegram Plugin
Gli arrotondamenti di temperatura e umidità ora sono perfetti sia per i Dati che per la Voce, grazie!!!
Andrea
The following user(s) said Thank You: seven

Please Log in to join the conversation.

More
7 years 2 months ago #7676 by seven
Replied by seven on topic Telegram Plugin
Ottimo, grazie a te per il feedback!

Please Log in to join the conversation.

  • Campo
  • Campo's Avatar
  • Visitor
  • Visitor
6 years 11 months ago #7850 by Campo
Replied by Campo on topic Telegram Plugin
Ciao, ho provato per l'invio dell'ultima immagine della webcam e ci sono riuscito, unico problema l'anteprima non c'è sul mio server remoto, c'è un trucco per questo.
Per l'invio degli ultimi dati non riesco a scrivere il codice, non sono esperto in python, ho forse capito dove sono le righe che rispondono hai dati meteo, ma non so come richiamarle con il risponditore automatico.
ecco il codice per la webcam:
#!/usr/bin/env python
# encoding: utf-8
import telegram
bot = telegram.Bot(token='xxxxxxxxxxxxxxxxxxxxxx')
ispanico = 'xxxxxxxxxxxxx'
bot.sendMessage(ispanico, text= 'ecco l\'immagine \n www.cusighe.it/public/webcam/agg_camera_1.jpg ')

E' possibile che il messaggio venga inviato a tutti gli utenti del bot?

grazie a chiunque mi aiuta.

Please Log in to join the conversation.

More
6 years 5 months ago #8004 by tony
Replied by tony on topic Telegram Plugin
Seguendo gli ottimi lavori di Nicola e Roberto ho realizzato anche io un bot ma che fosse generale e per tutte le stazioni SWPI.

SintWindPI
@SintWindPI_bot

L'utilizzo dovrebbe essere chiaro e semplice.

TT

Please Log in to join the conversation.

More
6 years 3 weeks ago - 6 years 3 weeks ago #8180 by SkizZO
Replied by SkizZO on topic Telegram Plugin
Ragazzi scusate, ma come faccio ad inserirlo anche in un gruppo?
Ho pensato che mi serve l'ID del gruppo, e potrei ricostruire il messaggio da inoltrare al bot per abilitarlo (mica il bot conserva anche "la richiesta del'utente" ?)

Sarebbe carino averlo in un gruppo;
Inoltre non c'è modo di fargli scattare la foto, anzichè prelevarla dal web o swpi?

Edit: Ho aggiunto con successo il bot al gruppo, impostandolo con /free, e disattivando la privacy mode del bot.

Tramite il comando nel gruppo:
#ciao#
Il bot mi ha risposto con il nome vuoto, ma con l'id gruppo (negativo)
Ho inoltrato il messaggio al bot e me lo ha aggiunto alla lista, ma non è modificabile (non ha nome, e l'ID non è cliccabile).

Ho impostato di nuovo il bot a /nofree e tutto va a meraviglia, ma vorrei risolvere la faccenda del nome, prima di popolare il db.....

Intanto ho fatto un plugin per SWPI che invia un messaggio telegram al gruppo quando il vento supera "1" (nodi, km/h, dipende da voi)... funziona alla grande, è da perfezionare perchè così com'è rompe le scatole ogni minuto.
Last edit: 6 years 3 weeks ago by SkizZO.

Please Log in to join the conversation.

More
6 years 3 weeks ago - 6 years 3 weeks ago #8186 by SkizZO
Replied by SkizZO on topic Telegram Plugin
...vi aggiorno, ho corretto il nome vuoto nel file swpibot.db, ma ancora quando chiedo la lista degli utenti, l'ID gruppo non è tappabile... forse dipende dal fatto che è negativo.

Il plugin per avvisare del vento l'ho quasi finito, ecco la parte dedicata al config (scusate le e non accentate, ma dava errore anche se commentate... booo ;)
###########################   VARIABILI DA EDITARE     ##################################################

bot = telegram.Bot(token='5Y') # tokenbot
gruppotelegram = '-' # ID  gruppo o utente da avvisare
winddiroffset = 0 # se hai impostato una correzione della direzione sulla centralina (usa i gradi per impostare l'alert )
windalert = 12 # velocita minima del vento per ALERT
winddelta = 2 # delta vento applicato a windalert per calcolare SOLO se STA aumentando o diminuendo (riduce comunicazioni bot, non su confronto ON/OFF vento)
numletture = 5 #numero letture consecutive "giuste" prima di inviare gli alert (riduce comunicazioni bot)
directions = ['SSW','SW','WSW','W','WNW','NW','NNW'] # direzioni ammesse per ALERT; disattiva con ["Z"]; tutte le direzioni: ['N','NNE','NE','ENE','E','ESE','SE','SSE','S','SSW','SW','WSW','W','WNW','NW','NNW']
dirdegrees = [1000,2000] # range in gradi direzione vento, da impostare se hai un offset della direzione, al posto di directions (da lasciare Z); per tutte le dir [0,360]
Last edit: 6 years 3 weeks ago by SkizZO.

Please Log in to join the conversation.

Time to create page: 1.015 seconds