presentazione SOD19

parent e5c2e9e5
\documentclass{beamer}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage{adjustbox}
\usepackage{listings}
%\usetheme{PaloAlto}
\usetheme{Berkeley}
\title[BiblioVisualizer]
{BiblioVisualizer}
\subtitle{\medskip\textit{``gamification''} dei dati di prestito\\
\medskip
% \tiny{Proof of Concept (or get the fuck out!)}
}
\author{Andrea Trentini}%\inst{1} and \inst{2}}
\institute
{
%\inst{1}%
(Dipartimento di Informatica -
Università degli Studi di Milano)
%\url{http://atrent.it}
\and
%\inst{2}%
$\rightarrow\rightarrow\rightarrow$ \textbf{HackLabCormano} $\leftarrow\leftarrow\leftarrow$\\
\url{http://hacklabcormano.it}
}
\date{\texttt{CC-BY-SA 4.0}}
%\url{https://creativecommons.org/licenses/by-sa/4.0}}
% {Conference on Presentation Techniques, 2004}
% \subject{Computer Science}
\begin{document}
\maketitle
% \begin{frame}
% \frametitle{Table of Contents}
% \tableofcontents[currentsection]
% \end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Intro}
\begin{frame}
\frametitle{Introduzione e scopo}
\begin{center}
%\includegraphics[width=5cm]{../img/Mini_2018-05-10_112045.jpg}
% left bottom right top
\adjincludegraphics[width=.9\textwidth,trim={{.0\width} {.4\height} {.0\width}
{.35\height}},clip]{../img/BluRosso_IMG_20180307_222908.jpg}
\end{center}
\begin{itemize}
\item Scopo di base: rendere parzialmente interattivo e ``giocoso'' (\textit{gamification}) il prestito libri
\item Coinvolgimento attivo degli utenti
\item ``Termometro'' biblioteca immediatamente visibile
\item Community: concorso per progettare visualizzazione
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Data gathering}
\begin{frame}
\frametitle{Data gathering (quasi \textit{scraping})}
\begin{itemize}
\item Su \url{http://webopac.csbno.net} c'è ``cruscotto'':
\adjincludegraphics[width=.9\textwidth,trim={{.0\width} {.5\height} {.0\width} {.1\height}},clip]{../img/Cruscotto.png}
%(esaminando il sorgente della pagina...)
\item Dati da \url{http://frassino.comperio.it/kpi/clavis-csbno.json}:
\texttt{\{"dbName":"clavis-csbno", "utenti":"334518", "prestiti":"159497", "prestiti\_oggi":"1520", "utentiplus":"7157", "utenti\_attivi":"88484"\}}
(JSON, tutto il CSBNO, cumulativi, aggiornati ogni ora)
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Cosa visualizzare?}
\begin{itemize}
\item Ci vuole un dato un po' variabile...
\item Di cui calcolare/misurare un range di valori
\item Scelto ``prestiti\_oggi'', variabile da 0 (a inizio giornata) a circa 5000 (a fine giornata) con punte di 7000
\includegraphics[width=.8\textwidth]{../CSBNO.jpg}\\
(cfr. \url{http://atrent.it/CSBNO/CSBNO.log})
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Implem.}
\begin{frame}
\frametitle{La ``barra'' LED}
\begin{center}
% \adjincludegraphics[width=.38\textwidth,trim={{.0\width} {.2\height} {.15\width} {.22\height}},clip]{../img/Mini_2018-05-10_112045.jpg}
% left bottom right top
\adjincludegraphics[width=.8\textwidth,trim={{.0\width} {.25\height} {.0\width} {.2\height}},clip]{../img/BluRosso_IMG_20180307_222908.jpg}
\end{center}
\begin{itemize}
\item ESP8266 (simil-Arduino + wifi)
\item striscia LED RGB (\textbf{singolarmente} pilotabili)
\item lampadario ``recuperato ex negozio'', altezza 120cm
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{In biblioteca}
\begin{frame}
\frametitle{In biblioteca}
\begin{center}
% left bottom right top
% \adjincludegraphics[width=.8\textwidth,trim={{.0\width} {.25\height} {.0\width}
% {.2\height}},clip]{../img/2019-05-29_21.12.26.jpg}
\includegraphics[height=.8\textheight]{../img/2019-05-29_21.12.26.jpg}
% \includegraphics[width=.5\textwidth]{../img/d1_mini_v3.0.0_3_16x9.jpg}
\end{center}
% \begin{itemize}
% \item ESP8266 (simil-Arduino + wifi)
% \item striscia LED RGB (\textbf{singolarmente} pilotabili)
% \item un lampadario industriale (per la versione finale), altezza 120cm, appeso in biblioteca
% \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Hardware}
\begin{frame}
\frametitle{Hardware: ESP8266}
\begin{center}
\includegraphics[width=.6\textwidth]{../img/d1_mini_v3.0.0_3_16x9.jpg}
\end{center}
\begin{itemize}
\item piccolo (circa 1 pollice quadrato)
\item economico (meno di 5 euro)
\item potente (wifi, qualche mega di ram, qualche mega di filesystem, clock 80/160MHz)
\item facilmente programmabile (Arduino IDE, molte librerie già disponibili)
% \item IoT
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Software}
\begin{frame}[fragile]
\frametitle{Software}
Librerie utilizzate:
\begin{itemize}
\item WiFi (ESP8266WiFi)
\item JSON (ArduinoJSON)
\item MQTT (PubSubClient)
\item LED (Adafruit\_NeoPixel)
\item OTA (ArduinoOTA)
\item TaskScheduler
\item NTP (NTPclient)
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Codice}
\begin{frame}[fragile]
\frametitle{``wget''}
\begin{lstlisting}
// Connect to HTTP server
wifiClient.connect(
"frassino.comperio.it", 80));
// Send HTTP request
wifiClient.println(
"GET /kpi/clavis-csbno.json HTTP/1.0");
wifiClient.println(
"Connection: close");
...
// Check HTTP status
char status[32] = {0};
wifiClient.readBytesUntil(
'\r', status, sizeof(status));
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\frametitle{JSON parsing}
\begin{lstlisting}
DynamicJsonBuffer jsonBuffer(bufferSize);
// Parse JSON object
JsonObject& root =
jsonBuffer.parseObject(wifiClient);
...
for(int campo=0; campo<NUMCAMPI; campo++) {
precedenti[campo]=correnti[campo];
unsigned long tmp=root[nomicampi[campo]];
correnti[campo] = tmp;
}
\end{lstlisting}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Istituzioni}
\begin{frame}
\frametitle{Istituzioni}
% \begin{center}
% % left bottom right top
% % \adjincludegraphics[width=.8\textwidth,trim={{.0\width} {.25\height} {.0\width}
% % {.2\height}},clip]{../img/2019-05-29_21.12.26.jpg}
% \includegraphics[height=.8\textheight]{../img/2019-05-29_21.12.26.jpg}
% \end{center}
\begin{itemize}
\item Sindaco ha presentato la barra durante la festa annuale della biblioteca
\item ``grimaldello'' verso contapersone e altri dati
\item esperimenti di connessione fra device: mostra ingressi e uscite lanciando un ``LED sweep''
\item CSBN inizialmente entusiasta, aveva promesso liberazione dati...
\end{itemize}
\end{frame}
% \section{Demo}
% \begin{frame}
% \frametitle{Demo}
%
% Fingers crossed!
%
% \begin{center}
% \adjincludegraphics[width=.9\textwidth,trim={{.0\width} {.2\height} {.15\width} {.22\height}},clip]{../img/Mini_2018-05-10_112100.jpg}
% % left bottom right top
% % \adjincludegraphics[width=.47\textwidth,trim={{.0\width} {.25\height} {.0\width} {.2\height}},clip]{../img/BluRosso_IMG_20180307_222908.jpg}
% \end{center}
%
% \end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Considerazioni}
\begin{frame}
\frametitle{Considerazioni}
\begin{itemize}
\item Dato NON \textit{realtime}, una vera \textit{gamification} non è possibile
\item Visualizzazione ``banale'' (stile \textit{progress bar}), ma codice GPL, aperti (concorsi fra gli utenti delle biblioteche!?!) a suggerimenti per altre opzioni, es:
\begin{itemize}
\item 1 LED (o segmento) $\rightarrow$ 1 biblioteca, colore $\rightarrow$ prestiti
\item 1 LED (o segmento) $\rightarrow$ orario, visualizzazione cronologica
\item segnalazione acquisti/donazioni $\rightarrow$ variazione momentanea del pattern di LED
\item con identificazione via RFID o qr-code:
\begin{itemize}
\item notifica novità interessanti per l'utente
\item concorsi a premi
\end{itemize}
\end{itemize}
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Fine}
\begin{frame}
\frametitle{Q\&A}
\medskip
\hrule
\medskip
Repo codice:\\
\url{https://gitlab.com/HackLabCormano/BiblioVisualizer}
\medskip
\hrule
\medskip
\begin{center}
GRAZIE!
\end{center}
\medskip
\hrule
\medskip
\begin{center}
Andrea Trentini ([email protected])
\end{center}
\medskip
\hrule
\end{frame}
\end{document}
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment