Compare commits

..

No commits in common. "main" and "0.0.1-beta.6" have entirely different histories.

11 changed files with 26 additions and 179 deletions

View file

@ -1,136 +0,0 @@
name: "BTClock CI"
on:
push:
tags:
- "*"
workflow_dispatch:
jobs:
build:
runs-on: docker
container:
image: ghcr.io/catthehacker/ubuntu:js-22.04
permissions:
contents: write
checks: write
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: actions/setup-node@v4
with:
node-version: lts/*
cache: yarn
cache-dependency-path: "**/yarn.lock"
- uses: actions/cache@v4
with:
path: |
~/.cache/pip
~/.platformio/.cache
~/data/node_modules
.pio
data/node_modules
key: ${{ runner.os }}-pio
- uses: actions/setup-python@v5
with:
python-version: "3.9"
cache: "pip"
- name: Get current date
id: dateAndTime
shell: bash
run: echo "dateAndTime=$(date +'%Y-%m-%d-%H:%M')" >> $GITHUB_OUTPUT
- name: Install PlatformIO Core
shell: bash
run: pip install --upgrade platformio
- name: Build BTClock firmware
shell: bash
run: pio run
- name: Build BTClock filesystem
shell: bash
run: pio run --target buildfs
- name: Copy bootloader to output folder
run: cp ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin .pio
- name: Upload artifacts
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
include-hidden-files: true
retention-days: 1
name: prepared-outputs
path: .pio/**/*.bin
merge:
runs-on: docker
container:
image: ghcr.io/catthehacker/ubuntu:js-22.04
permissions:
contents: write
checks: write
needs: build
continue-on-error: true
strategy:
matrix:
chip:
- name: lolin_s2_mini
version: esp32s2
- name: lolin_s3_mini
version: esp32s3
- name: orangeclock
version: esp32s3
epd_variant: [213epd, 29epd]
exclude:
- chip: { name: orangeclock, version: esp32s3 }
epd_variant: 213epd
steps:
- uses: https://code.forgejo.org/forgejo/download-artifact@v4
with:
name: prepared-outputs
path: .pio
- name: Install esptools.py
run: pip install --upgrade esptool
- name: Create merged firmware binary
run: mkdir -p ${{ matrix.chip.name }}_${{ matrix.epd_variant }} && esptool.py --chip ${{ matrix.chip.version }} merge_bin -o ${{ matrix.chip.name }}_${{ matrix.epd_variant }}/${{ matrix.chip.name }}_${{ matrix.epd_variant }}.bin --flash_mode dio 0x0000 .pio/build/${{ matrix.chip.name }}_${{ matrix.epd_variant }}/bootloader.bin 0x8000 .pio/build/${{ matrix.chip.name }}_${{ matrix.epd_variant }}/partitions.bin 0xe000 .pio/boot_app0.bin 0x10000 .pio/build/${{ matrix.chip.name }}_${{ matrix.epd_variant }}/firmware.bin 0x369000 .pio/build/${{ matrix.chip.name }}_${{ matrix.epd_variant }}/littlefs.bin
- name: Create checksum for firmware
shell: bash
run: shasum -a 256 .pio/build/${{ matrix.chip.name }}_${{ matrix.epd_variant }}/firmware.bin | awk '{print $1}' > ${{ matrix.chip.name }}_${{ matrix.epd_variant }}/${{ matrix.chip.name }}_${{ matrix.epd_variant }}_firmware.bin.sha256
- name: Create checksum for merged binary
run: shasum -a 256 ${{ matrix.chip.name }}_${{ matrix.epd_variant }}/${{ matrix.chip.name }}_${{ matrix.epd_variant }}.bin | awk '{print $1}' > ${{ matrix.chip.name }}_${{ matrix.epd_variant }}/${{ matrix.chip.name }}_${{ matrix.epd_variant }}.sha256
- name: Upload artifacts
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
name: build-${{ matrix.chip.name }}-${{ matrix.epd_variant }}
path: |
${{ matrix.chip.name }}_${{ matrix.epd_variant }}/*.bin
${{ matrix.chip.name }}_${{ matrix.epd_variant }}/*.sha256
release:
runs-on: docker
permissions:
contents: write
checks: write
needs: merge
steps:
- name: Download matrix outputs
uses: https://code.forgejo.org/forgejo/download-artifact@v4
with:
pattern: build-*
merge-multiple: false
path: temp
- name: Copy files
run: |
mkdir -p release
find temp -type f \( -name "*.bin" -o -name "*.sha256" \) -exec cp -f {} release/ \;
- name: Create release
uses: https://code.forgejo.org/actions/forgejo-release@v2.4.0
with:
url: "https://git.btclock.dev"
repo: "${{ github.repository }}"
direction: upload
tag: "${{ github.ref_name }}"
sha: "${{ github.sha }}"
release-dir: release
token: ${{ secrets.TOKEN }}
override: ${{ github.ref_type != 'tag' && github.ref_name != 'main' }}
prerelease: ${{ github.ref_type != 'tag' && github.ref_name != 'main' }}
release-notes-assistant: false

2
.gitmodules vendored
View file

@ -1,3 +1,3 @@
[submodule "data"] [submodule "data"]
path = data path = data
url = https://git.btclock.dev/btclock/oc-webui.git url = https://github.com/btclock/oc-webui.git

2
data

@ -1 +1 @@
Subproject commit 8332fec4a1ec0045d91f063617bb441914e7b67a Subproject commit b7c4c5ffbadcde44d6578e6a9a3498d40bf8dee6

View file

@ -15,7 +15,6 @@ default_envs = lolin_s2_mini_213epd, lolin_s2_mini_29epd, lolin_s3_mini_213epd,
[btclock_base] [btclock_base]
platform = espressif32 platform = espressif32
framework = arduino framework = arduino
platform_packages = platformio/framework-arduinoespressif32
monitor_speed = 115200 monitor_speed = 115200
monitor_filters = esp32_exception_decoder, colorize monitor_filters = esp32_exception_decoder, colorize
board_build.filesystem = littlefs board_build.filesystem = littlefs
@ -25,11 +24,12 @@ build_flags =
!python scripts/git_rev.py !python scripts/git_rev.py
-DLAST_BUILD_TIME=$UNIX_TIME -DLAST_BUILD_TIME=$UNIX_TIME
lib_deps = lib_deps =
zinggjm/GxEPD2@^1.6.1 zinggjm/GxEPD2@^1.5.6
https://github.com/tzapu/WiFiManager.git#v2.0.17 https://github.com/tzapu/WiFiManager.git#v2.0.17
bblanchon/ArduinoJson@^7.2.1 bblanchon/ArduinoJson@^7.0.3
mathieucarbou/ESP Async WebServer@^3.0.6 mathieucarbou/ESP Async WebServer
fastled/FastLED@^3.9.6 gilmaimon/ArduinoWebsockets@^0.5.3
fastled/FastLED@^3.6.0
[env:lolin_s2_mini] [env:lolin_s2_mini]
extends = btclock_base extends = btclock_base
board = lolin_s2_mini board = lolin_s2_mini

View file

@ -90,6 +90,7 @@ void setupWifi()
randomSeed(seed); randomSeed(seed);
// WiFi.begin(, "); // WiFi.begin(, ");
WiFi.setAutoConnect(true);
WiFi.setAutoReconnect(true); WiFi.setAutoReconnect(true);
WiFiManager wm; WiFiManager wm;
@ -153,7 +154,6 @@ void setupWifi()
Serial.println("WiFi connected"); Serial.println("WiFi connected");
Serial.println("IP address: "); Serial.println("IP address: ");
Serial.println(WiFi.localIP()); Serial.println(WiFi.localIP());
epdShowIp();
// WiFi.setTxPower(WIFI_POWER_8_5dBm); // WiFi.setTxPower(WIFI_POWER_8_5dBm);
// enableWiFi(); // enableWiFi();
} }
@ -180,6 +180,7 @@ void wakeModemSleep()
void enableWiFi() void enableWiFi()
{ {
adc_power_on();
delay(200); delay(200);
WiFi.disconnect(false); // Reconnect the network WiFi.disconnect(false); // Reconnect the network
@ -204,6 +205,7 @@ void enableWiFi()
void disableWiFi() void disableWiFi()
{ {
adc_power_off();
WiFi.disconnect(true); // Disconnect from the network WiFi.disconnect(true); // Disconnect from the network
WiFi.mode(WIFI_OFF); // Switch WiFi off WiFi.mode(WIFI_OFF); // Switch WiFi off
Serial.println(""); Serial.println("");

View file

@ -3,6 +3,7 @@
#include <Arduino.h> #include <Arduino.h>
#include <Preferences.h> #include <Preferences.h>
#include "shared.hpp" #include "shared.hpp"
#include "driver/adc.h"
#include <WiFiManager.h> #include <WiFiManager.h>
#include <base64.h> #include <base64.h>
#include "epd.hpp" #include "epd.hpp"

View file

@ -22,14 +22,14 @@ void setupDisplay()
display.setRotation(1); display.setRotation(1);
display.setFont(&Antonio_SemiBold20pt7b); display.setFont(&Antonio_SemiBold20pt7b);
display.setTextColor(GxEPD_WHITE); display.setTextColor(GxEPD_WHITE);
// int16_t tbx, tby; int16_t tbx, tby;
// uint16_t tbw, tbh; uint16_t tbw, tbh;
// display.getTextBounds("OrangeBTClock", 0, 0, &tbx, &tby, &tbw, &tbh); display.getTextBounds("OrangeBTClock", 0, 0, &tbx, &tby, &tbw, &tbh);
// // center the bounding box by transposition of the origin: // center the bounding box by transposition of the origin:
// uint16_t x = ((display.width() - tbw) / 2) - tbx; uint16_t x = ((display.width() - tbw) / 2) - tbx;
// uint16_t y = ((display.height() - tbh) / 2) - tby; uint16_t y = ((display.height() - tbh) / 2) - tby;
display.fillScreen(GxEPD_BLACK); display.fillScreen(GxEPD_BLACK);
// display.setCursor(x, y); display.setCursor(x, y);
// display.print("OrangeBTClock"); // display.print("OrangeBTClock");
// display.drawImage(epd_bitmap_allArray[0], GxEPD_WHITE, 0,0 250,37); // display.drawImage(epd_bitmap_allArray[0], GxEPD_WHITE, 0,0 250,37);
@ -39,9 +39,6 @@ void setupDisplay()
display.drawBitmap(xPos,yPos, epd_bitmap_oclogo, 250, 37, GxEPD_WHITE); display.drawBitmap(xPos,yPos, epd_bitmap_oclogo, 250, 37, GxEPD_WHITE);
display.display(false); display.display(false);
display.setCursor(0, 37);
// display.fillScreen(GxEPD_WHITE); // display.fillScreen(GxEPD_WHITE);
// display.drawLine(0, 10, display.width(), 10, GxEPD_BLACK); // display.drawLine(0, 10, display.width(), 10, GxEPD_BLACK);
// display.drawLine(0, row2, display.width(), row2, GxEPD_BLACK); // display.drawLine(0, row2, display.width(), row2, GxEPD_BLACK);
@ -73,22 +70,6 @@ void setupDisplay()
// display.display(true); // display.display(true);
} }
void epdShowIp() {
display.setRotation(1);
display.setFont(&LibreFranklin_SemiBold10pt7b);
display.setTextColor(GxEPD_WHITE);
String ipStr = WiFi.localIP().toString();
int16_t tbx, tby;
uint16_t tbw, tbh;
display.getTextBounds(ipStr, 0, 0, &tbx, &tby, &tbw, &tbh);
// center the bounding box by transposition of the origin:
uint16_t x = ((display.width() - tbw) / 2) - tbx;
uint16_t y = ((display.height() - tbh) / 2) - tby + 37;
display.setCursor(x, y);
display.println(WiFi.localIP());
display.display(true);
}
void updateRow2(String c, char icon) void updateRow2(String c, char icon)
{ {
if (c.equals(currentRow2) && icon == currentIcon2) if (c.equals(currentRow2) && icon == currentIcon2)

View file

@ -10,4 +10,3 @@ void updateRow1(String c, char icon);
void updateRow2(String c, char icon); void updateRow2(String c, char icon);
void updateRow3(String c, char icon); void updateRow3(String c, char icon);
void updateRows(String row1Content, String row2Content, String row3Content); void updateRows(String row1Content, String row2Content, String row3Content);
void epdShowIp();

View file

@ -29,7 +29,7 @@ typedef void (*MethodPtr)(String, char);
MethodPtr methods[] = {nullptr, updateRow1, updateRow2, updateRow3}; MethodPtr methods[] = {nullptr, updateRow1, updateRow2, updateRow3};
WiFiClient client; WiFiClientSecure client;
uint currentPrice = 0; uint currentPrice = 0;
String currentBlock = ""; String currentBlock = "";
String currentFees = ""; String currentFees = "";
@ -42,6 +42,8 @@ void setup()
{ {
// setCpuFrequencyMhz(40); // setCpuFrequencyMhz(40);
Serial.begin(115200); Serial.begin(115200);
delay(2500);
Serial.println("Hello");
#ifndef IS_ORANGECLOCK #ifndef IS_ORANGECLOCK
pinMode(LED_BUILTIN, OUTPUT); pinMode(LED_BUILTIN, OUTPUT);
@ -71,7 +73,7 @@ void setup()
setupWebserver(); setupWebserver();
setupOTA(); setupOTA();
} }
// client.setInsecure(); client.setInsecure();
#ifndef IS_ORANGECLOCK #ifndef IS_ORANGECLOCK
digitalWrite(LED_BUILTIN, LOW); digitalWrite(LED_BUILTIN, LOW);
@ -103,7 +105,7 @@ void loop()
return; return;
} }
// client.setInsecure(); client.setInsecure();
// //

View file

@ -1,7 +1,7 @@
#pragma once #pragma once
#include <Arduino.h> #include <Arduino.h>
#include <WiFiClient.h> #include <WiFiClientSecure.h>
#include <Preferences.h> #include <Preferences.h>
#include <GxEPD2.h> #include <GxEPD2.h>
#include <GxEPD2_BW.h> #include <GxEPD2_BW.h>
@ -10,7 +10,6 @@
#include <FastLED.h> #include <FastLED.h>
#include <freertos/FreeRTOS.h> #include <freertos/FreeRTOS.h>
#include <freertos/task.h> #include <freertos/task.h>
#include <WiFi.h>
#ifdef VERSION_EPD_2_13 #ifdef VERSION_EPD_2_13
#define EPD_CLASS GxEPD2_213_B74 #define EPD_CLASS GxEPD2_213_B74
@ -92,7 +91,7 @@ const int LINE_DATE = 100;
#define CURRENCY_AUD "AUD" #define CURRENCY_AUD "AUD"
#define CURRENCY_JPY "JPY" #define CURRENCY_JPY "JPY"
extern WiFiClient client; extern WiFiClientSecure client;
extern GxEPD2_BW<EPD_CLASS, EPD_CLASS::HEIGHT> display; extern GxEPD2_BW<EPD_CLASS, EPD_CLASS::HEIGHT> display;
extern Preferences preferences; extern Preferences preferences;
extern bool isUpdating; extern bool isUpdating;

View file

@ -4,7 +4,6 @@
#include <Arduino.h> #include <Arduino.h>
#include <ArduinoJson.hpp> #include <ArduinoJson.hpp>
#include "shared.hpp" #include "shared.hpp"
#include <esp_mac.h>
namespace ArduinoJson { namespace ArduinoJson {
template <> template <>