Decoder dan encoder Cayenne Low Power Pay (CayenNelpp) yang ditulis dalam Python.
Pycayennelpp menawarkan antarmuka ringkas dengan pengkodean dan fungsi decoding yang tepat untuk format cayennelpp, mendukung banyak jenis sensor. Proyek ini bertujuan untuk kualitas kode tinggi secara keseluruhan dan cakupan tes yang baik.
Lihat juga Mydevicesiot/Cayennelpp untuk informasi lebih lanjut tentang format dan implementasi referensi di C ++.
Proyek ini sedang dalam pengembangan aktif. Rilis akan diterbitkan dengan cepat segera setelah sejumlah fitur dan perbaikan baru telah dibuat.
Tabel berikut mencantumkan tipe data yang saat ini didukung dengan kode LPP (yang sama dengan kode IPSO - 3200), ukuran data dalam byte, dimensi, tanda tangan, dan resolusi data.
| Ketik nama | LPP | Ukuran | Redup | Ditandatangani | Resolusi |
|---|---|---|---|---|---|
| Input digital | 0 | 1 | 1 | PALSU | 1 |
| Output digital | 1 | 1 | 1 | PALSU | 1 |
| Input analog | 2 | 2 | 1 | BENAR | 0,01 |
| Output analog | 3 | 2 | 1 | BENAR | 0,01 |
| Sensor generik | 100 | 4 | 1 | PALSU | 1 |
| Illuminance | 101 | 2 | 1 | PALSU | 1 lux |
| Kehadiran | 102 | 1 | 1 | PALSU | 1 |
| Suhu | 103 | 2 | 1 | BENAR | 0,1 ° C. |
| Kelembaban | 104 | 1 | 1 | PALSU | 0,5 % |
| Accelerometer | 113 | 6 | 3 | BENAR | 0,001 g |
| Barometer | 115 | 2 | 1 | PALSU | 0,1 hPa |
| Voltase | 116 | 2 | 1 | PALSU | 0,01 v |
| Saat ini | 117 | 2 | 1 | PALSU | 0,001 a |
| Frekuensi | 118 | 4 | 1 | PALSU | 1 Hz |
| Persentase | 120 | 1 | 1 | PALSU | 1 % |
| Ketinggian | 121 | 2 | 1 | BENAR | 1 m |
| Memuat | 122 | 3 | 1 | BENAR | 0,001 kg |
| Konsentrasi | 125 | 2 | 1 | PALSU | 1 |
| Kekuatan | 128 | 2 | 1 | PALSU | 1 |
| Jarak | 130 | 4 | 1 | PALSU | 0,001 km |
| Energi | 131 | 4 | 1 | PALSU | 0,001 kJ |
| Arah | 132 | 2 | 1 | PALSU | 1 ° |
| Waktu | 133 | 4 | 1 | PALSU | 1 s |
| Gyrometer | 134 | 6 | 3 | BENAR | 0,01 °/s |
| Warna | 135 | 3 | 3 | PALSU | 1 RGB |
| Lokasi | 136 | 9 | 3 | BENAR | 0,00001 Lat |
| 0,00001 LON | |||||
| 0,01 alt | |||||
| Mengalihkan | 142 | 1 | 1 | PALSU | 1 ON/OFF |
Pycayennelpp tidak memiliki dependensi eksternal dan hanya menggunakan fungsi builtin dan jenis Python 3. Ini kompatibel dengan semua versi Python terbaru dan didukung secara resmi 3.6 dan di atas, meskipun bahkan Python 3.4 akan melakukannya.
Karena pycayennelpp 1.2.0 micropython secara resmi didukung, dan diterbitkan sebagai paket terpisah di bawah micropython-pycayennelpp .
Paket Pycayennelpp tersedia melalui PYPI menggunakan pip . Untuk menginstalnya, jalankan:
pip3 install pycayennelpp Menggunakan Micropythons upip Modul Pycayennelpp dapat diinstal sebagai berikut dalam Micropython:
import upip
upip . install ( "micropython-pycayennelpp" )Atau dijalankan dengan dalam cangkang:
micropython -m upip install micropython-pycayennelppBerikut ini menunjukkan cara memanfaatkan pycayennelpp di aplikasi Anda sendiri untuk mengkodekan dan mendekode data ke dalam dan dari cayennelpp. Cuplikan kode berfungsi dengan python 3 standar serta micropython, dengan asumsi Anda telah menginstal paket pycayennelpp seperti yang ditunjukkan di atas.
Pengkodean
from cayennelpp import LppFrame
# create empty frame
frame = LppFrame ()
# add some sensor data
frame . add_temperature ( 0 , - 1.2 )
frame . add_humidity ( 6 , 34.5 )
# get byte buffer in CayenneLPP format
buffer = bytes ( frame ) Catatan: Micropython tidak mendukung bytes(frame) yang memanfaatkan metode internal LppFrame.__bytes__(self) (belum). Oleh karena itu, Anda perlu menggunakan LppFrame.to_bytes(self) sebagai gantinya.
Decoding
from cayennelpp import LppFrame
# byte buffer in CayenneLPP format with 1 data item
# i.e. on channel 1, with a temperature of 25.5C
buffer = bytearray ([ 0x01 , 0x67 , 0x00 , 0xff ])
# create frame from bytes
frame = LppFrame (). from_bytes ( buffer )
# print the frame and its data
print ( frame )Pengkodean JSON
Kelas lpputil menyediakan fungsi penolong untuk pengkodean JSON yang tepat dari jenis pycayennelpp, yaitu lppFrame, lppdata dan lppType.
import json
from cayennelpp import LppFrame , LppUtil
# create empty frame
frame = LppFrame ()
# add some sensor data
frame . add_temperature ( 0 , - 1.2 )
frame . add_humidity ( 6 , 34.5 )
# json encoding
print ( json . dumps ( frame , default = LppUtil . json_encode , indent = 2 )) Ada dua fungsi pembungkus untuk secara eksplisit menyandikan tipe LPP sebagai angka atau string, nomor yang default untuk LppUtil.json_encode (lihat di atas):
# type as number
print ( json . dumps ( frame , default = LppUtil . json_encode_type_int , indent = 2 ))
# type as string
print ( json . dumps ( frame , default = LppUtil . json_encode_type_str , indent = 2 ))Berkontribusi pada proyek perangkat lunak sumber terbuka gratis dapat dilakukan dengan berbagai cara. Jangan ragu untuk membuka masalah dan membuat permintaan tarik untuk membantu meningkatkan proyek ini. Setiap permintaan tarik harus lulus beberapa tes otomatis dan pemeriksaan yang dijalankan oleh Travis-CI sebelum digabung ke cabang master.
Harap perhatikan pedoman yang berkontribusi dan kode etik.
Ini adalah proyek perangkat lunak open source gratis yang diterbitkan di bawah lisensi MIT.