Compare commits

..

No commits in common. "3cd07981867bd8bafd1b4c81dfd4526411f157f2" and "8716b4ad73efff23e25a93858f0ed7bbbb7a1c85" have entirely different histories.

18 changed files with 79 additions and 152 deletions

View File

@ -43,17 +43,12 @@ jobs:
--flash_mode dio \
--flash_freq 40m \
--flash_size 4MB \
-o .pio/build/esp32dev/filaman_full.bin \
-o .pio/build/esp32dev/filaman.bin \
0x1000 .pio/build/esp32dev/bootloader.bin \
0x8000 .pio/build/esp32dev/partitions.bin \
0x10000 .pio/build/esp32dev/firmware.bin \
0x290000 .pio/build/esp32dev/spiffs.bin
- name: Prepare OTA firmware
run: |
# Use PlatformIO to create a proper OTA image
cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/filaman_ota.bin
- name: Get version from tag
id: get_version
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
@ -76,10 +71,9 @@ jobs:
- name: Create Release with GitHub CLI
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Changed from GITHUB_TOKEN to GH_TOKEN
run: |
gh release create "${{ github.ref_name }}" \
--title "Release ${{ steps.get_version.outputs.VERSION }}" \
--notes "${{ steps.changelog.outputs.CHANGES }}" \
".pio/build/esp32dev/filaman_full.bin#filaman_full.bin" \
".pio/build/esp32dev/filaman_ota.bin#filaman_ota.bin"
".pio/build/esp32dev/filaman.bin#filaman.bin"

View File

@ -1,22 +1,5 @@
# Changelog
## [1.2.0] - 2025-02-17
### Added
- implement OTA functionality and update build scripts; change upgrade link to OTA in HTML
- update version to v1.2.0 and modify build scripts in platformio.ini; remove unused includes in scale.cpp and website.cpp
- update version to v1.2.0 and add upgrade link in HTML files
- add esp_wifi.h and set maximum transmit power in WiFi initialization
### Changed
- update changelog for version 1.1.0
- clean up changelog and update script execution in platformio.ini
- update changelog for version 1.1.0
### Fixed
- update version number in header to v1.1.0
- correct version number in nav bar
## [1.1.0] - 2025-02-16
### Changed
- clean up changelog and update script execution in platformio.ini

View File

@ -12,7 +12,7 @@
<div style="display: flex; align-items: center; gap: 2rem;">
<img src="/logo.png" alt="FilaMan Logo" class="logo">
<div class="logo-text">
<h1>FilaMan<span class="version">v1.2.0</span></h1>
<h1>FilaMan<span class="version">v1.0.9</span></h1>
<h4>Filament Management Tool</h4>
</div>
</div>
@ -21,7 +21,6 @@
<a href="/waage">Scale</a>
<a href="/spoolman">Spoolman/Bambu</a>
<a href="/about">About</a>
<a href="/ota">Upgrade</a>
</nav>
<div class="status-container">
<div class="status-item">

View File

@ -1,4 +1,4 @@
<!-- head --><!DOCTYPE html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
@ -12,7 +12,7 @@
<div style="display: flex; align-items: center; gap: 2rem;">
<img src="/logo.png" alt="FilaMan Logo" class="logo">
<div class="logo-text">
<h1>FilaMan<span class="version">v1.2.0</span></h1>
<h1>FilaMan<span class="version">v1.0.2</span></h1>
<h4>Filament Management Tool</h4>
</div>
</div>
@ -21,7 +21,6 @@
<a href="/waage">Scale</a>
<a href="/spoolman">Spoolman/Bambu</a>
<a href="/about">About</a>
<a href="/upgrade">Upgrade</a>
</nav>
<div class="status-container">
<div class="status-item">
@ -34,7 +33,7 @@
</div>
</div>
<!-- head -->
<div class="container">
<h1>FilaMan</h1>

View File

@ -1,4 +1,4 @@
<!-- head --><!DOCTYPE html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
@ -12,7 +12,7 @@
<div style="display: flex; align-items: center; gap: 2rem;">
<img src="/logo.png" alt="FilaMan Logo" class="logo">
<div class="logo-text">
<h1>FilaMan<span class="version">v1.2.0</span></h1>
<h1>FilaMan<span class="version">v1.0.2</span></h1>
<h4>Filament Management Tool</h4>
</div>
</div>
@ -21,7 +21,6 @@
<a href="/waage">Scale</a>
<a href="/spoolman">Spoolman/Bambu</a>
<a href="/about">About</a>
<a href="/upgrade">Upgrade</a>
</nav>
<div class="status-container">
<div class="status-item">
@ -34,7 +33,6 @@
</div>
</div>
<!-- head -->
<div class="connection-status hidden">
<div class="spinner"></div>

View File

