cleanup of documentation and image data

This commit is contained in:
Sebastian Wendel 2023-09-16 17:50:56 +02:00
parent b77dfdfcef
commit f5a448eedd
5 changed files with 34 additions and 110 deletions

View file

@ -1,55 +0,0 @@
# Hardware
We are using HelTec Automation Wirelsess Sticks ESP32 Dev-Boards.
## 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
![PinOut](../images/HTIT-WS_V3.png "PinOut")
## 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
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
HelTecs GitHub repo can be found here: https://github.com/HelTecAutomation/Heltec_ESP32
I had to install VCP Drivers, first: https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads
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).
![Arduino IDE](../images/flash-with-arduino.png "select the right board and port")
## Install esptool
Esptool is a Pyhton program to flash ESP32. As it's a Pyhton tool you can install it using `pip`:
```sh
pip install esptool
```
## Find the port
Usually you can find the used port using `esptool.py`:
```sh
esptool.py write_flash_status --non-volatile 0
```
### 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
```

View file

@ -1,6 +1,6 @@
# Energy Monitor # 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](https://openenergymonitor.org/) project (Licence GNU GPL V3).
It uses our HelTec Wireless Stick. This - of course - can be replaced by a cheaper ESP32 module. It uses our HelTec Wireless Stick. This - of course - can be replaced by a cheaper ESP32 module.
@ -14,6 +14,10 @@ Power Measurement is done by a SCT013 clamp (100A:50mA).
### PinOut ### PinOut
We are using HelTec Automation Wirelsess Sticks ESP32 Dev-Boards.
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](../images/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) We use A1, A2 and A3 because they are free (most ADCs are already used on the HelTec Board)
@ -59,8 +63,24 @@ R3 is the burden resistor. Ideal burden would be 19 Ω. As this is not a common
See the Fritzing file for [details](./energy-monitor.fzz). See the Fritzing file for [details](./energy-monitor.fzz).
## 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.
## Code ## Code
### Arduino IDE
HelTecs GitHub repo can be found here: https://github.com/HelTecAutomation/Heltec_ESP32
I had to install VCP Drivers, first: https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads
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).
![Arduino IDE](../images/flash-with-arduino.png "select the right board and port")
### Print to serial out ### 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/)_.
@ -109,6 +129,10 @@ The `mqtt_server` in tis example posts to my local IP adress. The Wifi network i
The `mqtt_prefix` should be different per device, as this is the topic prefix used to identify the device. The `mqtt_prefix` should be different per device, as this is the topic prefix used to identify the device.
We now can consume this messages in Node-RED, store them in InfluxDB and build a dashboard in Grafana.
If you haven't deployed the [IoT prototyping backend yet, check out our guide](https://code.curious.bio/curious.bio/iot-backend/).
### Testing ### Testing
You can subscribe to your local MQTT server and subscribe to all or just the interesting topics: You can subscribe to your local MQTT server and subscribe to all or just the interesting topics:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 232 KiB

View file

@ -70,52 +70,7 @@ It will post MQTT messages unter a topic `tele/tasmota_891E97/SENSOR` like this
We now can consume this messages in Node-RED, store them in InfluxDB and build a dashboard in Grafana. We now can consume this messages in Node-RED, store them in InfluxDB and build a dashboard in Grafana.
### InfluxDB Bucket If you haven't deployed the [IoT prototyping backend yet, check out our guide](https://code.curious.bio/curious.bio/iot-backend/).
I created a bucket called `shelly`in InfluxDB, so we can store the messages in this bucket.
### Node-RED
I create a usual flow in Node-RED. A MQTT node fetches the values.
![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),
voltage: Number(msg.payload.ENERGY.Voltage),
current: Number(msg.payload.ENERGY.Current)
}
};
```
The `payload` will be stored in InfluxDB in the bucket "shelly".
### InfluxDB Data Explorer
In Influx DB Data Explorer you can query the stored data.
![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")
|> filter(fn: (r) => r["_field"] == "power" or r["_field"] == "voltage" or r["_field"] == "current")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")
```
### Grafana
Using this query you can crate a dashboard in Grafana.
![Grafana](../images/grafana.png)
## Links ## Links

View file

@ -1,10 +1,10 @@
# Bill of Materials (BOM) # Bill of Materials (BOM)
| Part | Quantity | Note | Link | | Part | Quantity | Note | Link |
| --------------------------- | -------: | ------------- | ------------------------------------------ | | --------------------------- | -------: | ---------------- | ------------------------------------------ |
| ESP Microcontroller | 1 | | | | ESP Microcontroller | 1 | ESP8266 or ESP32 | |
| SCT-013-100 | 3 | one per phase | http://openenergymonitor.org/emon/node/156 | | SCT-013-100 | 1 | one per phase | http://openenergymonitor.org/emon/node/156 |
| 10 kOhm Resistors 1/4 W | 6 | two per phase | | | 10 kOhm Resistors 1/4 W | 2 | two per phase | |
| 22 Ohm Resistor 1/4 W | 3 | | | | 22 Ohm Resistor 1/4 W | 1 | one per phase | |
| 10 uF Elko 10 V | 3 | | | | 10 uF Elko 10 V | 1 | one per phase | |
| 3,5 mm audio jack connector | 3 | | | | 3,5 mm audio jack connector | 1 | one per phase | |