{"id":29213833,"url":"https://github.com/archytech99/pzem-017","last_synced_at":"2025-07-02T23:05:31.423Z","repository":{"id":302013922,"uuid":"1010955711","full_name":"archytech99/PZEM-017","owner":"archytech99","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-30T05:06:12.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-30T05:30:37.063Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/archytech99.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-30T05:05:59.000Z","updated_at":"2025-06-30T05:06:15.000Z","dependencies_parsed_at":"2025-06-30T05:41:27.737Z","dependency_job_id":null,"html_url":"https://github.com/archytech99/PZEM-017","commit_stats":null,"previous_names":["archytech99/pzem-017"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/archytech99/PZEM-017","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archytech99%2FPZEM-017","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archytech99%2FPZEM-017/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archytech99%2FPZEM-017/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archytech99%2FPZEM-017/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/archytech99","download_url":"https://codeload.github.com/archytech99/PZEM-017/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archytech99%2FPZEM-017/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263229087,"owners_count":23434003,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-02T23:05:20.254Z","updated_at":"2025-07-02T23:05:31.298Z","avatar_url":"https://github.com/archytech99.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PZEM-017 DC Communication Module\n\nPustaka komunikasi arduino untuk monitor power dan energi dari perangkat Peacefair PZEM-017, dengan sedikit perubahan dari pustaka [Hemmarit Hema's PZEM-017-v1](https://github.com/maxzerker/PZEM-017-v1).\n\n***\n\n## Rentang Pengukuran\n\n50A, 100A, 200A, 300A kisaran arus tergantung pada spesifikasi shunt eksternal.\n\n## Fitur ([*datasheet*](./PZEM-003%20017User%20Manual(MEDC300V).pdf))\n\n### Tegangan (V)\n\n- Rentang pengukuran: 0,05-300 V. (*bila tegangan uji \u003c 7V, harap gunakan mode catu daya independen*)\n- Resolusi: 0,01V.\n- Akurasi pengukuran: 1%.\n\n### Arus (A)\n\n- Rentang pengukuran: 0,02-300 A (*dapat dicocokkan dengan empat jenis shunt 50, 100, 200, 300A*)\n- Resolusi: 0,01A.\n- Akurasi pengukuran: 1%.\n\n### Daya (W)\n\n- Rentang pengukuran: 0,2-90 kW.\n- Resolusi: 0,1W.\n- Akurasi pengukuran: 1%.\n\n### Konsumsi Energi (Wh)\n\n- Rentang pengukuran: 0-9999 kWh.\n- Resolusi: 1Wh.\n- Akurasi pengukuran: 1%.\n\n### Alarm Tegangan Berlebih\n\n- Ambang tegangan dapat diatur, dibagi menjadi ambang tegangan tinggi dan ambang tegangan rendah, ketika tegangan yang diukur melebihi ambang batas, maka dapat membunyikan alarm. Ambang tegangan tinggi default adalah 300V, ambang tegangan rendah default adalah 7V.\n\n## Protokol Komunikasi\n\n- Antarmuka **RS485**.\n- Lapisan fisik menggunakan antarmuka komunikasi UART ke RS485.\n- Baud rate adalah **9600**, 8 bit data, 2 bit stop, tanpa paritas.\n\n## Daftar alamat pengukuran disusun sebagai berikut\n\n| Register Addr. | Deskripsi                     | Resolution                             |\n|----------------|-------------------------------|----------------------------------------|\n| 0x0000         | nilai tegangan                | 1LSB sesuai dengan 0,01V               |\n| 0x0001         | nilai arus                    | 1LSB sesuai dengan 0,01A               |\n| 0x0002         | nilai daya rendah (16 bits)   | 1LSB sesuai dengan 0,1W                |\n| 0x0003         | nilai daya tinggi (16 bits)   | 1LSB sesuai dengan 0,1W                |\n| 0x0004         | nilai energi rendah (16 bits) | 1LSB sesuai dengan 1Wh                 |\n| 0x0005         | nilai energi tinggi (16 bits) | 1LSB sesuai dengan 1Wh                 |\n| 0x0006         | alarm status tegangan tinggi  | 0xFFFF adalah alarm, 0x000 bukan alarm |\n| 0x0007         | alarm status tegangan rendah  | 0xFFFF adalah alarm, 0x000 bukan alarm |\n\n\\* *Menggunakan transformator arus eksternal sebagai pengganti shunt internal*\n\n## Contoh Sketch\n\n```c++\n/* Gunakan software serial untuk PZEM\n * Pin 4 Rx (Hubungkan ke Tx pin pada PZEM)\n * Pin 5 Tx (Hubungkan ke Rx pin pada PZEM)\n*/\n#include \u003cPZEM017v1.h\u003e\nPZEM017v1 pzem(4, 5); //WMOS D1 4=D1, 5=D2\n\nvoid setup()\n{\n  Serial.begin(115200);\n}\n\nvoid loop()\n{\n  float voltage = pzem.voltage();\n  if ( !isnan(voltage) )\n    Serial.printf(\"Tegangan: %.3f V\", voltage);\n  else\n    Serial.println(\"Kesalahan membaca tegangan\");\n\n  float current = pzem.current();\n  if ( !isnan(current) )\n    Serial.print(\"Arus: %.3f A\", current);\n  else\n    Serial.println(\"Kesalahan membaca arus\");\n\n  float power = pzem.power();\n  if ( !isnan(power) )\n    Serial.print(\"Daya: %.2f W\", power);\n  else\n    Serial.println(\"Kesalahan membaca daya\");\n\n  float energy = pzem.energy();\n  if ( !isnan(energy) )\n    Serial.print(\"Energi: %.3f kWh\");\n  else\n    Serial.println(\"Kesalahan membaca energi\");\n\n  Serial.println();\n  delay(2000);\n}\n```\n\n## Petunjuk Instalasi\n\nAnda seharusnya dapat menginstal pustaka dari Library Manager di Arduino IDE. Anda juga dapat mengunduh ZIP repositori ini dan menginstalnya secara manual. Panduan tentang cara melakukannya ada di sini: [https://www.arduino.cc/en/guide/libraries](https://www.arduino.cc/en/guide/libraries).\n\n***\n**Credits**: thank you to [Hemmarit Hema's PZEM-017-v1](https://github.com/maxzerker/PZEM-017-v1) for this great library.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchytech99%2Fpzem-017","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farchytech99%2Fpzem-017","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchytech99%2Fpzem-017/lists"}