Je suis le genre de personne qui apporte le déjeuner au bureau, mais c'est pénible à laver. Le processus de rentrer à la maison et de laver la boîte à lunch est très douloureux. Par conséquent, je veux le laver dans l'évier de l'entreprise. Cependant, il y a pas mal de personnes dans l'entreprise qui pensent de la même manière, et elles doivent attendre une vacance dans la journée ou dans l'évier. Cela peut être un problème, et il y avait une histoire dont j'aimerais que vous soyez averti lorsqu'elle sera disponible. Et je pense que c'est rarement courant, mais j'ai entendu dire qu'un Raspberry PI inutilisé (ci-après dénommé Raspberry PI) a été déposé dans l'entreprise et j'ai pensé: "S'il y a une personne avec ça, je pense que je peux vous en informer?" Tel est le contexte.
Il vous avertit lorsqu'il y a des personnes dans l'évier pendant un certain temps et lorsqu'il n'y a personne pendant un certain temps, il vous informe que vous êtes parti. Utilisez Slack comme destination de notification.
J'ai besoin d'un capteur et d'un fil de liaison, mais j'ai tout dans Marutsu Akihabara Main Store. Le corps de la tarte Razz est également vendu.
Ou je pense qu'il existe aussi une version self-made telle qu'une version en plastique.
Suivez le lien ci-dessous pour connecter le capteur humain et la tarte à la râpe et copier et exécuter le programme. [Raspberry Pi] Comment utiliser et utiliser le capteur humain self-made \ -CHASUKE \ .com
Si cela fonctionne sans aucun problème, la connexion est OK.
Le capteur humain détecte un humain et réagit immédiatement, de sorte qu'il vous avertit lorsqu'une personne passe. Donc, je vous informerai lorsque je resterai pour une certaine période de temps. De plus, il y a eu de nombreux cas où il a été détecté qu'il n'y avait personne même s'il y avait une personne, donc s'il n'y a personne pendant N secondes, il est jugé que l'évier a été utilisé. C'est le code suivant.
sink_observer.py
from datetime import datetime
import RPi.GPIO as GPIO
import json
import logging
import requests
import sys
import time
GPIO_PIN = 18
SLACK_SETTINGS = {
'url' : '{URL du Webhook entrant}',
'botname' : 'qui sont les yeux',
'icon' : ':eyes',
'start_using': 'Il y a des gens dans l'évier.',
'finished' : 'Il semble que vous ayez fini de l'utiliser.'
}
is_using = False
formatter = '%(levelname)s \t%(asctime)s\t%(message)s'
logging.basicConfig(filename='sink_observer.log', level=logging.INFO, format=formatter)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
def push_to_slack(status):
datas = {
'username' : SLACK_SETTINGS['botname'],
'icon_emoji' : SLACK_SETTINGS['icon'],
'text' : SLACK_SETTINGS[status],
'contentType': 'application/json'
}
payload = json.dumps(datas)
requests.post(SLACK_SETTINGS['url'], payload)
def start_using():
global is_using
if is_using:
return
is_using = True
push_to_slack('start_using')
logger.info('start_using')
def finished():
global is_using
if not is_using:
return
is_using = False
push_to_slack('finished')
logger.info('finished')
def main(sleeptime, interval, retry):
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_PIN, GPIO.IN)
detect_cnt = 0
no_detect_cnt = 0
try:
logger.info('Fin:Ctrl+C')
while True:
if GPIO.input(GPIO_PIN) == GPIO.HIGH:
detect_cnt += 1
#Journal pour contrôle de fonctionnement
logger.info('detect\tdetect_cnt:{}'.format(str(detect_cnt)))
if detect_cnt <= 2: # HACK:En fait, il est plus facile de régler si vous pouvez également spécifier ici
time.sleep(interval)
continue
detect_cnt = 0
no_detect_cnt = 0
start_using()
time.sleep(sleeptime)
else:
no_detect_cnt += 1
logger.info('no detect\tdetect_cnt:{}'.format(str(detect_cnt)))
if no_detect_cnt <= retry:
time.sleep(interval)
continue
detect_cnt = 0
no_detect_cnt = 0
finished()
time.sleep(interval)
except KeyboardInterrupt:
logger.info('En cours de résiliation...')
finally:
GPIO.cleanup()
logger.info('Nettoyage GPIO terminé')
if __name__ == '__main__':
sleeptime = 10
interval = 3
retry = 10
#Pour le réglage des paramètres
if len(sys.argv) > 4:
sleeptime = int(sys.argv[1])
interval = int(sys.argv[2])
retry = int(sys.argv[3])
main(sleeptime, interval, retry)
SSH dans la tarte aux râpes et procédez comme suit: Il vous suffit d'installer pip pour la première fois.
$ pip3 install requests
$ nohup python3 sink_observer.py &
Puisqu'il s'agit de «nohup» et de «&», il continuera à fonctionner même si la connexion SSH est déconnectée. Si vous voulez quitter, vous pouvez rechercher le numéro de processus avec ps aux | grep sink_observer.py
et quitter avec kill {numéro de processus}
.
Je pensais que c'était nu, alors j'ai traité la boîte en plastique qui contenait la tarte aux râpes. J'ai dessiné un marqueur de manière appropriée à l'endroit où le câble GPIO / USB / alimentation / LAN était passé, j'ai fait un trou avec un étau à goupille, puis j'ai coupé le bord avec un couteau design. La boîte que j'ai traitée cette fois-ci était en plastique polypropylène, et elle se cassait lorsque je la portais sur le côté, il était donc important de faire un trou avec un étau à goupille. Après cela, faites un trou à un endroit approprié dans le boîtier, passez un fil et fixez le capteur humain, et vous avez terminé. Il s'est avéré être quelque chose comme ça. Le papier à lettres est au premier plan car le capteur humain a un angle de vision de 100 °, ce qui limite le champ de vision pour éviter les faux positifs (une mesure d'urgence complète).
J'ai fait ce qui suit car cela fait trop mal un faux positif.
En conséquence, le taux de faux positifs a fortement chuté.
C'est juste une hypothèse. La conclusion est que le capteur réagissait à la lumière visible. Le contenu spécifique des faux positifs
C'était ça. La caractéristique du capteur est un capteur infrarouge qui utilise un élément à charbon. L'élément charbon lui-même, dans une interprétation approximative, peut détecter les rayons infrarouges et la lumière (lumière visible). La théorie est que le corps humain émet des rayons infrarouges, il peut donc être utilisé comme capteur humain. Cependant, il ne détecte pas seulement les rayons infrarouges, mais réagit également à la ** lumière visible, c'est-à-dire à la lumière que nous voyons **. Raspeye et le dongle Wi-Fi émettaient clairement de la lumière visible, donc la détection de cela entraînerait un faux positif. Les améliorations apportées ont été apportées dans le but d'éloigner le capteur de la lumière émise par la tarte à la râpe et de la lumière émise par le dongle Wi-Fi, et de limiter l'angle de vision à 100 ° du capteur pour lui donner une directivité. est. J'en ai fait un à grande échelle avec des planches en plastique et des bâtons en plastique, mais si je peux faire de même, je pense qu'il n'est pas nécessaire de le faire jusqu'à présent. Cela élimine les faux positifs causés par plusieurs personnes passant devant l'évier et les faux positifs causés par la détection de la lumière du dongle Wi-Fi / Rasp Pie la nuit. Après cela, le taux de faux positifs semble être inférieur à 1%.
~~ Il sera faussement détecté. C'est inévitable car il y a un lavabo dans un endroit très fréquenté ... Cependant, il fonctionne correctement, donc si vous concevez un algorithme ou ajustez les paramètres, ce sera à un niveau pratique. Vous n'avez plus à attendre qu'il coule ou à retourner à votre place parce que vous l'utilisez ... j'espère!
Recommended Posts