Compare commits

..

No commits in common. "83c395dcce2c796b821fc53fcab7fef4c5b76af9" and "93b789d4819975d3ed3a0b242b8e606efcee0636" have entirely different histories.

6 changed files with 14 additions and 60 deletions

View File

@ -1,2 +0,0 @@
node_modules
npm-debug.log

View File

@ -1,17 +0,0 @@
FROM node:16
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 9911
CMD [ "node", "raumstatus.js" ]

View File

@ -30,21 +30,4 @@ Danach kleinere Änderungen und Erweiterungen von henne, zeus, smash.
Das meiste an Funktionn wurde wiede raus geworfen weil sich die CTDO infrastruktur Das meiste an Funktionn wurde wiede raus geworfen weil sich die CTDO infrastruktur
sehr verändert hat und einiges kaputt war. sehr verändert hat und einiges kaputt war.
Der Status zeit nur noch Power und Raumstatus an. Es läuft wie gehabt via nmap-Ping. Der Status zeit nur noch Power und Raumstatus an. Es läuft wie gehabt via nmap-Ping.
## Dev hinweise
Man braucht dieses repo, nodejs ~16 mit npm.
Dependencies installieren und Server lokal laufen lassen:
npm install
node raumstatus.js
Docker container bauen:
docker build . -t ctdo/ctdo-raumstatus

View File

@ -3,32 +3,23 @@ var EventEmitter = require('events').EventEmitter;
var exec = require('child_process').exec; var exec = require('child_process').exec;
var IpPoll = function(target) { var IpPoll = function(switchaddr, hostsaddr) {
var self = this; var self = this;
var regexp = /([0-9]+)% packet loss/m; var regexp = /\(([0-9]+) hosts* up\)/;
var command = "LANG=C ping -c 2"; var nmap = "nmap -n -sP ";
this.pollState = function() { this.pollState = function() {
try { exec(nmap + switchaddr, function (error, stdout, stderr) {
exec(command + " " + target, function (error, stdout, stderr) { if(error == null) {
// console.log(stdout);
var matches = regexp.exec(stdout); var matches = regexp.exec(stdout);
if (matches != null) { if(matches != null && matches.length === 2) {
self.emit('doneState', matches[1] === "1");
// console.log("matches " + JSON.stringify(matches));
// console.log("length: " + matches.length);
// console.log("matches 1: " + matches[1]);
if (matches.length === 2) {
self.emit('doneState', matches[1] === "0");
}
} }
}); } else {
} catch(err) { self.emit('doneState', "unknown");
self.emit('doneState', "unknown"); }
} });
}; };
}; };

View File

@ -68,9 +68,8 @@ var flukso = new Flukso("flukso.raum.ctdo.de", "/sensor/cf00e0b22230f4a8870af58f
var mqtt = mqttClient.connect('mqtt://raum.ctdo.de'); var mqtt = mqttClient.connect('mqtt://raum.ctdo.de');
var connected = false; var connected = false;
//express js settings
var port = '9911'; var port = '9911';
var address = '0.0.0.0'; var address = 'localhost';
ippoll.on('doneState', function (state) { ippoll.on('doneState', function (state) {

View File

@ -5,7 +5,7 @@ block content
.intro .intro
p p
| Hier siehst du den aktuellen Status von uns. Die Daten werden vom Router und unserem Flukso | Hier siehst du den aktuellen Status von uns. Die Daten werden vom Router und unserem Flukso
| eingesammelt. Der Status selber werden Minütlich abgefragt. Unseren | eingesammelt. Die Anzahl der Geräte und der Status selber werden Minütlich abgefragt. Unseren
| Energieverbrauch bekommst du alle fünf Sekunden neu. Den Status "geöffnet" oder "geschlossen" | Energieverbrauch bekommst du alle fünf Sekunden neu. Den Status "geöffnet" oder "geschlossen"
| bestimmt das Programm mit einem ping auf ein Gerät im Raum. | bestimmt das Programm mit einem ping auf ein Gerät im Raum.