Gibt es denn mal was neues in Sachen Firmware ?
Wie weit ist das WEB Interface?
Gruß
Stealth
FW
-
stealthes70
- Сообщения: 7
- Зарегистрирован: 15 фев 2025, 23:42
FW
Das hatte ich mal gelesen, aber wo..... Der Server ist ja schon angelegt. Sie können schon die IP im Browser eingeben wenn sich die Geräte im selben Netzwerk befinden. und erhalten "ERROR 404 Page Not Found in SPIFFS
"GET / HTTP/1.1"
"/index.php" "
Ich hoffe das Future kommt noch
"GET / HTTP/1.1"
"/index.php" "
Ich hoffe das Future kommt noch
-
stealthes70
- Сообщения: 7
- Зарегистрирован: 15 фев 2025, 23:42
FW
Habe mal was probiert. Einfach folgenden Code mit einem Editor als index.php abspeichern und mit dem A-Explorer ins Verzeichnis auf dem ATS25 legen.
Dann Reboot und im Webbrowser die IP vom ATS25 aufrufen. In meinem Fall ATS25 Max Decoder II
Wer hier was beitragen kann gerne melden.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>ATS25MaxDecoderWeb</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
background-color: #000;
color: #0f0;
font-family: monospace;
padding: 20px;
}
h1 {
font-size: 28px;
margin-bottom: 20px;
}
.data-block {
font-size: 18px;
margin-bottom: 8px;
}
</style>
</head>
<body>
<h1>Test ATS25MaxDecoderWeb</h1>
<div class="data-block">Frequenz: <span id="frequenz">--.-- MHz</span></div>
<div class="data-block">Signalstärke: <span id="signal">-- dBm</span></div>
<div class="data-block">Modus: <span id="mode">--</span></div>
<div class="data-block">Temperatur: <span id="temp">-- °C</span></div>
<div class="data-block">Spannung: <span id="volt">-- V</span></div>
<div class="data-block">Empfangsqualität: <span id="quality">-- %</span></div>
<div class="data-block">GPS: <span id="gps">--</span></div>
<div class="data-block">Modulzeit: <span id="modulzeit">--:--:--</span></div>
<div class="data-block">Status: <span id="status">--</span></div>
<script>
// Dummy-Daten – später durch echten ESP32-Request ersetzen
function ladeDummyDaten() {
document.getElementById('frequenz').textContent = '7.050 MHz';
document.getElementById('signal').textContent = '-73 dBm';
document.getElementById('mode').textContent = 'LSB';
document.getElementById('temp').textContent = '36.5 °C';
document.getElementById('volt').textContent = '3.3 V';
document.getElementById('quality').textContent = '92 %';
document.getElementById('gps').textContent = '52.52°N, 13.40°E';
document.getElementById('modulzeit').textContent = '20:08:00';
document.getElementById('status').textContent = 'Empfang stabil';
}
ladeDummyDaten();
setInterval(ladeDummyDaten, 5000); // Aktualisierung alle 5 Sekunden
</script>
</body>
</html>