@ -1,4 +1,4 @@
<!-- head --><!DOCTYPE html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
@ -12,7 +12,7 @@
<div style="display: flex; align-items: center; gap: 2rem;">
<img src="/logo.png" alt="FilaMan Logo" class="logo">
<div class="logo-text">
<h1>FilaMan<span class="version">v1.2.0</span></h1>
<h1>FilaMan<span class="version">v1.0.2</span></h1>
<h4>Filament Management Tool</h4>
</div>
</div>
@ -21,7 +21,6 @@
<a href="/waage">Scale</a>
<a href="/spoolman">Spoolman/Bambu</a>
<a href="/about">About</a>
<a href="/upgrade">Upgrade</a>
</nav>
<div class="status-container">
<div class="status-item">
@ -34,7 +33,6 @@
</div>
</div>
<!-- head -->
<script>
window.onload = function() {

View File

@ -1,4 +1,4 @@
<!-- head --><!DOCTYPE html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
@ -12,7 +12,7 @@
<div style="display: flex; align-items: center; gap: 2rem;">
<img src="/logo.png" alt="FilaMan Logo" class="logo">
<div class="logo-text">
<h1>FilaMan<span class="version">v1.2.0</span></h1>
<h1>FilaMan<span class="version">v1.0.2</span></h1>
<h4>Filament Management Tool</h4>
</div>
</div>
@ -21,7 +21,6 @@
<a href="/waage">Scale</a>
<a href="/spoolman">Spoolman/Bambu</a>
<a href="/about">About</a>
<a href="/upgrade">Upgrade</a>
</nav>
<div class="status-container">
<div class="status-item">
@ -34,7 +33,6 @@
</div>
</div>
<!-- head -->
<div class="content">
<h1>Scale Configuration Page</h1>

View File

@ -1,4 +1,4 @@
<!-- head --><!DOCTYPE html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
@ -12,7 +12,7 @@
<div style="display: flex; align-items: center; gap: 2rem;">
<img src="/logo.png" alt="FilaMan Logo" class="logo">
<div class="logo-text">
<h1>FilaMan<span class="version">v1.2.0</span></h1>
<h1>FilaMan<span class="version">v1.0.2</span></h1>
<h4>Filament Management Tool</h4>
</div>
</div>
@ -21,7 +21,6 @@
<a href="/waage">Scale</a>
<a href="/spoolman">Spoolman/Bambu</a>
<a href="/about">About</a>
<a href="/upgrade">Upgrade</a>
</nav>
<div class="status-container">
<div class="status-item">
@ -34,7 +33,6 @@
</div>
</div>
<!-- head -->
<div class="content">
<h1>WiFi Configuration Page</h1>

View File

@ -9,7 +9,7 @@
; https://docs.platformio.org/page/projectconf.html
[common]
version = "1.2.0"
version = "1.1.0"
[env:esp32dev]
platform = espressif32
@ -29,7 +29,6 @@ lib_deps =
bblanchon/ArduinoJson @ ^7.3.0
knolleary/PubSubClient @ ^2.8
digitaldragon/SSLClient @ ^1.3.2
ipdotsetaf/ESPAsyncHTTPUpdateServer @ ^2.0.0
; Enable SPIFFS upload
board_build.filesystem = spiffs
@ -49,16 +48,9 @@ build_flags =
'-D VERSION="${common.version}"'
extra_scripts =
scripts/extra_script.py
pre:scripts/pre_build.py ; wird zuerst ausgeführt
pre:scripts/pre_spiffs.py ; wird als zweites ausgeführt
pre:scripts/combine_html.py ; wird als drittes ausgeführt
scripts/gzip_files.py
; Remove or comment out the targets line
;targets = buildfs, build
; Add a custom target to build both
[platformio]
default_envs = esp32dev
pre:scripts/pre_build.py
pre:scripts/combine_html.py
pre:scripts/pre_spiffs.py
pre:scripts/gzip_files.py
pre:scripts/extra_script.py
#post:scripts/update_changelog.py

View File

@ -1,10 +1,7 @@
Import("env")
import os
import re
def combine_html_files(source, target, env):
print("COMBINE HTML FILES")
html_dir = "./html"
header_file = os.path.join(html_dir, "header.html")
@ -21,9 +18,9 @@ def combine_html_files(source, target, env):
with open(file_path, 'r') as f:
content = f.read()
# Replace content between head comments with header content
pattern = r'(<!-- head -->).*?(<!-- head -->)'
new_content = re.sub(pattern, r'\1' + header_content + r'\2', content, flags=re.DOTALL)
# Replace placeholder with header content
if '{{header}}' in content:
new_content = content.replace('{{header}}', header_content)
# Write back combined content
with open(file_path, 'w') as f:

View File

@ -1,10 +1,10 @@
#include <Arduino.h>
#include <WiFi.h>
#include <DNSServer.h>
#include <WiFiManager.h>
#include <ESPmDNS.h>
#include <Wire.h>
#include <WiFi.h>
#include "wlan.h"
#include "config.h"
#include "website.h"
#include "api.h"
@ -15,6 +15,12 @@
#include "esp_task_wdt.h"
#include "commonFS.h"
// ***** WIFI initialisieren
WiFiManager wm;
bool wm_nonblocking = false;
void initWiFi();
// ################### Functions
// ##### SETUP #####
void setup() {
Serial.begin(115200);
@ -90,6 +96,9 @@ void loop() {
unsigned long currentMillis = millis();
// Falls WifiManager im nicht blockenden Modus ist
//if(wm_nonblocking) wm.process();
// Send AMS Data min every Minute
if (currentMillis - lastAmsSendTime >= amsSendInterval) {
lastAmsSendTime = currentMillis;
@ -155,3 +164,38 @@ void loop() {
yield();
esp_task_wdt_reset();
}
// ##### Funktionen für Konfiguration #####
void initWiFi() {
WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP
if(wm_nonblocking) wm.setConfigPortalBlocking(false);
wm.setConfigPortalTimeout(320); // Portal nach 5min schließen
oledShowTopRow();
oledShowMessage("WiFi Setup");
bool res;
// res = wm.autoConnect(); // auto generated AP name from chipid
res = wm.autoConnect("FilaMan"); // anonymous ap
// res = wm.autoConnect("spoolman","password"); // password protected ap
if(!res) {
Serial.println("Failed to connect or hit timeout");
// ESP.restart();
oledShowTopRow();
oledShowMessage("WiFi not connected Check Portal");
}
else {
wifiOn = true;
//if you get here you have connected to the WiFi
Serial.println("connected...yeey :)");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
oledShowTopRow();
display.display();
}
}
// ##### Funktionen für Konfiguration Ende #####

View File

@ -1,11 +0,0 @@
#include <Arduino.h>
#include "ota.h"
#include <ESPAsyncWebServer.h>
#include <ESPAsyncHTTPUpdateServer.h>
ESPAsyncHTTPUpdateServer updateServer;
void setupOTA(AsyncWebServer &server) {
updateServer.setup(&server, "/ota", "admin", "admin");
//updateServer.setup(&server);
}

View File

@ -1,8 +0,0 @@
#ifndef OTA_H
#define OTA_H
#include <ESPAsyncWebServer.h>
void setupOTA(AsyncWebServer &server);
#endif

View File

@ -5,6 +5,7 @@
#include "HX711.h"
#include <EEPROM.h>
#include "display.h"
#include "nfc.h"
#include "esp_task_wdt.h"
HX711 scale;

View File

@ -3,11 +3,11 @@
#include "api.h"
#include <ArduinoJson.h>
#include <ESPAsyncWebServer.h>
//#include <AsyncWebSocket.h>
#include "bambu.h"
#include "nfc.h"
#include "scale.h"
#include "esp_task_wdt.h"
#include "ota.h"
// Cache-Control Header definieren
#define CACHE_CONTROL "max-age=31536000" // Cache für 1 Jahr
@ -161,8 +161,6 @@ void setupWebserver(AsyncWebServer &server) {
Serial.print("Geladene Spoolman-URL: ");
Serial.println(spoolmanUrl);
setupOTA(server);
// Route für about
server.on("/about", HTTP_GET, [](AsyncWebServerRequest *request){
Serial.println("Anfrage für /about erhalten");

View File

@ -1,45 +0,0 @@
#include <Arduino.h>
#include "wlan.h"
#include <WiFi.h>
#include <esp_wifi.h>
#include <WiFiManager.h>
#include "display.h"
#include "config.h"
WiFiManager wm;
bool wm_nonblocking = false;
void initWiFi() {
WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP
esp_wifi_set_max_tx_power(72); // Setze maximale Sendeleistung auf 20dBm
if(wm_nonblocking) wm.setConfigPortalBlocking(false);
wm.setConfigPortalTimeout(320); // Portal nach 5min schließen
oledShowTopRow();
oledShowMessage("WiFi Setup");
bool res;
// res = wm.autoConnect(); // auto generated AP name from chipid
res = wm.autoConnect("FilaMan"); // anonymous ap
// res = wm.autoConnect("spoolman","password"); // password protected ap
if(!res) {
Serial.println("Failed to connect or hit timeout");
// ESP.restart();
oledShowTopRow();
oledShowMessage("WiFi not connected Check Portal");
}
else {
wifiOn = true;
//if you get here you have connected to the WiFi
Serial.println("connected...yeey :)");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
oledShowTopRow();
display.display();
}
}

View File

@ -1,8 +0,0 @@
#ifndef WLAN_H
#define WLAN_H
#include <Arduino.h>
void initWiFi();
#endif