Skip to content

Commit

Permalink
Prepare v2.0.0: Better parameter configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
mathieucarbou committed Jan 22, 2024
1 parent fe8b535 commit 73870c7
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 27 deletions.
30 changes: 28 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

Arduino / ESP32 library for the JSY-MK-194T single-phase two-way electric energy metering module

- Sync mode and async mode
- Sync mode and async mode (non-blocking)
- Core, stack size and interval can be configured
- Energy reset
- Custom bauds rate
Expand All @@ -32,4 +32,30 @@ Arduino / ESP32 library for the JSY-MK-194T single-phase two-way electric energy

## Usage

See examples and API
### Blocking mode

```c++
void setup() {
Mycila::JSY.begin(17, 16);
}

void loop() {
Mycila::JSY.read();

// access values

delay(1000);
}
```

### Non-Blocking mode (async)

```c++
void setup() {
Mycila::JSY.begin(17, 16, true);
}

void loop() {
// access values
}
```
7 changes: 1 addition & 6 deletions examples/JSYReadAsync/JSYReadAsync.ino
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
#define MYCILA_JSY_ASYNC_READ_PAUSE_INTERVAL_MS 60
#define MYCILA_JSY_ASYNC_CORE 0

#include <MycilaJSY.h>

#define KEY_JSY_RX_PIN

void setup() {
Serial.begin(115200);
while (!Serial)
continue;

Mycila::JSY.begin(17, 16, true);
Mycila::JSY.begin(17, 16, Mycila::JSYBaudRate::BAUD_38400, &Serial2, true, 60, 0);
}

