[PYTHON] Rasppie? Qu'est-ce que c'est? Niveau de matériel Des étudiants inexpérimentés ont créé un système pour savoir s'il y a des gens au bureau

introduction

Bonjour. Je travaille actuellement en tant que stagiaire dans une entreprise informatique tout en travaillant en tant qu'étudiant universitaire à Nagoya.

Je suis une telle personne, mais lorsque je passe mon temps, je veux venir travailler des jours autres que le jour de travail par défaut. Après avoir pris une conférence à l'université, je vais travailler. Un tel jour, je viens travailler vers 18h00 et travailler jusqu'à ce qu'il n'y ait plus d'employés (le bureau ferme). Oui, lors de mon stage, l'employé a la clé du bureau, et s'il y a un employé, le bureau est vacant même les jours fériés.

Un jour

L'université s'est terminée vers 19h00 et j'ai décidé de me rendre au bureau. J'étais convaincu qu'il y aurait quelqu'un. Quand j'arrive au bureau ...

** Fermé uuuuuuuuuuuuuuuuuuuuuuuuu **

Ce jour-là, tous les employés étaient de retour.

J'étais en difficulté ... (je ne peux pas dire aux employés de rester jusqu'à tard, et je suis désolé de leur faire savoir quand le dernier employé a quitté l'entreprise ...)

Sujet principal

C'est pourquoi j'ai décidé de créer un système pour savoir s'il y a des gens au bureau. Alors, quand je me demandais quoi faire, j'ai découvert que je pouvais utiliser «Raspberry Pi» et «Arduino». En installant un «capteur d'éclairage» sur eux et en détectant l'éclairement dans le bureau, il peut être possible de savoir s'il y a ou non des personnes. J'ai pensé.

Je ne sais rien du matériel. Je veux le comprendre complètement.

De manière embarrassante, j'ignorais vraiment «Raspberry Pi» et «Arduino», alors j'ai fait beaucoup de recherches. Une de mes connaissances venait d'un collège technique qui est familier avec le matériel (GANGAN), donc je l'ai même écouté sur Twitter DM.

(Comme ça / approuvé pour publication) スクリーンショット 2019-12-31 12.38.32.png (Le blog de GANGAN est ici)

Et ...

[Raspberry Pi Zero WH](https://www.switch-science.com/catalog/3646/?gclid=CjwKCAiA3abwBRBqEiwAKwICA5CCJgfeovCYDEK3oXFVhl9hso62JA-3iYHto7KCAiA3abwBRBqEiwAKwICA5CCJgfeovCYDEK3oXFVhl9hso62JA-3iYHto7KK-bbIUvlGdCP_gWWA Il a été décidé d'utiliser trade-one.co.jp/product/module/adrszlx/). (Facteur décisif: bon marché)

J'ai acheté les deux articles ci-dessus en ligne. Je suis allé à Akihabara (Osu) à Nagoya pour acheter le câble de conversion.

(Comme ça) スクリーンショット 2019-12-31 13.12.51.png スクリーンショット 2019-12-31 13.12.43.png スクリーンショット 2019-12-31 13.12.33.png

(J'ai oublié de prendre une photo, mais j'ai également acheté 4 Go de stockage.)

Environnement

Je veux connecter la tarte aux râpes à l'écran et au clavier et le comprendre complètement. Dans cet esprit, j'ai fait des essais et des erreurs en me référant à divers sites.

Et enfin ... スクリーンショット 2019-12-31 13.16.26.png

** Kita! !! !! Super hey hey hey hey! !! !! ** **

Rasppie est maintenant un ordinateur! !!

référence: Jusqu'à ce que le système d'exploitation soit installé sur Raspberry Pi Zero WH et démarré Présentation du système d'exploitation Raspbian à Raspberry Pi Zero WH


De plus, comme ce serait ennuyeux si je le connectais plusieurs fois à l'écran ou au clavier, j'ai fait ssh remote access. Désormais, j'ai décidé de me connecter à Raspeye depuis mon PC.

référence: Connexion à distance à Raspberry Pi

la mise en oeuvre

architecture

Je veux détecter l'éclairement et m'informer de la valeur d'une manière ou d'une autre. J'ai pensé à utiliser «LINE API» ou «SLACK API».

Par conséquent, c'est devenu une telle architecture. スクリーンショット 2019-12-31 13.32.21.png

C'est simple.

Détecter l'éclairement

Le [Zero One Series] que j'ai acheté cette fois (https://bit-trade-one.co.jp/product/module/zeroone01top/) est très pratique et le [Sample Code](https: /) pour détecter l'éclairement. /github.com/bit-trade-one/RasPi-Zero-One-Series) a été publié.

Reportez-vous à l'exemple de code ci-dessus,

python


#!/usr/bin/env python3
# coding: utf-8

import smbus

bus = smbus.SMBus(1)
bus.write_byte_data(0x13, 0x80, 0xFF)
bus.write_byte_data(0x13, 0x82, 0x00)
bus.write_byte_data(0x13, 0x84, 0x9D)
data = bus.read_i2c_block_data(0x13, 0x85, 4)

