Æüµ­/2020-6-20

ºÇ½ª¹¹¿·»þ´Ö¡§2020ǯ06·î20Æü 20»þ33ʬ20ÉÃ

¼¼Æâ¤ÎCO2Ç»ÅÙ¤¬¸«¤¿¤¤

¡¡

Ãí°Õ

¡¡°Ê²¼¤Îµ­»ö¤Ïµ»½ÑŪ¤Ë¤Ï¤Û¤È¤ó¤ÉÌò¤ËΩ¤¿¤Ê¤¤¡£Çϼ¯¤ÊÉÔÃí°Õ¤¬¾·¤¯´ÖÈ´¤±¤ÊÅÌÏ«¤Ë½¼¤Á¤¿¼ºÇÔÃ̤Ǥ¢¤ë¡£
¡¡

LaMetric Time

¡¡¿ôǯÁ°¤ËÇã¤Ã¤¿LaMetric Time¤Ë¡¢¤¤¤í¤ó¤Ê¾ðÊó¤òɽ¼¨¤·¤Æ³Ú¤·¤ó¤Ç¤¤¤ë¡£

¡¡ÀµÄ¾¡¢¼ÂÍÑÀ­¤Ë¤Ï˳¤·¤¤µ¤¤â¤¹¤ë¤¬¡¢¤Þ¤¢¡¢Æø¤ä¤«¤·¤È¤¤¤¦¤³¤È¤Ç¡£

¡¡É½¼¨¤·¤Æ¤¤¤ë¤Î¤Ï¡¢½ç¤Ë¡¢

  • »þ¹ï
  • ÆüÉÕ ÍËÆü
  • ¶á½ê¤Î¥¢¥á¥À¥¹¤Î¾ðÊó
    • µ¤²¹
    • Å·µ¤¡Ê¥¢¥¤¥³¥ó¤ÇÀ²/ÆÞ/±«¤òÀڤ괹¤¨¡Ë¤È¹ß¿åÎÌ
    • É÷®
  • Nature Remo¤ÎÆ⢥»¥ó¥µ¡¼¤ÎÃÍ
    • ¼¼²¹
    • ¼¾ÅÙ

¡¡ºÇ¶áÉô²°¤ËäƤâ¤ëµ¡²ñ¤¬Áý¤¨¡¢°ÊÁ°¤Ë¤âÁý¤·¤Æ¼¼Æâ´Ä¶­¤òµ¤¤Ë¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤Î¤À¤¬¡¢¤³¤ì¤Þ¤¿²¿Ç¯¤âÁ°¤ËÇã¤Ã¤¿Withings¤ÎÂνŷ×WS-50¡¢

¤³¤¤¤Ä¤ËCO2Ç»ÅÙ¥»¥ó¥µ¡¼¤¬Æ⢤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò»×¤¤½Ð¤·¤¿¡£¼ê»ý¤Á¤ÎWithings¤Îµ¡´ï¤Î¾ðÊ󤬱ÜÍ÷¤Ç¤­¤ë¥µ¥¤¥È¤«¤é¤â¡¢°Ê²¼¤Î¤è¤¦¤ËCO2Ç»Å٤Υ°¥é¥Õ¤¬³Îǧ¤Ç¤­¤ë¡£

¡¡
¡¡¤³¤ÎCO2Ç»ÅÙ¤òLaMetric Time¤Ëɽ¼¨¤·¤¿¤¤¡ª
¡¡
¡¡¼¼Æâ¤ÎCO2Ç»ÅÙ¤¬1000ppm¤ò±Û¤¨¤ë¤È¡¢¿Í¤Ï̲µ¤¤ò³Ð¤¨ºî¶È¸úΨ¤¬Â礭¤¯²¼¤¬¤ë¤È¤¤¤¦¡£
¡¡¥°¥é¥Õ¤ò¸«¤ë¤ÈCO2Ç»ÅÙ¤Ï30ʬ¤Ë°ìÅÙ¬Äꤵ¤ì¤Æ¤¤¤ë¤è¤¦¤Ê¤Î¤Ç¡¢¤³¤ì¤òLaMetric Time¤Ë¾ï»þɽ¼¨¤·¡¢¤µ¤é¤Ë1000ppm¤ò±Û¤¨¤¿¤éÀÖ¤¯É½¼¨¤¹¤ë¤Ê¤É¤·¤Æ´¹µ¤¤ò¤¦¤Ê¤¬¤¹¡£¤½¤¦¤¤¤¦»ÅÁȤߤò¹½ÃÛ¤·¤¿¤¤¤È¹Í¤¨¤¿¡£
¡¡

Withings API(OAUTH 2.0)

