Compare commits
6 Commits
973c8f11ab
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 3fd97364e0 | |||
| 5c1eb4a42d | |||
| b4c153089f | |||
| cc664f6692 | |||
| 6d99bdafbd | |||
| 58608f7cf8 |
@@ -1,10 +1,61 @@
|
||||
node-modules
|
||||
PYTHON
|
||||
.gitignore
|
||||
.dockerignore
|
||||
build_and_copy.sh
|
||||
buildit.sh
|
||||
copycontainder.sh
|
||||
# Node modules
|
||||
node_modules/
|
||||
|
||||
# Logs
|
||||
logs/
|
||||
log/
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Dependency directories
|
||||
dist/
|
||||
build/
|
||||
bower_components/
|
||||
|
||||
# Test, coverage, and debug
|
||||
coverage/
|
||||
.nyc_output/
|
||||
*.out
|
||||
*.tmp
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.bak
|
||||
*~
|
||||
|
||||
# Mac system files
|
||||
.DS_Store
|
||||
|
||||
# Environment files
|
||||
.env
|
||||
.env.*
|
||||
|
||||
# Dumps and large sensor data
|
||||
akws/dump/
|
||||
*.bson
|
||||
*.metadata.json
|
||||
|
||||
# Public generated files
|
||||
public/js/*.map
|
||||
public/js/*.tmp
|
||||
|
||||
# Ignore Python cache (if any)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Project-specific
|
||||
Feinstaub_ToDos.pdf
|
||||
this_is_MacBig
|
||||
akws
|
||||
|
||||
# Build/Deployment files (nicht ins Image kopieren)
|
||||
docker-compose.yml
|
||||
docker-compose.*.yml
|
||||
Dockerfile
|
||||
Dockerfile*
|
||||
nginx-proxy
|
||||
*.sh
|
||||
*.md
|
||||
|
||||
18
.env.local
18
.env.local
@@ -1,18 +0,0 @@
|
||||
# Environment Variables für lokale Entwicklung mit docker-compose.local.yml
|
||||
# Diese Datei kann für lokale MongoDB-Verbindungseinstellungen verwendet werden
|
||||
|
||||
# Server Configuration
|
||||
SERVERPORT=3005
|
||||
DEBUG=true
|
||||
|
||||
# MongoDB Configuration - REMOTE SERVER
|
||||
MONGOHOST=217.72.203.152
|
||||
MONGOPORT=27037
|
||||
MONGOBASE=sensor_data
|
||||
MONGOAUTH=true
|
||||
MONGOUSRP=admin:mongo4noise
|
||||
|
||||
# Timezone
|
||||
TZ=Europe/Berlin
|
||||
|
||||
LOCALDIR=/Users/rxf/Projekte/Geiger_WEB_26
|
||||
87
.gitignore
vendored
87
.gitignore
vendored
@@ -1,8 +1,91 @@
|
||||
/node_modules/
|
||||
Feinstaub_ToDos.pdf
|
||||
this_is_MacBig
|
||||
.idea
|
||||
/node_modules/
|
||||
|
||||
# Logs
|
||||
logs/
|
||||
log/
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Runtime data
|
||||
pids/
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov/
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage/
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output/
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt/
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components/
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
dist/
|
||||
build/
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm/
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
.env.local.custom
|
||||
.env.*
|
||||
|
||||
# VS Code settings
|
||||
.vscode/
|
||||
|
||||
# Mac system files
|
||||
.DS_Store
|
||||
|
||||
# Public generated files
|
||||
public/js/*.map
|
||||
public/js/*.tmp
|
||||
|
||||
# Ignore dumps and large sensor data
|
||||
akws/dump/
|
||||
|
||||
# Ignore test and debug scripts output
|
||||
*.out
|
||||
*.tmp
|
||||
|
||||
# Ignore database dumps
|
||||
*.bson
|
||||
*.metadata.json
|
||||
|
||||
# Ignore backup files
|
||||
*~
|
||||
*.bak
|
||||
*.swp
|
||||
|
||||
# Ignore coverage reports
|
||||
coverage/
|
||||
|
||||
# Ignore Python cache (if any)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# IDEs
|
||||
.idea
|
||||
|
||||
# Project-specific
|
||||
Feinstaub_ToDos.pdf
|
||||
this_is_MacBig
|
||||
akws
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
# Geiger_WEB
|
||||
Verschiedene Grafiken zur Auswertung des Multigeiger.
|
||||
# Geiger Web
|
||||
|
||||
Stellt die Daten der Multigeiger-Sensoren grafisch dar.
|
||||
|
||||
Diese Version hier (geiger_web_26) ist hervorgegangen aus dem Projekt geiger_web und wurde an die neue Struktur der Datenbank angepasst. In der Datenbank werden die Werte nun in Zeitreihen gespeichert.
|
||||
|
||||
Beschreibung folgt ... irgendwann.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "geiger2",
|
||||
"version": "3.1.3",
|
||||
"date": "2026-03-31",
|
||||
"name": "geiger",
|
||||
"version": "3.2.1",
|
||||
"date": "2026-04-02",
|
||||
"description": "Graphics for multigeiger sensors",
|
||||
"main": "app.js",
|
||||
"scripts": {
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<ul id = "fehlersensorenliste"></ul>
|
||||
|
||||
<p>
|
||||
Falls Dein Sensor dabei ist, kannst Du mir gerne eine <a class="hrefsimu" href="mailto:rexfue@gmail.com">email</a>
|
||||
Falls Dein Sensor dabei ist, kannst Du mir gerne eine <a class="hrefsimu" href="mailto:multigeiger@ecocurious.de">email</a>
|
||||
schreiben. Wir können dann gemeinsam entscheiden, welche Maßnahmen wir ergreifen können.
|
||||
</p>
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<p>
|
||||
<div id="fehlerexplain"></div> <br />
|
||||
</p>
|
||||
Du kannst mir gerne eine email ( <a href="mailto:rexfue@gmail.com">rexfue@gmail.com</a> )
|
||||
Du kannst mir gerne eine email ( <a(href="mailto:multigeiger@ecocurious.de")> mailto:multigeiger@ecocurious.de</a> )
|
||||
schreiben. Vielleicht können wir das Problem gemeinsam lösen.
|
||||
|
||||
</body>
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
|
||||
<p>Auf der Karte wird jede Zählstation mit dem Radioaktivitäts-Symbol angezeigt. Die Farbe des Symbols ändert sich mit der Zählrate, der Zusammenhang ist rechts oben in der Legende dargestellt.<br>
|
||||
Hat der Sensor seit mind. 1 Stunde keine Daten mehr gesendet, so wird er dunkelgrau eingefärbt. Hat er über eine Woche nicht gesendet, wird er nicht mehr dargestellt.<br>
|
||||
Die Karte ist standardmäßig auf Stuttgart ausgerichtet. Wenn der Aufruf der Webseite mit einer Stadt erfolgt (z.B: <a href="https://multigeiger.citysensor.de/Berlin">https://multigeiger.citysensor.de/Berlin</a>),
|
||||
Die Karte ist standardmäßig auf Stuttgart ausgerichtet. Wenn der Aufruf der Webseite mit einer Stadt erfolgt (z.B: <a href="https://multigeiger.ecocurious.de/Berlin">https://multigeiger.ecocurious.de/Berlin</a>),
|
||||
so wird die Karte auf diese Stadt zentriert. <br />
|
||||
Wird statt dessen eine Sensornummer angegeben, so wird die Karte auf diesen Sensor zentriert und gleich die zugehörige Grafik angezeigt
|
||||
(z.B. für den Sensor Nr. 34188 ist der Aufruf dann: <a href="https://multigeiger.citysensor.de/34188">https://multigeiger.citysensor.de/34188</a>).
|
||||
(z.B. für den Sensor Nr. 34188 ist der Aufruf dann: <a href="https://multigeiger.ecocurious.de/34188">https://multigeiger.ecocurious.de/34188</a>).
|
||||
</p>
|
||||
|
||||
<h3 id="toc_2">Bedienelemente</h3>
|
||||
|
||||
@@ -64,34 +64,51 @@ function getSensorName(db,sid) {
|
||||
// fetch the properties for the given sensor
|
||||
async function getSensorProperties(db,sid) {
|
||||
let start = new Date();
|
||||
console.log("Get properties for", sid,"from DB");
|
||||
let sensorEntries = [{'sid':sid}];
|
||||
console.log("Get properties for", sid, "from DB");
|
||||
let sensorEntries = [{ sid: sid }];
|
||||
let coll = db.collection('properties');
|
||||
let properties;
|
||||
try {
|
||||
properties = await coll.findOne({_id: sid});
|
||||
}
|
||||
catch(e) {
|
||||
console.log("getSensorProperties",e);
|
||||
properties = await coll.findOne({ _id: sid });
|
||||
} catch (e) {
|
||||
console.log("getSensorProperties", e);
|
||||
return {};
|
||||
}
|
||||
console.log("got properties - time:", new Date() - start);
|
||||
if(properties == null) return null;
|
||||
if (properties == null) return null;
|
||||
// name is now an array, get the current (last) entry
|
||||
let currentName = properties.name;
|
||||
if (Array.isArray(properties.name)) {
|
||||
currentName = properties.name[properties.name.length - 1].name;
|
||||
}
|
||||
|
||||
// Overwrite name field with string for frontend compatibility
|
||||
properties.name = currentName;
|
||||
sensorEntries[0]['name'] = currentName;
|
||||
|
||||
// Check if othersensors exists (might not in new DB structure)
|
||||
if (!properties.othersensors || properties.othersensors.length === 0) {
|
||||
properties.othersensors = sensorEntries;
|
||||
return properties;
|
||||
|
||||
// Neue Logik: Immer nur den aktuellen Sensor eintragen, dann nach passendem thp-Sensor suchen
|
||||
let newSid = parseInt(sid) + 1;
|
||||
let properties2 = await coll.findOne({ _id: newSid });
|
||||
if (properties2) {
|
||||
// Prüfe Typ (name enthält "BME" oder "thp") und gleiche Koordinaten
|
||||
let name2 = properties2.name;
|
||||
if (Array.isArray(name2)) {
|
||||
name2 = name2[name2.length - 1].name;
|
||||
}
|
||||
let isTHP = (properties2.type && properties2.type.toLowerCase() === 'thp');
|
||||
let sameLocation = false;
|
||||
try {
|
||||
const loc1 = properties.location && Array.isArray(properties.location) && properties.location[0] && properties.location[0].id;
|
||||
const loc2 = properties2.location && Array.isArray(properties2.location) && properties2.location[0] && properties2.location[0].id;
|
||||
sameLocation = (loc1 !== undefined && loc2 !== undefined && loc1 === loc2);
|
||||
} catch (e) {
|
||||
sameLocation = false;
|
||||
}
|
||||
if (isTHP && sameLocation) {
|
||||
sensorEntries.push({ sid: newSid, name: name2 });
|
||||
}
|
||||
}
|
||||
properties.othersensors = sensorEntries;
|
||||
return properties;
|
||||
|
||||
let mustbeobject = false;
|
||||
for(let i = 0, j=1; i<properties.othersensors.length; i++) {
|
||||
|
||||
@@ -9,5 +9,5 @@ block content
|
||||
|
||||
#author
|
||||
#mailadr
|
||||
a(href="mailto:rexfue@gmail.com") mailto:rexfue@gmail.com
|
||||
#versn Version: #{version} vom #{date}
|
||||
a(href="mailto:multigeiger@ecocurious.de") mailto:multigeiger@ecocurious.de
|
||||
#versn Version: #{version} vom #{date}
|
||||
@@ -96,7 +96,7 @@ block content
|
||||
#dialogWinSet
|
||||
#author
|
||||
#mailadr
|
||||
a(href="mailto:rexfue@gmail.com") mailto:rexfue@gmail.com
|
||||
a(href="mailto:multigeiger@ecocurious.de") mailto:multigeiger@ecocurious.de
|
||||
#versn Version: #{version} vom #{date}
|
||||
|
||||
|
||||
|
||||
@@ -27,5 +27,5 @@ block content
|
||||
Auswahl entweder durch Anklicken der
|
||||
Sensor-Nummer in der Tabelle oder direkt Aufrufen durch
|
||||
Anhängen der Sensornummer an die URL (z.B.
|
||||
<strong> feinstaub.rexfue.de/140</strong>).
|
||||
<strong> multigeiger.ecocurious.de/68890</strong>).
|
||||
|
||||
Reference in New Issue
Block a user