Implementasi Pharo Netatmo API untuk produk Legrand Netatmo.
Produk yang didukung:
Anda tidak dapat mengakses data langsung dari perangkat : Netatmo tidak menyediakannya untuk saat ini. Satu-satunya cara untuk mengakses data dan perangkat adalah melalui server Netatmo. Anda harus terhubung ke Internet untuk mendapatkan data dari perangkat Anda.
Akses memerlukan autentikasi OAuth2 untuk mendapatkan token akses. Token ini harus disegarkan tepat waktu dengan permintaan autentikasi lainnya. Untuk rincian lebih lanjut tentang keamanan, lihat tautan ke dokumentasi resmi Netatmo di bagian bawah halaman ini.
Otentikasi OAuth2 berfungsi dalam proyek ini menggunakan Zinc dan dapat digunakan untuk aplikasi desktop atau web.
Saat token Anda dipulihkan, gunakan api tersebut selama masa validitas token.
Metacello new
baseline: ' NetatmoAPI ' ;
repository: ' github://labordep/ PharoNetatmoAPI :main ' ;
onConflictUseIncoming;
ignoreImage;
load.
Buat akses aplikasi dengan akun Netatmo connect Anda untuk mendapatkan data client_id dan client_secret Anda. Lihat bagian bawah untuk menggunakan autentikasi OAuth2 dalam proyek ini.
Untuk lebih jelasnya lihat pedoman resmi.
Bagian ini menjelaskan cara mengautentikasi dan mendapatkan token akses. Langkah ini tidak wajib dilakukan jika Anda mendapatkan token secara manual, misalnya langsung dari situs akun Netamo atau perpustakaan penyedia lainnya. Saat Anda mendapatkan token, Anda dapat menggunakan API, lihat bagian selanjutnya untuk mendapatkan beberapa contoh.
Pertama, buat instance NetatmoAPIAuthentificator
baru dengan data client_id dan client_secret Anda. Anda perlu menentukan cakupan data Anda, misalnya: suhu termostat, kelembapan, dll. Jika Anda tidak yakin atau jika Anda memerlukan semuanya, gunakan NetatmoScopeEnum allReadScopes
agar semua data dapat dibaca.
authenticator := NetatmoAPIAuthentificator
clientId: ' myClientId '
clientSecret: ' myClientSecret '
scopes: ( NetatmoScopeEnum allReadScopes).
Sekarang buat sesi baru untuk meminta otentikasi. Metode ini mengembalikan ZnOAuth2Session
yang menyediakan proses koneksi OAuth2.
session := authenticator createOAuth2Session.
Jika ini adalah percobaan pertama untuk mendapatkan token, sesi tersebut tidak ditayangkan. Panggil metode requestUserAuthentication
untuk membuka browser web Anda dan memvalidasi otentikasi menggunakan formulir online Netatmo.
session isLive ifFalse: [
authenticator requestUserAuthentication.
].
Pada langkah ini browser web default Anda membuka formulir otentikasi Netatmo online:
Periksa dan terima jika Anda setuju. Halaman hasil dasar ditampilkan untuk mengonfirmasi otentikasi yang baik, tutup halaman ini ketika muncul:
Mendapatkan token Anda:
token := session liveAccessToken.
Instanciante NetatmoAPI
harus meminta data dari API. Gunakan token untuk mengatur koneksi.
| api |
api := NetatmoAPI new .
api token: ' yourAccess|tokenHere '
Gunakan metode kategori "api" untuk meminta data.
Dapatkan semua perangkat, kembalikan daftar NetatmoDevice
. Daftar ini dapat berubah tergantung otorisasi sesi.
| devices |
devices := api getDevices.
Dapatkan semua perangkat, kembalikan daftar perangkat NetatmoStation
.
| devices |
devices := api getStationDevices.
Dapatkan perangkat tertentu dari alamat mac (id), kembalikan daftar perangkat NetatmoStation
.
| devices |
devices := api getStationDevice:: ' 01:23:45:67:89:ab ' .
Dapatkan semua perangkat, kembalikan daftar perangkat NetatmoHealthyHomeCoach
.
| devices |
devices := api getHealthyHomeCoachDevices.
Dapatkan perangkat tertentu dari alamat mac (id), kembalikan daftar perangkat NetatmoHealthyHomeCoach
.
| devices |
devices := api getHealthyHomeCoachDevice: ' 01:23:45:67:89:ab ' .
Gunakan API untuk mendapatkan pengukuran dari perangkat, kembalikan daftar pengukuran NetatmoMeasure
. Setiap NetatmoMeasure
berisi data (misalnya 56
), jenis (misalnya 'humidity'
), unit (misalnya '%'
), unit data (misalnya Number
) dan DateTime
dari pengukuran. Saat meminta ukuran dari API, gunakan types:
untuk memilih tipe data dengan meneruskan daftar NetatmoMeasureType
.
Dapatkan satu jenis data dari perangkat.
| measures |
measures := api getMeasures: (device id)
types: NetatmoMeasureType humidity.
Dapatkan berbagai jenis data dari satu perangkat.
| measures |
measures := api getMeasures: (device id)
types: ( OrderedCollection
with: NetatmoMeasureType temperature
with: NetatmoMeasureType humidity).
Dimungkinkan untuk meminta interval waktu pengukuran, dengan skala untuk sampel. Contoh: dapatkan suhu setiap hari pada waktu saat ini dalam seminggu terakhir.
| measures |
measures := api getMeasures: (device id)
types: NetatmoMeasureType temperature
scale: 1 day
dateTimeBegin: ( DateAndTime now - 7 day)
dateTimeEnd: DateAndTime now.
Paket NetatmoAPI-Examples
berisi beberapa contoh penggunaan API dengan antarmuka pengguna dasar menggunakan Spec
dan Roassal
.
Daftar perangkat yang tersedia (dengan sub perangkat):
Daftar tindakan Pelatih Rumah Sehat 7 hari terakhir :
Dasbor Stasiun Cuaca:
Stasiun Cuaca 7 hari terakhir kelembaban dalam dan luar ruangan :
Dll.
Dengan menggunakan Netatmo Connect API, Anda akan memiliki akses ke informasi yang sangat sensitif. Hal ini terutama berlaku jika aplikasi Anda mengakses Kamera kami (streaming langsung atau video). Pastikan Anda menghormati privasi pengguna dan memiliki kebijakan privasi yang kuat.
Ketentuan Penggunaan Netatmo Connect API
Sumber daya ini adalah referensi saya untuk mengimplementasikan API ini. Ada dua grup produk API: Cuaca/Keamanan/Energi dan HomeCoach/Perawatan Udara.
Dokumentasi umum Netatmo
API produk yang lebih spesifik:
Dokumentasi API Netatmo Aircare
Proyek ini adalah karya pribadi, saya tidak berafiliasi dengan Legrand.
Proyek ini dilisensikan di bawah Lisensi MIT - lihat file LISENSI untuk detailnya.