diff --git a/docs/energy-monitor/HARDWARE.md b/docs/energy-monitor/HARDWARE.md deleted file mode 100644 index 1786f33..0000000 --- a/docs/energy-monitor/HARDWARE.md +++ /dev/null @@ -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 -``` diff --git a/docs/energy-monitor/README.md b/docs/energy-monitor/README.md index bcbc0bf..c52c5bf 100644 --- a/docs/energy-monitor/README.md +++ b/docs/energy-monitor/README.md @@ -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](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. @@ -14,6 +14,10 @@ Power Measurement is done by a SCT013 clamp (100A:50mA). ### 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") 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). +## 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 +### 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 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. +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 You can subscribe to your local MQTT server and subscribe to all or just the interesting topics: diff --git a/docs/images/breadboard.png b/docs/images/breadboard.png index ffe0d23..c75b6c3 100644 Binary files a/docs/images/breadboard.png and b/docs/images/breadboard.png differ diff --git a/docs/shelly-monitor/README.md b/docs/shelly-monitor/README.md index a47e6cf..9e8823b 100644 --- a/docs/shelly-monitor/README.md +++ b/docs/shelly-monitor/README.md @@ -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. -### InfluxDB Bucket - -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) +If you haven't deployed the [IoT prototyping backend yet, check out our guide](https://code.curious.bio/curious.bio/iot-backend/). ## Links diff --git a/hardware/BOM.md b/hardware/BOM.md index 856305a..bec6227 100644 --- a/hardware/BOM.md +++ b/hardware/BOM.md @@ -1,10 +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 | 3 | | | -| 10 uF Elko 10 V | 3 | | | -| 3,5 mm audio jack connector | 3 | | | +| Part | Quantity | Note | Link | +| --------------------------- | -------: | ---------------- | ------------------------------------------ | +| ESP Microcontroller | 1 | ESP8266 or ESP32 | | +| SCT-013-100 | 1 | one per phase | http://openenergymonitor.org/emon/node/156 | +| 10 kOhm Resistors 1/4 W | 2 | two per phase | | +| 22 Ohm Resistor 1/4 W | 1 | one per phase | | +| 10 uF Elko 10 V | 1 | one per phase | | +| 3,5 mm audio jack connector | 1 | one per phase | |