前回『M5Stackを使い非常に安価なクラウド連携(kintone)タイムレコーダーを作る』では、M5Stackを使ってタイムレコーダーを作ってみましたが、今回はRaspberry PiとICカードリーダ、kintoneを使ってクラウド連携のタイムレコーダーが作れるか実験してみました。
Raspberry Piの場合、USB機器やHATを介してGROVE規格のセンサーやディスプレイ、制御装置などと連携し複雑な処理を行うことができるようになります。

20220130_170559174_iOS

Read More

M5Stackを使うと非常に安価にクラウド連携のタイムレコーダーを作成することができます。
今回は、RFIDユニットと非接触ICカードを組み合わせてカードをピッとすると打刻データがkintoneに即アップロードされる方式のタイムレコーダーを作成しました。
アップロードしたデータを使いkintone上で勤務簿作成や給与処理などの就業管理の自動化ができると思います。20220128_145421282_iOS

Read More

指定されたディレクトリ以下にある画像ファイル(JPEG形式/PNG形式)とテキストファイルをInstagramにアップロードするプログラムを作成したので公開します。

最近、Facebookクリエイタースタジオの不具合で予約投稿が行えなくなっているという事象が起きているのを知り、なにか対策ができないかと調べている中でInstagramApiSharpという.NET環境向けのInstagram APIのラッパーを見つけ、これを使った応用プログラムとして作成しました。

プログラムの起動時に設定ファイル(INIファイル)を指定することで複数のInstagramアカウントの管理を行うことができます。また、Windowsのタスクスケジューラなどと組み合わせることで、指定日時になったら自動的に投稿するといった使い方もできます。

予約投稿を行わなければならないがクリエイタースタジオが機能しない、リアルタイムで人力投稿をするのも難しいといった状況で代替手段として使える可能性があります。

※2022/01/24 15:00 Windows タスクスケジューラを使った予約投稿の設定方法を追記

※2022/01/26 03:30 PNGファイルに対応。
指定フォルダにPNGファイルを発見した場合、
自動的にJPEGファイルへ変換しアップロードするように実装。(PNGファイルをそのままアップロードすると失敗するため)

2022-01-24

Read More

前回作成した『M5Stack/ATOMとGPSユニットを使って位置情報をクラウドに保存する / M5シリーズUIFlowからKintoneに直接データをアップロードする』を応用し、M5Stack/ATOMシリーズと心拍センサユニットの組み合わせで酸素飽和度(SpO2)と心拍数を計測し、計測した情報をサイボウズ社のkintoneに直接アップロードするプログラムを作成しました。
M5Stackにプログラムを転送する際、デバイスごとにユニークなIDを設定することでkintone側では複数のM5シリーズデバイスからアップロードされた計測データを一元管理することができます。

kintone側ではデバイスからアップロードされた酸素飽和度や最終計測日時などから計測対象者の状態を把握し業務支援を行うことができるようになると考えています。

IMG_8324

Read More

M5Stack/ATOMシリーズとGPSユニットを組み合わせてGPSトラッキングをする仕組みができないか調査をしている中で、計測した位置情報をサイボウズ社のkintoneに直接アップロードするところまでできたのでソースコードを公開します。

ATOM Matrix + GPS Unit

通信ユニットとIoT回線を使いスタンドアロンでも動きGPSロガーを「M5Stack+GPSユニット+通信ユニット+IoT回線でGPSロガーを作る
で公開しました。

使い方

  • kintone上にアプリ(データベース)を作成し、外部からアクセスするためのAPIトークンを発行、および適切なアクセス権限を設定します。
    サンプルプログラムでは、「gps」というアプリを作成し、「gpstime」「latitude」「longitude」というフィールドを文字列(1行)で定義しています。

    2022-01-20 (6)

    ※APIからアップロードする際に使用するのは、kintone上の「フィールド名」(設定画面一番上の項目)ではなく「フィールドコード」(設定画面一番下の項目)である点に注意が必要です。
    今回、ここに気づくまでが一番時間がかかりました。

2022-01-20 (5)

  • kintoneのURL、APIトークン、アプリIDをソースコードの冒頭にある変数に設定します。
  • M5Burnerなどを使ってM5Stack/ATOM.シリーズのデバイスに転送します。
  • 電源を投入すると計測したデータがkintone上にアップロードされ下図のように記録されます。
    (GPSユニットから取得した生データは100倍の数値が記録されているようです)

