{"id":15715953,"url":"https://github.com/jalexandre0/saci-temperature-controller","last_synced_at":"2025-05-12T21:24:34.880Z","repository":{"id":194086955,"uuid":"75870305","full_name":"jalexandre0/saci-temperature-controller","owner":"jalexandre0","description":"Temperature controller for homebrewers \u0026 hackers","archived":false,"fork":false,"pushed_at":"2017-05-25T23:43:40.000Z","size":1756,"stargazers_count":32,"open_issues_count":2,"forks_count":2,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-20T18:38:44.167Z","etag":null,"topics":["beer","brew","brewing","esp8266","homebrew","nodemcu","temperature-control"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jalexandre0.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2016-12-07T19:50:14.000Z","updated_at":"2024-10-14T01:31:28.000Z","dependencies_parsed_at":"2023-09-11T16:17:52.858Z","dependency_job_id":null,"html_url":"https://github.com/jalexandre0/saci-temperature-controller","commit_stats":null,"previous_names":["jalexandre0/saci-temperature-controller"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jalexandre0%2Fsaci-temperature-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jalexandre0%2Fsaci-temperature-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jalexandre0%2Fsaci-temperature-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jalexandre0%2Fsaci-temperature-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jalexandre0","download_url":"https://codeload.github.com/jalexandre0/saci-temperature-controller/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253824018,"owners_count":21969950,"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":["beer","brew","brewing","esp8266","homebrew","nodemcu","temperature-control"],"created_at":"2024-10-03T21:43:32.146Z","updated_at":"2025-05-12T21:24:34.864Z","avatar_url":"https://github.com/jalexandre0.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SACI Temperature Controller\n\nSACI (Seu Amigo Cervejeiro Inteligente or Your Smart Brew Buddy in a quick translation) is a NODEMCU 1.0 (ESP8266 12-E)\ntemperature controller for homebrewing and beer fermentation.\n\nSACI was built using inexpensive parts available in any eletronic store (see the BoM and schematics bellow)\nand software was writen in C/C++ using arduino/genuino framework, so SACI is easy to build,\nand easier to hack.\n\n### Reliable behavior with new brains\nIf you are a homebrewer, the chances are you already know and relies on ON/OFF controllers (STC-1000 is a world wide example) to ferment your beer. SACI uses the same logic for control temperature and offers new possibilites, like data logging with IoT free services ( MatLab thingspeak.com ), automatic profile, responsive web interface and the chance to write your own plugin or interface.   \n\n### Automatic profile\nSACI was built with **set and forget mindset**. You plug it in your fridge, adjust target temperature,\ncreate a profile for the next two weeks and done. You can do other tasks and SACI will evaluate\ntime using NTP and adjust your target temperature based on your profile.\n\n### Clean and Responsive Web Interface\nWe don´t like bloated interfaces, so we choose to keep it clean and 100% browser ready.\nSACI has an responsive interface, beautiful in any device. Nothing to install, just point\nyour PC or smartphone to SACI IP address and configure it.\n\n### Over the air updates\nHas your SACI laying behind your fridge and you are not in the mood to push it just for a small update?\nNo problem. SACI has Over The Air enabled at boot, so you can code and update directly from your notebook or desktop.\n\n### Arduino/Genuino IDE Compatible\nYou already use Arduino/Genuino Framework to write your own code and want write your own plugin using it?\nNo problem. The code is compatible with Arduino/ESP8266 language and IDE. No additional software required.   \n\n### Easy to build and hack\nAnyone armed with soldering wire and a dozen of components can build and modify SACI hardware, and,\nbecause of arduino/genuino framework, everyone can write plugins in a couple of hours.\nIn fact, SACI already has plugins for MatLab Thingspeak services, influxDB time series database\nand a draft for Rsyslog integration (Some work is needed here).\n\n### HTTP POST config and json responses\nAll the configuration is passed to SACI over URL encoded post, so, if you know how to manipulate this, you are able to create your own interface e/or dashboard to view your brew status.\n\n###Everyone loves MQTT\nJust push information to your smartphone or desktop using one of bazillions free MQTT dashboards and public brokers around the internet.\n\n### Plugin Ready\nAlready have a working code for **\u003cinsert your favorite IoT provider here\u003e** and\nwant to put it in SACI?\n\nJust get your code and put it inside plugins directory and insert your function inside main loop,\nand your plugin is ready to work. SACI was sectioned to enclose things to need be enclosed together,\ncreating a easy to maintain and less fragmented code.\n\n### Built with ESP8266\nThe chip behind SACI is the well beloved ESP8266 (12E).\nNodeMCU in a protoboard or a full production-ready PCB layout with fancy  SMD components.\nWeeMos or generic devkit boards, does not matter. Its ESP8266 after all.\n\n# Hardware Build Instructions\n### Schematics\nShame on me here!\nI don´t have the skills to write eletronic diagrams and schematics for other people, and don´t have time or will to overcome this. To be honest, I barelly can read my own schematics. If you decide to build your own PCB, you will found the etcheable layout, a totally messed up Fritzing file and this JPG file to help you with wiring diagram. Any help to improve this will be over-happily  welcomed. :)\n\n![Image of wiring diagram](http://drive.google.com/uc?export=view\u0026id=0B24GFOLAe1WGemEtNUNNVUNDblk)\n\n**PS: Works on 127v or 220v**\n\n\n### Bill Of Materials\n- 1x nodeMCU 1.0 or ESP8266-12E chip/board\n- 2x 15 pin female header (single row)\n- 2x BC546 NPN Transistors or equivalent\n- 2x 1n4148 Zenner Diode  or equivalent\n- 2x 5V coil relay (10A) or SSR\n- 2x 2 pin screw terminals\n- 1x 3 pin screw terminal\n- 1x 4.7K resistor (1/4W)\n- 1x DS18B20 temperature sensor\n- (OPTIONAL) Another DS18B20 for fridge temperature\n- 2x power sockets for fridge and heat element\n- 1x plastic case of your preference (or none...)\n- Materials for soldering, PCB build and wires\n\n# Software Build Instructions\n### Dependencies\n- [OneWire](https://github.com/PaulStoffregen/OneWire)\n- [DallasTemperature](https://github.com/milesburton/Arduino-Temperature-Control-Library)\n- [NtpClient](https://github.com/arduino-libraries/NTPClient)\n- [PubSubClient](https://github.com/knolleary/pubsubclient)\n\n### PlatformIO\n- Clone this repository\n- On PlatformIO menu, click on \"Open Project Folder\" and select repository folder\n- On PlatformIO menu, click on \"Initialize or Update PlatformIO Project\"\n- Choose NodeMCU 1.0 and click process\n- Update your platformio.ini file as bellow\n\n```\n[env:nodemcuv2]\nplatform = espressif8266\nframework = arduino\nboard = nodemcuv2\nbuild_flags = -Wl,-Tesp8266.flash.4m1m.ld\nboard_f_cpu = 160000000L\n#Platform.io seems to auto detect port in some systems. \n#if not, specify your com port. \n#upload_port = /dev/ttyUSB0\nlib_deps =\n  OneWire\n  DallasTemperature\n  NTPClient\n  PubSubClient\n```\n\n- Create your 'src/config.h' file (use 'src/config.sample.h' as example)\n- Enable/Disable desired plugins on config.h\n- Build main image and upload\n- Build SPIFFS filesystem and upload.\n- Find your address using serial monitor\n- Access and configure\n\n### Arduino IDE\n- Install ESP8266 support as described [here](https://github.com/esp8266/Arduino)\n- Install the dependencies using Arduino Library Manager or download and by yourself\n- Rename 'saci-temperature-controller/src/main.cpp' to 'src.ino'\n- Copy all h and cpp files from plugins folder to src folder\n- Open src.ino file\n- Create and edit config.h file (use config.sample.h as example)\n- Fix path errors on CPP/H files in plugins directory\n- Select NodeMCU 1.0 as board\n- Select 160Mhz CPU Frequency\n- Select Flash Size 4M (3M SPIFFS)\n- Select Upload speed 115200\n- Build the software\n- Deploy firmware and filesystem using OTA ou USB port\n\n### CLI\nYou can build SACI in any operating system with support to  Python 2.7 and [PlatformIo-Core.](http://docs.platformio.org/en/stable/core.html)\nThe instructions bellow are tested headless Raspeberry PI with latest raspbian distro.\n\nCheck the [docs](http://docs.platformio.org/en/stable/installation.html#installation) if the method bellow do not work for you.\n\n\n```\n$ sudo apt-get install python-pip\n  #Fix errors about requests\n$ rm -rf /usr/local/lib/python2.7/dist-packages/requests*\n$ sudo -i pip install -U platformio\n$ git clone https://github.com/jalexandre0/saci-temperature-controller.git\n$ cd saci-temperature-controller\n$ cp src/config.sample.h /src/config.h\n$ vim src/config.h\n$ platformio run -t upload\n$ platformio run -t uploadfs\n\n```\n\n# Help and todo\n- Improve software build instructions\n- Write eletronic diagrams that people can read and follow\n- Review hardware and schematics to improve safety\n- ~~Test any CLI build mode~~\n- Fix typos and spelling errors\n- Save and load profiles by name\n- Fix / Clean up / review code\n- Test and write instructions for Farenheit temperature\n- Test or port the code for atmel hardware (arduino/genuino based boards)\n- Run other algorithms outside the hardware (slave mode)\n- Improve HTTP api\n- Add continuous integration\n- Add unit tests\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjalexandre0%2Fsaci-temperature-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjalexandre0%2Fsaci-temperature-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjalexandre0%2Fsaci-temperature-controller/lists"}