Prévia do material em texto
Tutorial Mosquitto Instalação (Ubuntu) 1. Faça o download da última versão do mosquitto em http://mosquitto.org/download/, na seção “Source”. 2. Extraia os arquivos. 3. Usando o terminal, vá até a pasta com os arquivos extraídos (cd <local da pasta>). 4. Utilize o comando “sudo make install” para começar a instalação. 5. Inicie o mosquitto usando o comando “mosquitto”. 6. Baixe e instale o cliente usando “sudo aptget install mosquittoclients”. No passo 4, podem surgir erros com os arquivos “ares.h” e “ssl.h”. Nesse caso, basta baixar os pacotes que contêm os arquivos em questão. O pacote do “ares.h” é libcaresdev e do “ssl.h”, libssldev. Para instalálos, utilize o comando “sudo aptget install <nome do pacote>”. Abaixo são alguns comandos, com suas respectivas opções, que são utilizados para publicação/inscrição no broker com o cliente. mosquitto_pub (cliente para publicar mensagens em determinado tópico) m <mensagem> Manda mensagem para tópico. n Mensagem vazia para o tópico. r Armaneza a mensagem enviada como última mensagem do tópico que recebeu a mensagem. A última mensagem salva, se houver, será apagada. Todos os novos clientes que se inscreverem nesse tópico, receberão essa mensagem. t <tópico> Especifica o tópico que receberá a mensagem. q Define o nível da qualidade do serviço (QoS). 0: O broker/cliente manda mensagem sem confirmação. 1: O broker/cliente manda mensagem e aguarda confirmação. 2: O broker/cliente manda mensagem usando o “4way handshake”. u Especifica o nome do usuário. P Especifica a senha do usuário. Exemplos: mosquitto_pub t temperatura m 22 publica mensagem “22” no tópico “temperatura”. mosquitto_pub t status m on r publica mensagem “on” no tópico “status” e salva a mensagem como a última mensagem enviada. mosquitto_sub (cliente para inscrição em tópicos) t <tópico> Especifica o tópico desejado para inscrição. N O caractere de fim de linha não será adicionado no fim de cada mensagem recebida. u <usuário> Especifica o nome do usuário. P <senha> Especifica a senha do usuário. c Desabilita o “clean session”. Quando o cliente estiver inscrito em determinado tópico e se desconectar, o cliente receberá todas as mensagens que foram enviadas para aquele tópico, assim que se conectar novamente. É necessário que a publicação da mensagem e a inscrição tenham QoS > 0. Atenção: é obrigatório especificar a identificação, usando a opção abaixo, ao utilizar o c. E, também, especificar a qualidade do serviço (ver mosquitto_pub) maior que 0 para que a opção surta efeito. i <identifcação> Especifica a identificação do cliente que está se conectando ao broker. No MQTT, tópicos são tratados como hierarquia, sendo “/” usado como separador. '+' pode ser usado para a inscrição de tópicos em um mesmo nível, e, ao utilizar '#', a inscrição acontece em todos os tópicos naquele nível e nos níveis mais baixos. Exemplos: mosquitto_sub t sensores/+ recebe mensagem de todos os tópicos no nível APENAS após sensores. Recebe mensagens publicadas em “sensores/casa”, “sensores/lab”, mas NÃO recebe mensagens publicadas em “sensores”, “sensores/casa/1” etc. mosquitto_sub t sensores/# recebe mensagem de todos os tópicos nos níveis após sensores. Recebe mensagens publicadas em “sensores/casa”, “sensores/lab”, “sensores/casa/1” etc. Não recebe mensagens em tópicos antes de #, como, por exemplo, “sensores”. mosquitto_sub t wiser c i dispositivo1 q 2 recebe mensagens do tópico “wiser” utilizando a clean session, com id “dispositivo1”. Como a qualidade de serviço definida é 2, caso o cliente desconectese do broker, ao reconectar, ele receberá todas as mensagens que foram enviadas a esse tópico durante o tempo em que estava desconectado. mosquitto_passwd (gerenciamento de arquivo de usuários/senhas) c <caminho do arquivo> <nome do usuário> Cria um novo arquivo de senhas. Caso já exista um arquivo de senha com o mesmo nome, todas as informações do antigo arquivo serão perdidas. D <caminho do arquivo> <nome do usuário> Deleta determinado usuário do arquivo de senhas. Exemplos: mosquitto_passwd c /etc/mosquitto/senhas cristhian Cria um arquivo de senhas em “/etc/mosquitto/senhas” e adiciona o usuário “cristhian” ao arquivo. A senha é pedida logo após a execução do comando. mosquitto_passwd /etc/mosquitto/senhas wiser Adiciona o usuário “wiser” ao arquivo. A senha é pedida logo após a execução do comando. mosquitto_passwd D /etc/mosquitto/senhas wiser Apaga o usuário “wiser” do arquivo de senhas. Configuração do broker O broker possui um arquivo de configuração que, por padrão, encontrase na pasta do mosquitto, com nome “mosquitto.conf”. É um arquivo de texto com as opções de configuração do broker e seus respectivos valores. acl_file <caminho do arquivo> Define o caminho do arquivo a ser utilizado como lista de controle de acesso. Uma lista de controle de acesso define permissões de usuários aos tópicos. Existem 3 permissões: 1. read – ler (sub) 2. write – escrever (pub) 3. readwrite – ler e escrever (sub/pub) No arquivo, é definido o usuário e as suas permissões, usando uma linha pra informar o usuário a ser modificado e nas linhas seguintes as permissões. Ex.: user wiser topic temp/lab topic read temp/sala user cristhian topic write ar/lab Quando a permissão não é definida após “topic”, o servidor interpreta como “readwrite”. Ou seja, no exemplo acima, o usuário “wiser” pode publicar e se inscrever no tópico temp/lab, e se inscrever no tópico temp/sala. O usuário “cristhian” pode publicar no tópico “ar/lab”. Qualquer outro tópico, que as permissões não estejam definidas para qualquer usuário, o usuário não tem qualquer permissão no mesmo. É possível, também, definir padrões numa lista, com o “pattern”, facilitando a atribuição de permissões a vários usuários, usando “%u”, quando quiser tratar do usuário em questão. Ex.: user wiser topic temp/lab topic read temp/sala user cristhian topic write ar/lab pattern write sensores/%u Além das permissões dos usuários wiser e cristhian, qualquer outro usuário que se conectar ao broker, conseguirá publicar no tópico sensores/<nome do usuário>. “sensor1” consegue publicar apenas em “sensores/sensor1”, por exemplo. allow_anonymous [true | false] Quando atribuído falso, é necesśario se autenticar ao broker para publicar/se inscrever, usando “u e P”. Caso contrário, a conexão é negada. password_file <caminho do arquivo> Definir caminho do arquivo que contém os usuários, e suas respectivas senhas, que podem acessar o broker. clientid_prefixes <prefixo> Se definido, apenas clientes com id que começa com <prefixo> poderão acessar o broker. Exemplo de arquivo de configuração: allow_anonymous true password_file /etc/mosquitto/passwd clientid_prefixes wiser acl_file /etc/mosquitto/acl.conf