Files
laermsensor-stack/readarchive/mqtt.js
T
admin bd5cf9978d readin/readarchive: gemeinsame Module, Stack-Konventionen
mongo.js, influx_post.js und logit.js lagen in beiden Komponenten doppelt
und waren auseinandergelaufen - so ist der Zeitzonen-Fehler entstanden, den
readin seit jeher richtig loest und readFromcsv.js zwei Jahre lang nicht.
Sie liegen jetzt einmal unter common/.

Wo die Fassungen sich widersprachen:
- MONGOAUTH wird als String verglichen. Die readarchive-Fassung pruefte nur
  auf truthy, dadurch schaltete auch MONGOAUTH=false die Auth ein.
- writeDataArray(client, coll, data) nimmt den Collection-Namen direkt;
  readarchive baut ihn mit dem neuen dataCollName(styp).
- getallProperties liefert das Array selbst. Die readarchive-Fassung mit
  {error, properties} war dort ungenutzt.
- properties_collection heisst einheitlich property_coll.

Das Sammelobjekt statistics lag in readin/readdata.js und wurde von
mongo.js und influx_post.js importiert. Es liegt jetzt in
common/statistics.js, damit die gemeinsamen Module readin nicht kennen
muessen.

Der Build-Kontext beider Images ist dadurch das Repository-Wurzelverzeichnis;
das Layout im Image spiegelt das Repository, damit ../common/... unveraendert
aufgeht. Die Volume-Zeile von readin im Compose zieht deshalb auf
/opt/app/readin/data um.

readarchive folgt jetzt den Konventionen des Stacks: deploy.sh statt
build_and_copy.sh, Dockerfile_readarchive statt Dockerfile_rfcsv, und die
eigene docker-compose.yml entfaellt - der Dienst haengt als Profil "tools"
im Compose des Stacks und wird mit Parametern gestartet:

  docker compose run --rm readarchive -t noise -s 2026-07-25 -e 2026-07-29

Getestet: beide Images gebaut, beide gegen Testdatenbanken laufen lassen.
Nicht deployt - die Images in der Registry sind unveraendert.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-31 07:25:54 +00:00

34 lines
888 B
JavaScript

// MQTT interface
import * as mqtt from 'mqtt'
import { logit, logerror } from '../common/logit.js'
const MQTTHOST = process.env.MQTTHOST || 'rexfue.de'
const MQTTPORT = process.env.MQTTPORT || 1883
const MQTTUSER = process.env.MQTTUSER || 'stzuhr'
const MQTTPASSWD = process.env.MQTTPASSWD || '74chQCYb'
const client = mqtt.connect(`mqtt://${MQTTHOST}:${MQTTPORT}`, {username: MQTTUSER, password: MQTTPASSWD } )
export let connected = false
export const doConnect = () => {
// client = mqtt.connect(`mqtt://${MQTTHOST}:${MQTTPORT}`, {user: MQTTUSER, password: MQTTPASSWD } )
}
client.on('error', (e) => {
logerror(`connect to MQTT ${e}`)
})
client.on('connect', () => {
connected = true
logit(`Connected to MQTT Broker ${MQTTHOST}`)
})
export const doPublish = (topic, msg) => {
client.publish(topic, msg)
}
export const doClose = () => {
client.end()
}