{"id":19415874,"url":"https://github.com/volca02/hr20-esp12-master","last_synced_at":"2026-03-01T04:08:06.729Z","repository":{"id":145135365,"uuid":"138336493","full_name":"volca02/hr20-esp12-master","owner":"volca02","description":"Re-implementation (with different features) of the master portion of OpenHR20 wireless project","archived":false,"fork":false,"pushed_at":"2023-03-19T16:31:28.000Z","size":287,"stargazers_count":12,"open_issues_count":14,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-09-19T00:02:43.598Z","etag":null,"topics":["arduino","esp8266","firmware","honeywell","hr20","master-slave","mqtt","platformio","rondostat"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/volca02.png","metadata":{"files":{"readme":"README.md","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}},"created_at":"2018-06-22T18:37:10.000Z","updated_at":"2025-08-25T16:42:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"104a204f-a16d-49b4-b53b-278cd090aa08","html_url":"https://github.com/volca02/hr20-esp12-master","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/volca02/hr20-esp12-master","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volca02%2Fhr20-esp12-master","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volca02%2Fhr20-esp12-master/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volca02%2Fhr20-esp12-master/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volca02%2Fhr20-esp12-master/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/volca02","download_url":"https://codeload.github.com/volca02/hr20-esp12-master/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volca02%2Fhr20-esp12-master/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29960235,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T01:47:18.291Z","status":"online","status_checked_at":"2026-03-01T02:00:07.437Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["arduino","esp8266","firmware","honeywell","hr20","master-slave","mqtt","platformio","rondostat"],"created_at":"2024-11-10T12:44:45.896Z","updated_at":"2026-03-01T04:08:06.690Z","avatar_url":"https://github.com/volca02.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hr20-esp12-master\n\nRe-implementation (with different features) of the master portion of OpenHR20 wireless project.\n\nThis project enables a network of RFM12 modified HR20 (Honeywell Rondostat thermostat) units to be\ncontrolled and monitored via network.\n\nIt is a complete clean reimplementation of the master portion of the RFM12 based OpenHR20 project branch.\n\nCompared to the rfmsrc variant of OpenHR20, this implementation enables direct control (via MQTT protocol)\nof the HR20 clients using only ESP8266 and a connected radio module RFM12, with no additional computer\nnecessary.\n\nTo use this project, you will need a set of 1-N HR20 Rondostat units modified with RFM12 radio modules\n(and programmed with rfmsrc variant of OpenHR20), ESP8266 and a RFM12b module for the master.\n\nThe project is now able to serve as a full master on the wireless network.\n\nSmall things are still missing before the project is completely finished - notably a reconfiguration button\nhandling and a convenience Android client (setting timers via mqtt would be a nightmare).\n\n## HW configuration\nThe RFM12 is connected to ESP via the SPI interface, with SS/NSEL being connected to GPIO2.\n\nSo this is the wiring between ESP-12 and RFM12b:\n\n* D7/HMOSI/GPIO13 - SDI\n* D6/HMISO/GPIO12 - SDO\n* D5/HSCLK/GPIO14 - SCK\n* D4/GPIO2        - NSEL\n* D1/GPIO5        - nIRQ\n\nAnd VDD/GND as usual (3.3V).\n\n## License\nThe whole project - all files included is/are licensed with GPL2 license. A part (rfmdef.h for RFM12 settings) is a modified copy of parts of a file from OpenHR20 project.\n\n## Building\nThe project is based around platformio - so please use that to build it.\n\n\n```\npio run\npio run -t uploadfs\npio run -t upload\n```\n\n\n## First run\nThe project starts a Wifi AP every time it reboots, so configuration is possible via a mobile phone. Settings are also available by clicking the \"configuration\" link in project's webserver page.\n\n## MQTT Structure\nThe project defaults to a mqtt interface. The whole subtree starts with a user specified prefix (settable in configuration).\n\n```\nRead only subtree:\n\n/PREFIX/ADDRESS/average_temp\n...            /battery         - battery voltage\n...            /error           - error code, as received from client\n...            /lock            - button lock status\n...            /mode            - automatic/manual mode\n...            /requested_temp  - requested temperature XX.X\n...            /valve_wanted    - current setting of the valve\n...            /window          - window detection status\n...            /state           - json structure with common values (auto, lock, window, temp, bat,...)\n                                - {\"auto\":false,\"lock\":false,\"window\":false,\"temp\":21.46,\"bat\":2.575,\"temp_wtd\":21.0,\"temp_wset\":0.0,\"valve_wtd\":43,\"error\":0,\"last_seen\":1607780775,\"st\":2}\n...            /last_seen       - unix time of the last incoming data from the client\n\n...            /eeprom/ADDR     - subtree containing read values from the settings EEPROM after issuing read/write commands\n\n...            /timers/DAY/SLOT/time - time for the set slot\n...                            /mode - mode for the selected slot 0-3\n\nSettings subtree: These are write-only values:\n\n/PREFIX/set/ADDRESS/requested_temp\n...                /mode\n...                /lock\n...                /eeprom/EEPROM_ADDR/read   - ignores the topic contents, requests eeprom read for the specified address, after success sets the eeprom/ADDR topic in read subtree with set value\n...                                   /write  - writes the set decadic value (topic content) to specified eeprom settings memory address, after success sets the eeprom/ADDR topic in read subtree with set value\n...                /timers/DAY/SLOT/time      - sets time for given DAY/SLOT\n...                                /mode      - sets mode for given DAY/SLOT\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolca02%2Fhr20-esp12-master","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvolca02%2Fhr20-esp12-master","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolca02%2Fhr20-esp12-master/lists"}