{"contributors":[],"created":"2023-10-17T19:55","description":"Make Zurich is a community event organized by the Open Network Infrastructure Association & partners","homepage":"https://makezurich.ch/start/","keywords":["dribdat","hackathon","co-creation"],"licenses":[{"name":"ODC-PDDL-1.0","path":"http://opendatacommons.org/licenses/pddl/","title":"Open Data Commons Public Domain Dedication & License 1.0"}],"name":"event-5","resources":[{"data":[{"boilerplate":"### &#128640; Let's launch your idea!\r\n\r\nWrite a **Title** and short **Summary**, select a **Template** if one is available, or use the **Readme** link to fetch content from an [open repository](https://dribdat.cc/sync.html). \r\n\r\n_Need more help?_ Get in touch with the organising team, or raise [an issue](https://github.com/dribdat/dribdat/issues).\r\n","certificate_path":"","community_embed":"<p> <img style=\"float:left; margin-right:1em; border-width:0; height:2em\" alt=\"Creative Commons CC-BY logo\" src=\"https://i.creativecommons.org/l/by/4.0/88x31.png\" /> The contents of this website, unless otherwise stated, are shared<br> under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\" target=\"_blank\">Creative Commons Attribution 4.0 License</a>.</p>\r\n\r\n<p>Everyone at the event is required to agree with our <a href=\"https://makezurich.ch/guidelines\" target=\"_blank\">Code of Conduct</a>: <h1 class=\"text-center\">Be excellent to each other!</h1></p>\r\n\r\n<center class=\"footer-block\" style=\"margin-top:2em\">\r\n<p>A community event organized by<br/><br/>\r\n <a href=\"https://www.stadt-zuerich.ch\" target=\"_blank\"><img src=\"https://www.stadt-zuerich.ch/content/dam/stzh/corpdesign/wortbildmarken/logo_stzh_rgb_blau_digital.svg\" style=\"margin-top:25px\" height=\"60\"></a><a href=\"https://opennetworkinfrastructure.org/\" target=\"_blank\"><img src=\"https://makezurich.ch/images/logo-onia.png\" hspace=\"40\" height=\"60\"></a>\r\n</p></center>","community_url":"https://twitter.com/hashtag/MakeZurich","custom_css":".modal-body img { max-width: 100%; }\r\n\r\nbody { background-color: #cadaea; }\r\nbody.event-home {\r\n  background: url(https://makezurich.ch/images/background.jpg) no-repeat top right;\r\n  background-size: cover;\r\n}","description":"Welcome to [Dribdat](https://dribdat.cc/usage): the official, 100% open challenge platform of MakeZurich! Please make sure that you [have registered](https://makezurich.ch/register) for a ticket. Then you can create [an account here](https://now.makezurich.ch/register), or - even better - join the TTN-CH Slackand use [one login](https://now.makezurich.ch/oauth/login) to connect with **The Things Network** \ud83c\udde8\ud83c\udded Switzerland community.\r\n\r\n<img src=\"https://utou.ch/is/copenlaben/wegweiser.svg\" height=30><br>\r\n\r\n- Look up key dates and times in [the Schedule](https://makezurich.ch/#schedule)\r\n- Check [Getting Started](https://makezurich.ch/start/) and the [Dribdat Guide](https://makezurich.ch/dribdat/)\r\n- Ask us a question in [#makezurich-help](https://ttn-ch.slack.com/archives/CBFN8206M)\r\n- Be old fashioned & [send us an e-mail](mailto:info@makezurich.ch) ","ends_at":"2023-06-10T16:00","gallery_url":"https://makezurich.ch/images/front/background.jpg","has_finished":true,"has_started":false,"hashtags":"#makezurich","hostname":"EWZ - Oerlikon","id":5,"instruction":"# INPUT\r\n\r\n- [Introduction slides](https://docs.google.com/presentation/d/e/2PACX-1vQ_rJhymuehjes7nyTytpXqXC372I5J_Ad2J7AtwN0Yfg02bcbzWDlzDszVnoRkwMNooBD2IegdClAP/embed?start=false&loop=false&delayms=3000) (Google Slides)\r\n- [Challenges recording](https://www.youtube-nocookie.com/embed/ykVG2YrECY4) (YouTube)\r\n\r\n# OUTPUT\r\n\r\n- [Michele's post](https://www.linkedin.com/comm/feed/update/urn%3Ali%3Aactivity%3A7073887896591585280)\r\n- [Francesca's data](https://docs.google.com/presentation/d/1vcP3hme-DaEu3rad_BgD4atAxqI_gNtiihzhsYF_qmw/edit?usp=sharing)\r\n- [Francesca's photo share](https://drive.google.com/drive/folders/1iTjkW0vb2DpS2-st7UKLaKLQ7R_WBNut?usp=share_link)\r\n- [Gonzalo's photos](https://photos.app.goo.gl/Psd6zGftK4gQ2gJ96)\r\n- [Federico & Oleg's photos](https://photos.app.goo.gl/XTrGDvg6uSxLYNiCA)\r\n- [Oleg's blog post](https://blog.datalets.ch/091/)\r\n","location":"Stadt Z\u00fcrich","logo_url":"https://makezurich.ch/images/logo/logo-inv-2023.png","name":"Make Zurich 2023","starts_at":"2023-06-02T09:00","summary":"Make Zurich is a community event organized by the Open Network Infrastructure Association & partners","webpage_url":"https://makezurich.ch/start/"}],"name":"events"},{"data":[{"autotext":"## #MakeZurich 2023 Badge\r\n\r\n## Pinout\r\n![](https://raw.githubusercontent.com/makezurich/makezurich-badge-2023/main/makezurich2023-badge-pinout.png)\r\n\r\n## PSU\r\n* Adafruit Feather LiPo circuit\r\n\r\n## IO\r\n* LoRa E5\r\n* Shitty Addon\r\n* Cover connectors \r\n* Grove connectors\r\n\r\n## Resources\r\n\r\n### CircuitPython\r\nhttps://github.com/makezurich/badge2023-circuitpython\r\n\r\nhttps://github.com/todbot/circuitpython-tricks\r\n\r\nhttps://www.circuitpython.org\r\n\r\n### LoRa E5\r\nhttps://wiki.seeedstudio.com/Grove_LoRa_E5_New_Version/\r\n\r\nhttps://www.hackster.io/sidikalamini/grove-lora-e5-p2p-communication-using-circuitpython-f970e6\r\n\r\nhttps://files.seeedstudio.com/products/317990687/res/LoRa-E5%20AT%20Command%20Specification_V1.0%20.pdf\r\n\r\n#### Version\r\n| title | date | author | id | mainfont | toc | toc-depth |\r\n| --- | --- | --- | --- | --- | --- | --- |\r\n|\"Badge\"|2022-09-20|Tillo|20220920183855|Cochin|true|2|\r\n|\"Badge\"|2023-04-24|Fede|?|Cochin|true|2|\r\n|\"Badge\"|2023-05-12|Fede|?|Cochin|true|2|\r\n","autotext_url":"https://github.com/makezurich/makezurich-badge-2023","category_id":"","category_name":"","contact_url":"https://github.com/makezurich/makezurich-badge-2023/issues","created_at":"2023-06-12T07:48","download_url":"https://github.com/makezurich/makezurich-badge-2023/releases","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"You can find all the specifications of the MakeZurich 2023 Badge here:\r\n\r\nhttps://github.com/makezurich/makezurich-badge-2023\r\n\r\n### Making-Of\r\n\r\nhttps://youtu.be/ykVG2YrECY4?t=4608\r\n\r\nSlides: http://www.tamberg.org/makezurich/2023/MakeZurichBadge2023.pdf\r\n\r\n### See also\r\n\r\nhttps://now.makezurich.ch/project/96","hashtag":"","id":95,"image_url":"https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/NL8U46H2TT4QHV9TBI0I4D0S/IMG_20230609_10182901.jpeg","is_challenge":false,"is_webembed":true,"logo_color":"","logo_icon":"","longtext":"You can find all the specifications of the MakeZurich 2023 Badge here:\r\n\r\nhttps://github.com/makezurich/makezurich-badge-2023\r\n\r\n### Making-Of\r\n\r\nhttps://youtu.be/ykVG2YrECY4?t=4608\r\n\r\nSlides: http://www.tamberg.org/makezurich/2023/MakeZurichBadge2023.pdf\r\n\r\n### See also\r\n\r\nhttps://now.makezurich.ch/project/96","maintainer":"tamberg","name":"MakeZurich 2023 Badge","phase":"Share","progress":50,"score":85,"source_url":"https://github.com/makezurich/makezurich-badge-2023","stats":{"commits":14,"during":14,"people":3,"sizepitch":311,"sizetotal":1351,"total":18,"updates":15},"summary":"Repo for the badge, hardware, software and examples.","team":"tamberg, federico_vanzati, tillo_bosshart","team_count":3,"updated_at":"2023-06-13T06:32","url":"https://now.makezurich.ch/project/95","webpage_url":"https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/NXXZWJA7566AGH3FKBGH2VXH/compressed_PDF_file.pdf"},{"autotext":"# EnyBoty (energy-assistant)\r\n\r\n[Make Zurich challenge](https://makezurich.ch/start/3/) \"Develop a chatbot that draws attention, is fun to use, and helps to save energy.\"\r\n\r\n## Use-Cases\r\n\r\nThere are two different uses-cases outlined in the presentation:\r\n\r\n---\r\n\r\n### Advice from a Website Use-case\r\n\r\n![Advisor Chatbot](https://raw.githubusercontent.com/derrickoswald/EnyBoty/main//assets/advice-use-case.png \"Advise from a web site use-case\")\r\n\r\n    As a user of the ewz web site,\r\n    I want to have access to an energy assistant chat-bot, \r\n    so that I can get relevant answers to my questions outside of office hours.\r\n\r\n---\r\n\r\n### Smart Home Hub Plugin Use-case\r\n\r\n![Expert Chatbot](https://raw.githubusercontent.com/derrickoswald/EnyBoty/main//assets/smart-controller-module.png \"Smart Hub plug-in use-case\")\r\n\r\n    As a sophisticated user of smart home hubs and devices,\r\n    I want to be able to incorporate a smart home energy assistant, \r\n    so that I can optimize my control and cost saving strategies.\r\n\r\n---\r\n\r\n## Advice from a Website Interaction Diagram\r\n\r\n![Advisor Chatbot Interaction](https://raw.githubusercontent.com/derrickoswald/EnyBoty/main//assets/advice-interaction-diagram.jpg \"Advice from a web site interaction diagram\")\r\n\r\n\r\n- On [ewz site page load](https://www.ewz.ch/de/private/strom/strom-sparen/energiespartipps.html)\r\na [UserScript](https://en.wikipedia.org/wiki/Userscript) runs in the browser to augment the **Beratung** section with a chatbot button.\r\n- The user clicks the button, which opens a form in the lower right corner of the browser window.\r\n- The user enters text into the form prompt area and clicks submit.\r\n- Javascript attached to the form performs a [Cross Origin Resource Sharing (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest)\r\nto a [Node.js server](https://nodejs.org/en/about) that has been pre-configured with [Large Language Model (LLM) prompts](https://platform.openai.com/examples/default-factual-answering?lang=node.js) to be an energy assistant.\r\n- The Node.js server submits a formatted Chat Completions API request to OpenAI.\r\n- The result is unpacked by the Node.js server and returned as the result of the XMLHttpRequest to the browser client.\r\n- Javascript on the client browser displays the result text and loops to request the next prompt.\r\n\r\nFor the \"Advice from a Website\" use-case, the current status is a proof of concept:\r\n- a basic userscript that sends a prompt to the back-end server\r\n- a back-end server component that can interact with the OpenAI chat model using the Langchain framework\r\n- a preliminary set of prompts to make the OpenAPI chatGPT software into an energy assistant\r\n\r\nHere is the link to the [raw userscript](https://github.com/derrickoswald/energy-assistant/raw/main/client/Energy%20Assistant.user.js)\r\nfrom github (otherwise it's a piece of shit web display of the actual file)\r\nthat you would need to install in Tampermonkey or Greasemonkey in your browser\r\n**in addition to a locally running server component (hardcoded localhost)**.\r\n\r\n\r\n## Smart Home Hub Plugin Whiteboard\r\n\r\n![Smart Home Hub Plugin Whiteboard](https://raw.githubusercontent.com/derrickoswald/EnyBoty/main//assets/whiteboard.jpg \"whiteboard concept\")\r\n\r\n## Start Simple\r\n\r\n![Smart Home Hub Plugin Architecture](https://raw.githubusercontent.com/derrickoswald/EnyBoty/main//assets/architecture.svg \"architecture diagram\")\r\n\r\nVarious devices in the home are periodically sending messages to The Things Network (TTN).\r\nThis produces a time series of \"measurements\" or a body of \"documents\" depending on how you look at it.\r\n\r\nThe ChatBot is configured with an [API Chain](https://js.langchain.com/docs/modules/chains/other_chains/api_chain) which is a textual \"paste\" of the HTTP endpoint API specification and\r\na (templated) question that should produce a HTTP fetch of the data based on the text documentation (here there be magic).\r\n\r\nAlternatively, all the documents could be fed into the ChatBot as an [Index Chain](https://js.langchain.com/docs/modules/chains/index_related_chains/document_qa) and then queried via a suitable question.\r\n\r\nThe end result should allow a user to interact with a ChatBot and request information about the IoT\r\ndevices in their home.\r\n\r\n### Evaluation\r\n\r\nThe use of the [API Chain](https://js.langchain.com/docs/modules/chains/other_chains/api_chain) method is problematic for three reasons:\r\n\r\n1. The text needed to describe the TTN API that would fetch IoT data is fairly large, which is what you pay for with the [OpenAI revenue model](https://openai.com/pricing). For the stupid example code we used, the breakdown is 897 prompt + 65 completion = 962 tokens or about 0.2&cent; per call (or up to 30 times that for the GPT-4 model). The Things Stack is just gnarly and complex. The specification of the API via text, as could be scraped from the [overview](https://www.thethingsindustries.com/docs/the-things-stack/interact/api/) and [The Things Stack API Reference](https://www.thethingsindustries.com/docs/reference/api/) includes many subtleties regarding authentication headers, field codes, JSON message bodies, etc. so that the entire textual description of the API could be on the order of tens of thousand of tokens, which makes the cost prohibitive.\r\n\r\n2. The use of the TTN API to fetch IoT data required enabling the [storage integration](https://www.thethingsindustries.com/docs/reference/api/storage_integration/), which means The Things Network is the point of storage for the data. This is not correct usage really, since the intent is just to transmit IoT messages as a pipeline.\r\n\r\n3. The use of the OpenAI ChatBot mechanism to do the low level fetching of IoT data is an impedance mismatch. That is it's using a sledge hammer to do the job of a scalpel. It is an illustrated case of the adage \"When you have a hammer, everything looks like a nail.\"\r\n\r\n## Architecture 2\r\n\r\n![econd Smart Home Hub Plugin Architecture](https://raw.githubusercontent.com/derrickoswald/EnyBoty/main//assets/architecture2.svg \"second architecture diagram\")\r\n\r\nWe add a bash scripting integrator program to read from The Things Network and send to the ChatBot as a message:\r\n\r\n    \"Please remember this IoT JSON from my device:\" + json\r\n\r\n### Evaluation\r\n\r\nThe initial few messages from the IoT are accepted by the ChatBot and one can ask questions about them using the \r\ninitial client interface. However, after the first few messages, the process fails.\r\n\r\nWe ran out of time.\r\n\r\n","autotext_url":"https://github.com/derrickoswald/EnyBoty/blob/main/README.md","category_id":51,"category_name":"3. Energy Assistant","contact_url":"https://ttn-ch.slack.com/archives/C05BTGN64CA","created_at":"2023-06-09T10:14","download_url":"https://github.com/derrickoswald/EnyBoty/releases","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"https://youtu.be/ykVG2YrECY4?t=2351\r\n\r\nhttps://github.com/derrickoswald/EnyBoty/EnyBoty.odp\r\n","hashtag":"","id":91,"image_url":"https://raw.githubusercontent.com/derrickoswald/EnyBoty/main//assets/architecture2.svg","is_challenge":false,"is_webembed":false,"logo_color":"","logo_icon":"","longtext":"https://youtu.be/ykVG2YrECY4?t=2351\r\n\r\nhttps://github.com/derrickoswald/EnyBoty/EnyBoty.odp\r\n","maintainer":"derrickoswald","name":"EnyBoty","phase":"Get","progress":10,"score":71,"source_url":"https://github.com/derrickoswald/EnyBoty","stats":{"commits":33,"during":48,"people":2,"sizepitch":91,"sizetotal":6730,"total":48,"updates":45},"summary":"A chatbot that is fun to use and helps to save energy.","team":"derrickoswald, rac2030","team_count":2,"updated_at":"2023-06-12T08:13","url":"https://now.makezurich.ch/project/91","webpage_url":""},{"autotext":"MakeSelfie\r\n---\r\n\r\nA MakeZurich 2023 hackathon project to explore ideas with embedded hardware and quantified self.\r\n\r\nSee https://now.makezurich.ch/project/89\r\n\r\n# Installation\r\n\r\nYou need to have tkinter on your system:\r\n\r\nIn Arch, Tk is available in the Arch repository. You don't need aur for this, just type on the terminal:\r\n\r\n`sudo pacman -S tk`\r\n\r\nIf you are on a Debian, Ubuntu or another Debian-based distro, just type on the terminal:\r\n\r\n`sudo apt-get install tk`\r\n\r\nOn Fedora:\r\n\r\n`sudo dnf install tk`\r\n\r\nPossibly some other dependencies... let us know if you have trouble here!\r\n\r\n## Run the Python program\r\n\r\nMake sure you have Python 3.10+ and [Poetry](https://python-poetry.org/docs/) installed, then:\r\n\r\n`poetry install`\r\n\r\nOr use your virtual environment manager (venv etc.) of choice, e.g.:\r\n\r\n```\r\npipenv shell\r\npip3 install -r requirements.txt\r\n```\r\n\r\nTo get dependencies, and finally:\r\n\r\n`python selfie.py`\r\n\r\nTo fire up the app!\r\n\r\n## Set up your badge\r\n\r\nCopy the `code.py` file to your MakeZurich badge.\r\n\r\nChange the username to your account on https://now.makezurich.ch\r\n\r\nConnect or reset the badge while your Python program is running to generate a selfie.\r\n\r\n\r\n# License\r\n\r\nOpen source under the [MIT License](LICENSE)\r\n","autotext_url":"https://github.com/loleg/MakeSelfie","category_id":53,"category_name":"5. Open Challenge","contact_url":"https://ttn-ch.slack.com/archives/C05AQK7SJDR","created_at":"2023-06-09T06:54","download_url":"https://github.com/loleg/MakeSelfie/releases","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"A quick and fun \"minimal\" idea. See also the backstory on [Oleg's blog](https://blog.datalets.ch/091/).\r\n\r\nhttps://youtu.be/ykVG2YrECY4?t=3403\r\n\r\nLike many good things it started in [a workshop](https://md.coredump.ch/s/E3HiBiBCz#) at Bitw\u00e4scherei:\r\n\r\n![](https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/3ECPZOML5RZLWDR52OSAI43K/Screenshot_from_20230607_161205.jpg) \r\n\r\n(that's us with Urs and Kurt in the picture)\r\n\r\n## The idea\r\n\r\nPlug in your node, which at s...","hashtag":"#mz-openchallenge","id":89,"image_url":"https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/MKBF1ECDVXD01XHZWBIQ202B/ezgif.comgifmaker.gif","is_challenge":false,"is_webembed":false,"logo_color":"","logo_icon":"","longtext":"A quick and fun \"minimal\" idea. See also the backstory on [Oleg's blog](https://blog.datalets.ch/091/).\r\n\r\nhttps://youtu.be/ykVG2YrECY4?t=3403\r\n\r\nLike many good things it started in [a workshop](https://md.coredump.ch/s/E3HiBiBCz#) at Bitw\u00e4scherei:\r\n\r\n![](https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/3ECPZOML5RZLWDR52OSAI43K/Screenshot_from_20230607_161205.jpg) \r\n\r\n(that's us with Urs and Kurt in the picture)\r\n\r\n## The idea\r\n\r\nPlug in your node, which at some point does `print('<your_username>')` ...\r\n\r\n![](https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/T22A20U05ODVCSHE3HJXDZW3/Screenshot_from_20230610_165150.png) \r\n\r\nMonitor the [serial console](https://github.com/loleg/MakeSelfie/blob/main/badge-com.py) and generate a selfie, based on your [dribdat](https://dribd.at) [profile API](https://dribdat.cc/contribute.html#api-guide) data (e.g. [api/loleg](https://now.makezurich.ch/api/user/loleg)) ...\r\n\r\n![](https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/EBVKRD567073BL1RATXNTJH0/Screenshot_from_20230610_164846.jpg)\r\n\r\n(We use the forgiving [PySimpleGUI](https://github.com/PySimpleGUI) and [ImageIO](https://imageio.readthedocs.io/) to quickly whip up the screen above)\r\n\r\nhttps://github.com/PySimpleGUI/PySimpleGUI\r\n\r\nMake a GIF with some nice logos, in the future bake in some texts and [TTN graphs](https://now.makezurich.ch/project/13) ...\r\n\r\n![](https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/ML7EY5QEN2TCD1I7LNN6287V/IMG_20230610_134350.jpg)\r\n\r\n(We have lots of plans, you see)\r\n\r\nLastly, upload the whole thing as a Drib to our platform ...\r\n\r\n![](https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/4WL3PLDBGOCL941BGO3DVD8W/selfie.jpg) \r\n\r\nIn the future this can be really cool .. and shareable :)\r\n\r\n![](https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/LARSP5572GIKH25P7BE3CU28/Screenshot_from_20230610_165033.png) \r\n\r\n(The screenshot above was us playing with an [ASCII-rendering](https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/MKBF1ECDVXD01XHZWBIQ202B/ezgif.comgifmaker.gif) of the Webcam stream)","maintainer":"loleg","name":"MakeSelfie","phase":"Verify","progress":20,"score":60,"source_url":"https://github.com/loleg/MakeSelfie","stats":{"commits":8,"during":17,"people":2,"sizepitch":2285,"sizetotal":3608,"total":19,"updates":16},"summary":"A quantified selfie for participants of MakeZurich and other hacky events","team":"loleg, federico_vanzati","team_count":2,"updated_at":"2023-06-20T09:28","url":"https://now.makezurich.ch/project/89","webpage_url":""},{"autotext":"### Initial situation\r\nLandlords and gas companies have few incentive to reduce gas consumption. The more you consume, the more they earn. In the city of Zurich probably still more than 50% of the houses are heated by gas.\r\n\r\nAlso you usually get a feedback of your consumption once a year, with the annual bill. But to track your consumption and also reduce it, a neartime feedback and visualisation is helpful. Gas companies usually only check the gas meter 4 times a year and will also not provide the data to you for privacy reasons.\r\n\r\nExperiencing with weekly visualisations in the building I live, showed that 30% would easily possible if everyone would take their part.\r\n\r\n### Goal(s)\r\nImplement a low cost sensor which tracks the gas consumption from the gas meter. Such meters have different options for measuring consumption, from a luminicent digit to connectors to an internal bus system. Alternatively a LoRaWAN-ready add-on such as the [Cyble 5](https://www.itron.com/lam/solutions/product-catalog/cyble-5) could be used. They cost CHF ~100, but not sure what LoRaWAN they support.\r\n\r\n<img src=\"https://raw.githubusercontent.com/2ni/makezurich-gasconsumption/main//images/gasmeter.jpg\" width=\"600\" />\r\n\r\n<img src=\"https://raw.githubusercontent.com/2ni/makezurich-gasconsumption/main//images/gasmeter2.jpg\" width=\"300\" />\r\n\r\n\r\nThe sensor would send the current consumption to a server, where further analysis and visualisation can be done. As consumption heavily depends on the weather and temperature it would be wise to also track weather data from the region.\r\n\r\nA funny and playful visualisation would help the residents from the house to save CO2 and money.\r\n\r\nData could also be compared between houses on a larger scale, a very interesting data set for the city, to prioritize and stear the replacement of such heating in the city. If we know the number of appartments or total living space, a map could show which houses are well isolated and which ones would eg need some adjustments, or would be replaced first to have the biggest impact.\r\n\r\n<img src=\"https://raw.githubusercontent.com/2ni/makezurich-gasconsumption/main//images/zh.png\" width=\"600\" />\r\n\r\nThinking further the consumption could also be estimated for the future depending on weather forecast.\r\n\r\n### Some data\r\nI live in an (old) house with 3 residential appartments and 2 offices. Last winter we roughly consumed 13 tons of CO2 or 4000m3 of gas! For a certain period of time 2 parties where well motivated, which showed a reduction of 35% compared to last year. Later on, only one party was palying the game seriously, which still led to a reduction of 10%.\r\n\r\n<img src=\"https://raw.githubusercontent.com/2ni/makezurich-gasconsumption/main//images/gasconsumption-q4-2022.png\" width=\"600\" />\r\n\r\n\r\n### Useful links\r\n- use esp32+cam with OCR: https://github.com/jomjol/AI-on-the-edge-device (thx for the idea @Alex)\r\n- rpi pico classification: https://github.com/code2k13/rpipico_digit_classification\r\n- https://wiki.seeedstudio.com/Grove-Vision-AI-Module/\r\n- https://www.housing-stat.ch/de/query/adrtoegid.html\r\n- [Application note](https://www.st.com/resource/en/application_note/an4636-demonstration-of-lc-sensor-for-gas-or-water-metering-based-on-stm32l073zeval-and-stm32l476rgnucleo-boards-stmicroelectronics.pdf) from STMicroelectronics on how to build a inductive sensor to measure gas consumption\r\n- [commercial product](https://www.neovac.ch/verbrauch-fairer-machen) aiming to make the consumption fair\r\n","autotext_url":"https://github.com/2ni/makezurich-gasconsumption","category_id":53,"category_name":"5. Open Challenge","contact_url":"https://github.com/2ni/makezurich-gasconsumption/issues","created_at":"2023-06-01T19:53","download_url":"https://github.com/2ni/makezurich-gasconsumption/releases","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"https://youtu.be/ykVG2YrECY4?t=3619\r\n\r\nhttps://github.com/2ni/makezurich-gasconsumption","hashtag":"","id":80,"image_url":"https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/120/512D2WQTG9XAGBK4EXJAIQ1L/gasmeter.jpg","is_challenge":false,"is_webembed":true,"logo_color":"","logo_icon":"","longtext":"https://youtu.be/ykVG2YrECY4?t=3619\r\n\r\nhttps://github.com/2ni/makezurich-gasconsumption","maintainer":"2ni","name":"Check your gas consumption!","phase":"Get","progress":10,"score":56,"source_url":"https://github.com/2ni/makezurich-gasconsumption","stats":{"commits":12,"during":30,"people":5,"sizepitch":87,"sizetotal":3641,"total":31,"updates":25},"summary":"Track and compare your gas consumption across the city","team":"2ni, clange, adrian_rupp, pierre, HalilKuray","team_count":5,"updated_at":"2023-06-12T08:29","url":"https://now.makezurich.ch/project/80","webpage_url":"https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/QEDFOV8NTG0JF723KL8C89NN/compressed_PDF_file.pdf"},{"autotext":"# Termodin\u00e1mica\r\n\r\nOur contribution to the [MakeZurich 2023 hackathon](https://makezurich.ch/). You can see our contribution [here](https://sengerm.github.io/MakeZurich2023/termodinamica.html).\r\n","autotext_url":"https://github.com/sengerm/MakeZurich2023/","category_id":49,"category_name":"1. Energy Saving","contact_url":"https://ttn-ch.slack.com/archives/C3XSZ7NTF/p1686292052602819","created_at":"2023-06-03T13:21","download_url":"https://github.com/SengerM/MakeZurich2023/releases","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"The project aims to recover the thermal energy carried out by the water flowing into the drain and bring it back into the shower.\r\n\r\nhttps://youtu.be/ykVG2YrECY4?t=628\r\n\r\n[Presentation - Google Drive](https://docs.google.com/presentation/d/e/2PACX-1vTfces1D-4HwhHPczGrefiamAH9RSjf0ZfoYAZF0a121fp-L_5zS5mjY-v4CVQqiyie8LfFySJDWXVn/pub?start=false&loop=false&delayms=3000)","hashtag":"#termodinamica","id":82,"image_url":"https://sengerm.github.io/MakeZurich2023/media/1.svg","is_challenge":false,"is_webembed":true,"logo_color":"","logo_icon":"","longtext":"The project aims to recover the thermal energy carried out by the water flowing into the drain and bring it back into the shower.\r\n\r\nhttps://youtu.be/ykVG2YrECY4?t=628\r\n\r\n[Presentation - Google Drive](https://docs.google.com/presentation/d/e/2PACX-1vTfces1D-4HwhHPczGrefiamAH9RSjf0ZfoYAZF0a121fp-L_5zS5mjY-v4CVQqiyie8LfFySJDWXVn/pub?start=false&loop=false&delayms=3000)","maintainer":"mat\u00edas_senger","name":"Termodin\u00e1mica","phase":"Verify","progress":20,"score":44,"source_url":"https://github.com/SengerM/MakeZurich2023","stats":{"commits":5,"during":12,"people":2,"sizepitch":369,"sizetotal":599,"total":12,"updates":9},"summary":"Warmer showers using less hot water","team":"mat\u00edas_senger, ayelen_di_montezemolo","team_count":2,"updated_at":"2023-06-12T07:36","url":"https://now.makezurich.ch/project/82","webpage_url":"https://sengerm.github.io/MakeZurich2023/termodinamica.html"},{"autotext":"# Turn that light off!\r\n\r\nRepository for the [\"Turn that light off!\" project](https://now.makezurich.ch/project/90)\r\nof [Make Zurich 2023](https://makezurich.ch/).\r\n\r\n## The idea\r\n\r\n* Place light and motion sensors in a room.\r\n  * Currently only the light sensor has been implemented.\r\n* If the light sensor detects that the light is on but the motion sensor detects that nobody is in the room, then either a message is shown on a display (\"Turn the light off!\") or another visual message could be shown to the user, such as a red LED turning on.\r\n* The user then hae one minute of time to turn that light off.\r\n* If the user turns it off within the agreed time window (default to one minute), then they get a point in a yet to be defined leader board.\r\n* Once the user get ten points, then they can buy themselves an ice cream!\r\n\r\n## Tools\r\n\r\n* [Raspberry Pi Pico W](https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html)\r\n  * The \"blue\" Raspberry Pi Pico W sends **uplink** \u2b06\ufe0f messages to the TTN\r\n  * The \"purple\" Raspberry Pi Pico W receives **downlink** \u2b07\ufe0f messages from Adafruit IO\r\n* [CircuitPython](https://circuitpython.org/)\r\n* [The Things Network (TTN)](https://www.thethingsnetwork.org/)\r\n* [Adafruit IO](https://io.adafruit.com/)\r\n* [seedstudio Grove](https://wiki.seeedstudio.com/Grove_System/)\r\n* [Datasette](https://datasette.io/)\r\n\r\n## Tasks\r\n\r\n* [x] Set up \"blue\" Raspberry Pi Pico W with light sensor.\r\n* [x] Set up \"blue\" Raspberry Pi Pico W to send uplink data to the TTN.\r\n* [ ] Set up \"blue\" Raspberry Pi Pico W to show the intensity of the light sensor using the onboard Neopixels.\r\n* [x] Set up \"purple\" Raspberry Pi Pico W with light LCD display.\r\n* [x] Set up \"purple\" Raspberry Pi Pico W to connect to WiFi.\r\n* [x] Set up \"purple\" Raspberry Pi Pico W to subscribe to the `mz23` topic from the Adafruit IO MQTT broker.\r\n* [x] Install Datasette\r\n* [x] Visualize `mqtt.db` SQLite database with Datasette\r\n* [x] Develop `subscribe_to_ttn.py` Python script to subscribed to the MQTT TTN integration.\r\n* [x] Develop `subscribe_to_ttn.py` Python script to store the received data to a local SQLite database.\r\n* [x] Develop `publish_to_aio.py` Python script to read data from a local SQLite database.\r\n* [x] Develop `publish_to_aio.py` Python script to publish data to the Adafruit IO MQTT broker.\r\n* [ ] Dockerize the two Python scripts above.\r\n\r\n## Instructions\r\n\r\n### Datasette\r\n\r\n[Install Datasette](https://docs.datasette.io/en/stable/getting_started.html#using-datasette-on-your-own-computer) in your Python environment:\r\n\r\n```bash\r\npip install datasette\r\n```\r\n\r\nRun Datasette against a SQLite file on your computer using the following command:\r\n\r\n```bash\r\ndatasette mqtt.db\r\n```\r\n\r\nThen open your browser at [http://127.0.0.1:8001](http://127.0.0.1:8001).\r\n","autotext_url":"https://github.com/filippo82/mz2023-turn-that-light-off/blob/main/README.md","category_id":50,"category_name":"2. More Engagement","contact_url":"https://github.com/filippo82/mz2023-turn-that-light-off/issues","created_at":"2023-06-09T08:56","download_url":"https://github.com/filippo82/mz2023-turn-that-light-off/releases","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"https://youtu.be/ykVG2YrECY4?t=1615","hashtag":"#mz-moreeengagement","id":90,"image_url":"https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/133/R0HNV3K2M536Z3N78XT62SKI/180E980625D54D3492607FD4F6EE4880.JPEG","is_challenge":false,"is_webembed":false,"logo_color":"","logo_icon":"lightbulb","longtext":"https://youtu.be/ykVG2YrECY4?t=1615","maintainer":"filippo82","name":"Turn that light off! ","phase":"Find","progress":5,"score":42,"source_url":"https://github.com/filippo82/mz2023-turn-that-light-off","stats":{"commits":8,"during":23,"people":2,"sizepitch":35,"sizetotal":2963,"total":23,"updates":20},"summary":"Get a message if you left the light on in an empty room. If you turn the light off within a minute, you get a point!","team":"filippo82, KurtMarti","team_count":2,"updated_at":"2023-06-12T08:10","url":"https://now.makezurich.ch/project/90","webpage_url":""},{"autotext":"","autotext_url":"","category_id":49,"category_name":"1. Energy Saving","contact_url":"","created_at":"2023-06-10T11:46","download_url":"https://github.com/ilarikova/sunsync.git","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"_Solar energy optimisation using data, and IoT_\r\n\r\nhttps://youtu.be/ykVG2YrECY4?t=299\r\n\r\n[Slides - Google Drive](https://docs.google.com/presentation/d/1m4HYE8XJ3S1YqBwitpqzhl0iDR7TZU04rOvEW-PPwCI/edit?usp=sharing)\r\n\r\n**Introducing SunSync: Revolutionizing Solar Panel Optimization and Energy Efficiency**\r\n\r\nSunSync combines the power of AI and IoT to revolutionize solar panel installation and tracking systems. We unlock the full potential of solar energy by maximizing efficiency and output, ensu...","hashtag":"","id":92,"image_url":"","is_challenge":false,"is_webembed":true,"logo_color":"","logo_icon":"","longtext":"_Solar energy optimisation using data, and IoT_\r\n\r\nhttps://youtu.be/ykVG2YrECY4?t=299\r\n\r\n[Slides - Google Drive](https://docs.google.com/presentation/d/1m4HYE8XJ3S1YqBwitpqzhl0iDR7TZU04rOvEW-PPwCI/edit?usp=sharing)\r\n\r\n**Introducing SunSync: Revolutionizing Solar Panel Optimization and Energy Efficiency**\r\n\r\nSunSync combines the power of AI and IoT to revolutionize solar panel installation and tracking systems. We unlock the full potential of solar energy by maximizing efficiency and output, ensuring that your solar panels are always aligned to capture the maximum amount of sunlight.\r\n\r\nOur Solar Potential Analysis & Optimal Placement Algorithm takes into account crucial data such as energy consumption, sunlight availability, building characteristics, and geospatial information. By leveraging this data, our intelligent system optimizes panel positioning, tilt angles, and tracking, resulting in maximum energy generation and savings. We even strategically place panels alongside heat pumps to enhance efficiency and benefits.\r\n\r\nBut our innovation doesn't stop there. SunSync provides an intuitive Visualization and Decision Support Tool that seamlessly integrates analyzed data, offering optimal solar panel placement recommendations. Through interactive maps, graphs, and metrics, stakeholders can visualize solar potential, energy consumption, and potential cost savings.\r\n\r\nPublic engagement and awareness are core to our mission. SunSync's dashboard features customizable parameters and scenario exploration options, allowing users to tailor the analysis to their specific needs. Additionally, our tool showcases the potential impact of solar panels in your area, highlighting reduced carbon emissions and energy cost savings.\r\n\r\nTo address storage challenges, we incorporate IoT technology. Our IoT device combines photovoltaic panels with heat pumps, enabling surplus energy utilization. By redistributing excess energy within the community, we foster a sustainable and collaborative energy ecosystem.\r\n\r\nWith SunSync, you not only optimize your solar panel system, but you also gain valuable insights into your energy consumption patterns. Our user-friendly interface provides seamless monitoring, control, and real-time issue detection and resolution.\r\n\r\nJoin us in the solar revolution and experience the future of clean energy optimization with SunSync. Let's harness the power of data and IoT to unlock the full potential of solar energy, driving down costs, reducing carbon footprint, and making a meaningful impact on the environment.\r\n\r\nTogether, let's shape a greener and more sustainable future.\r\n","maintainer":"selin_arpaci","name":"Sunsync","phase":"Find","progress":5,"score":33,"source_url":"","stats":{"commits":0,"during":17,"people":2,"sizepitch":2623,"sizetotal":2677,"total":17,"updates":14},"summary":"Harnessing the Power of the Sun for Sustainable Future ","team":"selin_arpaci, julia_larikova","team_count":2,"updated_at":"2023-06-12T07:29","url":"https://now.makezurich.ch/project/92","webpage_url":"https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/0ESHXWH4TKV8FF00O01YXOFE/compressed_PDF_file.pdf"},{"autotext":"","autotext_url":"","category_id":50,"category_name":"2. More Engagement","contact_url":"https://ttn-ch.slack.com/archives/C05B0CDC9TR","created_at":"2023-06-07T16:32","download_url":"","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"https://youtu.be/ykVG2YrECY4?t=1956\r\n\r\n\ud83d\udcce [Pitch HealthiAir.pdf](https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/145/4ZFW6CDAHZTJL71YT8TP0507/Pitch_HealthiAir.pdf)","hashtag":"","id":84,"image_url":"https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/2E29IK4ZFAWHVDZG2UWYXEYI/Screenshot_from_20230613_083447.jpg","is_challenge":false,"is_webembed":true,"logo_color":"","logo_icon":"","longtext":"https://youtu.be/ykVG2YrECY4?t=1956\r\n\r\n\ud83d\udcce [Pitch HealthiAir.pdf](https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/145/4ZFW6CDAHZTJL71YT8TP0507/Pitch_HealthiAir.pdf)","maintainer":"leos_urbanek","name":"healthiAir","phase":"Get","progress":10,"score":32,"source_url":"https://github.com/healthiair/healthiair-firmware","stats":{"commits":0,"during":12,"people":3,"sizepitch":197,"sizetotal":295,"total":13,"updates":9},"summary":"Optimise indoor air quality, while minimising energy loss through efficient airing recommendations","team":"leos_urbanek, Kenny, daniel","team_count":3,"updated_at":"2023-06-13T06:35","url":"https://now.makezurich.ch/project/84","webpage_url":"https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/145/4ZFW6CDAHZTJL71YT8TP0507/Pitch_HealthiAir.pdf"},{"autotext":"","autotext_url":"","category_id":"","category_name":"","contact_url":"","created_at":"2023-06-03T12:59","download_url":"","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"We are trying to make it easy for developers to create applications which can access any IoT device around the city. Owners of IoT devices can make their devices accessible to others while maintaining control over them by specifying the access policies that they want to enforce.\r\n\r\nhttps://youtu.be/ykVG2YrECY4?t=4160\r\n\r\nSource code of application used to expose the devices in a uniform way: \r\n\r\nhttps://github.com/omnia-network/omnia-gateway/tree/ttn_integration \r\n\r\nThe repo of the application ac...","hashtag":"","id":81,"image_url":"","is_challenge":false,"is_webembed":false,"logo_color":"","logo_icon":"","longtext":"We are trying to make it easy for developers to create applications which can access any IoT device around the city. Owners of IoT devices can make their devices accessible to others while maintaining control over them by specifying the access policies that they want to enforce.\r\n\r\nhttps://youtu.be/ykVG2YrECY4?t=4160\r\n\r\nSource code of application used to expose the devices in a uniform way: \r\n\r\nhttps://github.com/omnia-network/omnia-gateway/tree/ttn_integration \r\n\r\nThe repo of the application accessing the devices in the network: \r\n\r\nhttps://github.com/Luca8991/makezurich2023-save-energy-app\r\n","maintainer":"massimo","name":"Make IoT devices easily accessible to others","phase":"Get","progress":10,"score":30,"source_url":"","stats":{"commits":1,"during":8,"people":2,"sizepitch":598,"sizetotal":702,"total":10,"updates":7},"summary":"IoT devices are everywhere. More people should be able able to benefit from them. We make this possible.","team":"massimo, ilbert","team_count":2,"updated_at":"2023-06-14T14:46","url":"https://now.makezurich.ch/project/81","webpage_url":""},{"autotext":"This project was created within 2 days at the Marke Zurich Hackathon 2023. It was renamed to EWZ Companion as we worked more towards a clear solution :)\r\n\r\nIt was built using the boilerplate chrome extension tool: https://github.com/lxieyang/chrome-extension-boilerplate-react\r\n\r\nFor the first MVP we used data from www.topten.ch, could be extended with: https://eprel.ec.europa.eu/screen/product/refrigeratingappliances2019\r\n\r\n1. Install node > version 18\r\n2. Because of an open hot reload issue in the library I was using you need to launch directly in prod mode\r\n3. Run chrome extension with: NODE_ENV=production npm run build\r\n4. Load extension in chrome: https://developer.chrome.com/docs/extensions/mv3/getstarted/development-basics/#load-unpacked\r\n5. Test it on the following URL as detecting a product is hardcoded: https://www.fust.ch/de/search.html?searchtext=k%C3%BChlschrank\r\n\r\n<img width=\"1662\" alt=\"example\" src=\"https://github.com/rburkard/romzzy/assets/66911602/a6071f76-915d-4cb9-a110-91a8e90bb08d\">\r\n","autotext_url":"https://github.com/rburkard/romzzy","category_id":50,"category_name":"2. More Engagement","contact_url":"https://github.com/rburkard/romzzy/issues","created_at":"2023-06-08T11:35","download_url":"https://github.com/rburkard/romzzy/releases","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"https://youtu.be/ykVG2YrECY4?t=969\r\n\r\n## Contact\r\n\r\n`roman.burkard at gmail.com`","hashtag":"","id":87,"image_url":"https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/G26X65YDALVD2TVT2F31HUXZ/Screenshot_from_20230613_083603.jpg","is_challenge":false,"is_webembed":true,"logo_color":"","logo_icon":"","longtext":"https://youtu.be/ykVG2YrECY4?t=969\r\n\r\n## Contact\r\n\r\n`roman.burkard at gmail.com`","maintainer":"r_b","name":"EWZ Companion","phase":"Find","progress":5,"score":28,"source_url":"https://github.com/rburkard/romzzy","stats":{"commits":4,"during":7,"people":1,"sizepitch":80,"sizetotal":1181,"total":8,"updates":6},"summary":"A companion that helps you make more energy efficient decisions in online shopping.","team":"r_b","team_count":1,"updated_at":"2023-06-13T06:36","url":"https://now.makezurich.ch/project/87","webpage_url":"https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/15/LIMR26Q5L3UJGP9RHBYS59CS/compressed_PDF_file.pdf"},{"autotext":"","autotext_url":"","category_id":53,"category_name":"5. Open Challenge","contact_url":"","created_at":"2023-06-09T05:52","download_url":"","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"https://youtu.be/ykVG2YrECY4?t=3001\r\n\r\n\ud83d\udcce [MakeZurich_Smart_Fountains_Pitch_V1.pdf](https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/11192/F6J2BU240GASPSKGG8I9WHLU/MakeZurich_Smart_Fountains_Pitch_V1.pdf)\r\n\r\n![ Screenshot ](https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/11192/CG6M4836RQ6ZQA4PFORVX4J7/Screenshot_20230611_215522.png)","hashtag":"","id":88,"image_url":"","is_challenge":false,"is_webembed":true,"logo_color":"","logo_icon":"","longtext":"https://youtu.be/ykVG2YrECY4?t=3001\r\n\r\n\ud83d\udcce [MakeZurich_Smart_Fountains_Pitch_V1.pdf](https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/11192/F6J2BU240GASPSKGG8I9WHLU/MakeZurich_Smart_Fountains_Pitch_V1.pdf)\r\n\r\n![ Screenshot ](https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/11192/CG6M4836RQ6ZQA4PFORVX4J7/Screenshot_20230611_215522.png)","maintainer":"michele_bolla","name":"Smart fountains","phase":"Find","progress":5,"score":28,"source_url":"","stats":{"commits":0,"during":6,"people":2,"sizepitch":402,"sizetotal":512,"total":17,"updates":14},"summary":"Context-aware fountains to support the city saving water, energy and contribute alleviating urban heat islands","team":"michele_bolla, thorsten_ulbricht","team_count":2,"updated_at":"2023-06-12T08:15","url":"https://now.makezurich.ch/project/88","webpage_url":"https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/11192/NR2DO5SJJ9GRA696PU44VHXG/MakeZurich_Smart_Fountains_Pitch_V1.pdf"},{"autotext":"","autotext_url":"","category_id":50,"category_name":"2. More Engagement","contact_url":"","created_at":"2023-06-10T12:46","download_url":"","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"https://youtu.be/ykVG2YrECY4?t=1381\r\n\r\n## Beleuchtete Hitzesensoren am Tramboden zur Bestandsaufnahme des St\u00e4dteklimas\r\n\r\n_Zus\u00e4tzliche Awareness-Massnahme f\u00fcr das Innovationstram_\r\n\r\nVorg\u00e4ngig wurden Massnahmen beschrieben, die dabei helfen sollen, die st\u00e4dtischen Trams energieeffizienter zu betreiben. Um die Auswirkungen des Klimawandels jedoch umfangreich bek\u00e4mpfen zu k\u00f6nnen, ist auch ein Bewusstsein f\u00fcr die Problematik in der Bev\u00f6lkerung essenziell. \r\n\r\nGeschlossene Bebauungen, wasserundurchl...","hashtag":"","id":94,"image_url":"","is_challenge":false,"is_webembed":false,"logo_color":"","logo_icon":"","longtext":"https://youtu.be/ykVG2YrECY4?t=1381\r\n\r\n## Beleuchtete Hitzesensoren am Tramboden zur Bestandsaufnahme des St\u00e4dteklimas\r\n\r\n_Zus\u00e4tzliche Awareness-Massnahme f\u00fcr das Innovationstram_\r\n\r\nVorg\u00e4ngig wurden Massnahmen beschrieben, die dabei helfen sollen, die st\u00e4dtischen Trams energieeffizienter zu betreiben. Um die Auswirkungen des Klimawandels jedoch umfangreich bek\u00e4mpfen zu k\u00f6nnen, ist auch ein Bewusstsein f\u00fcr die Problematik in der Bev\u00f6lkerung essenziell. \r\n\r\nGeschlossene Bebauungen, wasserundurchl\u00e4ssiger Asphalt, wenig Gr\u00fcnraum sowie fehlende Windkan\u00e4le sorgen in den St\u00e4dten daf\u00fcr, dass im Vergleich zu l\u00e4ndlicheren Regionen ein Temperaturunterschied von bis zu zehn Grad Celsius im Sommer bestehen kann. Die Folgen sind nicht nur f\u00fcrs Klima und die Umwelt eine Herausforderung. Gerade f\u00fcr \u00e4ltere Personen k\u00f6nnen die hohen Temperaturen gesundheitlich stark belastend sein.\r\n\r\nUm auf diese Problematik aufmerksam zu machen, sollen an der Unterfl\u00e4che des Innovationstrams W\u00e4rmesensoren angebracht werden, die die Bodentemperatur anhand eines Farbschemas \u00fcber die ebenfalls angebrachte Beleuchtung indizieren. Nat\u00fcrlich m\u00fcssten Sensoren und Beleuchtung im Sinne der Aufgabenstellung des Hackathons energieneutral betrieben werden, indem zum Beispiel die kinetische Bremsenergie der Trams f\u00fcr den Betrieb der Technik verwendet wird.\r\n\r\nDie Schweiz ist ein Pendlervolk. Personen, die die \u00f6ffentlichen Verkehrsmittel f\u00fcr die Freizeit oder den Arbeitsweg nutzen, werden so dezidiert darauf hingewiesen, wo Probleme mit dem Stadtklima \u2013 zumindest ausgehend von den asphaltierten Fl\u00e4chen \u2013 ausgehen. Im Sinne des Hackathons soll dadurch die Initiative der Bev\u00f6lkerung gef\u00f6rdert werden, selbst\u00e4ndig Projekte anzustossen und \u00dcberlegungen einzubringen, die ihre Wohnregion betreffen. \r\n\r\nMit einer Betriebsstrecke von mehr als 120 Kilometern werden so f\u00fcr die Stadtverwaltung Daten zur Asphalttemperatur erfasst und wichtige Indikatoren geliefert, die f\u00fcr st\u00e4dtebauliche Projekte in Betracht gezogen werden m\u00fcssen. Ebenso erreichen die Tramlinien fast die gesamte Stadtbev\u00f6lkerung und die zu erwartende \u00f6ffentliche Aufmerksamkeitswirkung ist betr\u00e4chtlich. Die Daten sind als Open-Data zu verstehen, damit sie auch Verb\u00e4nden und bspw. Quartiervereinigungen zur Verf\u00fcgung gestellt werden k\u00f6nnen und partizipative Ans\u00e4tze bei Initiativen zur Verbesserung des Stadtklimas erm\u00f6glichen. Es ist davon auszugehen, dass mit einem sich bessernden Stadtklima und der Vermeidung zus\u00e4tzlicher Hitzeinseln auch der Bedarf an K\u00fchlung im Sommer gesenkt werden kann.\r\n\r\n- [Presentation](https://docs.google.com/presentation/d/1_liW2Vv_E5EzbsqUUuTODanFyLFEEVreJx3lyCM7kdY/edit?usp=sharing)\r\n\r\nhttps://now.makezurich.ch/project/93","maintainer":"unicornrainbows","name":"\ud83c\udf4aENERGY HEAT MAP \ud83c\udf49","phase":"Find","progress":5,"score":20,"source_url":"","stats":{"commits":0,"during":5,"people":1,"sizepitch":2704,"sizetotal":2757,"total":5,"updates":3},"summary":"OPEN SOURCE HEAT MAP FOR CYCLISTS, BIKERS AND ELDERLY","team":"unicornrainbows","team_count":1,"updated_at":"2023-06-12T08:09","url":"https://now.makezurich.ch/project/94","webpage_url":""},{"autotext":"# IntelliGlow_MakeZurich_2023","autotext_url":"https://github.com/valeriat/IntelliGlow_MakeZurich_2023","category_id":49,"category_name":"1. Energy Saving","contact_url":"https://github.com/valeriat/IntelliGlow_MakeZurich_2023/issues","created_at":"2023-06-16T06:21","download_url":"https://github.com/valeriat/IntelliGlow_MakeZurich_2023/releases","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"https://youtu.be/ykVG2YrECY4?t=5169","hashtag":"","id":97,"image_url":"https://avatars.githubusercontent.com/u/11076020?v=4","is_challenge":false,"is_webembed":false,"logo_color":"","logo_icon":"","longtext":"https://youtu.be/ykVG2YrECY4?t=5169","maintainer":"","name":"IntelliGlow","phase":"Find","progress":5,"score":12,"source_url":"https://github.com/valeriat/IntelliGlow_MakeZurich_2023","stats":{"commits":2,"during":2,"people":1,"sizepitch":35,"sizetotal":64,"total":3,"updates":2},"summary":"","team":"valeriia_rutskaia","team_count":1,"updated_at":"2023-06-16T20:34","url":"https://now.makezurich.ch/project/97","webpage_url":""},{"autotext":"","autotext_url":"","category_id":53,"category_name":"5. Open Challenge","contact_url":"","created_at":"2023-06-05T10:24","download_url":"","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"https://youtu.be/ykVG2YrECY4?t=4006","hashtag":"","id":83,"image_url":"","is_challenge":false,"is_webembed":false,"logo_color":"","logo_icon":"","longtext":"https://youtu.be/ykVG2YrECY4?t=4006","maintainer":"tillo_bosshart","name":"Fermentation Guard","phase":"Find","progress":5,"score":9,"source_url":"","stats":{"commits":0,"during":3,"people":1,"sizepitch":35,"sizetotal":35,"total":3,"updates":1},"summary":"","team":"tillo_bosshart","team_count":1,"updated_at":"2023-06-12T08:30","url":"https://now.makezurich.ch/project/83","webpage_url":""},{"autotext":"# Getting Started\r\n\r\nAll examples were tested around June 2023 with Pico W and CircuitPython 8.1.0\r\n\r\n## Hardware\r\n\r\n* Raspberry Pi Pico W (W stands for Wi-Fi)\r\n* Seed Studio LoRa E5, Pin GP4 + GP5\r\n* 6 Neopixels on Pin GP22\r\n* 1 LED on Pin GP8\r\n* 1 Button on Pin GP6\r\n* 4 expansion ports (Grove)\r\n* 1 PicoW onboard LED, Pin LED\r\n\r\n## Installing CircuitPython\r\n\r\n**Mind**: CircuitPython should already be installed on your badge.\r\nTherefore, this step is not needed.\r\n\r\n1. Download the uf2 file from https://circuitpython.org/board/raspberry_pi_pico_w/\r\n2. While holding the white \"BOOTSEL\" button connect the pico W to your computer, it should mount as \"RPI-RP2\"\r\n3. Copy the circuitpython uf2 file onto it\r\n4. After it is done the pico W will mount as \"CIRCUITPY\"\r\n\r\n## Getting libraries\r\n\r\nLots of existing libraries are bundled in the zip, which you can copy paste to your PicoW lib folder.\r\n\r\n1. Download v8 from https://circuitpython.org/libraries\r\n\r\n> To prevent mistakes I recommend to delete the folders lib/adafruit_featherwing and lib/adafruit_seesaw\r\n\r\n## CircuitPython Essentials\r\nAdafruit has a great list of examples on [CircuitPython Essentials](https://learn.adafruit.com/circuitpython-essentials/circuitpython-essentials). Many examples of this repository are taken from there.\r\n\r\n## IDE's and extensions that can make your life easier\r\n\r\n### VS code\r\n\r\nVS code is an easy to use IDE that has a lot of extensions, including extensions for python and also circuit python that safes you some hasle with e.g. adding a specific library to your project (the extensions downloads the latest bundle and places the module you add directly in your lib folder).\r\n\r\nSee https://code.visualstudio.com for more information and download of Visual Studio Code.\r\n\r\n#### Circuit python extension\r\n\r\nGet it from the marketplace directly inside VS code, more info can be found in the extension readme:\r\n- Name: CircuitPython\r\n- Id: joedevivo.vscode-circuitpython\r\n- Description: CircuitPython for Visual Studio Code\r\n- Version: 0.1.20\r\n- Publisher: joedevivo\r\n- VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=joedevivo.vscode-circuitpython\r\n\r\n## LoRa\r\nTwo ways of sending packages:\r\n* Confirmed delivery, you want to know if sending succeeded, send packages with confirmation (ACK).\r\n* Fire and forget, you hope some gateway will receive it. Send without confirmation (no ACK).\r\n\r\n> The inital join is only done once to get the session keys, device will store them and stay joined.\r\n\r\n### Setting up LoRa OTAA\r\n\r\n1. visit the things network EU console https://eu1.cloud.thethings.network/console/\r\n2. you may need to create an account first\r\n3. Create a new application with the name \"makezurch-badge-2023-YOURNAME\"\r\n4. On your pico run `AT+ID` to get the AppEui (also referenced as JoinEUI), DevEui, DevAddr\r\n5. Register end device\r\n    * manual\r\n    * frequency plan: Europe 863-870 MHz (SF9 for RX2 - recommended)\r\n    * LoRaWAN version: LoRaWAN Specification 1.0.3\r\n    * under \"Provisioning Information\" for JoinEUI fill in the AppEui\r\n    * also fill the DevEUI as obtained from the AT command\r\n    * Click \"Generate\" to obtain an AppKey\r\n6. Configure LoRa with the value from Activation Information > AppKey\r\n   1. AT+KEY=APPKEY,\"AppKey\"\r\n\r\n### Sending Packages\r\n\r\nWe use the UART port on pin GP4 and GP5 to send AT commands to the \"Seed Studio LoRa E5\".\r\nIt uses LoRa Version 1.0.3.\r\n\r\n> If you want to play with the AT commands yourself see example 05-lora/serial-debug.py\r\n\r\nTo set it up\r\n\r\n```bash\r\nAT+ID\r\n# -> Use this info to configure your device in the thingsnetwork console\r\nAT+DR=5 # 5 sets the datarate to SF7, which is recommended by thingsnetwork\r\nAT+CH=NUM,0-2 # NOTE(yw): no idea what channel to choose\r\nAT+MODE=LWOTAA # LWOTAA or LWABP, LWOTAA is recommended\r\nAT+KEY=APPKEY,\"YOUR_APP_KEY_HERE\" # appkey when using LWOTAA\r\nAT+CLASS=A\r\nAT+PORT=8\r\nAT+JOIN\r\nAT+CMSG=\"Hello\"\r\n```\r\n\r\n> NOTE: you only need to set the APPKEY once and it is remembered.\r\n\r\nYou should see in the \"Live data\" section of your application on\r\n[TheThingsNetwork console](https://eu1.cloud.thethings.network/console/)\r\nan entry of type \"Forward uplink data message\" with a Payload\r\n\"48656C6C6F\". You can convert this payload from hexadecimal to ASCII\r\nusing e.g. [this webpage](https://www.rapidtables.com/convert/number/hex-to-ascii.html)\r\nand should see that it translates to the \"Hello\" message sent.\r\n\r\nABP vs OTAA https://www.thethingsindustries.com/docs/devices/abp-vs-otaa/#otaa\r\n[Seed Studio LoRa E5 Documentation](https://files.seeedstudio.com/products/317990687/res/LoRa-E5%20AT%20Command%20Specification_V1.0%20.pdf)\r\n\r\n## Knowledge\r\n\r\n### Connecting to Serial\r\n\r\nOn macOS:\r\n\r\n```bash\r\nscreen /dev/tty.usbmodemXXX 115200\r\n```\r\n\r\n### CircuitPython vs Micropython\r\nCircuitPython is a fork of MicroPython that includes a more extensive set of libraries and drivers out of the box, making it easier to get started with. It also has a higher level of abstraction, which can make it easier to write code quickly, and supports a growing number of boards and peripherals.\r\n\r\nCircuitPython is heavly maintained by Adafruit, which provides many examples and libraries for all their libraries.\r\n\r\nIf you see any `import machine` the code is probably using micropython.\r\n\r\n## Hardware\r\n\r\n### Grove Kit\r\nExamples for the Grove Basic Kit can be found under 06-grove-starterkit.\r\nFor more see their [wiki](https://wiki.seeedstudio.com/Grove-Starter-Kit-for-Raspberry-Pi-Pico/) with examples in **micropython**.\r\n\r\n\u203c\ufe0f Help my kit is incomplete! \u203c\ufe0f Check with the staff or see if you can swap it with other sensors for example provided by Sensirion\r\n\r\n### Sensirion Sensors\r\n[Sensirion](https://www.sensirion.com) sponsored sensors. Examples can be found under `12-sensirion`\r\n\r\n* Grove SEN5X All in One [wiki](https://wiki.seeedstudio.com/Grove_SEN5X_All_in_One/)\r\n* Grove - CO2 & Temperature & Humidity Sensor (SCD30) [wiki](https://wiki.seeedstudio.com/Grove-CO2_Temperature_Humidity_Sensor-SCD30/)\r\n* Grove - CO2 & Temperature & Humidity Sensor\uff08SCD41) [wiki](https://wiki.seeedstudio.com/Grove-CO2_&_Temperature_&_Humidity_Sensor-SCD41/)\r\n* Grove Temp&Humi Sensor (SHT40) [wiki](https://wiki.seeedstudio.com/Grove-SHT4x/)\r\n\r\n### AP9 box\r\n\r\nThe MakeZurich Badge fits into a standard AP9 box (80x80x35mm).\r\n\r\n![AP9.png](https://raw.githubusercontent.com/makezurich/makezurich-badge-2023-circuitpython/main/pictures/AP9.png)\r\n\r\n## Pinouts\r\n\r\n* [MakeZurich Badge](pinout.png)\r\n* [Pico W](picow-pinout.png)\r\n\r\n## Questions\r\n* How do you receive packages? You need to send a package and in the response downlink data is included.\r\n* Are the lora configuration values channel, mode, class, appkey persisted? -> Yes\r\n* Can you read out the AT+KEY of a device? -> No, all KEYs are unreadable for security, the one who forgets his KEY need rewrite with a new key.\r\n* How to measure RSSI, is there a command? -> In the TTN console event details, you can inspect what the receiving gateways report (sometimes multiple gateways receive your packets).\r\n* What is a good RSSI? -> Higher than -120 (minimum you can have) and usually below -40 (right next to the gateway).\r\n* Why is OTAA better than ABP? [link](https://www.thethingsindustries.com/docs/devices/abp-vs-otaa/#otaa)\r\n* What does the python package \"supervisor\" do? It is used to receive data over serial, while being plugged into USB.\r\n* Does every badge have an unique EUI? -> yes\r\n* How much is the difference for LoRa between a handcrafted binary payload vs serialising to JSON text payload?\r\n* What are AT commands? -> AT commands are used in modems and other hardware for querying or setting parameters [more](https://www.commfront.com/pages/at-commands)\r\n* Does CircuitPython support hardware interrupts? -> No, [FAQ](https://learn.adafruit.com/cooperative-multitasking-in-circuitpython-with-asyncio?view=all#faq-3106700)\r\n","autotext_url":"https://github.com/makezurich/makezurich-badge-2023-circuitpython","category_id":"","category_name":"","contact_url":"https://github.com/makezurich/makezurich-badge-2023-circuitpython/issues","created_at":"2023-06-12T07:56","download_url":"https://github.com/makezurich/makezurich-badge-2023-circuitpython/releases","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"https://github.com/makezurich/makezurich-badge-2023-circuitpython\r\n\r\nSee also:\r\n\r\nhttps://now.makezurich.ch/project/95\r\n\r\nhttps://github.com/adafruit/awesome-circuitpython","hashtag":"","id":96,"image_url":"https://avatars.githubusercontent.com/u/19557148?v=4","is_challenge":true,"is_webembed":false,"logo_color":"","logo_icon":"","longtext":"https://github.com/makezurich/makezurich-badge-2023-circuitpython\r\n\r\nSee also:\r\n\r\nhttps://now.makezurich.ch/project/95\r\n\r\nhttps://github.com/adafruit/awesome-circuitpython","maintainer":"yannick_weiss","name":"CircuitPython Examples","phase":"Ask","progress":0,"score":1,"source_url":"https://github.com/makezurich/makezurich-badge-2023-circuitpython","stats":{"commits":45,"during":45,"people":0,"sizepitch":171,"sizetotal":8146,"total":45,"updates":45},"summary":"Our combined knowledge and scripts for making the most of the #MakeZurich 2023 Badge","team":"yannick_weiss","team_count":0,"updated_at":"2023-06-13T09:26","url":"https://now.makezurich.ch/project/96","webpage_url":""},{"autotext":"","autotext_url":"","category_id":50,"category_name":"2. More Engagement","contact_url":"","created_at":"2023-06-08T10:48","download_url":"","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"Make consumers aware of their energy consumption @home by providing them with current and historical data (consumed energy, peak times, costs)\r\n\r\n* fetch data from new EWZ Smartmeters that are currently getting rolled out\r\n    * acquire data either locally (via Wireless MBUS, IR interface (DSMR), etc) or...\r\n    * via EWZ cloud (if there's such a thing)\r\n* in case of local data acquisition - transport data to the consumer (LoraWAN, WiFi)\r\n* build an integration for a smart-home application (Home...","hashtag":"","id":86,"image_url":"","is_challenge":true,"is_webembed":false,"logo_color":"","logo_icon":"","longtext":"Make consumers aware of their energy consumption @home by providing them with current and historical data (consumed energy, peak times, costs)\r\n\r\n* fetch data from new EWZ Smartmeters that are currently getting rolled out\r\n    * acquire data either locally (via Wireless MBUS, IR interface (DSMR), etc) or...\r\n    * via EWZ cloud (if there's such a thing)\r\n* in case of local data acquisition - transport data to the consumer (LoraWAN, WiFi)\r\n* build an integration for a smart-home application (Home-Assistant, openHAB) *or* write a WebApp visualizing energy data\r\n\r\n","maintainer":"mma","name":"Get Smart","phase":"Ask","progress":0,"score":0,"source_url":"","stats":{"commits":0,"during":4,"people":1,"sizepitch":564,"sizetotal":646,"total":4,"updates":1},"summary":"Use Data from EWZ Smart-Meters to make consumers aware of their energy consumption","team":"mma","team_count":1,"updated_at":"2023-06-13T06:37","url":"https://now.makezurich.ch/project/86","webpage_url":""},{"autotext":"### Goal\nThe goal is to reduce power consumption from the grid, to get more autonom power and profit from renewable energy also in your rental home.\n\nIt should be eas to use and have no battery, which needs proper handling.\n\n### Idea\nBuild an electronic device, to which a solar module and/or a small wind turbine can be connected. The device would also be connected to the power grid, to also provide power duringnight or sunless days.\n\nThe output would be an usb-c with which you can power your computer when working during the day, charging your devices or any other usb-c device. Maybe there's also a power connector for your wifi router.\n\nThe electronic device would prioritize the reneweable energy, but if this wouldn't be enough, the backup from the power grid gradually kicks in. Ideally the standby power used from the grid is as low as possible.\n\nA display shows the current status, how much power is consumed from which source.\n\n<img src=\"https://raw.githubusercontent.com/2ni/makezurich-powerplant/main//images/Controller.png\" width=\"600\" />\n","autotext_url":"https://github.com/2ni/makezurich-powerplant","category_id":53,"category_name":"5. Open Challenge","contact_url":"https://github.com/2ni/makezurich-powerplant/issues","created_at":"2023-06-01T18:58","download_url":"https://github.com/2ni/makezurich-powerplant/releases","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"### Goal\nThe goal is to reduce power consumption from the grid, to get more autonom power and profit from renewable energy also in your rental home.\n\nIt should be eas to use and have no battery, which needs proper handling.\n\n### Idea\nBuild an electronic device, to which a solar module and/or a small wind turbine can be connected. The device would also be connected to the power grid, to also provide power duringnight or sunless days.\n\nThe output would be an usb-c with which you can power your com...","hashtag":"","id":79,"image_url":"https://bucketeer-036aa605-c047-4623-8610-f1764b90cf98.s3.amazonaws.com/makezurich/120/JE2TQH5B2MX5JSLFCTUJAA8B/Controller.png","is_challenge":true,"is_webembed":false,"logo_color":"","logo_icon":"","longtext":"","maintainer":"2ni","name":"Use your own renewable power plant at home","phase":"Ask","progress":-1,"score":0,"source_url":"https://github.com/2ni/makezurich-powerplant","stats":{"commits":0,"during":10,"people":1,"sizepitch":0,"sizetotal":1176,"total":11,"updates":9},"summary":"Produce renewable energy for your router, laptop or any usb-c device backed up by the grid. No battery needed. No hassle.","team":"2ni","team_count":1,"updated_at":"2023-06-02T20:14","url":"https://now.makezurich.ch/project/79","webpage_url":"https://github.com/2ni/makezurich-powerplant"},{"autotext":"","autotext_url":"","category_id":52,"category_name":"4. Public Transport","contact_url":"","created_at":"2023-06-10T12:40","download_url":"","event_name":"Make Zurich 2023","event_url":"https://now.makezurich.ch/event/5","excerpt":"https://youtu.be/ykVG2YrECY4?t=2751\r\n\r\n[Presentation](https://docs.google.com/presentation/d/1fRZJNZpoJ3z5jTVtazZfI1CEiHfXvJC6tXaBF4oLaTk/edit?usp=sharing)","hashtag":"","id":93,"image_url":"","is_challenge":true,"is_webembed":false,"logo_color":"","logo_icon":"","longtext":"https://youtu.be/ykVG2YrECY4?t=2751\r\n\r\n[Presentation](https://docs.google.com/presentation/d/1fRZJNZpoJ3z5jTVtazZfI1CEiHfXvJC6tXaBF4oLaTk/edit?usp=sharing)","maintainer":"unicornrainbows","name":"\u2764\ufe0fHEATING ON DEMAND\u2764\ufe0f","phase":"Ask","progress":0,"score":0,"source_url":"","stats":{"commits":0,"during":4,"people":1,"sizepitch":155,"sizetotal":272,"total":4,"updates":2},"summary":"Reduce the amount of energy used to heat the trams during winter but allowing passengers to enable the heating system","team":"unicornrainbows","team_count":1,"updated_at":"2023-06-12T08:14","url":"https://now.makezurich.ch/project/93","webpage_url":""}],"name":"projects"}],"sources":[{"path":"https://dribdat.cc","title":"dribdat"}],"title":"Make Zurich 2023","version":"0.2.0"}
