rpi_n
Posts: 2
Joined: Fri Jun 29, 2018 1:08 pm

gpiozero 2 button alert

Fri Jun 29, 2018 1:21 pm

Доброе время суток. Нашел этот совершенно потрясающий API gpiozero и прямо все стало гораздо легче. Но не до конца( Хочу сделать типа сигнализацию. На двери кнопка, у меня переключатель. Если я переключателем снял дверь с охраны - можно спокойно её открывать(и запишется в БД время снятия с охраны), если не снял - при открытии двери кнопка разомкнётся и запустит скрипт(опять же запись в БД о не санкционированном доступе). Если я закрыл дверь и включил переключателем сигнализацию - в БД запишется время постановки на охрану. С одной кнопкой вроде всё просто, но я-то должен иметь возможность открыть дверь. Пока получилось вот так, но это не работает(

Code: Select all

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import subprocess
from gpiozero import LED, Button
from signal import pause

button = Button(17)
alarm = Button(22)

def press():
    if alarm.value:
        subprocess.call(["/home/pi/mysql-add.sh"])
        print 'Key pressed.'
    else:
        print("1")
def unpress():
    if not alarm.value:
        print ("2")
    else:
        print("3")

button.when_pressed = press
button.when_released = unpress

pause()
Тут я только один скрипт запускаю, но принцип понятен. Подскажите, как доделать

peppy.player
Posts: 114
Joined: Mon Mar 07, 2016 6:10 am

Re: gpiozero 2 button alert

Sat Jun 30, 2018 3:23 pm

Предложу вам удочку, а рыбу вы уж сами...

Назовём переключатель тумблером,. Устройств у вас два с двумя состояниями поэтому будет четыре комбинации:

1. Тумблер замыкается - проверить состояние кнопки. Если кнопка замкнута сделать запись, если нет ничего не делать.
2. Тумблер размыкается - если сирена включена выключить, сделать запись.
3. Кнопка замыкается - проверить тумблер. Если тумблер замкнут сделать запись, если нет ничего не делать.
4. Кнопка размыкается - проверить тумблер. Если тумблер замкнут сделать запись и включить сирену, если нет ничего не делать.

Удачи.

rpi_n
Posts: 2
Joined: Fri Jun 29, 2018 1:08 pm

Re: gpiozero 2 button alert

Wed Sep 12, 2018 11:08 am

raspberry_122.zip
(6.25 KiB) Downloaded 63 times
В общем отпишусь, может кому будет интересно.
http://mediaunix.com/knopka-raspberry-pi-v-db-mysql/ Тут всё очень подробно расписано про установку ОС, её обновление, установку LAMP. Конкретно эта ссылка - создание БД для записи нажатия и других событий в БД.
Теперь от меня. Кнопка на дверь (физическая) висит на 17 пину. Кнопка виртуальная (так пришлось сделать.), висит на 21 пину.
Сначала LAMP, создаем по ссылке БД, пароли и пользователя. Затем подключаем физическую кнопку(я в этом всём не силен, сделал + 2 резистора, на том же сайте mediaunix есть описание) и начинаем распаковывать архив. Кроме index.php, который должен лежать в папке вэб сервера всё остальное лежит в /home/pi/alert/
Добавляем в крон: crontab -e
# m h dom mon dow command
@reboot bash /home/pi/alert/boot.sh
@reboot python /home/pi/alert/alert.py &
0 8 * * * python /home/pi/alert/send_mail.py
30 17 * * * python /home/pi/alert/evening.py
boot.sh ставит после включения сигнализацию в положение включено.
alert.py висит демоном и запускает скрипты при санкционированном и нет открытии двери под охраной.
send_mail.py присылает по утрам состояние охраняемой двери и состоянии сигнализации. Умеет utf-8, умеет в html, но в связи с тем, что почтовый сервер у нас в локалке- нет никакой авторизации, даже plain-text.
evening.py пришлёт письмо вечером, если мне пришлось открыть дверь, но обратно сигналку я забыл поставить.
Также в архиве
index.php отображает последние 20 событий сигналки, её текущее состояние, 2 кнопки на вкл и выкл сигналки.
alarm.sh при поставленной сигналке и проникновении в помещение- пишет в БД и гасит один комп.
alarm_off.sh при снятии с сигналки - пишит в БД
alarm_on.sh пишет в БД при постановке на сигнализацию.
off.sh, on.sh срабатывают соответственно включают и выключают сигнализацию при нажатии виртуальной кнопке на странице index.php
Я не программист, не жалезнячник, что-то такое делаю первый раз в жизни, поэтому за код особенно не ругайте. А если кто мой index.php подправит, добавив туда красивый слайдер для вкл/выкл сигналки как на смартфонах, да еще сюда выложит- заранее спасибо.
Ну и совсем уж косяки по скриптам озвучивайте.

Return to “Русский”