luminance = data[0] * 256 + data[1]
proximity = data[2] * 256 + data[3]

Ensuite, la luminance pourrait être détectée.

Approximativement

Lorsque la lumière est allumée, luminance: 3000 Lorsque la lumière est éteinte, luminance: 5

C'était comme ça. De plus, afin d'éviter les fausses détections dues au soleil, nous avons installé une tarte à la râpe dans un endroit non exposé au soleil.

Fonctionne avec slack

Créez un nouveau canal et envisagez un mécanisme dans lequel le Bot envoie l'éclairement sous forme de message. J'ai obtenu l'URL du webhook en me référant à here. Il ne vous reste plus qu'à faire une demande de publication dans le format spécifié.

Programme terminé

Les vacances sont après 10 heures En semaine, nous enverrons un message à slack après 17h00.

#!/usr/bin/env python3
# coding: utf-8

import smbus
import time
import requests, json
import datetime
import jpholiday
WEB_HOOK_URL = "****"
message = u'defalut'

bus = smbus.SMBus(1)
bus.write_byte_data(0x13, 0x80, 0xFF)
bus.write_byte_data(0x13, 0x82, 0x00)
bus.write_byte_data(0x13, 0x84, 0x9D)
time.sleep(0.8)
data = bus.read_i2c_block_data(0x13, 0x85, 4)

luminance = data[0] * 256 + data[1]
proximity = data[2] * 256 + data[3]


today = datetime.date.today()
today_str = str(today).replace('-', '')
current_hour = datetime.datetime.now().hour

def isBizDay(DATE):
 Date = datetime.date(int(DATE[0:4]), int(DATE[4:6]), int(DATE[6:8]))
 if Date.weekday() >= 5 or jpholiday.is_holiday(Date):
  return 0
 else:		
  return 1

def sendMessage():
 if luminance >= 800:
  message = u'Il y a des gens au bureau maintenant! Rentrons tôt à la maison!'	
 else:
  message = u'Actuellement, il n'y a personne au bureau.'

 requests.post(WEB_HOOK_URL, data = json.dumps({
 'text': u'L'éclairement est'+str(luminance)+u'est!'+message,  #Contenu de la notification
 'username': u'Bakira-Tech-Python-Bot',  #Nom d'utilisateur
 'icon_emoji': u':smile_cat:',  #icône
 'link_names': 1,  #Noms de lien
 }))


if isBizDay(today_str) == 1:
 print("C'est un jour de semaine")		
 if current_hour > 17:
  sendMessage()
else: 	
 print("vacances")		
 if current_hour > 10:
  sendMessage()

J'ai pu envoyer un message comme celui-ci ↓.

スクリーンショット 2019-12-31 20.02.26.png

Exécution périodique du programme

Donnez l'autorisation de lecture au fichier python et implémentez une exécution régulière à partir de la commande crontab.

Je l'ai configuré pour exécuter le fichier python correspondant une fois toutes les 30 minutes.

*/30 * * * * /home/pi/luminance.py

référence: Cloner Python sur Raspberry Pi3B. Exécutez régulièrement des programmes sur Raspberry Pi

en conclusion

Avec ça, je n'ai jamais été vacant même si je suis allé au bureau !! C'était une tarte râpe? Qu'est-ce que c'est? Niveau, mais je suis très heureux de pouvoir l'implémenter d'une manière ou d'une autre. Quand c'était fini, c'était possible avec seulement une implémentation très simple. Ce serait formidable si nous pouvions résoudre des problèmes plus familiers en utilisant Razpie, pas seulement cette fois. C'est pratique !! La meilleure tarte aux râpes !!

Si vous êtes une entreprise, pourquoi ne pas l'introduire à cette époque où une réforme du style de travail s'impose? Lol

c'est tout.


référence: Mesurez la température, l'humidité et la pression avec le Raspberry Pi Zero Que faire si vous obtenez une erreur "Impossible de résoudre l'hôte" dans curl

Recommended Posts

Rasppie? Qu'est-ce que c'est? Niveau de matériel Des étudiants inexpérimentés ont créé un système pour savoir s'il y a des gens au bureau
Comment faire un Raspberry Pi qui parle les tweets d'un utilisateur spécifié
Notez ce que vous voulez faire à l'avenir avec Razpai
Y a-t-il un secret dans la fréquence des nombres de rapport de circonférence?
Créez un bot qui publie sur Slack le nombre de personnes positives pour le nouveau virus corona à Tokyo
Comment comparer si le contenu des objets dans scipy.sparse.csr_matrix est le même
J'ai créé un script pour vérifier si l'anglais est entré dans la position spécifiée du fichier JSON en Python.
J'ai créé un système avec Raspberry Pi qui mesure périodiquement l'indice d'inconfort de la pièce et envoie une notification LINE s'il s'agit d'une valeur dangereuse
Créez un BOT qui affiche le nombre de personnes infectées dans le nouveau Corona