Kürzlich habe ich etwas über RaspberryPI gelernt, daher habe ich RaspberryPI zum ersten Mal verwendet. Ich entschied mich für eine Überwachungskamera, die Bewegungen mit einer Webkamera erkennt.
Der Umriss der Funktion, die dieses Mal erstellt werden soll, ist wie folgt. ・ Nehmen Sie ein Bild auf, wenn eine Bewegung erkannt wird. (Dieses Mal werde ich nur Fotos verwenden.) ・ Nachdem Sie ein Bild aufgenommen haben, senden Sie das aufgenommene Bild automatisch an Slack. Nur das. Da es das erste Mal ist, werde ich eine einfache Sache ohne Gier machen.
・ RaspberryPI: Einfach gesagt, ein kleiner Computer ・ Bewegung: Bewegungserkennungssoftware (Mit dieser Software können Sie Bewegungen leicht erkennen.) ・ Slack: Chat-Tool (OK, wenn Sie sich Skype oder Line vorstellen)
Bereiten Sie zuerst die Bewegung vor.
Installation von Bewegung
$ sudo apt-get install -y motion
Ändern Sie als Nächstes die Einstellungen in motion.conf.
・ Ich brauche kein Video, also höre ich auf.
Dies ist vorerst das Ende der Bewegungseinstellungen.
Führen Sie zu diesem Zeitpunkt die Bewegung mit `sudo motion -c / etc / motion / motion.conf``` und aus Sie können durch Bewegungserkennung bestätigen, dass das Foto unter
`/ tmp / motion``` geschrieben ist.
Es ist einfach.
Es ist jedoch die Produktion von hier. Zum Abschluss muss ich die Fotos automatisch an Slack senden, damit ich auf meinem Handy benachrichtigt werden kann. Hier ist der Hauptteil dieses Artikels. Von nun an werden wir Slack einrichten.
Schließen Sie zuerst die Registrierung des Slack-Kontos ab. Stellen Sie dann ein Token für die API auf der [Slack Token Issuing-Seite] aus (https://api.slack.com/web, "Token Issuing Page").
Sobald Sie ein Token erstellt haben, ist es Zeit, die Python Slack-Bibliothek zu Raspberry PI hinzuzufügen. Installieren Sie Slacker </ b>.
$ sudo pip install slacker
Versuchen Sie nach der Installation zunächst interaktiv TEST.
$ python
Python 2.7.9 (default, Mar 8 2015, 00:52:26)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from slacker import Slacker
>>> token = "xxxx-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxx"
>>> slacker = Slacker(token)
>>> channel_name = "#" + "general"
>>> message = 'Es ist eine API'
>>> slacker.chat.post_message(channel_name, message)
<slacker.Response object at 0xb64aca50>
Dann bin ich gekommen! Ich konnte bestätigen, dass ich sicher bei Slack posten konnte.
Übrigens mag ich den Namen Bot nicht, deshalb habe ich den Benutzernamen in geändert.
>>> slacker.chat.post_message(channel_name, message, as_user=True)
<slacker.Response object at 0xb6bff910>
>>> slacker.chat.post_message(channel_name, message, username='test')
<slacker.Response object at 0xb64ac210>
Ich konnte bestätigen, dass es sich richtig geändert hat.
Dieses Mal werden wir hauptsächlich Bilder veröffentlichen, sodass wir die Bilder sofort hochladen. Wenn ich mich auf die README-Datei von slacker beziehe, scheint die Upload-Funktion in der Dateiklasse vorbereitet zu sein, also werde ich das verwenden.
$ python
Python 2.7.9 (default, Mar 8 2015, 00:52:26)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from slacker import Slacker
>>> token = "xxxx-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxx"
>>> slacker = Slacker(token)
>>> channel_name = "#" + "general"
>>> slacker.files.upload('/var/lib/motion/01-20151206004121-00.jpg')
<slacker.Response object at 0xb64b4e50>
Oh! Kein Fehler! Ich dachte, es ging hoch, aber Slack antwortete nicht. .. .. Ich bin ziemlich süchtig danach ^^; Wenn Sie die Slack-Seite häufig überprüfen, handelt es sich um ein Menü? An einem Ort wie diesem befindet sich ein Element namens Alle Dateien. .. ..
Als ich es öffnete, ging es richtig hoch!
Ich sehe, es wird nicht gepostet, wenn Sie es einfach hochladen. Anscheinend wird es nicht veröffentlicht, es sei denn, Sie pinnen (teilen) das Bild, das in diese Dateien hochgeladen wurde.
Zum Anheften sind die Informationen zur Zieldatei erforderlich. Speichern Sie also den Rückgabewert beim Hochladen.
>>> result = slacker.files.upload('/var/lib/motion/01-20151206004057-02.jpg')
Als ich versuchte, anhand dieser Informationen zu pinnen, trat ein Fehler auf.
>>> slacker.pins.add(channel='C0G0XXXXX', file_=result.body['file']['id'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/slacker/__init__.py", line 495, in add
'timestamp': timestamp,
File "/usr/local/lib/python2.7/dist-packages/slacker/__init__.py", line 69, in post
return self._request(requests.post, api, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/slacker/__init__.py", line 61, in _request
raise Error(response.error)
slacker.Error: file_not_shared
Dies lag daran, dass in den Dateiinformationen keine Kanäle angegeben wurden. Es scheint, dass Sie den Kanal angeben müssen, der beim Hochladen der Datei auf Pin fixiert werden kann. Überprüfen Sie den Kanal erneut.
>>> slacker.channels.list().body
{u'channels': [{u'name': u'general', u'id': u'C0G0XXXXX'....}, ....
Geben Sie als Nächstes den Kanal richtig an und führen Sie Upload und Pin durch.
>>> result = slacker.files.upload('/var/lib/motion/01-20151206004057-02.jpg', channels=['C0G0XXXXX'])
>>> slacker.pins.add(channel='C0G0XXXXX', file_=result.body['file']['id'])
<slacker.Response object at 0xb64ee6b0>
Es ist fertig! (* Der kleine quadratische Rahmen unten rechts ist übrigens der Ort, an dem die Bewegung erkannt wurde.)
Nachdem die API-Bestätigung abgeschlossen ist, werden wir endlich mit Motion arbeiten.
Wenn es als nächstes durch Bewegung erkannt wird, geben wir die Ereignisverarbeitung auf der Bewegungsseite an, um es in den Durchhang zu versetzen. In Bezug auf die Angabe verfügt Motion über die folgenden Optionen, um das zum Zeitpunkt des Ereignisses vorgesehene Skript anzugeben und auszuführen.
Übrigens, als ich nachforschte, wie man den Dateipfad angibt, Es wurde gesagt, dass Dateiinformationen als Argument an [diese Site] übergeben wurden (http://maruyosi2nd.seesaa.net/article/388238677.html "Referenz-Site").
- 1 Mit den Optionen motion.conf on_picture_save, on_movie_start, on_movie_end wird der Dateiname an den Befehl übergeben ($ 1).
Übrigens wird im Fall von on_picture_save der Pfad der Shot-Datei als Argument übergeben.
Darauf basierend habe ich ein [Python-Skript] erstellt (https://github.com/yusukeyamatani/slackbot/blob/master/slack_bot.py).
Geben wir es in conf an.
# Command to be executed when a picture (.ppm|.jpg) is saved (default: none)
# To give the filename as an argument to a command append it with %f
#; on_picture_save value
on_picture_save python /home/pi/slackbot/slack_bot.py %f
Vergessen Sie als nächstes nicht, die Ausführungsberechtigung zu erteilen.
$ chmod a+x slackbot/slack_bot.py
Jetzt beweg dich! Die Fotos werden gespeichert.
sudo motion -c /etc/motion/motion.conf
~~snip~~
[1] [NTC] [ALL] motion_detected: Motion detected - starting event 1
[1] [NTC] [EVT] event_newfile: File of type 1 saved to: /tmp/motion/01-20151208222942-04.jpg
[1] [NTC] [EVT] event_newfile: File of type 1 saved to: /tmp/motion/01-20151208222942-05.jpg
[1] [NTC] [EVT] event_newfile: File of type 1 saved to: /tmp/motion/01-20151208222943-01.jpg
~~snip~~
Apropos schlaff. .. ..
Kita━━━ (゚ ∀ ゚) .━━━ !!! Es ist ein Erfolg! !! Ich komme stetig !!!
Dann möchte ich es tatsächlich installieren und als Überwachungskamera verifizieren. Ich kaufte eine Plastikhülle für 100 Yen und benutzte sie als Hülle.
Lassen Sie es uns draußen installieren. Es ist perfekt! Niemand zweifelt daran, dass es sich um eine Überwachungskamera mit diesem Erscheinungsbild handelt. Es scheint, dass es überhaupt keinen Zweifel gibt, also scheint es als Überwachungskamera kein Problem zu geben. Lol </ b>
Genau dort gibt es eine verdächtige Figur. .. .. Dann wird Slack benachrichtigt!
Es ist perfekt! Außerdem kann ich viel besser fotografieren als ich erwartet hatte! Damit ist die Überwachungskamera fertig.
Ich berührte Raspberry PI zum ersten Mal und war überrascht, dass eine Überwachungskamera so einfach realisiert werden konnte. Übrigens hatte ich dieses Mal vor, das Infrarotkameramodul zu verwenden, aber ich konnte es nicht gut starten und ich konnte es nicht rechtzeitig schaffen. orz
Da ich jedes Mal, wenn ich fotografiere, auf Slack poste, werden Benachrichtigungen usw. ziemlich erstaunlich sein Schließlich möchte ich das Infrarotkameramodul verwenden, das Foto selbst im Cloud-Speicher speichern usw. und es mit Slack benachrichtigen.
Dann wird hamano_t morgen einen Schlagstock-Touch haben. Morgen ist endlich Weihnachten und der Adventskalender wird geschlossen. Es tut mir leid für den Anfängerbeitrag am Tag vor dem Abschluss, aber danke fürs Lesen ^^
Zu einem späteren Zeitpunkt konnte ich Videos von Haustieren von außen auf meinem Handy überwachen. Bitte beachten Sie auch dies ^^
Versuchen Sie, das Infrarotkameramodul mit Raspberry Pi zu verwenden So machen Sie Raspberry Pi von einem externen Netzwerk aus zugänglich und überwachen Haustiere von außen mit einem Mobiltelefon