¡¡¥°¥°¤Ã¤Æ¤ß¤ë¤È¡¢Withings¤¬µ¡´ï¤Î¾ðÊó¤ò¼è¤ì¤ëAPI¤òÄ󶡤·¤Æ¤¤¤ë¤³¤È¤¬¤ï¤«¤Ã¤¿¡£

¡¡»È¤¤Êý¤Ï¡¢°Ê²¼¤Î¥µ¥¤¥È¤Ç¾ÜºÙ¤ËÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¡£

¡¡¾åµ­¤Î¥Ú¡¼¥¸¤Î¼ê½ç¤É¤ª¤ê¿Ê¤á¤Æ¡¢WS-50¤Î¾ðÊó¤ò¼è¤ë¤³¤È¤ËÀ®¸ù¤·¤¿¡£
¡¡¤·¤«¤·¡¢³Î¤«¤ËÂνŤʤ󤫤ξðÊó¤Ï¼è¤ì¤ë¤ó¤À¤¬¡¢CO2Ç»Å٤μè¤êÊý¤¬¤ï¤«¤é¤Ê¤¤¡£
¡¡»ö¤³¤³¤Ë»ê¤ê¤è¤¦¤ä¤¯µ¤¤Å¤¤¤¿¤Î¤À¤¬¡¢¼è¤ì¤ë¾ðÊó¤ÎÃæ¤ËCO2Ç»ÅÙ¤¬¤Ê¤¤¤Î¤Ç¤¢¤ë¡ª Withings API¤Î²òÀ⥵¥¤¥È¤Î¤³¤Á¤é¤Î¥Ú¡¼¥¸¤Ë·Ç¤²¤é¤ì¤Æ¤¤¤ë¡¢¼è¤ì¤ë¾ðÊó°ìÍ÷¤Îɽ¤ò¤è¤¯¤è¤¯¸«¤Æ¤ß¤ë¤È¡¢CO2Ç»Å٤ιàÌܤϤʤ¤¡£
¡¡¤Ê¤ª¡¢¤É¤Î¤ß¤ÁCO2Ç»Å٤ξðÊ󤬼è¤ì¤Ê¤¤¤Î¤Ç¡¢»ä¤Ë¤È¤Ã¤Æ¤Ï¤É¤¦¤Ç¤â¤¤¤¤¤Î¤À¤¬¡¢¤³¤ÎAPI¤ò»È¤¦¤Ë¤Ï¥¢¥¯¥»¥¹¥È¡¼¥¯¥ó¤¬É¬Íפǡ¢¤³¤ì¤¬30ʬ¤Ç´ü¸Â¤¬ÀÚ¤ì¤Æ¤·¤Þ¤¤¡¢¤½¤Î¤¿¤Ó¤ËºÆȯ¹Ô¤¹¤ëɬÍפ¬¤¢¤ë¡£¤³¤ì¤¬²¿µ¤¤ËÌÌÅݤ¯¤µ¤¯¤Æ¤«¤Ê¤ê»È¤¤¤Ë¤¯¤¤¡£
¡¡

Withings WS-50 Scale Syncer - Temperature & CO2

¡¡¤¢¤­¤é¤á¤­¤ì¤º¤Ë¤Ê¤ª¤â¥°¥°¤Ã¤Æ¤¤¤ë¤È¡¢¤Þ¤µ¤Ë»ä¤ÎÍÑÅӤˤФäÁ¤ê¤È»×¤¨¤ë¥Ú¡¼¥¸¤ò¸«¤Ä¤±¤¿¡£

