diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644
index 0000000..c1d16c9
--- /dev/null
+++ b/.circleci/config.yml
@@ -0,0 +1,59 @@
+version: 2.1
+executors:
+ nodejs:
+ docker:
+ - image: cimg/node:18.17.1
+ golang:
+ docker:
+ - image: cimg/go:1.20.7
+
+jobs:
+
+ build_and_deploy_controller:
+ executor: golang
+ steps:
+ - checkout
+ - run:
+ name: Build and Deploy Controller
+ command: |
+ cd backend/services/controller && go build -o controller cmd/oktopus/main.go
+ scp -o StrictHostKeyChecking=no controller $SSH_USER@$SSH_HOST:/home/$SSH_USER
+ ssh -o StrictHostKeyChecking=no $SSH_USER@$SSH_HOST "sudo mv controller /usr/bin/ && sudo systemctl restart controller"
+
+ build_and_deploy_mochi:
+ executor: golang
+ steps:
+ - checkout
+ - run:
+ name: Build and Deploy Mochi
+ command: |
+ cd backend/services/mochi/ && go build -o mochi cmd/main.go
+ scp -o StrictHostKeyChecking=no mochi $SSH_USER@$SSH_HOST:/home/$SSH_USER
+ ssh -o StrictHostKeyChecking=no $SSH_USER@$SSH_HOST "sudo mv mochi /usr/bin/ && sudo systemctl restart mochi"
+
+ build_and_deploy_frontend:
+ executor: nodejs
+ steps:
+ - checkout
+ - run:
+ name: Build and Deploy Frontend
+ command: |
+ cd frontend && npm i && npm run build
+ scp -o StrictHostKeyChecking=no -r .next/ $SSH_USER@$SSH_HOST:/home/$SSH_USER/oktopus/frontend
+ ssh -o StrictHostKeyChecking=no $SSH_USER@$SSH_HOST "pm2 restart oktopus"
+
+workflows:
+ build_and_deploy:
+ jobs:
+ - build_and_deploy_controller:
+ filters:
+ branches:
+ only: main
+ - build_and_deploy_mochi:
+ filters:
+ branches:
+ only: main
+ - build_and_deploy_frontend:
+ filters:
+ branches:
+ only: main
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 219836b..64eeb06 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,4 +16,8 @@ go.work
*.txt
*.pwd
*.acl
-.idea
\ No newline at end of file
+.idea
+.vscode
+controller
+main
+mochi
\ No newline at end of file
diff --git a/README.md b/README.md
index b8d81e1..c193a36 100644
--- a/README.md
+++ b/README.md
@@ -2,11 +2,6 @@
leandro@leandro-laptop:~$ go run oktopus/backend/services/mochi/cmd/main.go -redis "127.0.0.1:6379"+
leandro@leandro-laptop:~$ cd oktopus/backend/services/mochi/ && go run cmd/main.go -redis "127.0.0.1:6379"
-leandro@leandro-laptop:~$ go run oktopus/backend/services/controller/cmd/oktopus/main.go -u root -P root -mongo "mongodb://127.0.0.1:27017"+leandro@leandro-laptop:~$ cd oktopus/backend/services/controller/ && go run cmd/oktopus/main.go -u root -P root -mongo "mongodb://127.0.0.1:27017"
-
-
-Este repositório tem como intuito fomentar o desenvolvimento de uma plataforma de gerência multi-vendor para IoTs. Todo dispositivo que seguir o protocolo TR-369 poderá ser gerenciado. O objetivo principal é facilitar e unificar a gerência de dispositivos, o que gera inúmeros benefícios para o usuário final e prestadores de serviços, suprimindo as demandas que as tecnologias de hoje exigem: interconexão de dispositivos, coleta de dados, rápidez, disponibilidade e muito mais. -
--O advento da Internet das Coisas traz inúmeras oportunidades e desafios pra os prestadores de serviços, com mais de um bilhão de dispositivos espalhados pelo globo hoje, fazendo uso do TR-069, qual é o futuro do protocolo e o que podemos esperar pela frente? -
--O CWMP(CPE Wan Management Protocol), mais conhecido como TR-069, abriu muitas portas para o ecossistema de provedores, por meio dele é possível entregar serviços com agilidade, que servem ou ultrapassam as expectativas do cliente, fazendo uma gestão pró-ativa e segura da rede, tendo em vista também o menor custo e a maior eficiência para os prestadores de serviços. -
--Com a ascensão do que hoje chamamos de casa inteligente, a Internet das Coisas e a demanda por ambientes cada vez mais interconectadas e baseados em nuvem, novas demandas e obstáculos surgiram, abrindo a porta para a criação de uma nova forma de comunicação que supra as necessidades do mercado atual. -
--Existe uma corrida acirrada para monetizar os dispostivos IoT que hoje fazem parte da casa conectada e de outros ambientes. Como resultado disso, muitas empresas estão criando suas próprias soluções proprietárias; isso é compreensível dada tamanha pressão gerada pela promessa da monetização da Casa Inteligente. Infelizmente, essas aplicações contribuem para um ecossistema pobre, onde um provedor acaba dependente e limitado a uma solução vertical, de um único Vendor. Isso gera um ambiente de pouca competição (o que leva a maiores riscos), menos inovação, e o potencial de soluções com custos muito elevados. -
--As tecnologias por trás do Wi-Fi, a conectividade entre dispositivos, a Casa Inteligente e os IoTs estão em constante evolução e aprimoramento. É importante que quando os prestadores de serviços forem buscar uma solução, busquem por algo que seja a "prova de futuro", pensando sempre adiante. -
--Buscando resolver os desafios citados anteriormente, provedores e fabricantes juntos, desenvolveram o USP (User Services Platform), definido pela norma TR-369 da Broadband Forum, sendo este, a evolução natural do TR-069. Este novo padrão foi desenhado para ser flexível, seguro, escalonável e padronizado, para atender as demandas de um mundo conectado hoje, e no futuro. -
- -
-
-
-
-
-
--leandro@leandro-laptop:~$ cd oktopus/devops -leandro@leandro-laptop:~/oktopus/devops$ docker run --
leandro@leandro-laptop:~$ vá executar oktopus/backend/services/mochi/cmd/main.go -redis "127.0.0.1:6379"-
-leandro@leandro-laptop:~$ execute oktopus/backend/services/controller/cmd/oktopus/main.go -u root -P root -mongo "mongodb://127.0.0.1:27017"-
-leandro@leandro-laptop:~$ cd oktopus/backend/services/socketio && npm i && npm start-
-leandro@leandro-laptop:~$ cd oktopus/frontend && npm i && npm run dev-
-"CertificateNumberOfEntries": "0", -"Controller.1.Alias": "", -"Controller.1.AssignedRole": "", -"Controller.1.BootParameterNumberOfEntries": "0", -"Controller.1.ControllerCode": "", -"Controller.1.Enable": "true", -"Controller.1.EndpointID": "oktopusController", -"Controller.1.InheritedRole": "Device.LocalAgent.ControllerTrust.Role.1", -"Controller.1.MTP.1.Alias": "", -"Controller.1.MTP.1.Enable": "true", -"Controller.1.MTP.1.MQTT.Reference": "Device.MQTT.Client.1", -"Controller.1.MTP.1.MQTT.Topic": "oktopus/v1/controller", -"Controller.1.MTP.1.Protocol": "MQTT", -"Controller.1.MTPNumberOfEntries": "1", -"Controller.1.PeriodicNotifInterval": "15", -"Controller.1.PeriodicNotifTime": "0001-01-01T00:00:00Z", -"Controller.1.ProvisioningCode": "", -"Controller.1.USPNotifRetryIntervalMultiplier": "2000", -"Controller.1.USPNotifRetryMinimumWaitInterval": "5", -"ControllerNumberOfEntries": "1", -"ControllerTrust.ChallengeNumberOfEntries": "0", -"ControllerTrust.CredentialNumberOfEntries": "0", -"ControllerTrust.Role.1.Alias": "cpe-1", -"ControllerTrust.Role.1.Enable": "true", -"ControllerTrust.Role.1.Name": "Full Access", -"ControllerTrust.Role.1.Permission.1.Alias": "cpe-1", -"ControllerTrust.Role.1.Permission.1.CommandEvent": "r-xn", -"ControllerTrust.Role.1.Permission.1.Enable": "true", -"ControllerTrust.Role.1.Permission.1.InstantiatedObj": "rw-n", -"ControllerTrust.Role.1.Permission.1.Obj": "rw-n", -"ControllerTrust.Role.1.Permission.1.Order": "0", -"ControllerTrust.Role.1.Permission.1.Param": "rw-n", -"ControllerTrust.Role.1.Permission.1.Targets": "Device.", -"ControllerTrust.Role.1.PermissionNumberOfEntries": "1", -"ControllerTrust.RoleNumberOfEntries": "2", -"EndpointID": "os::4851CF-000000000002", -"MTP.1.Alias": "", -"MTP.1.Enable": "false", -"MTP.1.MQTT.PublishQoS": "0", -"MTP.1.MQTT.Reference": "Device.MQTT.Client.1", -"MTP.1.MQTT.ResponseTopicConfigured": "oktopus/v1/controller", -"MTP.1.MQTT.ResponseTopicDiscovered": "oktopus/v1/agent/os::4851CF-000000000002", -"MTP.1.Protocol": "MQTT", -"MTP.1.Status": "Down", -"MTPNumberOfEntries": "1", -"RequestNumberOfEntries": "0", -"SoftwareVersion": "5.0.0", -"SubscriptionNumberOfEntries": "0", -"SupportedFingerprintAlgorithms": "SHA-1, SHA-224, SHA-256, SHA-384, SHA-512", -"SupportedProtocols": "STOMP, CoAP, MQTT, WebSocket", -"UpTime": "42" --
-"Alias": "cpe-1", -"BrokerAddress": "10.100.250.4", -"BrokerPort": "1883", -"CleanSession": "false", -"CleanStart": "false", -"ClientID": "", -"ConnectRetryIntervalMultiplier": "2000", -"ConnectRetryMaxInterval": "30720", -"ConnectRetryTime": "5", -"Enable": "true", -"KeepAliveTime": "30", -"Name": "", -"Password": "", -"ProtocolVersion": "5.0", -"RequestProblemInfo": "false", -"RequestResponseInfo": "false", -"ResponseInformation": "oktopus/v1/agent/os::4851CF-000000000002", -"Status": "Connected", -"Subscription.1.Alias": "cpe-1", -"Subscription.1.Enable": "false", -"Subscription.1.QoS": "1", -"Subscription.1.Topic": "oktopus/v1/agent", -"SubscriptionNumberOfEntries": "1", -"TransportProtocol": "TCP/IP", -"Username": "test"- - - --------------------------------------------------------------------------------------------------------------------------------------------------------- -
Vai usar nosso projeto na sua empresa? gostaria de conversar sobre o TR-369 e gerenciamento de IoTs, estamos online no Slack.
-Caso você tenha interesse em informações internas sobre o time e nossas pretensões acesse nossa Wiki.
- --------------------------------------------------------------------------------------------------------------------------------------------------------- - -Fontes bibliográficas: MU-461.pdf, TR-369.html, USP Training Session Slides
- diff --git a/frontend/src/pages/_app.js b/frontend/src/pages/_app.js index b22cb8f..7bc21fb 100644 --- a/frontend/src/pages/_app.js +++ b/frontend/src/pages/_app.js @@ -28,7 +28,7 @@ const App = (props) => {