split up components in to separate repositories
|
@ -1,7 +0,0 @@
|
|||
.direnv
|
||||
.github
|
||||
.vscode
|
||||
docs
|
||||
hardware
|
||||
nix
|
||||
software
|
|
@ -8,18 +8,13 @@ Copyright: (C) 2023 Curious Community Labs e. V.
|
|||
License: CERN-OHL-S-2.0
|
||||
|
||||
Files:
|
||||
.github
|
||||
.vscode
|
||||
.dockerignore
|
||||
.editorconfig
|
||||
.envrc
|
||||
.gitignore
|
||||
flake.*
|
||||
nix/*
|
||||
Dockerfile
|
||||
pyproject.toml
|
||||
okh.toml
|
||||
mkdocs.yml
|
||||
software/*
|
||||
Copyright: (C) 2023 Curious Community Labs e. V.
|
||||
License: GPL-3.0-or-later
|
||||
|
|
65
README.md
|
@ -1,53 +1,56 @@
|
|||
# IoT Platform
|
||||
# Smart Energy Monitoring
|
||||
|
||||
## Docker
|
||||
Smart Energy Monitoring is an open-source hardware project designed to empower individuals to monitor their energy consumption easily and efficiently. With the versatility of two different integrations - a DIY kit and a finished product - users can make informed decisions to manage and reduce their energy footprint.
|
||||
|
||||
First install DockerDesktop and `docker-compose`:
|
||||
The project seamlessly integrates with the [IoT Prototyping Backend](https://code.curious.bio/curious.bio/iot-backend/) and serves as an exemplary application for the comprehensive integration of sensor systems, through the manipulation of data streams and visualization on a dashboard.
|
||||
|
||||
- https://www.docker.com/products/docker-desktop/
|
||||
- https://docs.docker.com/compose/install/
|
||||
## Features
|
||||
|
||||
Then you can export a path to mount as a volume and spin up the containers:
|
||||
- Real-time energy monitoring
|
||||
- Historical data logging
|
||||
- MQTT Support
|
||||
- Open-Source firmware
|
||||
|
||||
```sh
|
||||
export DATA_DIR = /some/path/to/mount
|
||||
docker-compose --file software/container/docker-compose.yml up
|
||||
```
|
||||
## Integrations
|
||||
|
||||
### Mosquitto
|
||||
### DIY Kit
|
||||
|
||||
```sh
|
||||
mosquitto_sub -h localhost -t '#' -p 1883
|
||||
mosquitto_pub -h localhost -p 1883 -t '/' -m $(date --utc +%s)
|
||||
```
|
||||
The DIY Kit includes an [ESP microcontroller](https://www.espressif.com/en/products/socs) and comes with appropriate measurement terminals. The firmware is open-source, based on the [Arduino framework](https://www.arduino.cc/reference/), allowing enthusiasts to extend or customize features according to their needs.
|
||||
|
||||
There is also a *very* usefuly tool to debug MQTT: [MQTT Explorer](https://github.com/thomasnordquist/MQTT-Explorer/), that is also available at [mqtt-explorer.com](https://mqtt-explorer.com/).
|
||||
#### Hardware Requirements
|
||||
|
||||
### Node-RED
|
||||
- [Bill of Material](./hardware/BOM.md)
|
||||
- Soldering iron
|
||||
|
||||
NodeRed is running here: http://localhost:1880/
|
||||
### Shelly Plus Plug S
|
||||
|
||||
A simple introduction to Node-RED can be found - along with the nodes / the code - in [this repository, please have a look](./software/flow/README.md)!
|
||||
For users looking for a ready-made solution, we support the [Shelly Plus Plug S](https://kb.shelly.cloud/knowledge-base/shelly-plus-plug-s) or any other ESP based Power Plug with measurement functions. We use the device with the open-source firmware [Tasmota](https://tasmota.github.io/), making integration into your existing smart home systems a breeze. The following page gives an overview of the [devices supported by Tasmota](https://templates.blakadder.com/plug.html).
|
||||
|
||||
### InfluxDB
|
||||
## Safety Note
|
||||
|
||||
InfluxDb is running here: http://localhost:8086/
|
||||
> ⚠️ Handling High Voltage
|
||||
> Working with electrical systems can be dangerous if not handled carefully.
|
||||
|
||||
### Grafana
|
||||
Always make sure to:
|
||||
|
||||
You can login to Grafana: http://localhost:3000/login (admin:admin)
|
||||
- Turn off the power supply before making any electrical connections.
|
||||
- Use insulated tools.
|
||||
- Work in a dry environment.
|
||||
- If you are not confident or experienced in working with electricity, please contact a professional to assist you.
|
||||
|
||||
Have a look at the [HowTo in this repository](./software/dashboard/README.md).
|
||||
## Installation
|
||||
|
||||
- [DIY Kit Installation](./docs/energy-monitor/README.md)
|
||||
- [Shelly Plus Plug S](./docs/shelly-monitor/README.md)
|
||||
|
||||
## Hardware
|
||||
## Contribution
|
||||
|
||||
We are using HelTec Automation Wirelsess Sticks ESP32 Dev-Boards.
|
||||
Feel free to open an issue for bugs, feature requests, or questions. Contributions are welcome.
|
||||
|
||||
See the [documentation in this repository](./hardware/README.md).
|
||||
## License
|
||||
|
||||
## Hardware sensors
|
||||
This project follows the [REUSE Specification](https://reuse.software/spec/) and is licensed under the following:
|
||||
|
||||
* [Energy Monitor](./software/firmware/energy-monitor/README.md)
|
||||
* [Plant Monitor](./software/firmware/plant-monitor/README.md)
|
||||
* [Shelly Example](./software/firmware/shelly-monitor/README.md)
|
||||
- [Documentation: Creative Commons Attribution-ShareAlike 4.0 Licence](./LICENSES/CC-BY-SA-4.0.txt)
|
||||
- [Hardware: CERN Open Hardware strongly reciprocal Licence](./LICENSES/CERN-OHL-S-2.0.txt)
|
||||
- [Software: The GNU General Public License v3.0 Licence](./LICENSES/GPL-3.0-or-later.txt)
|
||||
|
|
BIN
docs/.DS_Store
vendored
|
@ -1 +0,0 @@
|
|||
# Changelog
|
|
@ -1 +0,0 @@
|
|||
# IoT platform for analyzing resource consumption and machine status
|
|
@ -2,20 +2,21 @@
|
|||
|
||||
We are using HelTec Automation Wirelsess Sticks ESP32 Dev-Boards.
|
||||
|
||||
### PinOut
|
||||
## PinOut
|
||||
|
||||
The PinOut of our version 3 modules can be found here: https://docs.heltec.org/en/node/esp32/dev-board/hardware_update_log.html#wifi-lora-32-hardware-update-logs
|
||||
The PinOut of our version 3 modules can be found here: https://docs.heltec.org/en/node/esp32/dev-board/hardware_update_log.html#wifi-lora-32-hardware-update-logs
|
||||
|
||||
![PinOut](https://resource.heltec.cn/download/Wireless_Stick_V3/HTIT-WS_V3.png "PinOut")
|
||||
![PinOut](../images/HTIT-WS_V3.png "PinOut")
|
||||
|
||||
### License
|
||||
## License
|
||||
|
||||
For some parts of the Heltec board you need a ["license"](https://docs.heltec.org/general/view_limited_technical_data.html#esp32-lora-series).
|
||||
|
||||
### USB-C
|
||||
## USB-C
|
||||
|
||||
Our HelTec Automation Wirelsess Sticks ESP32 Dev-Boards already have USB-C. But they do not support Power Deliver (PD). If your computer tries to do PD, just plug a cheap USB hub between the board and your computer.
|
||||
|
||||
### Arduino IDE
|
||||
## Arduino IDE
|
||||
|
||||
HelTecs GitHub repo can be found here: https://github.com/HelTecAutomation/Heltec_ESP32
|
||||
|
||||
|
@ -23,11 +24,11 @@ I had to install VCP Drivers, first: https://www.silabs.com/developers/usb-to-ua
|
|||
|
||||
You can add their Board Manager to the boards managers URLs: https://github.com/HelTecAutomation/Heltec_ESP32/blob/master/library.json and find their libraries in the IDE (Sketch -> Include Library -> Manage Libraries... Search for "heltec esp32").
|
||||
|
||||
> These boards are already *V3* boards, so be careful selecting the right board and port (VCP).
|
||||
> These boards are already _V3_ boards, so be careful selecting the right board and port (VCP).
|
||||
|
||||
![Arduino IDE](docs/images/flash-with-arduino.png "select the right board and port")
|
||||
![Arduino IDE](../images/flash-with-arduino.png "select the right board and port")
|
||||
|
||||
### Install esptool
|
||||
## Install esptool
|
||||
|
||||
Esptool is a Pyhton program to flash ESP32. As it's a Pyhton tool you can install it using `pip`:
|
||||
|
||||
|
@ -35,7 +36,7 @@ Esptool is a Pyhton program to flash ESP32. As it's a Pyhton tool you can instal
|
|||
pip install esptool
|
||||
```
|
||||
|
||||
### Find the port
|
||||
## Find the port
|
||||
|
||||
Usually you can find the used port using `esptool.py`:
|
||||
|
||||
|
@ -43,13 +44,12 @@ Usually you can find the used port using `esptool.py`:
|
|||
esptool.py write_flash_status --non-volatile 0
|
||||
```
|
||||
|
||||
#### Using MicroPython
|
||||
### Using MicroPython
|
||||
|
||||
Download the firmware: https://micropython.org/download/
|
||||
|
||||
Flash it using `esptool`: https://micropython.org/download/GENERIC_S3/
|
||||
|
||||
|
||||
```sh
|
||||
esptool.py --chip esp32s3 write_flash -z 0 ~/Desktop/GENERIC_S3-20220117-v1.18.bin
|
||||
```
|
||||
```
|
|
@ -1,6 +1,6 @@
|
|||
# Energy Monitor
|
||||
|
||||
Our energy monitor is based on the openenergymonitor.org project (Licence GNU GPL V3).
|
||||
Our energy monitor is based on the openenergymonitor.org project (Licence GNU GPL V3).
|
||||
|
||||
It uses our HelTec Wireless Stick. This - of course - can be replaced by a cheaper ESP32 module.
|
||||
|
||||
|
@ -10,51 +10,46 @@ Power Measurement is done by a SCT013 clamp (100A:50mA).
|
|||
|
||||
### Used materials
|
||||
|
||||
* ESP32 module (e.g. Heltec Wireless Stick)
|
||||
* 3 x SCT-013-100 (100 A), see: http://openenergymonitor.org/emon/node/156
|
||||
* 6 x 10 kOhm Resistors 1/4 W
|
||||
* 1 x 22 Ohm Resistor 1/4 W (TODO: I am using a 47 Ohm Resistor to be replaced)
|
||||
* 3 x 10 uF Elko 10 V
|
||||
* 3 x 3,5 mm audio jack connector
|
||||
- [Bill of Material](../../hardware/BOM.md)
|
||||
|
||||
### PinOut
|
||||
|
||||
![PinOut](https://resource.heltec.cn/download/Wireless_Stick_V3/HTIT-WS_V3.png "PinOut")
|
||||
![PinOut](../images/HTIT-WS_V3.png "PinOut")
|
||||
|
||||
We use A1, A2 and A3 because they are free (most ADCs are already used on the HelTec Board)
|
||||
|
||||
### Sensors
|
||||
### Sensors
|
||||
|
||||
The SCT-013 sensors are small current transformers (SCT). They have a ferromagnetic core that can be opened and in which we can enclose our conductor. This conductor is the primary winding and the secondary winding is fixed in the sensor and can have 2000 turns. This gives us a ratio of 1:2000 as an example.
|
||||
|
||||
When AC current flows through the conductor, a magnetic flux is generated in the ferromagnetic core, which in turn generates an electric current in the secondary winding.
|
||||
|
||||
I could not meassure "small" power consumptions (like a LED lamp or a light stripe, as the magnetix flux in the ferromagnet core seems to be too small).
|
||||
I could not meassure "small" power consumptions (like a LED lamp or a light stripe, as the magnetix flux in the ferromagnet core seems to be too small).
|
||||
|
||||
![clamp on wire](./docs/images/clamp1.jpeg "clamp on a wire")
|
||||
![clamp on wire](../images/clamp1.jpeg "clamp on a wire")
|
||||
|
||||
I was able to measure high loads (like a heater the can be switched between 1 kW and 2 kW).
|
||||
|
||||
![heater](./docs/images/example-heater.png "serial out of a heater")
|
||||
![heater](../images/example-heater.png "serial out of a heater")
|
||||
|
||||
Make sure the clamp is *always positioned towards the consumer*, otherwise it does *not* work. There is a small arrow on the case.
|
||||
Make sure the clamp is _always positioned towards the consumer_, otherwise it does _not_ work. There is a small arrow on the case.
|
||||
|
||||
![point the clamp](./docs/images/clamp2.jpeg "point the clamp")
|
||||
![point the clamp](../images/clamp2.jpeg "point the clamp")
|
||||
|
||||
> Attention: I could not measure any meaningful values on the "cable". I had to go to the wire.
|
||||
|
||||
![cable](./docs/images/clamp3.jpeg "use the clamp on the wire, not on the cable")
|
||||
![cable](../images/clamp3.jpeg "use the clamp on the wire, not on the cable")
|
||||
|
||||
### Breadboard
|
||||
|
||||
Let's start with a simple breadboard layout.
|
||||
|
||||
![Breadboard](./docs/images/breadboard.png "breakboard layout")
|
||||
![Photo of breadboard](./docs/images/photo-breadboard.jpeg "photo of breadboard")
|
||||
![Breadboard](../images/breadboard.png "breakboard layout")
|
||||
![Photo of breadboard](../images/photo-breadboard.jpeg "photo of breadboard")
|
||||
|
||||
To understand this, have a look at this plan:
|
||||
|
||||
![Plan](./docs/images/plan.png "plan")
|
||||
![Plan](../images/plan.png "plan")
|
||||
|
||||
R1 & R2 are a voltage divider that provides the 1.65 V source. We use 10 kΩ for mains powered monitors. If we want to run on batteries, we have to choose differnt ones (like 470 kΩ resistors to keep the power consumption to a minimum).
|
||||
|
||||
|
@ -62,15 +57,15 @@ Capacitor C1 has a low reactance - a few hundred ohms - and provides a path for
|
|||
|
||||
R3 is the burden resistor. Ideal burden would be 19 Ω. As this is not a common value, you could choose 18 Ω or 22 Ω (I am still using a 47 Ω restistor, that has to be replaced).
|
||||
|
||||
See the Fritzing file for [details](./energy-monitor/energy-monitor.fzz).
|
||||
See the Fritzing file for [details](./energy-monitor.fzz).
|
||||
|
||||
## Code
|
||||
|
||||
### Print to serial out
|
||||
|
||||
Start with a simple code that just prints the values. The code is quite simple, as we can use the existing *[EmonLib libary V1.1.0 by OpenEnergyMonitor](https://docs.openenergymonitor.org/electricity-monitoring/ct-sensors/)*.
|
||||
Start with a simple code that just prints the values. The code is quite simple, as we can use the existing _[EmonLib libary V1.1.0 by OpenEnergyMonitor](https://docs.openenergymonitor.org/electricity-monitoring/ct-sensors/)_.
|
||||
|
||||
[Check out the small amount of code to print the values to serial out.](./01-energy-monitor-serial-out/) This piece of code is based on on Thomas Edlinger's code for [Edi's Tech Lab](https://www.edistechlab.com).
|
||||
[Check out the small amount of code to print the values to serial out.](../../software/energy-monitor/01-energy-monitor-serial-out/) This piece of code is based on on Thomas Edlinger's code for [Edi's Tech Lab](https://www.edistechlab.com).
|
||||
|
||||
The only interesting part is this line:
|
||||
|
||||
|
@ -82,7 +77,7 @@ The [calibration](https://docs.openenergymonitor.org/electricity-monitoring/ctac
|
|||
|
||||
The code just prints the current power consumption to serial out:
|
||||
|
||||
```
|
||||
```txt
|
||||
16:28:18.915 -> 2853.16 Watt - 12.41 Ampere
|
||||
16:28:19.998 -> 2854.63 Watt - 12.41 Ampere
|
||||
16:28:21.119 -> 2850.93 Watt - 12.40 Ampere
|
||||
|
@ -90,19 +85,16 @@ The code just prints the current power consumption to serial out:
|
|||
16:28:23.289 -> 400.62 Watt - 1.74 Ampere
|
||||
16:28:24.367 -> 94.42 Watt - 0.41 Ampere
|
||||
```
|
||||
|
||||
### Post to MQTT
|
||||
|
||||
#### Boot up MQTT
|
||||
|
||||
First, boot your local server infrastructure:
|
||||
|
||||
```sh
|
||||
docker-compose --file software/container/docker-compose.yml up
|
||||
```
|
||||
Now follow this documentation to set up [IoT Prototyping Backend](https://code.curious.bio/curious.bio/iot-backend).
|
||||
|
||||
#### Credentials
|
||||
|
||||
To connect to your Wifi and access your MQTT server you have to add this to an `environment` [header file](./02-energy-monitor-mqtt/environment.h):
|
||||
To connect to your Wifi and access your MQTT server you have to add this to an `environment` [header file](../../software/energy-monitor/02-energy-monitor-mqtt/environment.h):
|
||||
|
||||
```C
|
||||
// Replace with your network credentials
|
||||
|
@ -136,16 +128,16 @@ Posting to MQTT is quite simple. After setting up Wifi and connection to the MQT
|
|||
client.publish(concat(mqttPrefix, "/ampere"), irmsArray);
|
||||
```
|
||||
|
||||
Have a look at the complete [example](./02-energy-monitor-mqtt/).
|
||||
Have a look at the complete [example](../../software/energy-monitor/02-energy-monitor-mqtt/).
|
||||
|
||||
## Simulator
|
||||
|
||||
If you just need random inputs (without using the actual hardware), you can simply modify my short [shell script](./00-simulator/).
|
||||
If you just need random inputs (without using the actual hardware), you can simply modify my short [shell script](../../software/energy-monitor/00-simulator/).
|
||||
|
||||
## Links
|
||||
|
||||
* A very comprehensive project to build an energy monitor can be found in the [ESP32 + ESPHome Open Source Energy Monitor project by Daniel BP](https://github.com/danpeig/ESP32EnergyMonitor).
|
||||
* A nice (German) [video tutorial can be found at Eddie's Techlab](https://edistechlab.com/sct013-sensor-zum-wechselstrom-messen/).
|
||||
* Have a look at the [complete documentation of the Open Energy Monitor project](https://docs.openenergymonitor.org/).
|
||||
* There is also a German [example project](http://www.technik-fan.de/index.php/Open_Energy_Monitor_mit_dem_ESP32) (that currently cannot be reached over TLS, so be careful before clicking this link).
|
||||
* MQTT and ESP32 is described in this article ["How to Connect ESP32 to MQTT Broker"](https://iotdesignpro.com/projects/how-to-connect-esp32-mqtt-broker).
|
||||
- A very comprehensive project to build an energy monitor can be found in the [ESP32 + ESPHome Open Source Energy Monitor project by Daniel BP](https://github.com/danpeig/ESP32EnergyMonitor).
|
||||
- A nice (German) [video tutorial can be found at Eddie's Techlab](https://edistechlab.com/sct013-sensor-zum-wechselstrom-messen/).
|
||||
- Have a look at the [complete documentation of the Open Energy Monitor project](https://docs.openenergymonitor.org/).
|
||||
- There is also a German [example project](http://www.technik-fan.de/index.php/Open_Energy_Monitor_mit_dem_ESP32) (that currently cannot be reached over TLS, so be careful before clicking this link).
|
||||
- MQTT and ESP32 is described in this article ["How to Connect ESP32 to MQTT Broker"](https://iotdesignpro.com/projects/how-to-connect-esp32-mqtt-broker).
|
BIN
docs/images/HTIT-WS_V3.png
Normal file
After Width: | Height: | Size: 2 MiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
569
docs/images/breadboard.png
Normal file
|
@ -0,0 +1,569 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en-US" class="theme-forgejo-auto">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>smart-energy-monitor/breadboard.png at main - smart-energy-monitor - Curious Code Base</title>
|
||||
<link rel="manifest" href="data:application/json;base64,eyJuYW1lIjoiQ3VyaW91cyBDb2RlIEJhc2UiLCJzaG9ydF9uYW1lIjoiQ3VyaW91cyBDb2RlIEJhc2UiLCJzdGFydF91cmwiOiJodHRwczovL2NvZGUuY3VyaW91cy5iaW8vIiwiaWNvbnMiOlt7InNyYyI6Imh0dHBzOi8vY29kZS5jdXJpb3VzLmJpby9hc3NldHMvaW1nL2xvZ28ucG5nIiwidHlwZSI6ImltYWdlL3BuZyIsInNpemVzIjoiNTEyeDUxMiJ9LHsic3JjIjoiaHR0cHM6Ly9jb2RlLmN1cmlvdXMuYmlvL2Fzc2V0cy9pbWcvbG9nby5zdmciLCJ0eXBlIjoiaW1hZ2Uvc3ZnK3htbCIsInNpemVzIjoiNTEyeDUxMiJ9XX0=">
|
||||
<meta name="author" content="curious.bio">
|
||||
<meta name="description" content="smart-energy-monitor - A smart energy monitor to measure the power consumption">
|
||||
<meta name="keywords" content="git,forge,forgejo">
|
||||
<meta name="referrer" content="no-referrer">
|
||||
|
||||
|
||||
<link rel="alternate" type="application/atom+xml" title="" href="/curious.bio/smart-energy-monitor.atom">
|
||||
<link rel="alternate" type="application/rss+xml" title="" href="/curious.bio/smart-energy-monitor.rss">
|
||||
|
||||
<link rel="icon" href="/assets/img/favicon.svg" type="image/svg+xml">
|
||||
<link rel="alternate icon" href="/assets/img/favicon.png" type="image/png">
|
||||
|
||||
<script>
|
||||
window.addEventListener('error', function(e) {window._globalHandlerErrors=window._globalHandlerErrors||[]; window._globalHandlerErrors.push(e);});
|
||||
window.config = {
|
||||
appUrl: 'https:\/\/code.curious.bio\/',
|
||||
appSubUrl: '',
|
||||
assetVersionEncoded: encodeURIComponent('1.20.1-0'),
|
||||
assetUrlPrefix: '\/assets',
|
||||
runModeIsProd: true ,
|
||||
customEmojis: {"codeberg":":codeberg:","forgejo":":forgejo:","git":":git:","gitea":":gitea:","github":":github:","gitlab":":gitlab:","gogs":":gogs:"},
|
||||
csrfToken: 'NpFx7kzkqt1pJcWheFy_uQszeuU6MTY5NDg3NTQ0NzMyMjM1MzM0OA',
|
||||
pageData: {},
|
||||
notificationSettings: {"EventSourceUpdateTime":10000,"MaxTimeout":60000,"MinTimeout":10000,"TimeoutStep":10000},
|
||||
enableTimeTracking: true ,
|
||||
|
||||
mermaidMaxSourceCharacters: 5000 ,
|
||||
|
||||
i18n: {
|
||||
copy_success: 'Copied!',
|
||||
copy_error: 'Copy failed',
|
||||
error_occurred: 'An error occurred',
|
||||
network_error: 'Network error',
|
||||
remove_label_str: 'Remove item \u0022%s\u0022',
|
||||
},
|
||||
};
|
||||
|
||||
window.config.pageData = window.config.pageData || {};
|
||||
</script>
|
||||
<script src="/assets/js/webcomponents.js?v=1.20.1-0"></script>
|
||||
|
||||
<noscript>
|
||||
<style>
|
||||
.dropdown:hover > .menu { display: block; }
|
||||
.ui.secondary.menu .dropdown.item > .menu { margin-top: 0; }
|
||||
</style>
|
||||
</noscript>
|
||||
|
||||
|
||||
<meta property="og:title" content="smart-energy-monitor">
|
||||
<meta property="og:url" content="https://code.curious.bio/curious.bio/smart-energy-monitor">
|
||||
|
||||
<meta property="og:description" content="A smart energy monitor to measure the power consumption">
|
||||
|
||||
|
||||
<meta property="og:type" content="object">
|
||||
|
||||
<meta property="og:image" content="https://code.curious.bio/avatars/c44d34444a201c28d89e0e90a7607d23">
|
||||
|
||||
|
||||
<meta property="og:site_name" content="Curious Code Base">
|
||||
<link rel="stylesheet" href="/assets/css/index.css?v=1.20.1-0">
|
||||
|
||||
<link rel="stylesheet" href="/assets/css/theme-forgejo-auto.css?v=1.20.1-0">
|
||||
|
||||
|
||||
<script defer data-domain="code.curious.bio" src="https://track.curious.bio/js/plausible.js"></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<div class="full height">
|
||||
<noscript>This website requires JavaScript.</noscript>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<nav id="navbar" class="ui secondary stackable menu" aria-label="Navigation Bar">
|
||||
<div class="item">
|
||||
|
||||
<a href="/" aria-label="Home">
|
||||
<img width="30" height="30" src="/assets/img/logo.svg" alt="Logo" aria-hidden="true">
|
||||
</a>
|
||||
|
||||
|
||||
<div class="ui secondary menu navbar-mobile-right gt-gap-2">
|
||||
|
||||
<button class="item ui icon mini button gt-p-3 gt-m-0" id="navbar-expand-toggle"><svg viewBox="0 0 16 16" class="svg octicon-three-bars" width="16" height="16" aria-hidden="true"><path d="M1 2.75A.75.75 0 0 1 1.75 2h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 2.75Zm0 5A.75.75 0 0 1 1.75 7h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 7.75ZM1.75 12h12.5a.75.75 0 0 1 0 1.5H1.75a.75.75 0 0 1 0-1.5Z"/></svg></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<a class="item" href="/explore/repos">Explore</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a class="item" target="_blank" rel="noopener noreferrer" href="https://forgejo.org/docs/latest/">Help</a>
|
||||
|
||||
|
||||
|
||||
<div class="right menu">
|
||||
|
||||
|
||||
<a class="item" href="/user/sign_up">
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-person" width="16" height="16" aria-hidden="true"><path d="M10.561 8.073a6.005 6.005 0 0 1 3.432 5.142.75.75 0 1 1-1.498.07 4.5 4.5 0 0 0-8.99 0 .75.75 0 0 1-1.498-.07 6.004 6.004 0 0 1 3.431-5.142 3.999 3.999 0 1 1 5.123 0ZM10.5 5a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"/></svg> Register
|
||||
</a>
|
||||
|
||||
<a class="item" rel="nofollow" href="/user/login?redirect_to=%2fcurious.bio%2fsmart-energy-monitor%2fsrc%2fbranch%2fmain%2fsoftware%2ffirmware%2fenergy-monitor%2fdocs%2fimages%2fbreadboard.png">
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-sign-in" width="16" height="16" aria-hidden="true"><path d="M2 2.75C2 1.784 2.784 1 3.75 1h2.5a.75.75 0 0 1 0 1.5h-2.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 0 1.5h-2.5A1.75 1.75 0 0 1 2 13.25Zm6.56 4.5h5.69a.75.75 0 0 1 0 1.5H8.56l1.97 1.97a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L6.22 8.53a.75.75 0 0 1 0-1.06l3.25-3.25a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734Z"/></svg> Sign In
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="main" aria-label="smart-energy-monitor/breadboard.png at main" class="page-content repository file list ">
|
||||
<div class="header-wrapper">
|
||||
|
||||
<div class="ui container">
|
||||
<div class="repo-header">
|
||||
<div class="repo-title-wrap gt-df gt-fc">
|
||||
<div class="repo-title" role="heading" aria-level="1">
|
||||
|
||||
|
||||
<div class="repo-icon gt-mr-3">
|
||||
|
||||
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-repo" width="32" height="32" aria-hidden="true"><path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"/></svg>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<a href="/curious.bio">curious.bio</a>
|
||||
<div class="gt-mx-2">/</div>
|
||||
<a href="/curious.bio/smart-energy-monitor">smart-energy-monitor</a>
|
||||
<div class="labels gt-df gt-ac gt-fw">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<a class="rss-icon gt-ml-3" href="/curious.bio/smart-energy-monitor.rss" data-tooltip-content="RSS Feed"><svg viewBox="0 0 16 16" class="svg octicon-rss" width="18" height="18" aria-hidden="true"><path d="M2.002 2.725a.75.75 0 0 1 .797-.699C8.79 2.42 13.58 7.21 13.974 13.201a.75.75 0 0 1-1.497.098 10.502 10.502 0 0 0-9.776-9.776.747.747 0 0 1-.7-.798ZM2.84 7.05h-.002a7.002 7.002 0 0 1 6.113 6.111.75.75 0 0 1-1.49.178 5.503 5.503 0 0 0-4.8-4.8.75.75 0 0 1 .179-1.489ZM2 13a1 1 0 1 1 2 0 1 1 0 0 1-2 0Z"/></svg></a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="repo-buttons">
|
||||
|
||||
<form method="post" action="/curious.bio/smart-energy-monitor/action/watch?redirect_to=%2fcurious.bio%2fsmart-energy-monitor%2fsrc%2fbranch%2fmain%2fsoftware%2ffirmware%2fenergy-monitor%2fdocs%2fimages%2fbreadboard.png">
|
||||
<input type="hidden" name="_csrf" value="NpFx7kzkqt1pJcWheFy_uQszeuU6MTY5NDg3NTQ0NzMyMjM1MzM0OA">
|
||||
<div class="ui labeled button" data-tooltip-content="Sign in to watch this repository.">
|
||||
<button type="submit" class="ui compact small basic button" disabled>
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-eye" width="16" height="16" aria-hidden="true"><path d="M8 2c1.981 0 3.671.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.62 1.62 0 0 1 0 1.798c-.45.678-1.367 1.932-2.637 3.023C11.67 13.008 9.981 14 8 14c-1.981 0-3.671-.992-4.933-2.078C1.797 10.83.88 9.576.43 8.898a1.62 1.62 0 0 1 0-1.798c.45-.677 1.367-1.931 2.637-3.022C4.33 2.992 6.019 2 8 2ZM1.679 7.932a.12.12 0 0 0 0 .136c.411.622 1.241 1.75 2.366 2.717C5.176 11.758 6.527 12.5 8 12.5c1.473 0 2.825-.742 3.955-1.715 1.124-.967 1.954-2.096 2.366-2.717a.12.12 0 0 0 0-.136c-.412-.621-1.242-1.75-2.366-2.717C10.824 4.242 9.473 3.5 8 3.5c-1.473 0-2.825.742-3.955 1.715-1.124.967-1.954 2.096-2.366 2.717ZM8 10a2 2 0 1 1-.001-3.999A2 2 0 0 1 8 10Z"/></svg>Watch
|
||||
</button>
|
||||
<a class="ui basic label" href="/curious.bio/smart-energy-monitor/watchers">
|
||||
3
|
||||
</a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<form method="post" action="/curious.bio/smart-energy-monitor/action/star?redirect_to=%2fcurious.bio%2fsmart-energy-monitor%2fsrc%2fbranch%2fmain%2fsoftware%2ffirmware%2fenergy-monitor%2fdocs%2fimages%2fbreadboard.png">
|
||||
<input type="hidden" name="_csrf" value="NpFx7kzkqt1pJcWheFy_uQszeuU6MTY5NDg3NTQ0NzMyMjM1MzM0OA">
|
||||
<div class="ui labeled button" data-tooltip-content="Sign in to star this repository.">
|
||||
<button type="submit" class="ui compact small basic button" disabled>
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-star" width="16" height="16" aria-hidden="true"><path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"/></svg>Star
|
||||
</button>
|
||||
<a class="ui basic label" href="/curious.bio/smart-energy-monitor/stars">
|
||||
0
|
||||
</a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
<div class="ui labeled button
|
||||
|
||||
disabled
|
||||
"
|
||||
|
||||
data-tooltip-content="Sign in to fork this repository."
|
||||
|
||||
>
|
||||
<a class="ui compact small basic button"
|
||||
|
||||
|
||||
|
||||
>
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-repo-forked" width="16" height="16" aria-hidden="true"><path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"/></svg>Fork
|
||||
</a>
|
||||
<div class="ui small modal" id="fork-repo-modal">
|
||||
<div class="header">
|
||||
You've already forked smart-energy-monitor
|
||||
</div>
|
||||
<div class="content gt-text-left">
|
||||
<div class="ui list">
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a class="ui basic label" href="/curious.bio/smart-energy-monitor/forks">
|
||||
0
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ui tabs container">
|
||||
|
||||
<div class="ui tabular menu navbar gt-overflow-x-auto gt-overflow-y-hidden">
|
||||
|
||||
<a class="active item" href="/curious.bio/smart-energy-monitor">
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-code" width="16" height="16" aria-hidden="true"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"/></svg> Code
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<a class="item" href="/curious.bio/smart-energy-monitor/issues">
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-issue-opened" width="16" height="16" aria-hidden="true"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"/><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"/></svg> Issues
|
||||
|
||||
<span class="ui small label">6</span>
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a class="item" href="/curious.bio/smart-energy-monitor/pulls">
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-git-pull-request" width="16" height="16" aria-hidden="true"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"/></svg> Pull Requests
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="/curious.bio/smart-energy-monitor/packages" class="item">
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-package" width="16" height="16" aria-hidden="true"><path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"/></svg> Packages
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<a href="/curious.bio/smart-energy-monitor/projects" class="item">
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-project" width="16" height="16" aria-hidden="true"><path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z"/></svg> Projects
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<a class="item" href="/curious.bio/smart-energy-monitor/releases">
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-tag" width="16" height="16" aria-hidden="true"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"/></svg> Releases
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a class="item" href="/curious.bio/smart-energy-monitor/activity">
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-pulse" width="16" height="16" aria-hidden="true"><path d="M6 2c.306 0 .582.187.696.471L10 10.731l1.304-3.26A.751.751 0 0 1 12 7h3.25a.75.75 0 0 1 0 1.5h-2.742l-1.812 4.528a.751.751 0 0 1-1.392 0L6 4.77 4.696 8.03A.75.75 0 0 1 4 8.5H.75a.75.75 0 0 1 0-1.5h2.742l1.812-4.529A.751.751 0 0 1 6 2Z"/></svg> Activity
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="ui tabs divider"></div>
|
||||
</div>
|
||||
|
||||
<div class="ui container ">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="repo-button-row">
|
||||
<div class="gt-df gt-ac gt-fw gt-gap-y-3">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="module">
|
||||
const data = {
|
||||
'textReleaseCompare': "Compare",
|
||||
'textCreateTag': "Create tag \u003cstrong\u003e%s\u003c/strong\u003e",
|
||||
'textCreateBranch': "Create branch \u003cstrong\u003e%s\u003c/strong\u003e",
|
||||
'textCreateBranchFrom': "from \"%s\"",
|
||||
'textBranches': "Branches",
|
||||
'textTags': "Tags",
|
||||
|
||||
'mode': 'branches',
|
||||
'showBranchesInDropdown': true ,
|
||||
'searchFieldPlaceholder': 'Filter branch or tag...',
|
||||
'branchForm': null ,
|
||||
'disableCreateBranch': true ,
|
||||
'setAction': null ,
|
||||
'submitForm': null ,
|
||||
'viewType': "branch",
|
||||
'refName': "main",
|
||||
'commitIdShort': "d0e5768d9c",
|
||||
'tagName': "",
|
||||
'branchName': "main",
|
||||
'noTag': null ,
|
||||
'branches': ["main","working-example"],
|
||||
'tags': [],
|
||||
'defaultBranch': "main",
|
||||
'enableFeed': true ,
|
||||
'rssURLPrefix': '\/curious.bio\/smart-energy-monitor/rss/branch/',
|
||||
'branchURLPrefix': '\/curious.bio\/smart-energy-monitor/src/branch/',
|
||||
'branchURLSuffix': '/software\/firmware\/energy-monitor\/docs\/images\/breadboard.png',
|
||||
'tagURLPrefix': '\/curious.bio\/smart-energy-monitor/src/tag/',
|
||||
'tagURLSuffix': '/software\/firmware\/energy-monitor\/docs\/images\/breadboard.png',
|
||||
'repoLink': "/curious.bio/smart-energy-monitor",
|
||||
'treePath': "software/firmware/energy-monitor/docs/images/breadboard.png",
|
||||
'branchNameSubURL': "branch/main",
|
||||
'noResults': "No results found.",
|
||||
};
|
||||
|
||||
window.config.pageData.branchDropdownDataList = window.config.pageData.branchDropdownDataList || [];
|
||||
window.config.pageData.branchDropdownDataList.push(data);
|
||||
</script>
|
||||
|
||||
<div class="js-branch-tag-selector gt-mr-2">
|
||||
|
||||
<div class="ui floating filter dropdown custom">
|
||||
<button class="branch-dropdown-button gt-ellipsis ui basic small compact button gt-df gt-m-0">
|
||||
<span class="text gt-df gt-ac gt-mr-2">
|
||||
|
||||
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-git-branch" width="16" height="16" aria-hidden="true"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"/></svg>
|
||||
|
||||
<strong ref="dropdownRefName" class="gt-ml-3">main</strong>
|
||||
|
||||
</span>
|
||||
<svg viewBox="0 0 16 16" class="dropdown icon svg octicon-triangle-down" width="14" height="14" aria-hidden="true"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"/></svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="new-pull-request" role="button" class="ui compact basic button" href="/curious.bio/smart-energy-monitor/compare/main...main"
|
||||
data-tooltip-content="Compare">
|
||||
<svg viewBox="0 0 16 16" class="svg octicon-git-pull-request" width="16" height="16" aria-hidden="true"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"/></svg>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="breadcrumb repo-path gt-ml-2">
|
||||
<a class="section" href="/curious.bio/smart-energy-monitor/src/branch/main" title="smart-energy-monitor">smart-energy-monitor</a><span class="divider">/</span><span class="section"><a href="/curious.bio/smart-energy-monitor/src/branch/main/software" title="software">software</a></span><span class="divider">/</span><span class="section"><a href="/curious.bio/smart-energy-monitor/src/branch/main/software/firmware" title="firmware">firmware</a></span><span class="divider">/</span><span class="section"><a href="/curious.bio/smart-energy-monitor/src/branch/main/software/firmware/energy-monitor" title="energy-monitor">energy-monitor</a></span><span class="divider">/</span><span class="section"><a href="/curious.bio/smart-energy-monitor/src/branch/main/software/firmware/energy-monitor/docs" title="docs">docs</a></span><span class="divider">/</span><span class="section"><a href="/curious.bio/smart-energy-monitor/src/branch/main/software/firmware/energy-monitor/docs/images" title="images">images</a></span><span class="divider">/</span><span class="active section" title="breadboard.png">breadboard.png</span></span>
|
||||
|
||||
</div>
|
||||
<div class="gt-df gt-ac">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-size-8 non-diff-file-content">
|
||||
<h4 class="file-header ui top attached header gt-df gt-ac gt-sb gt-fw">
|
||||
<div class="file-header-left gt-df gt-ac gt-py-3 gt-pr-4">
|
||||
|
||||
<div class="file-info text grey normal gt-mono">
|
||||
|
||||
|
||||
|
||||
<div class="file-info-entry">
|
||||
232 KiB
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="file-header-right file-actions gt-df gt-ac gt-fw">
|
||||
|
||||
|
||||
<div class="ui buttons gt-mr-2">
|
||||
<a class="ui mini basic button" href="/curious.bio/smart-energy-monitor/raw/branch/main/software/firmware/energy-monitor/docs/images/breadboard.png">Raw</a>
|
||||
|
||||
<a class="ui mini basic button" href="/curious.bio/smart-energy-monitor/src/commit/d0e5768d9c24c818986fe340d8be69b82ed00ed0/software/firmware/energy-monitor/docs/images/breadboard.png">Permalink</a>
|
||||
|
||||
|
||||
<a class="ui mini basic button" href="/curious.bio/smart-energy-monitor/commits/branch/main/software/firmware/energy-monitor/docs/images/breadboard.png">History</a>
|
||||
|
||||
</div>
|
||||
<a download href="/curious.bio/smart-energy-monitor/raw/branch/main/software/firmware/energy-monitor/docs/images/breadboard.png"><span class="btn-octicon" data-tooltip-content="Download file"><svg viewBox="0 0 16 16" class="svg octicon-download" width="16" height="16" aria-hidden="true"><path d="M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"/><path d="M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.969a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.749.749 0 0 1-1.06 0L4.22 6.78a.749.749 0 1 1 1.06-1.06l1.97 1.969Z"/></svg></span></a>
|
||||
<a id="copy-content" class="btn-octicon " data-link="/curious.bio/smart-energy-monitor/raw/branch/main/software/firmware/energy-monitor/docs/images/breadboard.png" data-tooltip-content="Copy content"><svg viewBox="0 0 16 16" class="svg octicon-copy" width="14" height="14" aria-hidden="true"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"/><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"/></svg></a>
|
||||
|
||||
<a class="btn-octicon" href="/curious.bio/smart-energy-monitor/rss/branch/main/software/firmware/energy-monitor/docs/images/breadboard.png"><svg viewBox="0 0 16 16" class="svg octicon-rss" width="14" height="14" aria-hidden="true"><path d="M2.002 2.725a.75.75 0 0 1 .797-.699C8.79 2.42 13.58 7.21 13.974 13.201a.75.75 0 0 1-1.497.098 10.502 10.502 0 0 0-9.776-9.776.747.747 0 0 1-.7-.798ZM2.84 7.05h-.002a7.002 7.002 0 0 1 6.113 6.111.75.75 0 0 1-1.49.178 5.503 5.503 0 0 0-4.8-4.8.75.75 0 0 1 .179-1.489ZM2 13a1 1 0 1 1 2 0 1 1 0 0 1-2 0Z"/></svg></a>
|
||||
|
||||
|
||||
|
||||
<span class="btn-octicon disabled" data-tooltip-content="Binary files cannot be edited in the web interface."><svg viewBox="0 0 16 16" class="svg octicon-pencil" width="16" height="16" aria-hidden="true"><path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"/></svg></span>
|
||||
|
||||
|
||||
<span class="btn-octicon disabled" data-tooltip-content="You must have write access to make or propose changes to this file."><svg viewBox="0 0 16 16" class="svg octicon-trash" width="16" height="16" aria-hidden="true"><path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"/></svg></span>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</h4>
|
||||
<div class="ui attached table unstackable segment">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="file-view">
|
||||
|
||||
<div class="view-raw">
|
||||
|
||||
<img src="/curious.bio/smart-energy-monitor/raw/branch/main/software/firmware/energy-monitor/docs/images/breadboard.png">
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<footer class="page-footer" role="group" aria-label="Footer">
|
||||
<div class="left-links" role="contentinfo" aria-label="About Software">
|
||||
<a target="_blank" rel="noopener noreferrer" href="https://forgejo.org">Powered by Forgejo</a>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="right-links" role="group" aria-label="Links">
|
||||
<div class="ui dropdown upward language">
|
||||
<span class="flex-text-inline"><svg viewBox="0 0 16 16" class="svg octicon-globe" width="14" height="14" aria-hidden="true"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"/></svg> English</span>
|
||||
<div class="menu language-menu">
|
||||
|
||||
<a lang="id-ID" data-url="/?lang=id-ID" class="item ">Bahasa Indonesia</a>
|
||||
|
||||
<a lang="de-DE" data-url="/?lang=de-DE" class="item ">Deutsch</a>
|
||||
|
||||
<a lang="en-US" data-url="/?lang=en-US" class="item active selected">English</a>
|
||||
|
||||
<a lang="es-ES" data-url="/?lang=es-ES" class="item ">Español</a>
|
||||
|
||||
<a lang="fr-FR" data-url="/?lang=fr-FR" class="item ">Français</a>
|
||||
|
||||
<a lang="it-IT" data-url="/?lang=it-IT" class="item ">Italiano</a>
|
||||
|
||||
<a lang="lv-LV" data-url="/?lang=lv-LV" class="item ">Latviešu</a>
|
||||
|
||||
<a lang="hu-HU" data-url="/?lang=hu-HU" class="item ">Magyar nyelv</a>
|
||||
|
||||
<a lang="nl-NL" data-url="/?lang=nl-NL" class="item ">Nederlands</a>
|
||||
|
||||
<a lang="pl-PL" data-url="/?lang=pl-PL" class="item ">Polski</a>
|
||||
|
||||
<a lang="pt-PT" data-url="/?lang=pt-PT" class="item ">Português de Portugal</a>
|
||||
|
||||
<a lang="pt-BR" data-url="/?lang=pt-BR" class="item ">Português do Brasil</a>
|
||||
|
||||
<a lang="fi-FI" data-url="/?lang=fi-FI" class="item ">Suomi</a>
|
||||
|
||||
<a lang="sv-SE" data-url="/?lang=sv-SE" class="item ">Svenska</a>
|
||||
|
||||
<a lang="tr-TR" data-url="/?lang=tr-TR" class="item ">Türkçe</a>
|
||||
|
||||
<a lang="cs-CZ" data-url="/?lang=cs-CZ" class="item ">Čeština</a>
|
||||
|
||||
<a lang="el-GR" data-url="/?lang=el-GR" class="item ">Ελληνικά</a>
|
||||
|
||||
<a lang="bg-BG" data-url="/?lang=bg-BG" class="item ">Български</a>
|
||||
|
||||
<a lang="ru-RU" data-url="/?lang=ru-RU" class="item ">Русский</a>
|
||||
|
||||
<a lang="uk-UA" data-url="/?lang=uk-UA" class="item ">Українська</a>
|
||||
|
||||
<a lang="fa-IR" data-url="/?lang=fa-IR" class="item ">فارسی</a>
|
||||
|
||||
<a lang="ml-IN" data-url="/?lang=ml-IN" class="item ">മലയാളം</a>
|
||||
|
||||
<a lang="ja-JP" data-url="/?lang=ja-JP" class="item ">日本語</a>
|
||||
|
||||
<a lang="zh-CN" data-url="/?lang=zh-CN" class="item ">简体中文</a>
|
||||
|
||||
<a lang="zh-TW" data-url="/?lang=zh-TW" class="item ">繁體中文(台灣)</a>
|
||||
|
||||
<a lang="zh-HK" data-url="/?lang=zh-HK" class="item ">繁體中文(香港)</a>
|
||||
|
||||
<a lang="ko-KR" data-url="/?lang=ko-KR" class="item ">한국어</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a href="/assets/js/licenses.txt">Licenses</a>
|
||||
<a href="/api/swagger">API</a>
|
||||
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="/assets/js/index.js?v=1.20.1-0" onerror="alert('Failed to load asset files from ' + this.src + '. Please make sure the asset files can be accessed.')"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 280 KiB |
Before Width: | Height: | Size: 212 KiB After Width: | Height: | Size: 212 KiB |
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 159 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 526 KiB After Width: | Height: | Size: 526 KiB |
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 151 KiB |
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 158 KiB |
Before Width: | Height: | Size: 556 KiB After Width: | Height: | Size: 556 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 358 KiB After Width: | Height: | Size: 358 KiB |
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 148 KiB |
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB |
BIN
docs/images/shelly_plug_s_1-1.jpg
Normal file
After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 168 KiB |
|
@ -2,11 +2,11 @@
|
|||
|
||||
Shelly Plugs S are quite cheap but relatively accurate to measure power consumptions less than 2.5 kW.
|
||||
|
||||
![Shelly Plug](https://shelly.hr/wp-content/uploads/2020/11/shelly_plug_s_1-1.jpg)
|
||||
![Shelly Plug](../images/shelly_plug_s_1-1.jpg)
|
||||
|
||||
## Flash Tasmota
|
||||
|
||||
There's an OpenSource project to flash Tasmota on Shelly Plugs: [mg2x](https://github.com/arendst/mgos-to-tasmota)
|
||||
There's an OpenSource project to flash Tasmota on Shelly Plugs: [mg2x](https://github.com/arendst/mgos-to-tasmota).
|
||||
|
||||
Locate your Shellie's IP adress (in my case: 192.168.2.150) and update it "over the air" with the Tasmota firmware:
|
||||
|
||||
|
@ -25,27 +25,27 @@ Your Shelly will return a JSON object that looks like that:
|
|||
|
||||
After a while your Shelly Plug S should be flashed with Tasmota firmware.
|
||||
|
||||
> Just be patient. This took longer than five minutes in my DSL connected network.
|
||||
> Just be patient. This took longer than five minutes in my DSL connected network.
|
||||
|
||||
The Shelly Plus S will create create a new Wifi.
|
||||
The Shelly Plus S will create create a new Wifi.
|
||||
|
||||
![Tasmota Wifi](./docs/images/wifi.png)
|
||||
![Tasmota Wifi](../images/wifi.png)
|
||||
|
||||
Join that Wifi and configure the device: http://192.164.4.1/
|
||||
|
||||
![Join Wifi](./docs/images/configure-wifi.png)
|
||||
![Join Wifi](../images/configure-wifi.png)
|
||||
|
||||
You can configure it as a BlitzWolf SHP product.
|
||||
You can configure it as a BlitzWolf SHP product.
|
||||
|
||||
Then it offers you power measurement and a programmable toogle.
|
||||
|
||||
![BlitzWolf](./docs/images/blitzwolf.png)
|
||||
![BlitzWolf](../images/blitzwolf.png)
|
||||
|
||||
It should be configurable just like our [plant monitor](../plant-monitor/README.md).
|
||||
|
||||
Just enable MQTT and enter a shorter telemetry period.
|
||||
|
||||
![MQTT](./docs/images/mqtt.png) ![Telemetry period](./docs/images/telemetry-period.png)
|
||||
![MQTT](../images/mqtt.png) ![Telemetry period](../images/telemetry-period.png)
|
||||
|
||||
It will post MQTT messages unter a topic `tele/tasmota_891E97/SENSOR` like this one:
|
||||
|
||||
|
@ -76,13 +76,13 @@ I created a bucket called `shelly`in InfluxDB, so we can store the messages in t
|
|||
|
||||
### Node-RED
|
||||
|
||||
I create a usual flow in Node-RED. A MQTT node fetches the values.
|
||||
I create a usual flow in Node-RED. A MQTT node fetches the values.
|
||||
|
||||
![Node-RED](./docs/images/node-red.png)
|
||||
![Node-RED](../images/node-red.png)
|
||||
|
||||
The message is fed into a filter function to only store usefull information:
|
||||
|
||||
```
|
||||
```ini
|
||||
return {
|
||||
payload: {
|
||||
power: Number(msg.payload.ENERGY.Power),
|
||||
|
@ -90,7 +90,7 @@ return {
|
|||
current: Number(msg.payload.ENERGY.Current)
|
||||
}
|
||||
};
|
||||
````
|
||||
```
|
||||
|
||||
The `payload` will be stored in InfluxDB in the bucket "shelly".
|
||||
|
||||
|
@ -98,11 +98,11 @@ The `payload` will be stored in InfluxDB in the bucket "shelly".
|
|||
|
||||
In Influx DB Data Explorer you can query the stored data.
|
||||
|
||||
![Data Explorer](./docs/images/data-explorer.png)
|
||||
![Data Explorer](../images/data-explorer.png)
|
||||
|
||||
The query created by Data Explorer looks like that:
|
||||
|
||||
```
|
||||
```flux
|
||||
from(bucket: "shelly")
|
||||
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|
||||
|> filter(fn: (r) => r["_measurement"] == "msg")
|
||||
|
@ -115,13 +115,12 @@ from(bucket: "shelly")
|
|||
|
||||
Using this query you can crate a dashboard in Grafana.
|
||||
|
||||
![Grafana](./docs/images/grafana.png)
|
||||
|
||||
![Grafana](.../images/grafana.png)
|
||||
|
||||
## Links
|
||||
|
||||
* [Pinout for the ESP8266 based Shelly Plug-S Smart Plug
|
||||
](https://faulty.cloud/blog/shelly-plug-s-pinout)
|
||||
* [Youtube video: Upgrade Shelly Switches | Easy NO Soldering Smart Garage Door Opener](https://www.youtube.com/watch?v=_oRr8FZyyQ0)
|
||||
* [mg2x](https://github.com/arendst/mgos-to-tasmota)
|
||||
* [Shelly Plug S Power Monitoring Plug Tasmota template](https://templates.blakadder.com/shelly_plug_S.html)
|
||||
- [Pinout for the ESP8266 based Shelly Plug-S Smart Plug
|
||||
](https://faulty.cloud/blog/shelly-plug-s-pinout)
|
||||
- [Youtube video: Upgrade Shelly Switches | Easy NO Soldering Smart Garage Door Opener](https://www.youtube.com/watch?v=_oRr8FZyyQ0)
|
||||
- [mg2x](https://github.com/arendst/mgos-to-tasmota)
|
||||
- [Shelly Plug S Power Monitoring Plug Tasmota template](https://templates.blakadder.com/shelly_plug_S.html)
|
|
@ -1,7 +0,0 @@
|
|||
[data-md-color-primary=rgb(4, 170, 109)] {
|
||||
--md-accent-fg-color: #04AA6D;
|
||||
--md-primary-fg-color--dark: #04AA6D;
|
||||
--md-primary-fg-color--light: #04AA6D;
|
||||
--md-primary-fg-color: #04AA6D;
|
||||
--md-typeset-a-color: #04AA6D;
|
||||
}
|
10
hardware/BOM.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
# Bill of Materials (BOM)
|
||||
|
||||
| Part | Quantity | Note | Link |
|
||||
| --------------------------- | -------: | ------------- | ------------------------------------------ |
|
||||
| ESP Microcontroller | 1 | | |
|
||||
| SCT-013-100 | 3 | one per phase | http://openenergymonitor.org/emon/node/156 |
|
||||
| 10 kOhm Resistors 1/4 W | 6 | two per phase | |
|
||||
| 22 Ohm Resistor 1/4 W | 1 | | |
|
||||
| 10 uF Elko 10 V | 3 | | |
|
||||
| 3,5 mm audio jack connector | 3 | | |
|
|
@ -1,80 +0,0 @@
|
|||
(kicad_pcb (version 20221018) (generator pcbnew)
|
||||
|
||||
(general
|
||||
(thickness 1.6)
|
||||
)
|
||||
|
||||
(paper "A4")
|
||||
(layers
|
||||
(0 "F.Cu" signal)
|
||||
(31 "B.Cu" signal)
|
||||
(32 "B.Adhes" user "B.Adhesive")
|
||||
(33 "F.Adhes" user "F.Adhesive")
|
||||
(34 "B.Paste" user)
|
||||
(35 "F.Paste" user)
|
||||
(36 "B.SilkS" user "B.Silkscreen")
|
||||
(37 "F.SilkS" user "F.Silkscreen")
|
||||
(38 "B.Mask" user)
|
||||
(39 "F.Mask" user)
|
||||
(40 "Dwgs.User" user "User.Drawings")
|
||||
(41 "Cmts.User" user "User.Comments")
|
||||
(42 "Eco1.User" user "User.Eco1")
|
||||
(43 "Eco2.User" user "User.Eco2")
|
||||
(44 "Edge.Cuts" user)
|
||||
(45 "Margin" user)
|
||||
(46 "B.CrtYd" user "B.Courtyard")
|
||||
(47 "F.CrtYd" user "F.Courtyard")
|
||||
(48 "B.Fab" user)
|
||||
(49 "F.Fab" user)
|
||||
(50 "User.1" user)
|
||||
(51 "User.2" user)
|
||||
(52 "User.3" user)
|
||||
(53 "User.4" user)
|
||||
(54 "User.5" user)
|
||||
(55 "User.6" user)
|
||||
(56 "User.7" user)
|
||||
(57 "User.8" user)
|
||||
(58 "User.9" user)
|
||||
)
|
||||
|
||||
(setup
|
||||
(pad_to_mask_clearance 0)
|
||||
(pcbplotparams
|
||||
(layerselection 0x00010fc_ffffffff)
|
||||
(plot_on_all_layers_selection 0x0000000_00000000)
|
||||
(disableapertmacros false)
|
||||
(usegerberextensions false)
|
||||
(usegerberattributes true)
|
||||
(usegerberadvancedattributes true)
|
||||
(creategerberjobfile true)
|
||||
(dashed_line_dash_ratio 12.000000)
|
||||
(dashed_line_gap_ratio 3.000000)
|
||||
(svgprecision 4)
|
||||
(plotframeref false)
|
||||
(viasonmask false)
|
||||
(mode 1)
|
||||
(useauxorigin false)
|
||||
(hpglpennumber 1)
|
||||
(hpglpenspeed 20)
|
||||
(hpglpendiameter 15.000000)
|
||||
(dxfpolygonmode true)
|
||||
(dxfimperialunits true)
|
||||
(dxfusepcbnewfont true)
|
||||
(psnegative false)
|
||||
(psa4output false)
|
||||
(plotreference true)
|
||||
(plotvalue true)
|
||||
(plotinvisibletext false)
|
||||
(sketchpadsonfab false)
|
||||
(subtractmaskfromsilk false)
|
||||
(outputformat 1)
|
||||
(mirror false)
|
||||
(drillshape 1)
|
||||
(scaleselection 1)
|
||||
(outputdirectory "")
|
||||
)
|
||||
)
|
||||
|
||||
(net 0 "")
|
||||
|
||||
)
|
|
@ -1,483 +0,0 @@
|
|||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"board_outline_line_width": 0.09999999999999999,
|
||||
"copper_line_width": 0.19999999999999998,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.049999999999999996,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": false,
|
||||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"fab_line_width": 0.09999999999999999,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.15,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.762,
|
||||
"height": 1.524,
|
||||
"width": 1.524
|
||||
},
|
||||
"silk_line_width": 0.15,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.15,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"min_clearance": 0.5
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"connection_width": "warning",
|
||||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"courtyards_overlap": "error",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
"duplicate_footprints": "warning",
|
||||
"extra_footprint": "warning",
|
||||
"footprint": "error",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_near_hole": "error",
|
||||
"invalid_outline": "error",
|
||||
"isolated_copper": "warning",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"lib_footprint_issues": "warning",
|
||||
"lib_footprint_mismatch": "warning",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"npth_inside_courtyard": "ignore",
|
||||
"padstack": "warning",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_edge_clearance": "warning",
|
||||
"silk_over_copper": "warning",
|
||||
"silk_overlap": "warning",
|
||||
"skew_out_of_range": "error",
|
||||
"solder_mask_bridge": "error",
|
||||
"starved_thermal": "error",
|
||||
"text_height": "warning",
|
||||
"text_thickness": "warning",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.0,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.19999999999999998,
|
||||
"min_microvia_drill": 0.09999999999999999,
|
||||
"min_resolved_spokes": 2,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_text_height": 0.7999999999999999,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.0,
|
||||
"min_via_annular_width": 0.09999999999999999,
|
||||
"min_via_diameter": 0.5,
|
||||
"solder_mask_clearance": 0.0,
|
||||
"solder_mask_min_width": 0.0,
|
||||
"solder_mask_to_copper_clearance": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"teardrop_options": [
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 5,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_onpadsmd": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_ontrackend": false,
|
||||
"td_onviapad": true
|
||||
}
|
||||
],
|
||||
"teardrop_parameters": [
|
||||
{
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_target_name": "td_round_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_target_name": "td_rect_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_target_name": "td_track_end",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
}
|
||||
],
|
||||
"track_widths": [],
|
||||
"via_dimensions": [],
|
||||
"zones_allow_external_fillets": false
|
||||
},
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"erc": {
|
||||
"erc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"pin_map": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||