void loop() {
Expand Down
2 changes: 1 addition & 1 deletion library.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "MycilaJSY",
"version": "1.0.0",
"version": "2.0.0",
"description": "Arduino / ESP32 library for the JSY-MK-194T single-phase two-way electric energy metering module",
"keywords": "JSY,JSY-MK-194,JSY-MK-194T",
"homepage": "https://github.com/mathieucarbou/MycilaJSY",
Expand Down
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=MycilaJSY
version=1.0.0
version=2.0.0
author=Mathieu Carbou <mathieu.carbou@gmail.com>
maintainer=Mathieu Carbou <mathieu.carbou@gmail.com>
sentence=Arduino / ESP32 library for the JSY-MK-194T single-phase two-way electric energy metering module
Expand Down
4 changes: 2 additions & 2 deletions platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ monitor_filters = esp32_exception_decoder, log2file

[platformio]
lib_dir = .
src_dir = examples/JSYRead
; src_dir = examples/JSYReadAsync
; src_dir = examples/JSYRead
src_dir = examples/JSYReadAsync

[env:esp32]
platform = espressif32@6.5.0
Expand Down
16 changes: 8 additions & 8 deletions src/MycilaJSY.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
static const uint8_t JSY_READ_MSG[] = {0x01, 0x03, 0x00, 0x48, 0x00, 0x0E, 0x44, 0x18};
static uint8_t BUFFER[FLUSH_BUFFER_SIZE];

void Mycila::JSYClass::begin(const uint8_t jsyRXPin, const uint8_t jsyTXPin, const bool async, const JSYBaudRate baudRate, HardwareSerial* serial) {
void Mycila::JSYClass::begin(const uint8_t jsyRXPin, const uint8_t jsyTXPin, const JSYBaudRate baudRate, HardwareSerial* serial, const bool async, uint32_t pause, uint8_t core, uint32_t stackSize) {
if (_enabled)
return;

Expand All @@ -33,15 +33,15 @@ void Mycila::JSYClass::begin(const uint8_t jsyRXPin, const uint8_t jsyTXPin, con
return;
}

_baudRate = baudRate;
_async = async;
_pause = pause;
_serial = serial;

Logger.info(TAG, "Enable JSY...");
Logger.debug(TAG, "- JSY RX Pin: %u", _pinRX);
Logger.debug(TAG, "- JSY TX Pin: %u", _pinTX);
Logger.debug(TAG, "- Async: %s", _async ? "true" : "false");
Logger.debug(TAG, "- Baud Rate: %u bps", (uint32_t)_baudRate);
Logger.debug(TAG, "- Baud Rate: %u bps", (uint32_t)baudRate);

const JSYBaudRate baudRates[] = {JSYBaudRate::BAUD_4800, JSYBaudRate::BAUD_9600, JSYBaudRate::BAUD_19200, JSYBaudRate::BAUD_38400};
bool ok = false;
Expand All @@ -51,13 +51,13 @@ void Mycila::JSYClass::begin(const uint8_t jsyRXPin, const uint8_t jsyTXPin, con
yield();
if (_read(4)) {
Logger.debug(TAG, "- Detected baud Rate: %u bps", (uint32_t)baudRates[i]);
if (baudRates[i] == _baudRate) {
if (baudRates[i] == baudRate) {
ok = true;
break;
}
_setBaudRate(_baudRate);
_setBaudRate(baudRate);
_serial->end();
_serial->begin((uint32_t)_baudRate, SERIAL_8N1, _pinTX, _pinRX);
_serial->begin((uint32_t)baudRate, SERIAL_8N1, _pinTX, _pinRX);
while (!_serial)
yield();
if (!_read(4)) {
Expand All @@ -77,7 +77,7 @@ void Mycila::JSYClass::begin(const uint8_t jsyRXPin, const uint8_t jsyTXPin, con
return;
}

if (_async && xTaskCreateUniversal(_jsyTask, "jsyTask", MYCILA_JSY_ASYNC_STACK_SIZE, this, 1, nullptr, MYCILA_JSY_ASYNC_CORE) != pdPASS) {
if (_async && xTaskCreateUniversal(_jsyTask, "jsyTask", stackSize, this, 1, nullptr, core) != pdPASS) {
Logger.error(TAG, "Unable to create JSY async task");
return;
}
Expand Down Expand Up @@ -256,7 +256,7 @@ void Mycila::JSYClass::_jsyTask(void* params) {
jsy->_read();
if (jsy->_enabled)
// https://esp32developer.com/programming-in-c-c/tasks/tasks-vs-co-routines
delay(max(portTICK_PERIOD_MS, static_cast<uint32_t>(MYCILA_JSY_ASYNC_READ_PAUSE_INTERVAL_MS)));
delay(max(portTICK_PERIOD_MS, jsy->_pause));
}
vTaskDelete(NULL);
}
Expand Down
18 changes: 11 additions & 7 deletions src/MycilaJSY.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
#include <ArduinoJson.h>
#include <esp32-hal-gpio.h>

#define MYCILA_JSY_VERSION "1.0.0"
#define MYCILA_JSY_VERSION_MAJOR 1
#define MYCILA_JSY_VERSION "2.0.0"
#define MYCILA_JSY_VERSION_MAJOR 2
#define MYCILA_JSY_VERSION_MINOR 0
#define MYCILA_JSY_VERSION_REVISION 0

Expand All @@ -35,7 +35,14 @@ namespace Mycila {
class JSYClass {
public:
// jsyRXPin: pin connected to the RX of the JSY, jsyTXPin: pin connected to the TX of the JSY
void begin(const uint8_t jsyRXPin, const uint8_t jsyTXPin, const bool async = false, const JSYBaudRate baudRate = JSYBaudRate::BAUD_38400, HardwareSerial* serial = &Serial2);
void begin(const uint8_t jsyRXPin,
const uint8_t jsyTXPin,
const JSYBaudRate baudRate = JSYBaudRate::BAUD_38400,
HardwareSerial* serial = &Serial2,
const bool async = false,
uint32_t pause = MYCILA_JSY_ASYNC_READ_PAUSE_INTERVAL_MS,
uint8_t core = MYCILA_JSY_ASYNC_CORE,
uint32_t stackSize = MYCILA_JSY_ASYNC_STACK_SIZE);

void end();

Expand All @@ -47,9 +54,6 @@ namespace Mycila {
gpio_num_t getRXPin() const { return _pinRX; }
gpio_num_t getTXPin() const { return _pinTX; }
bool isEnabled() const { return _enabled; }
bool isAsync() const { return _async; }
JSYBaudRate getBaudRate() const { return _baudRate; }
HardwareSerial* getSerial() const { return _serial; }

void toJson(const JsonObject& root) const;

Expand All @@ -75,7 +79,7 @@ namespace Mycila {
gpio_num_t _pinRX = GPIO_NUM_NC;
gpio_num_t _pinTX = GPIO_NUM_NC;
HardwareSerial* _serial = &Serial2;
JSYBaudRate _baudRate = JSYBaudRate::BAUD_38400;
uint32_t _pause = MYCILA_JSY_ASYNC_READ_PAUSE_INTERVAL_MS;
volatile bool _async = false;
volatile bool _enabled = false;
volatile bool _reading = false;
Expand Down

0 comments on commit 73870c7

Please sign in to comment.