{"id":19672831,"url":"https://github.com/paveldn/haierprotocol","last_synced_at":"2026-02-22T15:16:00.939Z","repository":{"id":134745419,"uuid":"573706964","full_name":"paveldn/HaierProtocol","owner":"paveldn","description":"Haier communication protocol library","archived":false,"fork":false,"pushed_at":"2025-01-01T08:12:11.000Z","size":217,"stargazers_count":23,"open_issues_count":5,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-22T22:26:41.392Z","etag":null,"topics":["cpp","esp-idf","haier","library","protocol","uart"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paveldn.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-12-03T06:50:44.000Z","updated_at":"2025-09-11T07:58:00.000Z","dependencies_parsed_at":"2023-09-28T18:58:19.673Z","dependency_job_id":"b23a1b47-27b5-4944-b520-09c8d0572b00","html_url":"https://github.com/paveldn/HaierProtocol","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/paveldn/HaierProtocol","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paveldn%2FHaierProtocol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paveldn%2FHaierProtocol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paveldn%2FHaierProtocol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paveldn%2FHaierProtocol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paveldn","download_url":"https://codeload.github.com/paveldn/HaierProtocol/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paveldn%2FHaierProtocol/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29716837,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T15:10:41.462Z","status":"ssl_error","status_checked_at":"2026-02-22T15:10:04.636Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cpp","esp-idf","haier","library","protocol","uart"],"created_at":"2024-11-11T17:13:23.497Z","updated_at":"2026-02-22T15:16:00.870Z","avatar_url":"https://github.com/paveldn.png","language":"C++","readme":"HaierProtocol\n=============\n\nThis library implements a Haier protocol transport level. It can help\nwith sending and receiving messages to appliances that support it and\nprocess answers.\n\nCompatibility\n-------------\n\nThis library is compatible with both **PlatformIO** and **Arduino** toolchains.\n\n- Existing include paths stay unchanged (for example ``\"protocol/haier_protocol.h\"``).\n- Public headers are located in the ``src`` tree (the ``include`` tree is no longer used).\n- For Arduino IDE/CLI, you can also include the main header:\n\nNote on C++ standard library support\n----------------------------------\n\nThis library uses C++ timing facilities (``std::chrono``). It requires a\ntoolchain and board core that provide the C++ standard library. Older or\nconstrained Arduino cores (for example some AVR/Uno toolchains) may not\nprovide ``\u003cchrono\u003e`` and will fail to compile. For these boards prefer\nPlatformIO or newer Arduino cores that include full C++ support.\n\nIf you target constrained boards, see the Arduino usage documentation for\nworkarounds and recommended cores.\n\n- For Arduino IDE/CLI, you can also include the main header:\n\n  .. code-block:: cpp\n\n    #include \u003cHaierProtocol.h\u003e\n\nNo migration is required for existing PlatformIO projects.\n\nDocumentation\n-------------\n\n- `Protocol reference \u003cdoc/protocol_reference.rst\u003e`_\n- `PlatformIO usage example \u003cdoc/usage_platformio.rst\u003e`_\n- `Arduino usage example \u003cdoc/usage_arduino.rst\u003e`_\n- `hOn simulator \u003cdoc/hon_simulator.rst\u003e`_\n- `SmartAir2 simulator \u003cdoc/smartair2_simulator.rst\u003e`_\n\nProtocol description\n--------------------\n\nDetailed reference: `HaierProtocol Reference \u003cdoc/protocol_reference.rst\u003e`_\n\nHaier protocol is a synchronous protocol. All data delivered with this\nprotocol is split into portions - frames. The protocol has two versions.\nOne is used for older HVAC units that work with the SmartAir2\napplication. Another is for newer units that work with the hOn\napplication. Those version commands are different but the frame\nstructure and transport level of the protocol are the same.\n\nHaier frame\n-----------\n\n.. list-table:: Frame structure\n\n  * - **Frame separator**\n    - **Frame length**\n    - **Frame flags**\n    - **Reserved space**\n    - **Type**\n    - **Frame data**\n    - **Checksum**\n    - **CRC**\n  * - 2 bytes\n    - 1 byte\n    - 1 byte\n    - 5 bytes\n    - 1 byte\n    - | n bytes\n      | (n \u003c= 246)\n    - 1 byte\n    - 2 bytes \n\nWhere:\n * **Frame separator** - 2 bytes, have fixed value 0xFF 0xFF, used as a marker for the beginning of the frame\n * **Frame length** - 1 byte, number of bytes of the entire frame, includes frame flags, reserved space, type byte, frame data, and checksum, max value is 254 \\*\n * **Frame flags** - 1 byte, only 2 values used 0x40 - indicates that frame have CRC bytes, 0x00 - indicates that there is no CRC\n * **Reserved space** - 5 bytes, reserved for future use, filled with 0x00\n * **Frame type** - 1 byte, type of frame (depend on the protocol)\n * **Frame data** - n byte, data of the frame, can be empty. Sometimes first 2 bytes of data are used as a subcommand. Max size 246\n * **Checksum** - 1 byte, the least significant byte of the sum of all bytes of the frame except separator bytes, CRC, and checksum itself.\n * **CRC** - 2 bytes, CRC 16 of all bytes of the frame except separator bytes, checksum byte, and CRC itself (`CRC-16/ARC \u003chttps://crccalc.com/?crc=\u0026method=CRC-16/ARC\u0026datatype=1\u0026outtype=0\u003e`_ algorithm used). CRC is available only if the frame flags byte indicates it.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaveldn%2Fhaierprotocol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaveldn%2Fhaierprotocol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaveldn%2Fhaierprotocol/lists"}