Olá, pessoal.
Vamos dar sequência ao tutorial Automação de Iluminação com Raspberry Pi (Parte 1 e Parte 2).
Esse é o último post [3/3] desse tutorial, abordaremos os itens:
- Programação de acionamento de GPIO usando Python3
- Programação de página web em PHP
- Finalização
Vamos começar!
6. Programação de acionamento de GPIO usando Python3
Primeiro, acesso a RPi via SSH.
Vá até a pasta /var/www/html/
1 |
cd /var/www/html |
Eu criei uma pasta chamada GPIO.
1 |
mkdir gpio |
depois eu entrei na pasta gpio e eu criei mais 4 pastas, uma para cada GPIO que eu usei. Para melhor entendimento, uma para cada interruptor.
1 |
mkdir gpio03 |
1 |
mkdir gpio05 |
1 |
mkdir gpio08 |
1 |
mkdir gpio10 |
Dentro de cada pasta eu criei dois scripts em Python3. Um para acender e outro para apagar.
1 |
vim acender.py |
1 |
vim apagar.py |
A seguir o código para acender:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import RPi.GPIO as GPIO import time import sys import os GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) GPIO.setup(3, GPIO.OUT) rele_quarto = 3 def ligar(): GPIO.output(rele_quarto, GPIO.HIGH) if __name__ == "__main__": ligar() |
Para salvar e sair apertar a tecla “:” e depois wq. Assim “:wq”.
E o código para desligar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import RPi.GPIO as GPIO import time import sys import os GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) GPIO.setup(3, GPIO.OUT) rele_quarto = 3 def desligar(): GPIO.output(rele_quarto, GPIO.LOW) if __name__ == "__main__": desligar() |
Fazer isso em todas as pastas que criar!
Teste se está funcionando:
1 |
python3 /var/www/html/gpio/gpio05/acender.py |
1 |
python3 /var/www/html/gpio/gpio05/apagar.py |
7. Programação de página web em PHP
Entrar com o comando:
1 |
cd .. |
2 vezes. Para navegarmos até a pasta /var/www/html/
Usei na página de controle um plug-in com front-end pronto, o AdminLTE.
Basta fazer o download e descompactar os arquivos na pasta /var/www/html/.
Entrar com o comando vim para editar a página index.php:
1 |
vim index.php |
Adicionar o código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 |
<html style="height: auto; min-height: 97%;"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>CONTROLE DE LUZ HUGO</title> <!-- Tell the browser to be responsive to screen width --> <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> <!-- Bootstrap 3.3.7 --> <link rel="stylesheet" href="../../bower_components/bootstrap/dist/css/bootstrap.min.css"> <!-- Font Awesome --> <link rel="stylesheet" href="../../bower_components/font-awesome/css/font-awesome.min.css"> <!-- Ionicons --> <link rel="stylesheet" href="../../bower_components/Ionicons/css/ionicons.min.css"> <!-- daterange picker --> <link rel="stylesheet" href="../../bower_components/bootstrap-daterangepicker/daterangepicker.css"> <!-- bootstrap datepicker --> <link rel="stylesheet" href="../../bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css"> <!-- iCheck for checkboxes and rgpioio inputs --> <link rel="stylesheet" href="../../plugins/iCheck/all.css"> <!-- Bootstrap Color Picker --> <link rel="stylesheet" href="../../bower_components/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css"> <!-- Bootstrap time Picker --> <link rel="stylesheet" href="../../plugins/timepicker/bootstrap-timepicker.min.css"> <!-- Select2 --> <link rel="stylesheet" href="../../bower_components/select2/dist/css/select2.min.css"> <!-- Theme style --> <link rel="stylesheet" href="../../dist/css/AdminLTE.min.css"> <!-- AdminLTE Skins. Choose a skin from the css/skins folder instead of downloading all of them to reduce the load. --> <link rel="stylesheet" href="../../dist/css/skins/_all-skins.min.css"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file: --> <!-- [if lt IE 9] --> <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <!-- [endif]--> <!-- Google Font --> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic"> </head> <body> <div class="box"> <div class="box-header with-border"> <h3 class="box-title">CONTROLE DE ILUMINAÇÃO HUGO'S HOUSE</h3> </div> <!-- /.box-header --> <div class="box-body"> <table class="table table-bordered"> <tbody><tr> <th style="width: 10px">#</th> <th>CÔMODO</th> <th>ACENDER</th> <th style="width: 40px">APAGAR</th> </tr> <tr> <td>1.</td> <td><b>BANHEIRO</b> [GPIO 3]</td> <td> <div > <div> <form action="" method="post"> <button type="submit" class="btn btn-block btn-success btn-lg" name="acender03" value="Acender">Acender</button> </form> </div> </div> </td> <td><div><form action="" method="post"> <button type="submit" class="btn btn-block btn-success btn-lg" name="apagar03" value="Apagar">Apagar</button> </form></div></td> </tr> <tr> <td>2.</td> <td><b>QUARTO</b> [GPIO 5]</td> <td> <div><form action="" method="post"> <button type="submit" class="btn btn-block btn-success btn-lg" name="acender05" value="Acender">Acender</button> </form> </div> </td> <td><div><form action="" method="post"> <button type="submit" class="btn btn-block btn-success btn-lg" name="apagar05" value="Apagar">Apagar</button> </form></div></td> </tr> <tr> <td>3.</td> <td><b>SALA</b> [GPIO 8]</td> <td> <div><form action="" method="post"> <button type="submit" class="btn btn-block btn-success btn-lg" name="acender08" value="Acender">Acender</button> </form> </div> </td> <td><div><form action="" method="post"> <button type="submit" class="btn btn-block btn-success btn-lg" name="apagar08" value="Apagar">Apagar</button> </form></div></td> </tr> <tr> <td>4.</td> <td><b>COZINHA</b> [GPIO 10]</td> <td> <div><form action="" method="post"> <button type="submit" class="btn btn-block btn-success btn-lg" name="acender10" value="Acender">Acender</button> </form> </div> </td> <td><div><form action="" method="post"> <button type="submit" class="btn btn-block btn-success btn-lg" name="apagar10" value="Apagar">Apagar</button> </form></div></td> </tr> </tbody></table> </div> <!-- /.box-body --> <div class="box-footer clearfix"> <ul class="pagination pagination-sm no-margin pull-right"> <li><a href="#">«</a></li> <li><a href="#">1</a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> <li><a href="#">»</a></li> </ul> </div> </div> <!-- ./wrapper --> <!-- jQuery 3 --> <script src="../../bower_components/jquery/dist/jquery.min.js"></script> <!-- Bootstrap 3.7 --> <script src="../../bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <!-- Select2 --> <script src="../../bower_components/select2/dist/js/select2.full.min.js"></script> <!-- InputMask --> <script src="../../plugins/input-mask/jquery.inputmask.js"></script> <script src="../../plugins/input-mask/jquery.inputmask.date.extensions.js"></script> <script src="../../plugins/input-mask/jquery.inputmask.extensions.js"></script> <!-- date-range-cker --> <script src="../../bower_components/moment/min/moment.min.js"></script> <script src="../../bower_components/bootstrap-daterangepicker/daterangepicker.js"></script> <!-- bootstrap depicker --> <script src="../../bower_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js"></script> <!-- bootstrap cor picker --> <script src="../../bower_components/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.min.js"></script> <!-- bootstrap te picker --> <script src="../../plugins/timepicker/bootstrap-timepicker.min.js"></script> <!-- SlimScroll --> <script src="../../bower_components/jquery-slimscroll/jquery.slimscroll.min.js"></script> <!-- iCheck 1.0.--> <script src="../../plugins/iCheck/icheck.min.js"></script> <!-- FastClick --> <script src="../../bower_components/fastclick/lib/fastclick.js"></script> <!-- AdminLTE A--> <script src="../../dist/js/adminlte.min.js"></script> <!-- AdminLTE fodemo purposes --> <script src="../../dist/js/demo.js"></script> <!-- Page script --> <script> $(function () { //Initialize Select2 Elements $('.select2').select2() //Datemask dd/mm/yyyy $('#datemask').inputmask('dd/mm/yyyy', { 'placeholder': 'dd/mm/yyyy' }) //Datemask2 mm/dd/yyyy $('#datemask2').inputmask('mm/dd/yyyy', { 'placeholder': 'mm/dd/yyyy' }) //Money Euro $('[data-mask]').inputmask() //Date range picker $('#reservation').daterangepicker() //Date range picker with time picker $('#reservationtime').daterangepicker({ timePicker: true, timePickerIncrement: 30, format: 'MM/DD/YYYY h:mm A' }) //Date range as a button $('#daterange-btn').daterangepicker( { ranges : { 'Today' : [moment(), moment()], 'Yesterday' : [moment().subtract(1, 'days'), moment().subtract(1, 'days')], 'Last 7 Days' : [moment().subtract(6, 'days'), moment()], 'Last 30 Days': [moment().subtract(29, 'days'), moment()], 'This Month' : [moment().startOf('month'), moment().endOf('month')], 'Last Month' : [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] }, startDate: moment().subtract(29, 'days'), endDate : moment() }, function (start, end) { $('#daterange-btn span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')) } ) //Date picker $('#datepicker').datepicker({ autoclose: true }) //iCheck for checkbox and radio inputs $('input[type="checkbox"].minimal, input[type="radio"].minimal').iCheck({ checkboxClass: 'icheckbox_minimal-blue', radioClass : 'iradio_minimal-blue' }) //Red color scheme for iCheck $('input[type="checkbox"].minimal-red, input[type="radio"].minimal-red').iCheck({ checkboxClass: 'icheckbox_minimal-red', radioClass : 'iradio_minimal-red' }) //Flat red color scheme for iCheck $('input[type="checkbox"].flat-red, input[type="radio"].flat-red').iCheck({ checkboxClass: 'icheckbox_flat-green', radioClass : 'iradio_flat-green' }) //Colorpicker $('.my-colorpicker1').colorpicker() //color picker with addon $('.my-colorpicker2').colorpicker() //Timepicker $('.timepicker').timepicker({ showInputs: false }) }) </script> </body> </html> <?php // Funciones PHP del pin GPIO 03 //ini_set("display_errors",1); if ($_POST[acender03]) { $a = shell_exec("sudo python3 /var/www/html/gpio/gpio03/acender.py"); echo $a; } if ($_POST[apagar03]) { $a = shell_exec("sudo python3 /var/www/html/gpio/gpio03/apagar.py"); echo $a; } if ($_POST[acender05]) { $a = shell_exec("sudo python3 /var/www/html/gpio/gpio05/acender.py"); echo $a; } if ($_POST[apagar05]) { $a = shell_exec("sudo python3 /var/www/html/gpio/gpio05/apagar.py"); echo $a; } if ($_POST[acender08]) { $a = shell_exec("sudo python3 /var/www/html/gpio/gpio08/acender.py"); echo $a; } if ($_POST[apagar08]) { $a = shell_exec("sudo python3 /var/www/html/gpio/gpio08/apagar.py"); echo $a; } if ($_POST[acender10]) { $a = shell_exec("sudo python3 /var/www/html/gpio/gpio10/acender.py"); echo $a; } if ($_POST[apagar10]) { $a = shell_exec("sudo python3 /var/www/html/gpio/gpio10/apagar.py"); echo $a; } ?> |
Salve com o comando “:wq”
8. Finalização
Através de um Notebook, PC ou Smartphone acesse o link no navegador. http://seuip/index.php
Não esqueça que vc deve estar na rede Wi-Fi.
Seu Dashboard vai aparecer dessa maneira, responsivo, simples e funcional!!!
Espero que tenham gostado e que consigam executar esse projeto!
Caso tenham dúvidas, comente que eu responderei, ok?
Caso queiram que eu detalhe algum passo, basta pedir nos comentários que eu crio o post.
Abraço e até o próximo!
22 Comentários
Boa tarde segui os 3 passos, mas quando eu abro o endereço ao clicar no botão para acender não aciona o rele, a fiação esta correta, tem ideia do que eu fiz de errado ?, instalei o apache o php
Olá Lino,
Para testar se está correto a instalação elétrica e programação de hardware, use o comando:
sudo python3 /var/www/html/gpio/gpio03/acender.py
Para apagar:
sudo python3 /var/www/html/gpio/gpio03/apagar.py
Certifique que seu jumper esteja instalado no gpio03 e qual relé está configurado para esse gpio.
Para teste, sugiro rodar esses comandos para todos os pgio, pode ser que tenha colocado em algum local errado.
Se precisar, mande mais detalhes para que eu possa te ajudar.
Abraço e bom projeto.
Boa noite,
Estou com dificuldade para acionar o relé pelo navegador. Não sei se estou fazendo correto, la na código index.php, para acionar a gpio03 eu tenho que cetar o form dessa maneira. Ex:
Acender
Mas dessa forma apresenta erro na pagina: 404 Not Found.
Bom dia João,
Não entendi sua dúvida, pode detalhar mais?
O código está correto, não precisa alterar nada, apenas o caminho pra acionar o arquivo Python da sua Raspberry se vc criou as pastas e arquivos diferente do que eu fiz.
Esse código recebe a entrada do clique do botão “acender03″
Abre um terminal e executa esse comando : sudo python3 /var/www/html/gpio/gpio03/acender.py
Eu crio uma pasta gpio, depois uma para cada gpio, nesse caso o pgio03, depois eu executo o script em python acender.
Se vc entrar pelo SSH na Raspberry pi e executar o comando sua luz tem que ligar.
if ($_POST[acender03]) {
$a = shell_exec(“sudo python3 /var/www/html/gpio/gpio03/acender.py”);
echo $a;
}
Abraço joão, avise se conseguir resolver.
Boa noite,
Só alterei a gpio, que está ligada a gpio12 e o caminho da pasta do apache que é a \var\www\www. E realizai o teste executando: /var/www/www/gpio/gpio12/acender.py. O qual não apresentou nenhum erro, mas não acionou o rele.
sudo python3 /var/www/www/gpio/gpio12/acender.py
Oi João,
Tem certeza que seu caminho pro apache é /var/www/www/gpio/… ?
Faça o teste com:
sudo python3 /var/www/gpio/gpio12/acender.py
Com o script:
import RPi.GPIO as GPIO
import time
import sys
import os
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(12, GPIO.OUT)
def ligar():
GPIO.output(12, GPIO.HIGH)
if __name__ == “__main__”:
ligar()
Se realmente for, sudo python3 /var/www/www/gpio/gpio12/acender.py , vc vai precisar alterar os código da página web, porém só na parte do PHP e no botão de acionamento do html. assim:
Acender
_________________________________________________________________________________________
if ($_POST[acender12]) {
$a = shell_exec(“sudo python3 /var/www/www/html/gpio/gpio12/acender.py”);
echo $a;
}
Confirma se deu certo e avisa aqui pra gente saber se foi.
Um baraço.
Boa noite Hugo.
Tenho certeza absoluta que o caminho é: /var/www/www/gpio/gpio12/acender.py.
meu cód acender.py:
import RPi.GPIO as GPIO
import time
import sys
import os
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(12, GPIO.OUT)
rele_quarto = 12
def ligar():
GPIO.output(rele_quarto, GPIO.HIGH)
if __name__ == “__main__”:
ligar()
————————————————————————-
E o caminho do meu PHP: /var/www/www/index.php
Cód PHP:
if ($_POST[acender12]) {
$a = shell_exec(“sudo python3 /var/www/www/gpio/gpio12/acender.py”);
echo $a;
}
————————————————————————–
Estou executando o comando no terminal: sudo python3
var/www/www/gpio/gpio12/acender.py, acessando o meu raspberry via SSH. Mas o relé não é acionado. Não tenho ideia do que pode ser!
O que tem de diferente são esses os caminhos onde está o index.php, e o acender.py. E estou utilizando a GPIO 12 da minha raspberry zero pi que é o pino Nº 32 de acordo com o link: https://i.stack.imgur.com/yHddo.png
Meu amigo Hugo, mil desculpas. alterei a numeração da GPIO para 32, e acendeu. Mas não está apagando.
Cód apagar.py:
import RPi.GPIO as GPIO
import time
import sys
import os
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(32, GPIO.OUT)
rele_quarto = 32
def desligar():
GPIO.output(rele_quarto, GPIO.LOW)
if __name__ == “__main__”:
desligar()
Hugo,
Consegui realizar o teste para ligar e desligar o relé, só não está pegando com o index.php, pelo navegador!
João,
Além de alterar o PHP, vc tem que alterar o button, esse código aqui:
Acender
Alterou ele também?
Vc consegue ver a página, aperta e não vai? Ou vc não consegue abrir a página?
A pagina abre sim, mas ao executar o botão para acender, por exemplo, não faz nada.
Segue o Cód do index.php.
CONTROLE DE LUZ HUGO
CONTROLE DE ILUMINAÇÃO HUGO’S HOUSE
#
CÔMODO
ACENDER
APAGAR
1.
BANHEIRO [GPIO 32]
Acender
Apagar
2.
QUARTO [GPIO 5]
Acender
Apagar
3.
SALA [GPIO 8]
Acender
Apagar
4.
COZINHA [GPIO 10]
Acender
Apagar
«
1
2
3
»
$(function () {
//Initialize Select2 Elements
$(‘.select2′).select2()
//Datemask dd/mm/yyyy
$(‘#datemask’).inputmask(‘dd/mm/yyyy’, { ‘placeholder': ‘dd/mm/yyyy’ })
//Datemask2 mm/dd/yyyy
$(‘#datemask2′).inputmask(‘mm/dd/yyyy’, { ‘placeholder': ‘mm/dd/yyyy’ })
//Money Euro
$(‘[data-mask]’).inputmask()
//Date range picker
$(‘#reservation’).daterangepicker()
//Date range picker with time picker
$(‘#reservationtime’).daterangepicker({ timePicker: true, timePickerIncrement: 30, format: ‘MM/DD/YYYY h:mm A’ })
//Date range as a button
$(‘#daterange-btn’).daterangepicker(
{
ranges : {
‘Today’ : [moment(), moment()],
‘Yesterday’ : [moment().subtract(1, ‘days’), moment().subtract(1, ‘days’)],
‘Last 7 Days’ : [moment().subtract(6, ‘days’), moment()],
‘Last 30 Days': [moment().subtract(29, ‘days’), moment()],
‘This Month’ : [moment().startOf(‘month’), moment().endOf(‘month’)],
‘Last Month’ : [moment().subtract(1, ‘month’).startOf(‘month’), moment().subtract(1, ‘month’).endOf(‘month’)]
},
startDate: moment().subtract(29, ‘days’),
endDate : moment()
},
function (start, end) {
$(‘#daterange-btn span’).html(start.format(‘MMMM D, YYYY’) + ‘ – ‘ + end.format(‘MMMM D, YYYY’))
}
)
//Date picker
$(‘#datepicker’).datepicker({
autoclose: true
})
//iCheck for checkbox and radio inputs
$(‘input[type=”checkbox”].minimal, input[type=”radio”].minimal’).iCheck({
checkboxClass: ‘icheckbox_minimal-blue’,
radioClass : ‘iradio_minimal-blue’
})
//Red color scheme for iCheck
$(‘input[type=”checkbox”].minimal-red, input[type=”radio”].minimal-red’).iCheck({
checkboxClass: ‘icheckbox_minimal-red’,
radioClass : ‘iradio_minimal-red’
})
//Flat red color scheme for iCheck
$(‘input[type=”checkbox”].flat-red, input[type=”radio”].flat-red’).iCheck({
checkboxClass: ‘icheckbox_flat-green’,
radioClass : ‘iradio_flat-green’
})
//Colorpicker
$(‘.my-colorpicker1′).colorpicker()
//color picker with addon
$(‘.my-colorpicker2′).colorpicker()
//Timepicker
$(‘.timepicker’).timepicker({
showInputs: false
})
})
poderia me enviar um email (joao_lira@hotmail.com) para poder te passar como está o meu cód php?
Manda seu git pra @hugobaur
Conseguiu resolver João?
vc ensina de um meio muito eficaz , parabens, eu segui seu passo-a-passo mas no final nao acende clicando no botao no site
fiz os testes pelo terminal executando o script py e acende e apaga, mas pela web nao. o sera que está errado?
Felipe, muito obrigado. Se não funciona na web o código php que é o problema.
Da uma revisada. Boa sorte amigo.
eu revisei mas esse projeto é minha primeira experiencia com linux
nao sei mas oq fazer, sao 3 noites mexendo , sem resultados.
editei o painel admin e o codigo esta assim
PAINEL DE CONTROLE
PAINEL DE CONTROLE
#
CÔMODO
ACENDER
APAGAR
1.
BANHEIRO [GPIO 3]
Acender
Apagar
2.
QUARTO [GPIO 5]
Acender
Apagar
3.
SALA [GPIO 8]
Acender
Apagar
4.
COZINHA [GPIO 10]
Acender
Apagar
$(function () {
//Initialize Select2 Elements
$(‘.select2′).select2()
//Datemask dd/mm/yyyy
$(‘#datemask’).inputmask(‘dd/mm/yyyy’, { ‘placeholder': ‘dd/mm/yyyy’ })
//Datemask2 mm/dd/yyyy
$(‘#datemask2′).inputmask(‘mm/dd/yyyy’, { ‘placeholder': ‘mm/dd/yyyy’ })
//Money Euro
$(‘[data-mask]’).inputmask()
//Date range picker
$(‘#reservation’).daterangepicker()
//Date range picker with time picker
$(‘#reservationtime’).daterangepicker({ timePicker: true, timePickerIncrement: 30, format: ‘MM/DD/YYYY h:mm A’ })
//Date range as a button
$(‘#daterange-btn’).daterangepicker(
{
ranges : {
‘Today’ : [moment(), moment()],
‘Yesterday’ : [moment().subtract(1, ‘days’), moment().subtract(1, ‘days’)],
‘Last 7 Days’ : [moment().subtract(6, ‘days’), moment()],
‘Last 30 Days': [moment().subtract(29, ‘days’), moment()],
‘This Month’ : [moment().startOf(‘month’), moment().endOf(‘month’)],
‘Last Month’ : [moment().subtract(1, ‘month’).startOf(‘month’), moment().subtract(1, ‘month’).endOf(‘month’)]
},
startDate: moment().subtract(29, ‘days’),
endDate : moment()
},
function (start, end) {
$(‘#daterange-btn span’).html(start.format(‘MMMM D, YYYY’) + ‘ – ‘ + end.format(‘MMMM D, YYYY’))
}
)
//Date picker
$(‘#datepicker’).datepicker({
autoclose: true
})
//iCheck for checkbox and radio inputs
$(‘input[type=”checkbox”].minimal, input[type=”radio”].minimal’).iCheck({
checkboxClass: ‘icheckbox_minimal-blue’,
radioClass : ‘iradio_minimal-blue’
})
//Red color scheme for iCheck
$(‘input[type=”checkbox”].minimal-red, input[type=”radio”].minimal-red’).iCheck({
checkboxClass: ‘icheckbox_minimal-red’,
radioClass : ‘iradio_minimal-red’
})
//Flat red color scheme for iCheck
$(‘input[type=”checkbox”].flat-red, input[type=”radio”].flat-red’).iCheck({
checkboxClass: ‘icheckbox_flat-green’,
radioClass : ‘iradio_flat-green’
})
//Colorpicker
$(‘.my-colorpicker1′).colorpicker()
//color picker with addon
$(‘.my-colorpicker2′).colorpicker()
//Timepicker
$(‘.timepicker’).timepicker({
showInputs: false
})
})
$.widget.bridge(‘uibutton’, $.ui.button)
Felipe, não da pra entender seu código Sugiro vc copiar e colar os códigos que te garanto que vai funcionar.
Hugo ja fiz de tudo, eu acho que deve ser algo com cgi pelo menos pelo que andei pesquisando, se pudesse me ajudar, ficaria muito grato, eu comecei a gostar muito de linux, to estudando mas tudo que se sabe pelo que vi ainda é pouco.
aqui esta no github o codigo do index
https://raw.githubusercontent.com/dhymi1/index.html/master/index.html
Boa tarde!
Ao invés de colocar par carregar um arquivo .py para cada acionamento da página web, é possível que se faça por exemplo POST em um programa principal que esteja rodando o tempo todo checando as entradas??