[PYTHON] Verbesserter menschlicher Sensor mit Raspberry Pi

Einführung

Das letzte Mal gepostet hat einen praktischen Sensor fertiggestellt, und nachdem ich ihn eine Weile betrieben hatte, kamen einige Punkte heraus, die ich verbessern wollte.

  1. Das Popup ist nicht gut
  2. Ich möchte gleichzeitig mit dem Popup-Display einen Ton erzeugen

Was 1. betrifft, habe ich von Anfang an darüber nachgedacht, und das Standard-Windows-Popup sieht sowieso hässlich aus, deshalb wollte ich es modisch und modern aussehen lassen.

In Bezug auf 2. wird das Popup nicht angezeigt, wenn ein Spiel im Vollbildmodus gespielt wird. Daher habe ich es schlecht erlebt, es sei denn, ich habe es mit Ton bemerkt.

In 3. habe ich mehrere PCs in meinem Zimmer, daher wollte ich beide PCs verwenden können.

Popup-Verbesserung

Nach Rücksprache mit einem Bekannten finde ich Knurren gut. Ich habe einen Vorschlag bekommen Es kann unter Windows verwendet werden, es kann einfach über die Befehlszeile bedient werden, es sieht modern und cool aus und es erzeugt auch Sound, also habe ich mich für die Verwendung entschieden. Ich habe es geschafft, aus einer Batch-Datei unter Bezugnahme auf diese Site auszuführen.

Knurreneinstellung