2022-01-20 (4)

ソースコード

2022-01-20 (3)

大きな画像を表示( http://www.ria-lab.com/omiyage/gps_cybozu_20220120.png )

from m5stack import *
from m5ui import *
from uiflow import *
import wifiCfg
import time
import ntptime
import urequests
import json

import unit

gps0 = unit.get(unit.GPS, unit.PORTA)

API_URL = 'https://<YOUR_SUBDOMAIN>.cybozu.com/k/v1/record.json'
API_TOKEN = '<YOUR_TOKEN>'
APP_ID = '<YOUR_APP_ID>'
time = None
longitude = None
latitude = None
data = None

# Wi-Fi接続
wifiCfg.autoConnect(lcdShow=True)
wifiCfg.reconnect()

# Wi-Fi接続に成功するまで待機
while not (wifiCfg.wlan_sta.isconnected()):
  wait_ms(500)
  print('retry')

# NTPで時刻合わせ/タイムゾーン設定
ntp = ntptime.client(host='ntp.nict.jp', timezone=9)
gps0.set_time_zone(9)

# メインループ
while True:
  # GPSモジュールからデータを取得
  time = gps0.gps_time
  longitude = gps0.longitude
  latitude = gps0.latitude
  # 取得したデータをKintone向けの形式に整える
  data = {'app':APP_ID,'record':({'gpstime':({'value':str(time)}),'latitude':({'value':str(latitude)}),'longitude':({'value':str(longitude)})})}
  try:
    # APIトークンとJSONデータを送信
    req = urequests.request(method='POST', url=API_URL,json=json.dumps(data), headers={'X-Cybozu-API-Token':API_TOKEN,'Content-Type':'application/json'})
  except:
    print(str('error'))
  wait(10)
  wait_ms(2)

コピー機などでPDF化された紙文書からテキストデータを抽出するため、PDFからテキストを抽出するライブラリを作成しました。
Windows 10に搭載されているMicrosoft OCRを使って文字認識する』で作成した画像からテキストを抽出するプログラムの応用になります。

PDF文書をいったん画像として展開したものに対しOCRをかけているため100%正確なテキストは抽出できませんが、取り込んだ文書の画像状態がよければ高品質のテキストを抽出することができます。

※2022/02/05 『GUI対応したPDFをページごとに画像変換(PNG/BMP/JPEG/GIF/TIFF形式)するツール [WPF]』で応用アプリケーションを掲載しました。

Read More

JavaからActive Directory上の共有フォルダやファイルのアクセス制御エントリ(ACE)を取得するサンプルプログラムです。
最初はLDAP経由で取得できないか試みたのですがWindows ServerのACEは標準的なLDAPライブラリでは取得できないようなのでこの機能に対応したjCIFS NGを使って取得しています。
おまけとして単純なLDAP/Active Directory認証を行うサンプルプログラムも公開します。

スクリーンショット 2021-10-28 155434

Read More

レトロフリークは登録されているゲームの一覧をXML形式で出力することができます。
XML形式データでは少し扱いづらいのでCSV形式に変換するPythonスクリプトを作成してみました。

スクリーンショット 2021-09-19 090316

Read More

ランダムな文字列をたくさん作る必要があったので、Pythonで文字数やレコード数、文字種を指定しランダムな文字列を生成するスクリプトを作成してみました。

genrndstr

Read More

2021/08/23に公開した『M5Stackと心拍センサーを使って血中酸素飽和度と心拍数を見える化するプログラム』(いわゆるパルスオキシメーター)を改良し、計測したデータをネットワーク上のMQTTサーバを介してモニタリングできるようにしました。

このプログラムを使うと、複数台のM5Stackパルスオキシメーターを1台以上のPCでモニタリングすることができます。

モニタリングできるデータは、各M5Stackで計測した酸素飽和度(SpO2)、心拍数、心拍パルスです。
データの配信にMQTTを使用しており若干のタイムラグ(通常数十~数百ミリ秒)が生じます。

※2021/08/25 LINE通知に対応しました。

心拍モニタ_動作イメージ Read More