前回『M5Stackを使い非常に安価なクラウド連携(kintone)タイムレコーダーを作る』では、M5Stackを使ってタイムレコーダーを作ってみましたが、今回はRaspberry PiとICカードリーダ、kintoneを使ってクラウド連携のタイムレコーダーが作れるか実験してみました。
Raspberry Piの場合、USB機器やHATを介してGROVE規格のセンサーやディスプレイ、制御装置などと連携し複雑な処理を行うことができるようになります。
指定されたディレクトリ以下にある画像ファイル(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ファイルをそのままアップロードすると失敗するため)
前回作成した『M5Stack/ATOMとGPSユニットを使って位置情報をクラウドに保存する / M5シリーズUIFlowからKintoneに直接データをアップロードする』を応用し、M5Stack/ATOMシリーズと心拍センサユニットの組み合わせで酸素飽和度(SpO2)と心拍数を計測し、計測した情報をサイボウズ社のkintoneに直接アップロードするプログラムを作成しました。
M5Stackにプログラムを転送する際、デバイスごとにユニークなIDを設定することでkintone側では複数のM5シリーズデバイスからアップロードされた計測データを一元管理することができます。
kintone側ではデバイスからアップロードされた酸素飽和度や最終計測日時などから計測対象者の状態を把握し業務支援を行うことができるようになると考えています。
M5Stack/ATOMシリーズとGPSユニットを組み合わせてGPSトラッキングをする仕組みができないか調査をしている中で、計測した位置情報をサイボウズ社のkintoneに直接アップロードするところまでできたのでソースコードを公開します。
通信ユニットとIoT回線を使いスタンドアロンでも動きGPSロガーを「M5Stack+GPSユニット+通信ユニット+IoT回線でGPSロガーを作る」
で公開しました。
大きな画像を表示( 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]』で応用アプリケーションを掲載しました。
JavaからActive Directory上の共有フォルダやファイルのアクセス制御エントリ(ACE)を取得するサンプルプログラムです。
最初はLDAP経由で取得できないか試みたのですがWindows ServerのACEは標準的なLDAPライブラリでは取得できないようなのでこの機能に対応したjCIFS NGを使って取得しています。
おまけとして単純なLDAP/Active Directory認証を行うサンプルプログラムも公開します。
2021/08/23に公開した『M5Stackと心拍センサーを使って血中酸素飽和度と心拍数を見える化するプログラム』(いわゆるパルスオキシメーター)を改良し、計測したデータをネットワーク上のMQTTサーバを介してモニタリングできるようにしました。
このプログラムを使うと、複数台のM5Stackパルスオキシメーターを1台以上のPCでモニタリングすることができます。
モニタリングできるデータは、各M5Stackで計測した酸素飽和度(SpO2)、心拍数、心拍パルスです。
データの配信にMQTTを使用しており若干のタイムラグ(通常数十~数百ミリ秒)が生じます。
※2021/08/25 LINE通知に対応しました。