PJI11104-2016-1

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Totem

#!/bin/bash

if [ "${3}" = "" ]
then
  echo "Use: ${0} map <interface_mesh> <interface_ap>"
  echo "     ${0} mpp <interface_mesh> <interface_internet>"
  exit 1
else
  TIPO=${1}
  MESH=${2}
  AP=${3}
  INTERNET=${3}
fi

function basico(){
  service network-manager stop
  ip link set ${1} down
  iw dev ${1} interface add mesh0 type mp mesh_id Gourmet-Backhaul
  # iw dev mesh0 set channel 9
  iw dev mesh0 set freq 5190 HT40+
  ip link set mesh0 up
}

function map(){
  brctl addbr br0
  brctl addif br0 mesh0
  ip link set br0 up
  ip -4 address add 10.0.0.X/8 dev br0
  ip -4 route add 0.0.0.0/0 via 10.0.0.1
  killall -TERM hostapd
  sleep 1
  killall -KILL hostapd
  echo "interface=${2}" > /etc/hostapd.conf
  echo "bridge=br0" >> /etc/hostapd.conf
  echo "driver=nl80211" >> /etc/hostapd.conf
  echo "ssid=Gourmet" >> /etc/hostapd.conf
  echo "channel=3" >> /etc/hostapd.conf
  echo "ctrl_interface=/var/run/hostapd" >> /etc/hostapd.conf
  hostapd -B /etc/hostapd.conf
}

function mpp(){
  ip link set mesh0 up
  ip -4 address add 10.0.0.1/8 dev mesh0
  iw mesh0 set mesh_param mesh_gate_announcements 1
  iw mesh0 set mesh_param mesh_hwmp_rootmode 1
  restart isc-dhcp-server
  ip link set ${2} up
  dhclient ${2}
  sysctl -w net.ipv4.conf.all.forwarding=1
  iptables -t nat -F
  iptables -t nat -A POSTROUTING -o ${2} -j MASQUERADE
}

case ${TIPO} in
  "map")
    basico ${MESH}
    map ${MESH} ${AP}
    ;;
  "mpp")
    basico ${MESH}
    mpp ${MESH} ${INTERNET}
    ;;
esac


  • Para usar no servidor: adicionar a seguinte linha no começo do arquivo /etc/rc.local:
/etc/init.d/gourmet mpp wlan2 eth0
  • Para usar no totem: adicionar a seguinte linha no começo do arquivo /etc/rc.local:
/etc/init.d/gourmet map wlan2 wlan0

para verificar o funcionamento da rede sem fio:

watch -n1 'iw dev mesh0 station dump | egrep "(Station|inactive|rx|tx)"; echo; iw dev mesh0 mpath dump; echo; hostapd_cli all_sta | egrep "(:|connected_time)"'

Monitoramento de qualidade

Monitor

Arquivo /usr/local/bin/indicador.py:

#!/usr/bin/env python

import subprocess
import time