¡¡¾åµ­¤Î¥Ú¡¼¥¸¤Ç¤Ï¡¢Withings WS-50 Scale Syncer - Temperature & CO2¤È¤¤¤¦¡¢Withings¤ÎÈó¸ø¼°¤ÊAPI¤ò»È¤Ã¤ÆWS-50¤Îµ¤²¹¤ÈCO2Ç»Å٤Υ»¥ó¥µ¡¼¤ÎÃͤò¼è¤ê¡¢Domoticz¤È¤¤¤¦OSS¤Î¥Û¡¼¥à¥ª¡¼¥È¥á¡¼¥·¥ç¥ó¥·¥¹¥Æ¥à¤ÈÏ¢·È¤µ¤»¤ë¥Ä¡¼¥ë¤ò¤½¤Î¤Þ¤ÞήÍѤ·¤Æ¤¤¤ë¤Î¤À¤¬¡¢¤³¤Á¤È¤éWS-50¤Î¥Ç¡¼¥¿¤µ¤¨¼è¤ì¤ì¤Ð¤½¤ì¤Ç¤¤¤¤¤Î¤Ç¡¢¤³¤Î¥Ä¡¼¥ë¤ò½ñ¤­´¹¤¨¤ë¤³¤È¤Ë¤·¤¿¡£

 #!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 
 from datetime import datetime
 import sys
 import time
 import hashlib
 import requests
 
 TMPID = 12
 CO2ID = 35
 
 NOW = int(time.time())
 PDAY = NOW - (60 * 60 * 24)
 
 HEADER = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'}
 
 URL_BASE = "https://scalews.withings.net/cgi-bin"
 URL_AUTH = URL_BASE + "/auth?action=login&appliver=3000201&apppfm=android&appname=wiscaleNG&callctx=foreground"
 URL_ASSO = URL_BASE + "/association?action=getbyaccountid&enrich=t&appliver=3000201&apppfm=android&appname=wiscaleNG&callctx=foreground&sessionid="
 URL_USAGE = "https://goo.gl/z6NNlH"
 
 
 def authenticate_withings(username, password):
     global pem
     try:
         import certifi
         pem = certifi.old_where()
     except Exception:
         pem = True
     requests.head(URL_USAGE, timeout=3, headers=HEADER, allow_redirects=True, verify=pem)
     payload = {'email': username, 'hash': hashlib.md5(password.encode('utf-8')).hexdigest(), 'duration': '900'}
     response = requests.post(URL_AUTH, data=payload)
     iddata = response.json()
     sessionkey = iddata['body']['sessionid']
     response = requests.get(URL_ASSO + sessionkey)
     iddata = response.json()
     deviceid = iddata['body']['associations'][0]['deviceid']
     return deviceid, sessionkey
 
 
 def download_data(deviceid, sessionkey, mtype, lastdate):
     payload = '/v2/measure?action=getmeashf&deviceid=' + str(deviceid) + '&meastype=' + str(mtype) + '&startdate=' + str(lastdate) + '&enddate=' + str(NOW) + \
         '&appliver=3000201&apppfm=android&appname=wiscaleNG&callctx=foreground&sessionid=' + str(sessionkey)
     try:
         response = requests.get(URL_BASE + payload)
     except Exception:
         sys.exit("[-] Data download failed, exiting" + "\n")
     dataset = response.json()
     return dataset
 
 
 def main():
     username = 'mail@address'
     password = 'password'
 
     deviceid, sessionkey = authenticate_withings(username, password)
     co2data = download_data(deviceid, sessionkey, CO2ID, PDAY)
 
     for item in sorted(co2data['body']['series'][0]['data'], key=lambda x:x['date'], reverse=True):
         dt = datetime.fromtimestamp(item['date'])
         print(f"date:{dt}, co2:{item['value']}")
 
     return
 
 if __name__ == "__main__":
     main()

¡¡¾åµ­¤Î¥¹¥¯¥ê¥×¥È¤Ç¤Ï¥Ç¥Ð¥Ã¥°ÍѤˡ¢Â¬ÄêÆü»þ¤È¤½¤Î»þ¤ÎCO2Ç»ÅÙ¤ò°ì¹Ô¤Ë¡¢°ìÆüʬ¤ò¿·¤·¤¤½ç¤Ëɽ¼¨¤·¤Æ¤¤¤ë¡£

date:2020-06-20 13:30:13, co2:509
date:2020-06-20 13:00:12, co2:519
date:2020-06-20 12:30:13, co2:506
date:2020-06-20 12:00:12, co2:497
date:2020-06-20 11:30:13, co2:509
¡Ä¡Ä

¡¡Åö½é¤Ï¤³¤Î¬ÄêÆü»þ¤ò¡¢¼è¤ì¤¿¥Ç¡¼¥¿¤½¤Î¤Þ¤Þ¤Îunixtime¤Çɽ¼¨¤·¤Æ¤¤¤¿¤¿¤á¡¢¤Ê¤«¤Ê¤«µ¤¤Å¤«¤Ê¤«¤Ã¤¿¤Î¤À¤¬¡¢¤³¤Î¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤·¤Æ¤â¡¢ºÇ¿·¤Î¥Ç¡¼¥¿¤È¤·¤Æ¼è¤ì¤ë¤Î¤Ï¡¢¼Â¹Ô»þ¤Î²¿»þ´Ö¤âÁ°¤Î¤â¤Î¤À¤Ã¤¿¤Î¤Ç¤¢¤ë¡£
¡¡¤³¤ì¤Ï°ìÂΤʤ¼¤Ê¤Î¤«¡©
¡¡»ö¤³¤³¤Ë»ê¤ê¤è¤¦¤ä¤¯µ¤¤Å¤¤¤¿¤Î¤À¤¬¡¢Á°½Ò¤Î¡ÖWithings WS-50¤ò»È¤Ã¤ÆCO2Ç»ÅÙ¤òCloudWatch¥á¥È¥ê¥¯¥¹¤ËÊݸ¤¹¤ë¡×¤Î¥Ú¡¼¥¸¤Ë¡¢¤½¤ì¤âËÁƬÉôʬ¤Ë¤·¤Ã¤«¤ê¤È¡¢°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¤¤Æ¤¢¤ë¡£