Installieren Sie zuerst Knurren für Windows und führen Sie es durch den Pfad. (Ich habe es nach Abschluss bemerkt, aber ich habe das Gefühl, dass ich den Pfad nicht übergeben muss, wenn ich den vollständigen Pfad in die Batch-Datei schreibe.) Stellen Sie danach das Passwort, das Erscheinungsbild und den Sound auf dem Knurr-Einstellungsbildschirm ein und schließen Sie ab (Da es sich um [diese Site] handelt (http://qiita.com/rohinomiya/items/5e485d6700eac256af9f), wird es weggelassen.)

Erstellung von Batchdateien

Erstellen Sie eine Batch-Datei zum Popup

popup.bat


growlnotify.exe /t:"Emergency!" /s:False /pass:"password"Bitte speichern

Wenn Sie / s: True festlegen, wird das Popup nur ausgeblendet, wenn Sie darauf klicken. Es ist jedoch problematisch, wenn es kontinuierlich angezeigt wird. Daher setze ich es auf False

Als ich dies ausführte, wurde ein Popup angezeigt, aber als ich die Batchdatei ausführte, wurde die Eingabeaufforderung für einen Moment angezeigt. Nach vielen Recherchen scheint die Methode zum Aufrufen einer Batch-Datei von vbs der Königsweg zu sein (ich weiß es nicht wirklich). Also habe ich es nicht verstanden, aber ich habe vbs erstellt

popup.vbs


Dim oShell
Dim path

Set oShell = WScript.CreateObject ("WSCript.shell")

path = oShell.CurrentDirectory
path = path & "\PopUp.bat"

oShell.run path,0

Set oShell = Nothing

Es funktioniert wie gewünscht, also habe ich beschlossen, diese vbs aus einem Skript auszuführen.

Skriptänderung

Der Teil, der das zuletzt erstellte Popup anzeigt

python


def popup(): #Senden Sie eine Nachricht auf dem Windows-Bildschirm
  user32 = windll.user32
  user32.MessageBoxA( 0, "Enemy Will Come Here!!", "Caution!!", 0x00000030)

Ändern Sie wie unten

def growl(): #Führen Sie vbs aus, um Knurren zu zeigen
  path = os.path.abspath(os.path.dirname(__file__))
  filename = "popup.vbs"
  path = os.path.join(path,filename)
  os.system(path) h

Insgesamt wurde es so

sencer_server.py


from __future__ import print_function
import socket
import time
import os

from contextlib import closing
from ctypes import *


def main():
  while True:
    print('listen,start')
    recv()
    time.sleep(1)

def recv():
  host = '192.168.1.xx'
  port = 8080
  backlog = 10
  bufsize = 4096
  socket.timeout(1)
  
  sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  try:
    with closing(sock):
      sock.bind((host, port))
      sock.listen(backlog)
      conn, address = sock.accept() 
      msg = conn.recv(bufsize) 
      if (msg == 'raspberry'):
        print('recieve')
        growl()
        
  except socket.timeout:
    print('connect,timeout')
  except socket.error:
    print('connect,error')

def growl():
  path = os.path.abspath(os.path.dirname(__file__))
  filename = "popup.vbs"
  path = os.path.join(path,filename)
  os.system(path)
  
if __name__ == '__main__':
  main()

Abgeschlossen Ich konnte das modische Pop-up erkennen, das ich suchte

Unterstützt mehrere Clients

Ich habe verschiedene Methoden untersucht und Kandidaten aufgelistet

  1. Wechseln Sie von TCP zu UDP und senden Sie es
  2. Machen Sie das Getriebeteil mit mehreren Gewinden
  3. Mach es gut in der Cloud

Es scheint einfach zu sein, 1. zu senden, und ich musste nicht jede IP-Adresse in die Quelle schreiben, also habe ich es versucht, aber es hat nicht funktioniert und ich war frustriert. Ich bin frustriert und möchte mich rächen, sobald ich jemanden frage

In Bezug auf 3. dauert es einige Zeit, die allgemeinen Spezifikationen zu überprüfen, die Cloud auszuwählen und einen Vertrag abzuschließen, sodass sie reserviert ist

Ich zögere, aber in 2. habe ich beschlossen, mich vorerst damit zu befassen

Also habe ich Folgendes geändert

sencer_cliant.py


from __future__ import print_function
import socket
import time

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.IN)

from contextlib import closing
import threading

def main():
  print('start,waiting')
  while True:
    inputValue = GPIO.input(25)
    host = ['192.168.1.xx','192.168.1.yy']
    if (inputValue == True):
      print('inputTrue')
      for ip in host:
        thread = threading.Thread(target=send, args=(ip,))
        thread.start()
      time.sleep(5)

def send(host):
  port = 8080
  bufsize = 4096
  
  sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  sock.settimeout(1)
  
  with closing(sock):
    try:
      sock.connect((host, port))
      sock.send('raspberry')
      print(host + ' send')
    except socket.timeout:
      print(host + ' socketTimeout')
    except socket.error:
      print(host + ' socketError')
  return

if __name__ == '__main__':
  main()

Abgeschlossen

Impressionen

Die praktische Unzufriedenheit in meiner Umgebung ist fast beseitigt, und ich lebe ein angenehmes Leben in meinem Zimmer. Ich habe gerade ein seltsames Spielzeug mit einem unreinen Motiv gemacht, aber als ich Python zum ersten Mal berührte, stieg die Spannung und ich war ziemlich darin versunken. Ich möchte versuchen, während der Winterferien zu trüben Da es sich fast um eine Kopie handelt, kann der Inhalt der Quelle schrecklich sein. Ich kann ihn nur erhalten, wenn ich ihn mache, während ich ihn ein wenig genauer untersuche. Deshalb möchte ich mich nach und nach widmen.

Wenn Sie Anregungen oder Anleitungen haben, zögern Sie bitte nicht, uns zu kontaktieren.

Recommended Posts

Verbesserter menschlicher Sensor mit Raspberry Pi
Verwenden Sie einen PIR-Bewegungssensor mit Himbeer-Pi
[Für Anfänger] Ich habe mit Raspberry Pi einen menschlichen Sensor erstellt und LINE benachrichtigt!
GPGPU mit Raspberry Pi
DigitalSignage mit Raspberry Pi
Aktieninvestitionsanalyse-App mit Himbeerkuchen gemacht
Mutter pflanzt mit Raspberry Pi
Verwendung des digitalen Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi
Überprüfen Sie! Erhalten Sie Sensordaten über Bluetooth mit Raspberry Pi ~ Preparation
Ich habe einen Ressourcenmonitor für Raspberry Pi mit einer Tabelle erstellt
Ich habe zum ersten Mal eine Überwachungskamera mit Raspberry PI gemacht.
[Raspberry Pi] Schrittmotorsteuerung mit Raspberry Pi
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Servomotorsteuerung mit Raspberry Pi
Serielle Kommunikation mit Raspberry Pi + PySerial
Betriebssystem-Setup mit Raspberry Pi Imager
Probieren Sie L Chika mit Himbeerpi
Aufbau eines VPN-Servers mit Raspberry Pie
Erkennt Personen mit dem menschlichen Sensormodul
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Verwenden einer Webkamera mit Raspberry Pi
Ich habe mit Razpai einen Webserver erstellt, um Anime zu schauen
Protokollieren Sie die Omron-Umgebungssensorwerte regelmäßig mit Raspberry Pi
Haustierüberwachung mit Rekognition und Raspberry pi
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Versuchen Sie, mit Raspberry Pi nach Wakasagi zu fischen
Normal programmieren mit Node-RED-Programmierung mit Raspberry Pi 3
Verwenden Sie den Grove-Sensor mit Raspberry Pi
Versuchen Sie die Objekterkennung mit Raspberry Pi 4 + Coral
Den Servomotor SG-90 mit Himbeer-Pi betreiben
Arbeiten mit Sensoren in Mathematica auf Raspberry Pi
Machen Sie einen Waschtrocknungs-Timer mit Raspberry Pi
Infer Custom Vision Modell mit Raspeye
Bedienen Sie das Oszilloskop mit dem Raspberry Pi
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
Protokollieren des Werts von Inkbird IBS-TH1 mit Raspberry Pi
Arbeiten mit GPS in Python für Raspberry Pi 3
Ein Memo zur einfachen Verwendung des Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi 2
[Elektronische Arbeit] Ich habe mit Raspberry Pi einen Suica Touch-Sounddetektor hergestellt
Hinweis: Ich möchte die Heimautomation mit Home Assistant + Raspberry Pi + Sensor Nr. 1 durchführen
Erfassen Sie den Sensorwert von Grove Pi + mit Raspberry Pi und speichern Sie ihn in Kintone
Protokollierung der Omron-Umgebungssensorwerte mit Raspberry Pi (USB-Typ)
Discord Bot Himbeere Pi Null mit Python [Hinweis]
Medienprogrammierung mit Raspeye (Vorbereitung für Audio)
Ich habe die Beleuchtungsstärke des Raumes mit Raspberry Pi, Arduino und einem optischen Sensor getwittert
Ich habe L-Chika mit Razpai 4 (Python Edition) ausprobiert.
Genießen Sie die elektronische Arbeit mit GPIO von Raspberry Pi
MQTT Radicon Car mit Arduino und Himbeere
Schalten Sie Ihren PC mit Himbeer-Pi ein / aus
CSV-Ausgabe von Impulsdaten mit Raspberry Pi (CSV-Ausgabe)
Beobachten Sie die Futago-Meteorgruppe mit Raspberry Pi4
Grove - Temperatur- und Feuchtigkeitssensor (DHT11) mit Raspberry Pi
Holen Sie sich CPU-Informationen von Raspberry Pi mit Python
Himbeere + am2302 Temperatur und Luftfeuchtigkeit mit Temperatur- und Feuchtigkeitssensor messen
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Protokollieren des Werts von Inkbird IBS-TH1 mini mit Raspberry Pi