while True:
	#
	# Conta quantos usuarios conectados no AP.
	# Armazena na variavel "usuarios".
	p = subprocess.Popen('hostapd_cli all_sta |grep aid|wc -l', shell=True,
                       stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
	for line in p.stdout.readlines():
		num_usuarios = int(line.strip())
	if num_usuarios < 10:
		usuarios = '0' + str(num_usuarios)
	else:
		usuarios = str(num_usuarios)
	retval = p.wait()
	#
	# Mede a qualidade do sinal na rede mesh.
	# Armazena na variavel "qualidade".
	p = subprocess.Popen('iw dev mesh0  station dump | grep signal: | cut -d : -f 2 | cut -d d -f 1', shell=True,
	                     stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
	for line in p.stdout.readlines():
		num_qualidade = 80 + int(line.strip())
	if num_qualidade < 10:
		qualidade = '0' + str(num_qualidade)
	else:
		qualidade = str(num_qualidade)
	retval = p.wait()
	print "MSG:" + usuarios + ":" + qualidade
	time.sleep(1)

Arduino

Para configurar a interface serial do Arduino usando o Linux[1]: stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts </syntaxhighlight> e depois basta enviar para o arquivo /dev/ttyACM0: /usr/local/bin/indicador.py > /dev/ttyACM0 </syntaxhighlight>

Código Arduino

Programa desenvolvido para comunicação do Arduino com o display de LCD 16x2:

//Carrega a biblioteca LiquidCrystal
#include <LiquidCrystal.h>

//Define os pinos que serão utilizados para a ligação ao display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

//Define o caracter da barra de intensidade de sinal
byte bar[8] = {
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};
  
void setup() {
  //configura a comunicação serial com 9600 bps
  Serial.begin(9600);
  //Criar caracter
  lcd.createChar(0, bar);
  //Define o número de colunas e linhas do LCD
  lcd.begin(16, 2);
}
  
// Função que lê uma string da Serial e retorna o seu valor
String leStringSerial(){
  String conteudo = "";
  char caractere;
  
  // Enquanto receber algo pela serial
  while(Serial.available() > 0) {
    // Lê byte da serial
    caractere = Serial.read();
    // Ignora caractere de quebra de linha
    if (caractere != '\n'){
      // Concatena valores
      conteudo.concat(caractere);
    }
    // Aguarda buffer serial ler próximo caractere
    delay(10);
  }
  return conteudo;
}

void IntensidadeSinal(int porcent){
  if(porcent >= 0 && porcent < 30){
    lcd.setCursor(1, 1);
    lcd.print("SINAL REDE:");
    lcd.setCursor(12, 1);
    lcd.write(byte(0));
  }
  
  if(porcent >= 30 && porcent < 55){
    lcd.setCursor(1, 1);
    lcd.print("SINAL REDE:");
    lcd.setCursor(12, 1);
    lcd.write(byte(0));
    lcd.setCursor(13, 1);
    lcd.write(byte(0));
  }
  
  if(porcent >= 55 && porcent <= 100){
    lcd.setCursor(1, 1);
    lcd.print("SINAL REDE:");
    lcd.setCursor(12, 1);
    lcd.write(byte(0));
    lcd.setCursor(13, 1);
    lcd.write(byte(0));
    lcd.setCursor(14, 1);
    lcd.write(byte(0));
  }
}

void loop() {
  // Se receber algo pela serial
  if (Serial.available() > 0){
    // Lê toda string recebida
    String recebido = leStringSerial();
      
    if (recebido.substring(0,3) == "MSG"){
      //Limpa a tela
      lcd.clear();
      //Posiciona o cursor na coluna 3, linha 0
      lcd.setCursor(1, 0);
      //Envia o texcto entre aspas para o LCD
      lcd.print("USER ACCESS:");
      lcd.setCursor(13, 0);
      lcd.print(recebido.substring(4,6));
      int aux_sinal = atoi(recebido.substring(7,10).c_str()); //c_str vai retornar a versão C da string para o uso na função atoi.
      IntensidadeSinal(aux_sinal);
    }
  }
}

Documentação

Cronograma das Atividades

Semestre 2015-2
Semana Aula 1 Aula 2
1 - -
2 ? ?
3 ? Discussão da disciplina e projeto integrador.
4 ? Revisão de sistemas operacionais. Início dos trabalhos do projeto integrador.
5 ? Instalação do sistema operacional em rede e primeiros serviços: Cron, Syslog, NTP e SSH.
6 Instalação do sistema operacional em rede e primeiros serviços: Cron, Syslog, NTP e SSH.
7 Programação para a Web. Serviços para a Internet: LAMP (Linux + Apache + MySQL + PHP).
8 VoIP.
9 VoIP.
10 Serviços de telefonia IP.
11 Serviços de telefonia IP.
12 Serviços de comunicação da Internet: correio eletrônico, bate-papo e outros.
13 Serviços de comunicação da Internet: correio eletrônico, bate-papo e outros.
14 Convergência.
15 Convergência.
16 Gerência de rede.
17 Gerência de rede.
18 Projeto: documentação final e apresentação. Projeto: documentação final e apresentação.
19 Folga para feriados e erros no dimensionamento da carga horária. Folga para feriados e erros no dimensionamento da carga horária.
20 Folga para feriados e erros no dimensionamento da carga horária. Folga para feriados e erros no dimensionamento da carga horária.
Planejamento da disciplina

Conhecimentos sobre Telefonia IP para tratar no PI

<graphviz>

digraph VoIP {

subgraph clusterIP
{
 label="Redes"
 IP
 SIP
 DNS
 SDP
 RTP
}
DNS -> SIP
Tarifação -> "Telefonia IP"
VoIP -> "Telefonia IP"
SIP -> VoIP
SDP -> VoIP
RTP -> VoIP
IP -> SIP
IP -> SDP
IP -> RTP
Binário -> IP
Codec -> SDP
Modulação -> Codec
Sinais -> Modulação
Criptografia -> SIP 
Segurança -> Criptografia
QoS -> RTP
"Plano de Numeração" -> Tarifação
"Telefonia IP" -> Asterisk
Sinalização -> SIP

}

</graphviz>


Atividades em dois dias por semana (divididas em duas aulas de 1:30 h/ 20 semanas por semestre;

Semana Aula 1 Aula 2
1 Proposta do problema: convergência: cenário-problema. Proposta do problema: convergência: cenário-problema.
2 S.O.: administração de sistemas. S.O.: administração de sistemas.
3 Serviços: Compartilhamento (SMB/CIFS e HTTP). Serviços: Compartilhamento (SMB/CIFS e HTTP).
4 Serviços: Compartilhamento (HTTP e DHTML). Serviços: Compartilhamento (HTTP e DHTML).
5 Serviços: Comunicação (SMTP e IMAP). Serviços: Comunicação (SMTP e IMAP).
6 Serviços: Comunicação (SoftPBX). Serviços: Comunicação (SoftPBX).
7 Serviços: Comunicação (SoftPBX). Serviços: Comunicação (SoftPBX).
8 Serviços: Comunicação (SoftPBX e hardware). Serviços: Comunicação (SoftPBX e hardware).
9 Serviços: Comunicação (SoftPBX, hardware e tipos de sinalização). Serviços: Comunicação (SoftPBX, hardware e tipos de sinalização).
10 Serviços: Comunicação (protocolos de VoIP). Serviços: Comunicação (protocolos de VoIP).
11 Serviços: Comunicação (protocolos de VoIP). Serviços: Comunicação (protocolos de VoIP).
12 Gerência de rede: monitoramento. Gerência de rede: monitoramento.
13 Gerência de rede: contabilização. Gerência de rede: contabilização.
14 Convergência: plano de numeração. Convergência: plano de numeração.
15 Convergência: serviços (conferência, DISA). Convergência: serviços (conferência, DISA).
16 Convergência: mensagens unificadas. Convergência: mensagens unificadas.
17 Convergência: tarifação. Convergência: tarifação.
18 Projeto: documentação final e apresentação. Projeto: documentação final e apresentação.
19 Folga para feriados e erros no dimensionamento da carga horária. Folga para feriados e erros no dimensionamento da carga horária.
20 Folga para feriados e erros no dimensionamento da carga horária. Folga para feriados e erros no dimensionamento da carga horária.

Diário de bordo

Semestre 2016-1
Semestre 2015-2
  • Dia 04/11/2015:
    • Configuração da BIOS:
      • Garantia de que o sistema iniciará sem teclado, mouse ou vídeo.
      • Restauração do sistema após queda de energia.
    • Instalação do sistema operacional.
    • Configuração da rede:
      • IP: 200.135.37.X (92 = Adriano, 93 = Taís, 94 = Cláudio)
      • Máscara de sub-rede: 255.255.255.192 ou /26
      • Gateway ou rota-padrão: 200.135.37.126
      • Servidores DNS: 200.135.37.72 e 200.135.37.65
    • Particionamento:
      • Primeira partição primária de 20GB para "/".
      • Segunda partição primária, com o restante do disco, para LVM.
    • Instalação do GRUB na MBR do disco rígido (no caso, /dev/sda).
    • Arquivos após a instalação:
      • /etc/apt/sources.list

deb http://debian.pop-sc.rnp.br/debian/ stable main contrib non-free deb http://security.debian.org/ stable/updates main contrib non-free </syntaxhighlight>

    • Comandos após a instalação:

apt-get update apt-get install ssh apt-get install ntp vi /etc/ntp.conf </syntaxhighlight>

      • Mudar as linhas com a expressão server por:

server pool.ntp.br iburst prefer server ntp.cais.rnp.br iburst server ntp.ufsc.br iburst </syntaxhighlight>

      • E reiniciar o serviço:

systemctl restart ntp </syntaxhighlight>

Material de Aula

Programação:


Linux:

Comandos HTML:



Voltar

Curso Técnico em Telecomunicações