PHPackages                             rumd3x/cptm-alerts - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. rumd3x/cptm-alerts

ActiveProject[Utility &amp; Helpers](/categories/utility)

rumd3x/cptm-alerts
==================

Alerta sobre mudanças de status nas linhas dos trens e metrôs de São Paulo diretamente no canal do Slack.

0.6.4(6y ago)92[1 PRs](https://github.com/rumd3x/cptm-alerts/pulls)MITPHPPHP &gt;=7.2CI failing

Since Dec 8Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/rumd3x/cptm-alerts)[ Packagist](https://packagist.org/packages/rumd3x/cptm-alerts)[ RSS](/packages/rumd3x-cptm-alerts/feed)WikiDiscussions master Synced yesterday

READMEChangelog (10)Dependencies (10)Versions (13)Used By (0)

CPTM Alerts
===========

[](#cptm-alerts)

Notificações em tempo real sobre mudanças de status nas linhas dos trens e metrôs de São Paulo diretamente no canal do Slack.

[![GitHub release](https://camo.githubusercontent.com/32204d7e96d22ef35ba3f68a180841497faef994b0e1e188f3e5610213b0dce8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f72756d6433782f6370746d2d616c657274732e737667)](https://camo.githubusercontent.com/32204d7e96d22ef35ba3f68a180841497faef994b0e1e188f3e5610213b0dce8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f72756d6433782f6370746d2d616c657274732e737667)[![Build Status](https://camo.githubusercontent.com/4d559bdc368e03fe472ad0167ce8245f18c55d98d8c654be37db938589826a7b/68747470733a2f2f7472617669732d63692e6f72672f72756d6433782f6370746d2d616c657274732e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/rumd3x/cptm-alerts)[![Docker Cloud Build Status](https://camo.githubusercontent.com/2e676f058e55de4b8eab9b50505fd0d3191b4ca88563ab6a2871cf67756a872c/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f636c6f75642f6275696c642f65646d75722f6370746d2d616c657274732e737667)](https://camo.githubusercontent.com/2e676f058e55de4b8eab9b50505fd0d3191b4ca88563ab6a2871cf67756a872c/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f636c6f75642f6275696c642f65646d75722f6370746d2d616c657274732e737667)[![Docker Cloud Automated build](https://camo.githubusercontent.com/069c4d83a2ebe1070123eba7723538afda16509abf145075912ae6f7a4d2d44e/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f636c6f75642f6175746f6d617465642f65646d75722f6370746d2d616c657274732e737667)](https://camo.githubusercontent.com/069c4d83a2ebe1070123eba7723538afda16509abf145075912ae6f7a4d2d44e/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f636c6f75642f6175746f6d617465642f65646d75722f6370746d2d616c657274732e737667)[![GitHub](https://camo.githubusercontent.com/70ff00cd1419c7fda076f7f6977bcb8fea38f349a155f3416958a7270ee44953/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f72756d6433782f6370746d2d616c657274732e737667)](https://camo.githubusercontent.com/70ff00cd1419c7fda076f7f6977bcb8fea38f349a155f3416958a7270ee44953/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f72756d6433782f6370746d2d616c657274732e737667)[![PHP Version](https://camo.githubusercontent.com/fcec73543b1b80c9648e9b8905ff6e7066ef0f87c6dd1bf3e32b9fa4a3509b21/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f72756d6433782f6370746d2d616c657274732e737667)](https://camo.githubusercontent.com/fcec73543b1b80c9648e9b8905ff6e7066ef0f87c6dd1bf3e32b9fa4a3509b21/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f72756d6433782f6370746d2d616c657274732e737667)

[![Notificação Exemplo](/docs/images/notificacoes.png)](/docs/images/notificacoes.png)

Getting started
---------------

[](#getting-started)

### Workspace

[](#workspace)

1. Você precisará de um Workspace no slack. Se não tiver [crie-o](https://slack.com/get-started)

### Token

[](#token)

1. Você precisará gerar um token para o seu Workspace se comunicar com o projeto.
2. Para isso [crie um App no seu Workspace](https://api.slack.com/apps)

[![App no Workspace](/docs/images/app.jpg)](/docs/images/app.jpg)

3. Após criado o App, vá até **Bot Users** no menu lateral e crie um Bot para seu App.
4. Após criado o Bot, vá até **OAuth &amp; Permissions** no menu lateral. Na seção **Scope** dê a permissão *chat:write:bot* e *bot* para o seu App. Será solicitado que o App seja reinstalado no Workspace para as novas permissões.

[![App configurado corretamente](/docs/images/appconfig.jpg)](/docs/images/appconfig.jpg)

5. Após dadas as permissões e reinstalado o App salve a **Bot User OAuth Access Token** ela será necessária para configurar o projeto.

Configurando o Projeto
----------------------

[](#configurando-o-projeto)

### Rodando via Docker

[](#rodando-via-docker)

- Crie um container do projeto com o comando:

```
docker run --detach \
--env SLACK_KEY=your-slack-bot-oauth-key \
--env SLACK_CHANNEL=channel-name \
--env NOTIFY_LEVEL=0 \
--env NOTIFY_DAYS=all \
--env NOTIFY_LINES=all \
--restart unless-stopped \
edmur/cptm-alerts
```

- Substitua os valores para as chaves `SLACK_KEY` e `SLACK_CHANNEL`.
- Os parametros `NOTIFY_LEVEL`, `NOTIFY_DAYS` e `NOTIFY_LINES` são opcionais e podem ser omitidos.

- Para rodar em produção recomendo que crie um volume para manter a persistencia dos dados e para ter acesso aos logs da aplicação.

```
docker volume create cptm_alerts_data

docker run --detach \
--env SLACK_KEY=your-slack-bot-oauth-key \
--env SLACK_CHANNEL=channel-name \
--env NOTIFY_LEVEL=0 \
--env NOTIFY_DAYS=all \
--env NOTIFY_LINES=all \
--restart unless-stopped \
--volume cptm_alerts_data:/usr/src/Storage \
edmur/cptm-alerts
```

### Rodando Local

[](#rodando-local)

1. Baixe o projeto para uma pasta em sua maquina:

```
git clone https://github.com/rumd3x/cptm-alerts.git
# ou
composer create-project rumd3x/cptm-alerts
```

2. Vá até a pasta do projeto: `cd cptm-alerts`.
3. Instale as dependências: `composer install` (Não é necessário caso tenha baixado via composer create-project).
4. Crie o seu arquivo de configurações do projeto: `cp .env.example .env`.
5. Edite o arquivo `.env`. Em `SLACK_CHANNEL` coloque o canal do slack em que o bot publicará as alterações de status. Em `SLACK_KEY` coloque o **Bot User OAuth Access Token** salvo anteriormente.
6. Para verificar o status das linhas execute `php /caminho/do/projeto/run.php`.
7. Para receber automaticamente as mudanças de status coloque o comando num cron. Exemplo:

```
* * * * * php /caminho/do/projeto/run.php >> /caminho/do/log/run.log 2>&1
```

Configurações de ambiente
-------------------------

[](#configurações-de-ambiente)

No arquivo `.env` (ou nas flags `--env` ou `-e` do docker) é onde são armazaneadas as configurações e existem possibilidades de personalização no comportamento da aplicação.

### NOTIFY\_LEVEL

[](#notify_level)

A configuração `NOTIFY_LEVEL` deve conter um número inteiro válido e representa o menor nível de criticidade que a aplicação notificará.

Os níveis existentes são:

```
Nível 0: Mudanças já esperadas, como o encerramento das operações as 0h e o início das operações.
Nível 1: Mudanças positivas, como a normalização da operação após um período de lentidão.
Nível 2: Mudanças alarmantes, como a operação da linha estar com lentidão.
Nível 3: Mudanças perigosas, como a paralização da operação em uma linha.

```

- Exemplo:

Se desejar receber notificações em todos os níveis deverá configurar para `NOTIFY_LEVEL=0`. Se não quiser receber notificações de mudanças já esperadas trocar para `NOTIFY_LEVEL=1`. Se quiser receber apenas notificações de paralização `NOTIFY_LEVEL=3`.

### NOTIFY\_DAYS

[](#notify_days)

A configuração `NOTIFY_DAYS` diz os dias que deverão ser enviadas notificações. Deve conter os dias que as notificações serão enviadas separados por vírgula.

Os valores são:

```
all: Enviar Notificações todos os dias
0: Domingo
1: Segunda-feira
2: Terça-feira
3: Quarta-feira
4: Quinta-feira
5: Sexta-feira
6: Sábado

```

- Exemplo: Para receber notificações todos os dias use `NOTIFY_DAYS=all`. Para receber notificações somente em dias da semana use `NOTIFY_DAYS=1,2,3,4,5`.

### NOTIFY\_LINES

[](#notify_lines)

A configuração `NOTIFY_LINES` diz as linhas dos trens/metrô que deverão ser monitoradas. Deve conter o numero das linhas separados por vírgula.

Os valores são:

```
all: Enviar Notificações para todas as linhas
1: Linha 1 Azul do Metrô
2: Linha 2 Verde do Metrô
3: Linha 3 Vermelha do Metrô
4: Linha 4 Amarela do Metrô
5: Linha 5 Lilás do Metrô
6: Linha 6 Laranja do Metrô
7: Linha 7 Rubi da CPTM
8: Linha 8 Diamante da CPTM
9: Linha 9 Esmeralda da CPTM
10: Linha 10 Turquesa da CPTM
11: Linha 11 Coral da CPTM
12: Linha 12 Safira da CPTM
13: Linha 13 Jade da CPTM
15: Linha 15 Prata da CPTM
17: Linha 17 Ouro da CPTM

```

- Exemplo: Para receber notificações de todas as linhas `NOTIFY_LINES=all`. Para receber notificações somente da linha azul e amarela use `NOTIFY_LINES=1,4`.

Debugando
---------

[](#debugando)

### Se você fez tudo acima corretamente e não está recebendo notificações em seu canal do slack:

[](#se-você-fez-tudo-acima-corretamente-e-não-está-recebendo-notificações-em-seu-canal-do-slack)

- Verifique se o composer foi executado corretamente
- Verifique a saída do php nos logs do cron (Ou execute o comando redirecionando a saída para um arquivo).
- Verifique os logs do projeto no arquivo `/caminho/do/projeto/Storage/Logs/app.log`
- Verifique se o usuário rodando o php está no grupo de permissões correto
- Verifique se o arquivo *.env* tem permissão de leitura
- Verifique se a pasta *Storage* tem permissão de escrita

Todo
----

[](#todo)

- Aumentar o Coverage de Testes Unitários
- Refactor para suportar mais provedores além da CPTM.
- Adicionar suporte a IFTTT Trigger.

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance54

Moderate activity, may be stable

Popularity8

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 97.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~28 days

Recently: every ~49 days

Total

11

Last Release

2425d ago

PHP version history (2 changes)0.1PHP &gt;=7.0

0.6.1PHP &gt;=7.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/3a9bb5384975b87cebcef2b7642e2b5b3b79d0a3be614fdcbbe008f5b6ca3c08?d=identicon)[edmur](/maintainers/edmur)

---

Top Contributors

[![rumd3x](https://avatars.githubusercontent.com/u/12579932?v=4)](https://github.com/rumd3x "rumd3x (89 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/rumd3x-cptm-alerts/health.svg)

```
[![Health](https://phpackages.com/badges/rumd3x-cptm-alerts/health.svg)](https://phpackages.com/packages/rumd3x-cptm-alerts)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.6k509.9M17.0k](/packages/laravel-framework)[google/cloud-core

Google Cloud PHP shared dependency, providing functionality useful to all components.

343121.4M79](/packages/google-cloud-core)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)[flarum/core

Delightfully simple forum software.

211.3M1.9k](/packages/flarum-core)[ashallendesign/favicon-fetcher

A Laravel package for fetching website's favicons.

190272.4k3](/packages/ashallendesign-favicon-fetcher)[blair2004/nexopos

The Free Modern Point Of Sale System build with Laravel, TailwindCSS and Vue.js.

1.2k2.3k](/packages/blair2004-nexopos)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