Dann Reboot und im Webbrowser die IP vom ATS25 aufrufen. In meinem Fall ATS25 Max Decoder II
Wer hier was beitragen kann gerne melden.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>ATS25MaxDecoderWeb</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
background-color: #000;
color: #0f0;
font-family: monospace;
padding: 20px;
}
h1 {
font-size: 28px;
margin-bottom: 20px;
}
.data-block {
font-size: 18px;
margin-bottom: 8px;
}
</style>
</head>
<body>
<h1>Test ATS25MaxDecoderWeb</h1>
<div class="data-block">Frequenz: <span id="frequenz">--.-- MHz</span></div>
<div class="data-block">Signalstärke: <span id="signal">-- dBm</span></div>
<div class="data-block">Modus: <span id="mode">--</span></div>
<div class="data-block">Temperatur: <span id="temp">-- °C</span></div>
<div class="data-block">Spannung: <span id="volt">-- V</span></div>
<div class="data-block">Empfangsqualität: <span id="quality">-- %</span></div>
<div class="data-block">GPS: <span id="gps">--</span></div>
<div class="data-block">Modulzeit: <span id="modulzeit">--:--:--</span></div>
<div class="data-block">Status: <span id="status">--</span></div>
<script>
// Dummy-Daten – später durch echten ESP32-Request ersetzen
function ladeDummyDaten() {
document.getElementById('frequenz').textContent = '7.050 MHz';
document.getElementById('signal').textContent = '-73 dBm';
document.getElementById('mode').textContent = 'LSB';
document.getElementById('temp').textContent = '36.5 °C';
document.getElementById('volt').textContent = '3.3 V';
document.getElementById('quality').textContent = '92 %';
document.getElementById('gps').textContent = '52.52°N, 13.40°E';
document.getElementById('modulzeit').textContent = '20:08:00';
document.getElementById('status').textContent = 'Empfang stabil';
}
ladeDummyDaten();
setInterval(ladeDummyDaten, 5000); // Aktualisierung alle 5 Sekunden
</script>
</body>
</html>
-
stealthes70
- Сообщения: 7
- Зарегистрирован: 15 фев 2025, 23:42
FW
Auslesen der decoder.log und Ausgabe auf dem Webinterface....TEST
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>ATS25 MAX Decoder II – Loganzeige</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
background-color: #000;
color: #0f0;
font-family: monospace;
padding: 20px;
}
h1 {
font-size: 28px;
margin-bottom: 20px;
}
pre {
font-size: 16px;
white-space: pre-wrap;
word-wrap: break-word;
border: 1px solid #0f0;
padding: 10px;
background-color: #111;
max-height: 80vh;
overflow-y: scroll; /* Scrollbalken aktivieren */
}
</style>
</head>
<body>
<h1>ATS25 MAX Decoder II – Dekodierte Nachrichten</h1>
<pre id="logtext">Lade Logdaten...</pre>
<script>
async function ladeLog() {
try {
const response = await fetch('/decoder.log');
if (!response.ok) throw new Error("Fehler beim Abrufen");
const text = await response.text();
document.getElementById('logtext').textContent = text;
} catch (error) {
document.getElementById('logtext').textContent = "Fehler: " + error.message;
}
}
ladeLog();
setInterval(ladeLog, 5000); // Aktualisiere alle 5 Sekunden
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>ATS25 MAX Decoder II – Loganzeige</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
background-color: #000;
color: #0f0;
font-family: monospace;
padding: 20px;
}
h1 {
font-size: 28px;
margin-bottom: 20px;
}
pre {
font-size: 16px;
white-space: pre-wrap;
word-wrap: break-word;
border: 1px solid #0f0;
padding: 10px;
background-color: #111;
max-height: 80vh;
overflow-y: scroll; /* Scrollbalken aktivieren */
}
</style>
</head>
<body>
<h1>ATS25 MAX Decoder II – Dekodierte Nachrichten</h1>
<pre id="logtext">Lade Logdaten...</pre>
<script>
async function ladeLog() {
try {
const response = await fetch('/decoder.log');
if (!response.ok) throw new Error("Fehler beim Abrufen");
const text = await response.text();
document.getElementById('logtext').textContent = text;
} catch (error) {
document.getElementById('logtext').textContent = "Fehler: " + error.message;
}
}
ladeLog();
setInterval(ladeLog, 5000); // Aktualisiere alle 5 Sekunden
</script>
</body>
</html>
-
stealthes70
- Сообщения: 7
- Зарегистрирован: 15 фев 2025, 23:42
FW
Etwas verbessert:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>ATS25 MAX Decoder II – Loganzeige</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
background-color: #000;
color: #0f0;
font-family: monospace;
padding: 20px;
}
h1 {
font-size: 28px;
margin-bottom: 20px;
}
pre {
font-size: 16px;
white-space: pre-wrap;
word-wrap: break-word;
border: 1px solid #0f0;
padding: 10px;
background-color: #111;
max-height: 80vh;
overflow-y: scroll;
}
</style>
</head>
<body>
<h1>ATS25 MAX Decoder II – Dekodierte Nachrichten</h1>
<pre id="logtext">Lade Logdaten...</pre>
<script>
function ladeLog() {
fetch('/decoder.log?t=' + Date.now())
.then(response => response.text())
.then(text => {
const logElement = document.getElementById('logtext');
logElement.textContent = text;
logElement.scrollTop = logElement.scrollHeight;
})
.catch(error => {
document.getElementById('logtext').textContent = "Fehler: " + error.message;
});
}
ladeLog();
setInterval(ladeLog, 5000); // Alle 5 Sekunden neu laden
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>ATS25 MAX Decoder II – Loganzeige</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
background-color: #000;
color: #0f0;
font-family: monospace;
padding: 20px;
}
h1 {
font-size: 28px;
margin-bottom: 20px;
}
pre {
font-size: 16px;
white-space: pre-wrap;
word-wrap: break-word;
border: 1px solid #0f0;
padding: 10px;
background-color: #111;
max-height: 80vh;
overflow-y: scroll;
}
</style>
</head>
<body>
<h1>ATS25 MAX Decoder II – Dekodierte Nachrichten</h1>
<pre id="logtext">Lade Logdaten...</pre>
<script>
function ladeLog() {
fetch('/decoder.log?t=' + Date.now())
.then(response => response.text())
.then(text => {
const logElement = document.getElementById('logtext');
logElement.textContent = text;
logElement.scrollTop = logElement.scrollHeight;
})
.catch(error => {
document.getElementById('logtext').textContent = "Fehler: " + error.message;
});
}
ladeLog();
setInterval(ladeLog, 5000); // Alle 5 Sekunden neu laden
</script>
</body>
</html>
- Binns
- Site Admin
- Сообщения: 479
- Зарегистрирован: 25 апр 2022, 22:46
- Благодарил (а): 28 раз
- Поблагодарили: 137 раз
FW
test Web content:
API:
GET
----------
frequency
0 - frequency
1 - units
2 - minimum
3 - maximum
band
-1 current name
0 - 31 name
bandtype
-1 current
n - all
bfo
0 - value
1 - step
step
mode
-1 current
n - all
bandwidth
-1 current
n - all
volume
0 - value
1 - sq value
2 - mute on/off
signal
0 - rssi
1 - snr
2 - stereo/mono
3 - stereo on/off
attenuator
0 - AGC on/off
1 - ATT
battery
0 - %
1 - volt
2 - charge
3 - no charge = 0, charge = 1, charged = 2
wifi
0 - ssid
1 - rssi
2 - ip
version
itu
vhf
city
0 - name
1 - UTC
time
0 - time
1 - date
language
-1 current language
n - name language
langstr
0 - last = lang string
rds
0 - on/off
1 - station
2 - info
scan
1 - 480 RSSI step
-1 - -480 SNR step
0 - pause
-1000 start frequency
1000 end frequency
2000 scale
memosetup
memo
n - frequency memo n
memoname
n - name memo n
memomode
n - mode memo n
memocity
n - city memo n
file
result 0/1 and name or size file
SET
----------
frequency=
-1 step-
1 step+
n value set AM
-n value set FM
band=
0 - 31,100 value set
bfo=
n -1999 - 1999 set value
2000 - step change
step=
n value set
mode=
n value set
bandwidth=
n value set
volume=
-n n step- mute off
n n step+ mute off
0 mute on
sq=
-n n step-
n n step+
stereo=
0 off
1 on
attenuator=
-1 AGC off
0 AGC on
n set ATT
seek=
-1 seek-
1 seek+
0 seek stop
city=
-1
1
language=
n
rds=
0 off
1 on
itu=
n region
vhf=
0 no 64MHz start
1 64MHz start
clock=
0 12h
1 24h
beep=
n
display=
0 off
1 on
scan=
n start
after start
0 stop
1 -1 frequency +/-
2 pause on/off
3 -3 scale +/-
memo=
-1 add memo
n set memo n
memosetup=
0 - 7 setup list memo
reset
file=
n name file n to result
-n size file n to result
0 count files
filedelete=
name
fileexist=
name
for form upload file:
if "name" = "\" save file name = "filename"
if "name" = "/name" save file name = "name"
else if "name" != "filename" not save
-
stealthes70
- Сообщения: 7
- Зарегистрирован: 15 фев 2025, 23:42
FW
Danke vielmals für die Bereitstellung. Ich werde mich in den kommenden Wochen mal wieder damit beschäftigen. Am besten wäre der source code 