A API OLT permite o gerenciamento de ONTs (Optical Network Terminals) conectadas às OLTs (Optical Line Terminals) no Ravi Monitor.
⚠️ IMPORTANTE: Para utilizar a API OLT, é necessário:
Todas as operações OLT requerem:
action=olt
operation
: Operação específicatoken
: Token com permissão olt
A API OLT possui dois tipos de operações:
🔧 Operações de Controle (Apenas Nokia):
📊 Operações de Consulta (Todas as marcas):
Ativa uma ONT na OLT especificada.
olt
: ID da OLTserial_number
: Número de série da ONTmodel_id
: ID do modelo da ONTslot
: Slot da OLTpon
: Porta PONont
: Posição da ONTvlan
: VLAN para a ONTdescription
: Descrição da ONTcurl -X POST "https://seu-servidor-ravi/api.php" \
-d "token=SEU_TOKEN" \
-d "action=olt" \
-d "operation=activation" \
-d "olt=1" \
-d "serial_number=ALCL12345678" \
-d "model_id=1" \
-d "slot=1" \
-d "pon=1" \
-d "ont=1" \
-d "vlan=100" \
-d "description=Cliente Teste"
// Sucesso
{"msg": "ONT activated successfully"}
// Erros
{"msg": "OLT not found"}
{"msg": "Model id 1 not found"}
{"msg": "Service not available for this OLT model"}
{"msg": "Nokia functions not available"}
Remove uma ONT da OLT especificada.
olt
: ID da OLTslot
: Slot da OLTpon
: Porta PONont
: Posição da ONTcurl -X POST "https://seu-servidor-ravi/api.php" \
-d "token=SEU_TOKEN" \
-d "action=olt" \
-d "operation=exclusion" \
-d "olt=1" \
-d "slot=1" \
-d "pon=1" \
-d "ont=1"
{
"msg": "ONT removed successfully",
"log": "Detalhes do log de exclusão..."
}
Lista ONTs conectadas mas não autorizadas na OLT.
olt
: ID da OLTcurl -X POST "https://seu-servidor-ravi/api.php" \
-d "token=SEU_TOKEN" \
-d "action=olt" \
-d "operation=unprovisioned" \
-d "olt=1"
{
"msg": "Search completed successfully",
"ONTs": [
{
"slot": "1",
"pon": "1",
"serial": "ALCL12345678"
},
{
"slot": "1",
"pon": "2",
"serial": "ALCL87654321"
}
]
}
Encontra a próxima posição disponível em uma porta PON.
olt
: ID da OLTslot
: Slot da OLTpon
: Porta PONcurl -X POST "https://seu-servidor-ravi/api.php" \
-d "token=SEU_TOKEN" \
-d "action=olt" \
-d "operation=search_position" \
-d "olt=1" \
-d "slot=1" \
-d "pon=1"
{
"msg": "Search completed successfully",
"position": "5"
}
Retorna informações completas de uma OLT e suas ONTs.
olt
: ID da OLTname
: Nome da OLTcurl -X POST "https://seu-servidor-ravi/api.php" \
-d "token=SEU_TOKEN" \
-d "action=olt" \
-d "operation=search_olt" \
-d "olt=1"
curl -X POST "https://seu-servidor-ravi/api.php" \
-d "token=SEU_TOKEN" \
-d "action=olt" \
-d "operation=search_olt" \
-d "name=OLT-CENTRO"
{
"olts": [
{
"id": 1,
"name": "OLT-CENTRO",
"execution_cronogram": "Run every 30 minutes",
"ip": "192.168.1.10",
"brand": "NOKIA",
"sync_date": "2024-01-15 10:30:00",
"onts": [
{
"data": "2024-01-15 10:30:00",
"status": "1",
"slot": "1",
"pon": "1",
"ont": "1",
"interface": "1/1/1:1",
"nome": "Cliente A",
"desc": "Residencial",
"mac": "ALCL:1234:5678",
"ns": "ALCL12345678",
"rxpower": "-18.5",
"txpower": "2.1",
"oltrx": "-19.2",
"voltagem": "3.3",
"temperatura": "45",
"distancia": "1.2",
"biascurrent": "25",
"dataconn": "2024-01-10",
"reason": ""
}
]
}
]
}
Busca ONTs por MAC, serial number ou localização.
mac
: Endereço MAC da ONTns
: Número de série da ONTslot
: Slot (pode combinar com pon
e ont
)pon
: Porta PON (quando usar slot
)ont
: Posição da ONT (quando usar slot
)olt
: ID da OLT (ou name
)name
: Nome da OLT (ou olt
)curl -X POST "https://seu-servidor-ravi/api.php" \
-d "token=SEU_TOKEN" \
-d "action=olt" \
-d "operation=search_ont" \
-d "olt=1" \
-d "mac=ALCL:1234:5678"
curl -X POST "https://seu-servidor-ravi/api.php" \
-d "token=SEU_TOKEN" \
-d "action=olt" \
-d "operation=search_ont" \
-d "name=OLT-CENTRO" \
-d "ns=ALCL12345678"
curl -X POST "https://seu-servidor-ravi/api.php" \
-d "token=SEU_TOKEN" \
-d "action=olt" \
-d "operation=search_ont" \
-d "olt=1" \
-d "slot=1" \
-d "pon=1" \
-d "ont=1"
{
"onts": [
{
"slot": "1",
"pon": "1",
"ont": "1",
"name": "Cliente A",
"description": "Residencial",
"rx_ont": "-18.5",
"tx_ont": "2.1",
"rx_olt": "-19.2",
"voltage": "3.3",
"temperature": "45",
"distance": "1.2",
"biascurrent": "25",
"status": "1",
"sync_date": "2024-01-15 10:30:00",
"reason": ""
}
]
}
Retorna estatísticas de status das ONTs da OLT.
olt
: ID da OLTname
: Nome da OLTcurl -X POST "https://seu-servidor-ravi/api.php" \
-d "token=SEU_TOKEN" \
-d "action=olt" \
-d "operation=status_summary" \
-d "olt=1"
{
"total_onts": 150,
"status_counts": {
"break": 2,
"no-data": 5,
"low-signal": 8,
"signal-alert": 12,
"online": 118,
"offline": 5
}
}
#!/bin/bash
TOKEN="seu_token_aqui"
API_URL="https://seu-servidor-ravi/api.php"
OLT_ID="1"
# Função para ativar ONT
activate_ont() {
local serial="$1"
local model_id="$2"
local slot="$3"
local pon="$4"
local ont="$5"
local vlan="$6"
local desc="$7"
curl -s -X POST "$API_URL" \
-d "token=$TOKEN" \
-d "action=olt" \
-d "operation=activation" \
-d "olt=$OLT_ID" \
-d "serial_number=$serial" \
-d "model_id=$model_id" \
-d "slot=$slot" \
-d "pon=$pon" \
-d "ont=$ont" \
-d "vlan=$vlan" \
-d "description=$desc"
}
# Função para buscar ONTs não provisionadas
search_unprovisioned() {
curl -s -X POST "$API_URL" \
-d "token=$TOKEN" \
-d "action=olt" \
-d "operation=unprovisioned" \
-d "olt=$OLT_ID"
}
# Função para buscar posição livre
search_free_position() {
local slot="$1"
local pon="$2"
curl -s -X POST "$API_URL" \
-d "token=$TOKEN" \
-d "action=olt" \
-d "operation=search_position" \
-d "olt=$OLT_ID" \
-d "slot=$slot" \
-d "pon=$pon"
}
# Exemplo de uso
activate_ont "ALCL12345678" "1" "1" "1" "1" "100" "Cliente Teste"
search_unprovisioned
search_free_position "1" "1"
<?php
/**
* Ativa uma ONT na OLT
*
* @param int $oltId ID da OLT
* @param string $serialNumber Número de série da ONT
* @param int $modelId ID do modelo
* @param string $slot Slot
* @param string $pon PON
* @param string $ont Posição da ONT
* @param string $vlan VLAN
* @param string $description Descrição
* @return array Resposta da API
*/
function ativarONT($oltId, $serialNumber, $modelId, $slot, $pon, $ont, $vlan, $description) {
$token = 'seu_token_aqui';
$apiUrl = 'https://seu-servidor-ravi/api.php';
$data = [
'token' => $token,
'action' => 'olt',
'operation' => 'activation',
'olt' => $oltId,
'serial_number' => $serialNumber,
'model_id' => $modelId,
'slot' => $slot,
'pon' => $pon,
'ont' => $ont,
'vlan' => $vlan,
'description' => $description
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
/**
* Exclui uma ONT da OLT
*
* @param int $oltId ID da OLT
* @param string $slot Slot
* @param string $pon PON
* @param string $ont Posição da ONT
* @return array Resposta da API
*/
function excluirONT($oltId, $slot, $pon, $ont) {
$token = 'seu_token_aqui';
$apiUrl = 'https://seu-servidor-ravi/api.php';
$data = [
'token' => $token,
'action' => 'olt',
'operation' => 'exclusion',
'olt' => $oltId,
'slot' => $slot,
'pon' => $pon,
'ont' => $ont
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
/**
* Busca ONTs não provisionadas
*
* @param int $oltId ID da OLT
* @return array Resposta da API
*/
function buscarONTsNaoProvisionadas($oltId) {
$token = 'seu_token_aqui';
$apiUrl = 'https://seu-servidor-ravi/api.php';
$data = [
'token' => $token,
'action' => 'olt',
'operation' => 'unprovisioned',
'olt' => $oltId
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
/**
* Busca posição livre em uma PON
*
* @param int $oltId ID da OLT
* @param string $slot Slot
* @param string $pon PON
* @return array Resposta da API
*/
function buscarPosicaoLivre($oltId, $slot, $pon) {
$token = 'seu_token_aqui';
$apiUrl = 'https://seu-servidor-ravi/api.php';
$data = [
'token' => $token,
'action' => 'olt',
'operation' => 'search_position',
'olt' => $oltId,
'slot' => $slot,
'pon' => $pon
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
/**
* Busca dados de uma OLT
*
* @param int|null $oltId ID da OLT
* @param string|null $oltName Nome da OLT
* @return array Resposta da API
*/
function buscarOLT($oltId = null, $oltName = null) {
$token = 'seu_token_aqui';
$apiUrl = 'https://seu-servidor-ravi/api.php';
$data = [
'token' => $token,
'action' => 'olt',
'operation' => 'search_olt'
];
if ($oltId) {
$data['olt'] = $oltId;
} elseif ($oltName) {
$data['name'] = $oltName;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
/**
* Busca ONT por MAC, serial ou localização
*
* @param int|null $oltId ID da OLT
* @param string|null $oltName Nome da OLT
* @param string|null $mac MAC da ONT
* @param string|null $serial Serial da ONT
* @param string|null $slot Slot
* @param string|null $pon PON
* @param string|null $ont Posição da ONT
* @return array Resposta da API
*/
function buscarONT($oltId = null, $oltName = null, $mac = null, $serial = null, $slot = null, $pon = null, $ont = null) {
$token = 'seu_token_aqui';
$apiUrl = 'https://seu-servidor-ravi/api.php';
$data = [
'token' => $token,
'action' => 'olt',
'operation' => 'search_ont'
];
if ($oltId) $data['olt'] = $oltId;
if ($oltName) $data['name'] = $oltName;
if ($mac) $data['mac'] = $mac;
if ($serial) $data['ns'] = $serial;
if ($slot) $data['slot'] = $slot;
if ($pon) $data['pon'] = $pon;
if ($ont) $data['ont'] = $ont;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
/**
* Busca resumo de status das ONTs
*
* @param int|null $oltId ID da OLT
* @param string|null $oltName Nome da OLT
* @return array Resposta da API
*/
function resumoStatus($oltId = null, $oltName = null) {
$token = 'seu_token_aqui';
$apiUrl = 'https://seu-servidor-ravi/api.php';
$data = [
'token' => $token,
'action' => 'olt',
'operation' => 'status_summary'
];
if ($oltId) {
$data['olt'] = $oltId;
} elseif ($oltName) {
$data['name'] = $oltName;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
/*
Uso básico:
// Ativar ONT
$resultado = ativarONT(1, 'ALCL12345678', 1, '1', '1', '1', '100', 'Cliente Teste');
// Excluir ONT
$resultado = excluirONT(1, '1', '1', '1');
// Buscar ONTs não provisionadas
$onts = buscarONTsNaoProvisionadas(1);
// Buscar posição livre
$posicao = buscarPosicaoLivre(1, '1', '1');
// Buscar dados da OLT
$olt = buscarOLT(1);
// Buscar ONT por MAC
$ont = buscarONT(1, null, 'ALCL:1234:5678');
// Resumo de status
$resumo = resumoStatus(1);
// Verificar se funcionou
if ($resultado['msg'] === 'ONT activated successfully') {
echo "ONT ativada com sucesso";
} else {
echo "Erro: " . $resultado['msg'];
}
*/
?>
Código | Descrição |
---|---|
"ONT activated successfully" |
ONT ativada com sucesso |
"ONT removed successfully" |
ONT removida com sucesso |
"Search completed successfully" |
Busca realizada com sucesso |
"OLT ID is required" |
ID da OLT é obrigatório |
"OLT ID or name is required" |
ID ou nome da OLT é obrigatório |
"OLT not found" |
OLT não encontrada |
"ONT not found" |
ONT não encontrada |
"Model id X not found" |
Modelo não encontrado |
"Service not available for this OLT model" |
Serviço indisponível para o modelo |
"Nokia functions not available" |
Funções Nokia indisponíveis |
"Missing required parameter: X" |
Parâmetro obrigatório ausente |
Status | Descrição |
---|---|
break |
ONT com falha |
no-data |
Sem dados da ONT |
low-signal |
Sinal baixo |
signal-alert |
Sinal em alerta |
online |
ONT online |
offline |
ONT offline |
Nota: As operações de activation, exclusion, unprovisioned e search_position foram desenvolvidas especificamente para OLTs Nokia. As operações de search_olt, search_ont e status_summary funcionam com qualquer marca de OLT cadastrada no sistema.