[PYTHON] Protokollieren Sie die Omron-Umgebungssensorwerte regelmäßig mit Raspberry Pi

Was ist ein Umgebungssensor?

Zu den Umgebungssensoren von Omron gehören Temperatur, Luftfeuchtigkeit, Beleuchtungsstärke, Druck, Lärm usw. Ein Gerät, das mehrere Sensoren miteinander kombiniert Die für Sensorhersteller typischen Funktionen mit vollem Funktionsumfang sind attraktiv! オムロン環境センサ.png (Links: BAG Typ 2JCIE-BL01, rechts: USB Typ 2JCIE-BU01)

In diesem Artikel erhalten wir den Wert des Umgebungssensors von RaspberryPi. Ich habe es in eine Google-Tabelle hochgeladen.

Probieren Sie es aus, von der Erkennung bis zur Protokollierung ** Können die Funktionen bis zu diesem Punkt nur mit kostengünstigen Allzweckgeräten realisiert werden? ** ** ** Ich bin überrascht. (Stattdessen gibt es viele süchtig machende Punkte, bei denen ich das Gefühl habe, mein Herz zu brechen, aber lol)

Dinge notwendig

** ・ RaspberryPi ** (diesmal wird Pi3 Modell B verwendet) ** - Python-Ausführungsumgebung ** (Dieses Mal verwendet pyenv Python 3.7.6) ** ・ Google-Konto ** (erforderlich, um Tabellenkalkulationen zu verwenden) ** ・ Smartphone ** (für BLE-Scanner-Einstellung) ** ・ Omron-Umgebungssensor (BAG-Typ) ** * Für den USB-Typ wird ein separater Artikel erstellt.

Verfahren

** ① Überprüfen Sie die Bluetooth-Verbindung zwischen dem Raspberry Pi und dem Sensor ** ** ② Ändern Sie den Umgebungssensormodus auf Broadcaster ** ** ③ Ermitteln Sie mit Python den Messwert des Umgebungssensors ** ** ④ Drücken Sie die GAS-API von Python, um Daten in die Tabelle zu schreiben ** ** ⑤ Regelmäßige Ausführung des Skripts **

Grundsätzlich ist Raspberry Pi der Ausgangspunkt (zentral) der Verarbeitung.

Methode

① Überprüfen Sie die Bluetooth-Verbindung zwischen Raspberry pi und dem Sensor

Bestätigung der Erkennung des Umgebungssensors

** ・ Überprüfen Sie die Funktion des Umgebungssensors ** Legen Sie den Akku ein und prüfen Sie, ob die Lampe für einen Moment aufleuchtet.

** - Nach Bluetooth-Geräten suchen ** Führen Sie den folgenden Befehl auf Raspberry Pi aus

sudo hcitool lescan
LE Scan ...
DD:CC:BB:AA:77:66 Env

Wenn der Name "Env" angezeigt wird, ist dies die MAC-Adresse des Umgebungssensors. Wenn es nicht herauskommt, überprüfen Sie den Batteriekontakt und die Bluetooth-Aktivierung von Raspberry Pi.

Anerkennungsbestätigung mit bluepy

bluepy ist eine Bibliothek für den Zugriff auf Bluetooth Low Energy (BLE) in Python (Klassendefinition).

Überprüfen Sie hier, ob Bluepy den Umgebungssensor erkennen kann.

** - Installation der erforderlichen Pakete ** Installieren Sie Folgendes

sudo apt install libglib2.0-dev

** ・ Installation von Bluepy **

Installieren Sie mit pip mit dem folgenden Befehl

pip install bluepy

** ・ Bluepy Autorität erteilen ** Sie müssen bluepy Sudo die Berechtigung zum Scannen erteilen.

Gehen Sie zu dem Ordner, in dem bluepy installiert ist, und

cd ~.pyenv/versions/3.7.6/lib/python3.7/site-packages/bluepy

Erteilen Sie Sudo die Erlaubnis, mit dem folgenden Befehl zu helfen

sudo setcap 'cap_net_raw,cap_net_admin+eip' bluepy-helper

