Ich bin der Typ, der das Mittagessen ins Büro bringt, aber es ist ein Schmerz, sich zu waschen. Der Prozess, nach Hause zu gehen und die Brotdose zu waschen, ist sehr schmerzhaft. Deshalb möchte ich es in der Spüle der Firma waschen. Es gibt jedoch einige Leute in der Firma, die genauso denken und tagsüber oder in der Spüle auf eine freie Stelle warten müssen. Dies kann ein Ärger sein, und es gab eine Geschichte, die ich möchte, dass Sie benachrichtigt werden, sobald sie verfügbar ist. Und ich denke, das ist selten üblich, aber ich habe gehört, dass ein nicht verwendeter Himbeer-PI (im Folgenden als "Himbeer-PI" bezeichnet) in der Firma eingestellt wurde und ich dachte: "Ich glaube, ich kann Sie benachrichtigen, wenn es eine Person mit diesem gibt?" Dies ist der Hintergrund.
Es benachrichtigt Sie, wenn sich für einen bestimmten Zeitraum Personen in der Spüle befinden, und wenn sich für einen bestimmten Zeitraum keine Personen in der Spüle befinden, werden Sie darüber informiert, dass Sie fort sind. Verwenden Sie Slack als Benachrichtigungsziel.
Ich brauche einen Sensor und ein Überbrückungskabel, aber ich habe alles im Marutsu Akihabara Main Store. Razz Pie selbst wird ebenfalls verkauft.
Oder ich denke, dass es auch eine selbstgemachte Version wie eine Plastikversion gibt.
Folgen Sie dem Link unten, um den menschlichen Sensor und den Raspelkuchen zu verbinden und das Programm zu kopieren und auszuführen. [Raspberry Pi] Verwendung und Verwendung des selbst hergestellten menschlichen Sensors \ -CHASUKE \ .com
Wenn es ohne Probleme funktioniert, ist die Verbindung in Ordnung.
Der menschliche Sensor erkennt einen Menschen und reagiert sofort, sodass er Sie benachrichtigt, wenn eine Person vorbeikommt. Also werde ich Sie benachrichtigen, wenn ich für einen bestimmten Zeitraum bleibe. Darüber hinaus wurde in vielen Fällen festgestellt, dass es keine Person gab, auch wenn es eine Person gab. Wenn also N Sekunden lang keine Person anwesend war, wird beurteilt, dass die Spüle benutzt wurde. Das ist der folgende Code.
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' : '{Eingehende Webhook-URL}',
'botname' : 'Wer hat die Augen?',
'icon' : ':eyes',
'start_using': 'Es sind Leute in der Spüle.',
'finished' : 'Es scheint, dass Sie es nicht mehr verwenden.'
}
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('Ende:Ctrl+C')
while True:
if GPIO.input(GPIO_PIN) == GPIO.HIGH:
detect_cnt += 1
#Protokoll zur Funktionsprüfung
logger.info('detect\tdetect_cnt:{}'.format(str(detect_cnt)))
if detect_cnt <= 2: # HACK:Eigentlich ist es einfacher einzustellen, wenn Sie auch hier angeben können
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('Im Prozess der Kündigung...')
finally:
GPIO.cleanup()
logger.info('GPIO-Reinigung abgeschlossen')
if __name__ == '__main__':
sleeptime = 10
interval = 3
retry = 10
#Zur Parametereinstellung
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 in die Raspeltorte und machen Sie Folgendes: Sie müssen pip nur zum ersten Mal installieren.
$ pip3 install requests
$ nohup python3 sink_observer.py &
Da es "nohup" und "&" ist, funktioniert es auch dann weiter, wenn die SSH-Verbindung getrennt wird. Wenn Sie beenden möchten, können Sie die Prozessnummer mit ps aux | grep sink_observer.py
nachschlagen und mit kill {process number}
beenden.
Ich dachte, es sei nackt, also verarbeitete ich die Plastikbox, die den Raspeltorte enthielt. Ich zeichnete eine geeignete Markierung an der Stelle, an der das GPIO- / USB- / Netzteil- / LAN-Kabel geführt wurde, bohrte ein Loch mit einem Schraubstock und schnitt dann die Kante mit einem Designmesser ab. Die Schachtel, die ich dieses Mal verarbeitete, bestand aus Kunststoff auf Polypropylenbasis und brach, als ich sie seitlich trug. Daher war es wichtig, ein Loch mit einem Schraubstock zu machen. Machen Sie danach an einer geeigneten Stelle im Gehäuse ein Loch, führen Sie einen Draht durch und befestigen Sie den menschlichen Sensor. Fertig. Es stellte sich heraus, dass es so etwas war. Das Notizpapier steht im Vordergrund, da der menschliche Sensor einen Betrachtungswinkel von 100 ° hat, der das Sichtfeld einschränkt, um Fehlalarme zu vermeiden (eine vollständige Notfallmaßnahme).
Ich habe folgendes gemacht, weil es ein falsches Positiv zu schlecht macht.
Infolgedessen sank die Falsch-Positiv-Rate stark.
Es ist nur eine Hypothese. Aus der Schlussfolgerung geht hervor, dass der Sensor auf sichtbares Licht reagiert hat. Der spezifische Inhalt von False Positives
Es war das. Das Merkmal des Sensors ist ein Infrarotsensor, der ein Holzkohleelement verwendet. Das Kohleelement selbst kann in einer groben Interpretation Infrarotstrahlen und Licht (sichtbares Licht) erfassen. Die Theorie besagt, dass der menschliche Körper Infrarotstrahlen aussendet, sodass er als menschlicher Sensor verwendet werden kann. Es erfasst jedoch nicht nur Infrarotstrahlen, sondern reagiert auch auf ** sichtbares Licht, dh das Licht, das wir sehen **. Raspeye und Wi-Fi-Dongle emittierten deutlich sichtbares Licht. Wenn Sie dies erkennen, würde dies zu einem falsch positiven Ergebnis führen. Die vorgenommenen Verbesserungen wurden mit dem Ziel vorgenommen, den Sensor von dem vom Raspeltorte und vom Wi-Fi-Dongle emittierten Licht fernzuhalten und den Betrachtungswinkel des Sensors von 100 ° zu begrenzen, um ihm Richtwirkung zu verleihen. ist. Ich habe eine großformatige mit Plastikbrettern und Plastikstäbchen gemacht, aber wenn ich das gleiche kann, denke ich, ist es nicht notwendig, es so weit zu machen. Dies eliminiert Fehlalarme, die durch mehrere Personen verursacht werden, die vor dem Waschbecken vorbeikommen, und Fehlalarme, die durch das Erkennen von Raspeltorten- / Wi-Fi-Dongle-Licht in der Nacht verursacht werden. Danach scheint die Falsch-Positiv-Rate weniger als 1% zu betragen.
~~ Es wird fälschlicherweise erkannt. Es gibt ein Waschbecken an einem belebten Ort, also kann man nicht anders ... Es funktioniert jedoch ordnungsgemäß. Wenn Sie also einen Algorithmus entwickeln oder die Parameter anpassen, befindet er sich auf einem praktischen Niveau. Jetzt müssen Sie nicht mehr warten, bis es fließt, oder zu Ihrem Platz zurückkehren, weil Sie es benutzen ... Ich hoffe!
Recommended Posts