¤¿¤À¤·¡¢WS-50¤Î¾ì¹ç¥»¥ó¥µ¾ðÊó¤ÎÁ÷¿®¤¬°Ê²¼¤Î2¥Ñ¥¿¡¼¥ó¤·¤«¤Ê¤¤¤¿¤á¡¢¥ê¥¢¥ë¥¿¥¤¥à¤ÇCO2Ç»ÅÙ¤ò¼èÆÀ¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£
¡¦1Æü°ì²ó¤É¤³¤«¤Î¥¿¥¤¥ß¥ó¥°¤Ç´Ä¶­¥»¥ó¥µ¾ðÊó¡ÊCO2Ç»ÅÙ¡¢²¹Å١ˤòÁ÷¿®
¡¦ÂνŤò¬¤Ã¤¿¥¿¥¤¥ß¥ó¥°¤Ç´Ä¶­¥»¥ó¥µ¾ðÊó¤âÁ÷¿®
¤Ê¤ª¡¢CO2Ç»ÅÙ¾ðÊó¤Ï30ʬ¤ª¤­¤Ëµ­Ï¿¤µ¤ì¤Æ¤¤¤ë¡£

¡¡¤Ä¤Þ¤ê¡¢CO2Ç»Å٤άÄ꼫ÂΤÏ30ʬËè¤Ë¹Ô¤ï¤ì¤Æ¤¤¤ë¤Î¤À¤¬¡¢¤½¤ì¤¬¥¦¥§¥Ö¾å¤Ë¥¢¥Ã¥×¥í¡¼¥É¤µ¤ì¤ë¤Î¤ÏÂνŬÄê»þ¤«°ìÆü°ìÅ٤Τɤ³¤«¤Î¥¿¥¤¥ß¥ó¥°¤Î¤ß¡£¤¤¤¯¤é¾ðÊó¤ò¼è¤ê¤Ë¹Ô¤Ã¤Æ¤â¡¢¼è¤ì¤ë¾ðÊ󤬹¹¿·¤µ¤ì¤ë¤Î¤Ï°ìÆü°ìÅÙ¤À¤±¡£¾åµ­¥¹¥¯¥ê¥×¥È¤Çɽ¼¨¤µ¤ì¤ë¤Î¤Ï¡¢Á°²ó¤Î¹¹¿·»þ¤Î¾ðÊ󤬺ǿ·¤Ë¤Ê¤ë¤ï¤±¤Ç¡¢¤½¤ì¤¬¥¹¥¯¥ê¥×¥È¼Â¹Ô»þ¤Î²¿»þ´Ö¤âÁ°¤À¤Ã¤¿¤Î¤Ç¤¢¤ë¡£

¡¡·ë¶É¡¢WS-50Æ⢤ÎCO2Ç»ÅÙ¥»¥ó¥µ¡¼¤Ï¡¢»ä¤¬ÁÛÄꤷ¤¿ÍÑÅӤǤϻȤ¨¤Ê¤¤¤È¤¤¤¦¤³¤È¤¬¤ï¤«¤Ã¤¿¡£
¡¡

MH-Z19

¡¡¤½¤ì¤Ç¤â¤¢¤­¤é¤á¤­¤ì¤Ê¤¤»ä¤¬¤É¤¦¤·¤¿¤«¤È¤¤¤¦¤È¡¢Banggood.com¤Ç°Ê²¼¤ÎCO2Ç»ÅÙ¥»¥ó¥µ¡¼MH-Z19¤òȯÃí¤·¤Æ¤·¤Þ¤Ã¤¿¡£

¡¡¤Ê¤¼Amazon¤Ç¤Ï¤Ê¤¯Banggood¤ÇÇã¤Ã¤¿¤«¤È¤¤¤¦¤È¡¢Banggood¤ÎÊý¤¬ÃÍÃʤâ°Â¤¯Ç¼´ü¤âû¤«¤Ã¤¿¤«¤é¡£¤½¤ì¤Ç¤âǼ´ü¤Ï10Æü¤«¤é30Æü¸å¡£ÃÍÃʤÏÁ÷ÎÁ¹þ¤ß¤Ç2529±ß¡£
¡¡CO2Ç»ÅÙ¥»¥ó¥µ¡¼¤¬ÆϤ¯º¢¤Þ¤Ç¡¢¤³¤Î¾ðÇ®¤¬¼º¤ï¤ì¤Æ¤¤¤Ê¤±¤ì¤ÐÎɤ¤¤¬¡£


´ØÏ¢¥Ú¡¼¥¸