** - Erstellen eines Scan-Codes ** Erstellen Sie den folgenden Code

ble_scan.py


from bluepy import btle

class ScanDelegate(btle.DefaultDelegate):
    def __init__(self): #Konstrukteur
        btle.DefaultDelegate.__init__(self)

    def handleDiscovery(self, dev, isNewDev, isNewData):  #Scan-Handler
        if isNewDev:  #Wenn ein neues Gerät gefunden wird
            print('found dev (%s)' % dev.addr)

scanner = btle.Scanner().withDelegate(ScanDelegate())
while True:
    scanner.scan(10.0) 

Der obige Code funktioniert, Was wichtig ist, ist ** Scannerklasse ** ** DefaultDelegate-Klasse ** ** ScanEntry-Klasse ** ist.

Im obigen Code ** - Scanner.scan-Methode: ** Legen Sie das Argument (im obigen Fall 10 Sekunden) als Timeout-Wert fest und führen Sie den von der Scanner.withDelegate-Methode angegebenen Delegaten aus. ** - DefaultDelegate-Klasse: ** Vererbungsklasse zum Erstellen eines Delegaten für das Argument von Scanner.withDelegate. Beschreiben der spezifischen Verarbeitung in der handleDiscovery-Methode ** - ScanEntry-Klasse: ** Enthält Geräteinformationen, die von Scanner.scan erfasst wurden. Das Argument "dev" von handleDiscovery ist äquivalent Verwenden von,

** "Legen Sie 10 Sekunden als Timeout-Wert fest und zeigen Sie weiterhin die Mac-Adresse des neu gefundenen Geräts an" **.

** ・ Ausführung des Scan-Codes **

python ble_scan.py

Wie unten gezeigt, ist es erfolgreich, wenn dieselbe MAC-Adresse wie in LE Scan ausgegeben wird. (Beachten Sie, dass die MAC-Adresse niedriger ist)

found dev (dd:cc:bb:aa:77:66)

Mit dem oben Gesagten haben wir die Erkennung von Umgebungssensoren in Bluepy bestätigt.

② Ändern Sie den Modus des Umgebungssensors in Broadcaster

