การใช้งาน Pharo Netatmo API สำหรับผลิตภัณฑ์ Legrand Netatmo
สินค้าที่รองรับ :
คุณไม่สามารถเข้าถึงข้อมูลได้โดยตรงจากอุปกรณ์ : Netatmo ไม่ได้ระบุไว้ในขณะนี้ วิธีเดียวในการเข้าถึงข้อมูลและอุปกรณ์คือผ่านเซิร์ฟเวอร์ Netatmo คุณต้องเชื่อมต่ออินเทอร์เน็ตเพื่อรับข้อมูลจากอุปกรณ์ของคุณ
การเข้าถึงจำเป็นต้องมีการตรวจสอบสิทธิ์ OAuth2 เพื่อรับโทเค็นการเข้าถึง โทเค็นนี้ควรรีเฟรชทันเวลาพร้อมกับคำขอตรวจสอบสิทธิ์อื่น สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการรักษาความปลอดภัย โปรดดูลิงก์ไปยังเอกสารอย่างเป็นทางการของ Netatmo ที่ด้านล่างของหน้านี้
การตรวจสอบสิทธิ์ OAuth2 ทำงานในโปรเจ็กต์นี้โดยใช้ Zinc และใช้ได้กับเดสก์ท็อปหรือเว็บแอปพลิเคชัน
เมื่อโทเค็นของคุณได้รับการกู้คืนแล้ว ให้ใช้ API ร่วมกับโทเค็นในช่วงเวลาที่โทเค็นใช้งานได้
Metacello new
baseline: ' NetatmoAPI ' ;
repository: ' github://labordep/ PharoNetatmoAPI :main ' ;
onConflictUseIncoming;
ignoreImage;
load.
สร้างการเข้าถึงแอปพลิเคชันด้วยบัญชี Netatmo Connect ของคุณเพื่อรับข้อมูล client_id และ client_secret ดูส่วนด้านล่างเพื่อใช้การตรวจสอบสิทธิ์ OAuth2 ในโปรเจ็กต์นี้
สำหรับรายละเอียดเพิ่มเติม โปรดดูคำแนะนำอย่างเป็นทางการ
ส่วนนี้อธิบายวิธีการตรวจสอบสิทธิ์และรับโทเค็นการเข้าถึง ขั้นตอนนี้ไม่บังคับหากคุณได้รับโทเค็นด้วยตนเอง เช่น โดยตรงจากเว็บไซต์บัญชี Netamo หรือไลบรารีอื่นที่ให้บริการ เมื่อคุณได้รับโทเค็น คุณสามารถใช้ API ได้ โปรดดูส่วนถัดไปเพื่อดูตัวอย่าง
ขั้นแรก สร้างอินสแตนซ์ NetatmoAPIAuthentificator
ใหม่ด้วยข้อมูล client_id และ client_secret ของคุณ คุณต้องระบุขอบเขตข้อมูลของคุณ เช่น อุณหภูมิเทอร์โมสตัท ความชื้น ฯลฯ หากคุณไม่แน่ใจหรือต้องการทั้งหมดหรือไม่ ให้ใช้ NetatmoScopeEnum allReadScopes
เพื่อรับข้อมูลที่สามารถอ่านได้ทั้งหมด
authenticator := NetatmoAPIAuthentificator
clientId: ' myClientId '
clientSecret: ' myClientSecret '
scopes: ( NetatmoScopeEnum allReadScopes).
ตอนนี้สร้างเซสชันใหม่เพื่อขอการรับรองความถูกต้อง เมธอดนี้ส่งคืน ZnOAuth2Session
ซึ่งมีกระบวนการเชื่อมต่อ OAuth2
session := authenticator createOAuth2Session.
หากนี่เป็นครั้งแรกที่พยายามรับโทเค็น เซสชันจะไม่ทำงาน เรียกใช้เมธอด requestUserAuthentication
เพื่อเปิดเว็บเบราว์เซอร์ของคุณ และตรวจสอบความถูกต้องโดยใช้แบบฟอร์มออนไลน์ Netatmo
session isLive ifFalse: [
authenticator requestUserAuthentication.
].
ในขั้นตอนนี้เว็บเบราว์เซอร์เริ่มต้นของคุณจะเปิดแบบฟอร์มการรับรองความถูกต้อง Netatmo ออนไลน์:
ตรวจสอบและยอมรับหากคุณเห็นด้วย หน้าผลลัพธ์พื้นฐานจะแสดงขึ้นเพื่อยืนยันการรับรองความถูกต้องที่ดี ให้ปิดหน้านี้เมื่อปรากฏ:
รับโทเค็นของคุณ:
token := session liveAccessToken.
Instaciante NetatmoAPI
จะต้องขอข้อมูลจาก API ใช้โทเค็นเพื่อตั้งค่าการเชื่อมต่อ
| api |
api := NetatmoAPI new .
api token: ' yourAccess|tokenHere '
ใช้วิธีหมวดหมู่ "api" เพื่อขอข้อมูล
รับอุปกรณ์ทั้งหมด คืนรายการ NetatmoDevice
รายการสามารถเปลี่ยนแปลงได้ขึ้นอยู่กับการอนุญาตเซสชัน
| devices |
devices := api getDevices.
รับอุปกรณ์ทั้งหมด คืนรายการอุปกรณ์ NetatmoStation
| devices |
devices := api getStationDevices.
รับอุปกรณ์เฉพาะจากที่อยู่ mac (id) ส่งคืนรายการอุปกรณ์ NetatmoStation
| devices |
devices := api getStationDevice:: ' 01:23:45:67:89:ab ' .
รับอุปกรณ์ทั้งหมด คืนรายการอุปกรณ์ NetatmoHealthyHomeCoach
| devices |
devices := api getHealthyHomeCoachDevices.
รับอุปกรณ์เฉพาะจากที่อยู่ mac (id) ส่งคืนรายการอุปกรณ์ NetatmoHealthyHomeCoach
| devices |
devices := api getHealthyHomeCoachDevice: ' 01:23:45:67:89:ab ' .
ใช้ API เพื่อรับการวัดจากอุปกรณ์ ส่งคืนรายการการวัด NetatmoMeasure
NetatmoMeasure
แต่ละรายการประกอบด้วยข้อมูล (เช่น 56
) ประเภท (เช่น 'humidity'
) หน่วย (เช่น '%'
) หน่วยข้อมูล (เช่น Number
) และ DateTime
ของการวัด เมื่อร้องขอการวัดจาก types:
เพื่อเลือกประเภทข้อมูลโดยส่งรายการ NetatmoMeasureType
รับข้อมูลประเภทหนึ่งจากอุปกรณ์
| measures |
measures := api getMeasures: (device id)
types: NetatmoMeasureType humidity.
รับข้อมูลหลายประเภทจากอุปกรณ์
| measures |
measures := api getMeasures: (device id)
types: ( OrderedCollection
with: NetatmoMeasureType temperature
with: NetatmoMeasureType humidity).
สามารถขอช่วงวันที่และเวลาในการวัดพร้อมมาตราส่วนสำหรับตัวอย่างได้ ตัวอย่าง : รับอุณหภูมิในแต่ละวัน ณ เวลาปัจจุบันของสัปดาห์ที่ผ่านมา
| measures |
measures := api getMeasures: (device id)
types: NetatmoMeasureType temperature
scale: 1 day
dateTimeBegin: ( DateAndTime now - 7 day)
dateTimeEnd: DateAndTime now.
แพ็คเกจ NetatmoAPI-Examples
มี API บางตัวที่ใช้ตัวอย่างกับอินเทอร์เฟซผู้ใช้พื้นฐานโดยใช้ Spec
และ Roassal
รายการอุปกรณ์ที่มี (พร้อมอุปกรณ์ย่อย):
รายการมาตรการ Healthy Home Coach ในช่วง 7 วันที่ผ่านมา:
แดชบอร์ดสถานีตรวจอากาศ:
สถานีตรวจอากาศความชื้นในร่มและกลางแจ้ง 7 วันล่าสุด:
ฯลฯ
การใช้ Netatmo Connect API คุณจะสามารถเข้าถึงข้อมูลที่ละเอียดอ่อนมาก โดยเฉพาะอย่างยิ่งหากแอปของคุณเข้าถึงกล้องของเรา (สตรีมสดหรือวิดีโอ) ตรวจสอบให้แน่ใจว่าคุณเคารพความเป็นส่วนตัวของผู้ใช้และมีนโยบายความเป็นส่วนตัวที่เข้มงวด
ข้อกำหนดการใช้งาน Netatmo Connect API
แหล่งข้อมูลนี้เป็นข้อมูลอ้างอิงของฉันในการใช้ API นี้ มีกลุ่มผลิตภัณฑ์ API สองกลุ่ม: สภาพอากาศ/ความปลอดภัย/พลังงาน และ HomeCoach/Aircare
เอกสารทั่วไปของ Netatmo
API ของผลิตภัณฑ์ที่เฉพาะเจาะจงมากขึ้น:
เอกสารประกอบ Netatmo Aircare API
โปรเจ็กต์นี้เป็นงานส่วนตัว ฉันไม่เกี่ยวข้องกับ Legrand
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT - ดูรายละเอียดในไฟล์ใบอนุญาต