Wie in [diesem Artikel] beschrieben (https://pages.switch-science.com/letsiot/blegw_rpi/), Zur Datenübertragung (Werbung) von BLE-Geräten ** ・ Verbindungsmodus: ** Daten durch bidirektionale Kommunikation erfassen ** - Sender: ** Einseitige Datenübertragung vom Gerät zur Zentrale Es gibt zwei Arten, ** Der Sender ist hinsichtlich des Stromverbrauchs vorteilhaft **. (Umgekehrt ermöglicht der Verbindungsmodus komplizierten Vorgängen, die Geräteeinstellungen zu ändern.)

Erhöhung der Betriebszeit des batteriebetriebenen Umgebungssensors Wechseln Sie zu Broadcaster und fahren Sie mit den folgenden Vorgängen fort

Installieren Sie den BLE-Scanner

Ein Tool namens BLE Scannear zum Ändern des Modus Bitte installieren Sie Folgendes auf Ihrem Smartphone Android iOS

Ändern Sie die Werbeeinstellungen des Umgebungssensors

Ändern Sie die Werbeeinstellungen und stellen Sie den Modus auf Broadcaster ein. Sie können hier auch das Übertragungsintervall für Werbung ändern (für Anwendungen, die Geschwindigkeit erfordern).

** - Öffnen Sie den BLE-Scanner und stellen Sie eine Verbindung zum Gerät mit der Bezeichnung "Env" her. ** Screenshot_20200504-214958.png

** ・ "0C4C3042 ~" ist die Werbeeinstellung, suchen Sie danach ** Screenshot_20200504-215138.png Screenshot_20200504-214713.png

** ・ Lesen der Werbeeinstellungen in (2) oben ** Wenn Sie das Omron Official User's Manual lesen, sieht es wie in der folgenden Abbildung aus. 環境センサADVSetting.png ** ・ Wenn Sie in den Broadcast-Modus wechseln möchten: Stellen Sie den Beacon-Modus auf 02 oder 04 ** ** ・ Wenn Sie das Aktualisierungsintervall verkürzen möchten: Reduzieren Sie das Übertragungsintervall für Werbung ** Es ist notwendig zu ändern.

Der Beacon-Modus fragt sich, ob es 02 oder 04 ist. Dieses Mal konzentrieren wir uns auf den Umweltindex Before:0808A0000A003200 08 00 After:0808A0000A003200 04 00 Wird besorgt. (Wenn Sie einen Beschleunigungssensor verwenden, stellen Sie ihn auf 02 ein.)

** ・ Werbeeinstellungen ändern ** Klicken Sie in der obigen Abbildung auf ③ "W", ändern Sie es wie in der folgenden Abbildung gezeigt und drücken Sie OK. Screenshot_20200504-233253.png

** ・ Bestätigung der Änderung ** Wenn Sie nach oben zurückkehren und der Gerätename in "EP" geändert wird, sind Sie erfolgreich. Screenshot_20200504-233429.png

Verkürzen Sie das Aktualisierungsintervall des Umgebungssensors

Das Standardaktualisierungsintervall für Sensorwerte beträgt 300 Sekunden (5 Minuten). Dies ist zu lang! Ich denke, dass es viele Leute gibt, also werde ich es kurz ändern.

** ・ "0C4C3011 ~" ist die Einstellung für das Aktualisierungsintervall. Suchen Sie danach ** Stellen Sie nach dem vorherigen Vorgang eine Verbindung zum BLE-Scanner "EP" und her Suchen Sie nach "0C4C3011 ~" Screenshot_20200504-234845.png Screenshot_20200504-234917.png

** ・ Lesen der Aktualisierungsintervalleinstellung in (2) oben ** Dies ist das Aktualisierungsintervall in Sekunden, das in hexadezimal konvertiert wird. Da es sich jedoch um eine Weinerspezifikation für Anfänger handelt, werden das obere und das untere Byte umgekehrt ** Achtung. Geben Sie diesmal "0A00" ein, um das Intervall auf 10 Sekunden zu ändern (siehe Abbildung unten). 環境センサ更新間隔Setting.png

** ・ Bestätigung der Änderung des Aktualisierungsintervalls ** Wenn Sie "R" drücken und der Inhalt von Hex aktualisiert wird, ist dies erfolgreich. Screenshot_20200504-235058.png

Wenn Sie im oberen Bildschirmbereich auf "RAW DATA" klicken, werden die Messwerte des Sensors angezeigt. Screenshot_20200504-234654.png

Die Spezifikationen der gemessenen Werte sind in der folgenden Abbildung dargestellt. ADVセンサ値仕様_EP.png

③ Ermitteln Sie mit Python den Messwert des Umgebungssensors

Da festgestellt wurde, dass der gemessene Wert des Sensors in (2) erhalten werden kann, Erhöhen Sie die Vielseitigkeit der Verarbeitung mit Python.

Erstellen Sie eine Klasse zum Erfassen von Sensormesswerten

Erstellen Sie eine Klasse, um Sensormessungen mit bluepy zu erhalten. Wie bei ① und Zeit, da die Verarbeitung zum Zeitpunkt des Scannens als Delegat übergeben wird Erstellen Sie Code wie den folgenden.

Der erfasste Sensormesswert wird als Diktat für jeden Sensortyp in der Variablen "sensorValue" gespeichert.

omron_env_broadcast.py


from bluepy import btle
import time
import struct

class ScanDelegate(btle.DefaultDelegate):
    #Konstrukteur
    def __init__(self):
        btle.DefaultDelegate.__init__(self)
        #Variablen zum Speichern von Sensordaten
        self.sensorValue = None

    #Scan-Handler
    def handleDiscovery(self, dev, isNewDev, isNewData):  
        #Wenn ein neues Gerät gefunden wird
        if isNewDev or isNewData:  
            #Werbedaten extrahieren
            for (adtype, desc, value) in dev.getScanData():  
                #Führen Sie den Datenabruf beim Umgebungssensor durch
                if desc == 'Manufacturer' and value[0:4] == 'd502':
                    #Nehmen Sie den Sensortyp (EP oder IM) heraus.
                    sensorType = dev.scanData[dev.SHORT_LOCAL_NAME].decode(encoding='utf-8')
                    #Extraktion von Sensordaten während der EP
                    if sensorType == 'EP':
                        self.decodeSensorData_EP(value)
                    #Extraktion von Sensordaten während der IM
                    if sensorType == 'IM':
                        self.decodeSensorData_IM(value)

    #Sensordaten extrahieren und in das Diktatformat konvertieren (im EP-Modus)
    def decodeSensorData_EP(self, valueStr):
        #Sensordaten aus der Zeichenfolge(6. und nachfolgende Zeichen)Nur herausnehmen und in Binär konvertieren
        valueBinary = bytes.fromhex(valueStr[6:])
        #Konvertieren Sie binäre Sensordaten in ganzzahliges Taple
        (temp, humid, light, uv, press, noise, discomf, wbgt, rfu, batt) = struct.unpack('<hhhhhhhhhB', valueBinary)
        #Nach Einheitenumrechnung im Diktattyp speichern
        self.sensorValue = {
            'SensorType': 'EP',
            'Temperature': temp / 100,
            'Humidity': humid / 100,
            'Light': light,
            'UV': uv / 100,
            'Pressure': press / 10,
            'Noise': noise / 100,
            'Discomfort': discomf / 100,
            'WBGT': wbgt / 100,
            'BatteryVoltage': (batt + 100) / 100
        }
    
    #Extrahieren Sie Sensordaten und konvertieren Sie sie in das Diktatformat (im IM-Modus).
    def decodeSensorData_IM(self, valueStr):
        #Sensordaten aus der Zeichenfolge(6. und nachfolgende Zeichen)Nur herausnehmen und in Binär konvertieren
        valueBinary = bytes.fromhex(valueStr[6:])
        #Konvertieren Sie binäre Sensordaten in ganzzahliges Taple
        (temp, humid, light, uv, press, noise, accelX, accelY, accelZ, batt) = struct.unpack('<hhhhhhhhhB', valueBinary)
        #Nach Einheitenumrechnung im Diktattyp speichern
        self.sensorValue = {
            'SensorType': 'IM',
            'Temperature': temp / 100,
            'Humidity': humid / 100,
            'Light': light,
            'UV': uv / 100,
            'Pressure': press / 10,
            'Noise': noise / 100,
            'AccelerationX': accelX / 10,
            'AccelerationY': accelY / 10,
            'AccelerationZ': accelZ / 10,
            'BatteryVoltage': (batt + 100) / 100
        }

Im folgenden Teil wird der Sensormesswert aus den Werbedaten erfasst.
                #Führen Sie den Datenabruf beim Umgebungssensor durch
                if desc == 'Manufacturer' and value[0:4] == 'd502':
                    #Nehmen Sie den Sensortyp (EP oder IM) heraus.
                    sensorType = dev.scanData[dev.SHORT_LOCAL_NAME].decode(encoding='utf-8')
                    #Extraktion von Sensordaten während der EP
                    if sensorType == 'EP':
                        self.decodeSensorData_EP(value)
                    #Extraktion von Sensordaten während der IM
                    if sensorType == 'IM':
                        self.decodeSensorData_IM(value)

Der obige Prozess wurde basierend auf dem Folgenden erstellt. ・ Der Umgebungssensor kann durch "desc = 'Hersteller' & Wert 0-4. Zeichen is'd502 '" identifiziert werden. -Der Sensormodus und die gemessenen Werte werden in der in der folgenden [Referenz] gezeigten Form gehalten.

** [Referenz] Ergebnisse des Debuggens von Werbedaten im BroadCast-Modus mit VS-Code ** bluepy取得Broadcastアドバタイズデータ.png

Hauptcode erstellen

Erstellen Sie den Hauptcode, um die oben genannte Sensorwerterfassungsklasse auszuführen. Stellen Sie die Sensorwerterfassungsklasse im Delegaten des Scanners wie in (2) ein und legen Sie sie fest. Scannen und ausführen.

omron_env_toSpreadSheet.py


from bluepy import btle
from omron_env_broadcast import ScanDelegate

#omron_env_broadcast.Stellen Sie den Delegierten für die Sensorwerterfassung von py so ein, dass er zur Scan-Zeit ausgeführt wird
scanner = btle.Scanner().withDelegate(ScanDelegate())
#Scannen, um den Sensorwert zu erhalten (Zeitüberschreitung 5 Sekunden)
scanner.scan(5.0)
#Zeigen Sie die Temperatur als Test an
print(scanner.delegate.sensorValue['Temperature'])

#Beschreiben Sie den Vorgang des Hochladens in eine Google-Tabelle in ④

Versuchen Sie, von der Konsole aus zu laufen

python omron_env_toSpreadSheet.py
25.98

Sie haben jetzt Sensormessungen in Python erhalten. Der erfasste Messwert wird in scanner.delegate.sensorValue gespeichert.

④ Drücken Sie die GAS-API von Python, um Daten in die Tabelle zu schreiben

Geben Sie die erfassten Daten in eine Google-Tabelle aus.

** * Die meisten Leute möchten andere als Tabellenkalkulationen ausgeben, also ** ** In diesem Fall überspringen Sie dieses Kapitel und gehen Sie zu ⑤ ** (Es gibt viele Optionen wie CSV-Ausgabe mit Pandas und Visualisierung mit Ambient)

Erstellen Sie ein GAS-Skript

Führen Sie diese Arbeit auf Ihrem PC aus.

Gehen Sie zu Google Spreadsheets und gehen Sie zu Erstellen Sie eine Tabelle wie die folgende Beachten Sie, dass ** der Blattname mit dem Gerätenamen identisch sein sollte ** SpreadSheet.png

Wählen Sie "Extras" -> "Skripteditor" Erstellen Sie ein GAS-Skript wie das folgende

postSensorData.gs


var spreadsheetId = '******'//← Geben Sie die Tabellenkalkulations-ID ein

//Erhalten Sie die gebuchten Daten
function doPost(e){
  var data = [      
    e.parameter.Date_Master, //Master Datum und Uhrzeit
    e.parameter.Date, //Messdatum und -zeit
    e.parameter.Temperature, //Temperatur
    e.parameter.Humidity, //Feuchtigkeit
    e.parameter.Light, //Erleuchtung
    e.parameter.UV, // UV    
    e.parameter.Pressure, //Druck
    e.parameter.Noise, //Lärm
    e.parameter.BatteryVoltage, //Batteriespannung
    new Date(), //Endzeit hochladen
  ];
  //Beschreiben Sie die erfassten Daten im Protokoll
  Logger.log(new Date());
  //Schreiben Sie eine Datenzeile in eine Tabelle
  addData(e.parameter.DeviceName, data);
  return ContentService.createTextOutput("ok");
}

//Schreiben Sie eine Datenzeile in eine Tabelle
function addData(sheetName, data){
  var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
  sheet.appendRow(data);
}

** * Anscheinend muss der Funktionsname "doPost" sein, um über die API posten zu können **

https://docs.google.com/spreadsheets/d/AAAAAAA/edit

Wenn ja, entspricht der Teil "AAAAAAA"

Veröffentlichen Sie das Skript als Web-API

"Veröffentlichen" → "Als Webanwendung eingeführt" webアプリ公開.png

Der folgende Bildschirm wird angezeigt ・ Projektversion → Version, die Sie in API konvertieren möchten (Wählen Sie zunächst "Neu" und es ist OK) ・ Führen Sie die App als → Me (self) aus ・ Wer hat Zugriff auf die App → Jeder, auch anonym (alle (einschließlich anonymer Benutzer)) Zum Aktualisieren auswählen (Bereitstellen) GASのAPI公開.png

Bei Erfolg wird der folgende Bildschirm angezeigt. Notieren Sie sich die API-URL, da Sie sie später verwenden werden. API_URL.png

Externer API-Ausführungstest

** * Von hier aus wird die Arbeit auf der Raspberry Pi Seite erledigt ** Drücken Sie die API mit Curl, um die entsprechenden Daten zu senden und zu testen, ob POST von außen durchgeführt werden kann. Führen Sie den folgenden Befehl aus (installieren Sie curl, wenn er nicht enthalten ist).

curl -L [API-URL] -F 'sheetName=[Blattname]' -F "Date_Master=4.1" -F "Date=4.2" -F "SensorType=4.2" -F "Temperature=4.4" -F "Humidity=4.4" -F "Light=4.1" -F "UV=4.2" -F "Pressure=4.4" -F "Noise=4.4" -F "BatteryVoltage=4.4" -F "DeviceName=[Blattname]"

Erfolg, wenn die Werte in die Tabelle eingegeben werden spreadsheet_post_test.png

Installationsanfragen

Installieren Sie die Requests-Bibliothek, um POST auf der Python-Seite auszuführen

pip install requests

Upload-Prozess zum Python-Code hinzugefügt

In dem in "③" erstellten Code "omron_env_toSpreadSheet.py" Fügen Sie einen Prozess zum Hochladen von Daten hinzu, indem Sie auf die API des GAS-Skripts klicken.

omron_env_toSpreadSheet.py


from bluepy import btle
from omron_env_broadcast import ScanDelegate
from datetime import datetime, timedelta
import requests

#Holen Sie sich die aktuelle Zeit
date = datetime.today()
#Runden Sie die aktuelle Zeit in Minuten
masterDate = date.replace(second=0, microsecond=0)
if date.second >= 30:
    masterDate += timedelta(minutes=1)

#omron_env_broadcast.Stellen Sie den Delegierten für die Sensorwerterfassung von py so ein, dass er zur Scan-Zeit ausgeführt wird
scanner = btle.Scanner().withDelegate(ScanDelegate())
#Scannen, um den Sensorwert zu erhalten
scanner.scan(5.0)

######Prozess des Hochladens in eine Google-Tabelle######
#Nur hochladen, wenn der Sensorwert nicht None ist
if scanner.delegate.sensorValue is not None:
    #Gerätename
    deviceName = '****'#← Machen Sie den gleichen Namen wie den Blattnamen der Tabelle
    #Daten an POST
    data = {
        'DeviceName': deviceName,
        'Date_Master': str(masterDate),
        'Date': str(date),
        'SensorType': str(scanner.delegate.sensorValue['SensorType']),
        'Temperature': str(scanner.delegate.sensorValue['Temperature']),
        'Humidity': str(scanner.delegate.sensorValue['Humidity']),
        'Light': str(scanner.delegate.sensorValue['Light']),
        'UV': str(scanner.delegate.sensorValue['UV']),
        'Pressure': str(scanner.delegate.sensorValue['Pressure']),
        'Noise': str(scanner.delegate.sensorValue['Noise']),
        'BatteryVoltage': str(scanner.delegate.sensorValue['BatteryVoltage'])
    }
    #API-URL
    url = 'https://script.google.com/macros/s/******/exec'#← Geben Sie die API-URL ein
    #POST-Daten an API
    response = requests.post(url, data=data)

Führen Sie das Python-Skript aus, um den Upload zu überprüfen

Führen Sie das obige Python-Skript mit dem folgenden Befehl aus

python omron_env_toSpreadSheet.py

Wie in der folgenden Abbildung gezeigt, ist der Sensorwert erfolgreich, wenn er in die Tabelle eingegeben wird. sensor_spreadsheet.png

⑤ Regelmäßige Ausführung des Skripts

Mit der obigen Methode ist es schwierig, das Skript jedes Mal auszuführen Automatisieren Sie mit dem periodischen Paket "cron". Es sieht aus wie ein Windows-Taskplaner.

Cron aktivieren

Es ist möglicherweise standardmäßig deaktiviert. Aktivieren Sie es daher unter hier.

** ・ Checkpoint 1: Überprüfen Sie die rsyslog.conf ** Es wird nicht funktionieren, wenn "cron" in /etc/rsyslog.conf auskommentiert ist. In meinem Fall wurde es wie folgt auskommentiert

###############
#### RULES ####
###############

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
daemon.*                        -/var/log/daemon.log

Nach dem Kommentieren wie unten,

cron.*                         /var/log/cron.log

Starten Sie rsyslog mit dem folgenden Befehl neu.

sudo /etc/init.d/rsyslog restart

** ・ Prüfpunkt 2: Protokollstufe ändern ** Geben Sie in / etc / default / cron die Elemente an, die im Protokoll beschrieben werden sollen, wenn cron ausgeführt wird. Standardmäßig scheint das Protokoll nicht wie unten gezeigt ausgegeben zu werden

# For quick reference, the currently available log levels are:
#   0   no logging (errors are logged regardless)
#   1   log start of jobs
#   2   log end of jobs
#   4   log jobs with exit status != 0
#   8   log the process identifier of child process (in all logs)
#
#EXTRA_OPTS=""

Kommentieren Sie EXTRA_OPTS wie unten gezeigt aus

EXTRA_OPTS='-L 15'

Wird besorgt. Dies bedeutet, dass alle Ausgaben 1 + 2 + 4 + 8 = 15 sind.

Starten Sie cron mit dem folgenden Befehl neu.

sudo /etc/init.d/cron restart

Es ist erfolgreich, wenn cron.log in / var / log generiert wird. (Bitte überprüfen Sie hier, ob Sie den Ausführungsverlauf von cron sehen möchten.)

Planen Sie die Ausführung mit cron

Registrieren Sie die regelmäßige Ausführung bei cron

** - crontab bearbeiten ** Öffnen Sie crontab mit dem folgenden Befehl

crontab -e

Wenn Sie gefragt werden, welcher Editor geöffnet werden soll, wählen Sie den gewünschten aus (Nano für Anfänger empfohlen).

# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
: Verschiedene Dinge gehen weiter

Es gibt verschiedene Kommentare wie oben geschrieben, Beschreiben Sie ganz am Ende das Timing und den Befehl, den Sie ausführen möchten. Das Timing-Format ist [hier](http://tech.junkpot.net/archives/721/crontab-%E3%81%A7%E7%B4%B0%E3%81%8B%E3%81%84%E3 % 82% B9% E3% 82% B1% E3% 82% B8% E3% 83% A5% E3% 83% BC% E3% 83% AB% E3% 81% AE% E8% A8% AD% E5% AE Bitte beziehen Sie sich auf% 9A.html)

Dieses Mal werden die folgenden Inhalte beschrieben, da sie alle 5 Minuten ausgeführt werden.

*/5 * * * * [Python voller Pfad] [omron_env_toSpreadSheet.voller Weg von py] >/dev/null 2>&1

** ・ Cron starten ** Starten Sie cron mit dem folgenden Befehl

sudo /etc/init.d/cron start

Warten Sie eine Weile oben und wenn die Tabelle alle 5 Minuten aktualisiert wird, sind Sie fertig!

abschließend

Erhöhen Sie die Anzahl der Sensoren und verwirklichen Sie Ihr Traum-IoT-Haus! ** Es sieht so aus, als ob du es schaffen kannst. Die Sensoren von Omron sind multifunktional und von hoher Qualität, aber nicht billig genug, um Pompons zu kaufen. Ich werde noch einen günstigeren Sensor ausprobieren!

Recommended Posts

Protokollieren Sie die Omron-Umgebungssensorwerte regelmäßig mit Raspberry Pi
Protokollierung der Omron-Umgebungssensorwerte mit Raspberry Pi (USB-Typ)
Umschalten der Bot-Thermo-Hygrometer-Werte mit Raspberry Pi
Nehmen Sie den Wert des SwitchBot-Thermo-Hygrometers mit Raspberry Pi
Verwendung des digitalen Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi
Ich habe die Beleuchtungsstärke des Raumes mit Raspberry Pi, Arduino und einem optischen Sensor getwittert
Benachrichtigen Sie regelmäßig den Verarbeitungsstatus von Raspberry Pi mit Python → Google Spreadsheet → LINE
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Verwenden Sie den Grove-Sensor mit Raspberry Pi
Verbesserter menschlicher Sensor mit Raspberry Pi
Verwenden Sie einen PIR-Bewegungssensor mit Himbeer-Pi
Protokollieren des Werts von Inkbird IBS-TH1 mit Raspberry Pi
Ein Memo zur einfachen Verwendung des Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi 2
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 1: Zusammenfassung der Verfügbarkeit von plattenlosen Clients nach Modell)
Hinweis: Bereiten Sie die Umgebung von CmdStanPy mit Docker vor
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Beobachten Sie die Futago-Meteorgruppe mit Raspberry Pi4
Holen Sie sich CPU-Informationen von Raspberry Pi mit Python
Messen Sie die CPU-Temperatur von Raspeye mit Python
Verwirklichen Sie ein Super-IoT-Haus, indem Sie mit Raspberry Pi Sensordaten im Haus erfassen
GPGPU mit Raspberry Pi
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
[C-Sprache] [Linux] Ruft den Wert der Umgebungsvariablen ab
Vorbereiten der Ausführungsumgebung von PyTorch mit Docker November 2019
DigitalSignage mit Raspberry Pi
Lassen Sie uns GPIO von Raspeye mit Python CGI betreiben
Ich möchte über die Verbindungsumgebung benachrichtigt werden, wenn RaspberryPi eine Verbindung zum Netzwerk herstellt
Notieren Sie sich, was Sie in Zukunft mit Razpai machen möchten
Steuern Sie die Anzeige des RGB LED Matirix Lightning Bulletin Boards mit Raspberry Pi 3B + frei
Ändern Sie den Einstellungswert von settings.py entsprechend der Entwicklungsumgebung
Vereinheitlichen Sie die Umgebung des Python-Entwicklungsteams, beginnend mit Poetry
Überprüfen Sie! Erhalten Sie Sensordaten über Bluetooth mit Raspberry Pi ~ Preparation
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (1)
Aufbau einer Cortex-M-Entwicklungsumgebung für TOPPERS mit Raspeye
Der wahre Wert der Terraform-Automatisierung ab Oracle Cloud
Ich habe die Daten von Raspberry Pi an GCP gesendet (kostenlos)
Versuchen Sie, Merkmale von Sensordaten mit CNN zu extrahieren
Mutter pflanzt mit Raspberry Pi
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 2: PiServer-Analyse und alternatives Systemdesign)
Echtzeitklassifizierung mehrerer Objekte in Kamerabildern mit tiefem Erlernen von Raspberry Pi 3 B + & PyTorch
Melden Sie sich mit ssh ohne Passwort bei Raspberry PI an (Schlüsselauthentifizierung)
Finden Sie den optimalen Wert der Funktion mit einem genetischen Algorithmus (Teil 2)
Der 14. März ist der Tag des Umfangsverhältnisses. Die Geschichte der Berechnung des Umfangsverhältnisses mit Python
Ich habe gelernt, wie die Infrarot-Fernbedienung mit Raspberry Pi funktioniert
Benachrichtigen Sie LINE über die Körpertemperatur vom BLE-Thermometer mit Raspeltorte Nr. 1
Benachrichtigen Sie LINE über die Körpertemperatur vom BLE-Thermometer mit Raspeltorte Nr. 2
Grafische Darstellung des Stromverbrauchs im Haushalt mit 3GPI und Raspeye
Lösung des Anfangswertproblems gewöhnlicher Differentialgleichungen mit JModelica
Raspberry Pi --1 - Zum ersten Mal (Schließen Sie einen Temperatursensor an, um die Temperatur anzuzeigen)
Tipps: [Python] Berechnen Sie den Durchschnittswert des angegebenen Bereichs mit Bedgraph
Ich habe ein npm-Paket erstellt, um die ID der IC-Karte mit Raspberry Pi und PaSoRi zu erhalten
Lesen Sie die Daten des NFC-Lesegeräts, das mit Python an Raspberry Pi 3 angeschlossen ist, und senden Sie sie mit OSC an openFrameworks
[Raspberry Pi] Schrittmotorsteuerung mit Raspberry Pi
Finden Sie die Definition des Wertes von errno
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Servomotorsteuerung mit Raspberry Pi
Extrahieren Sie den Maximalwert mit Pandas.