// Anwesenheitsliste aus TR064 bauen // Autor Looxer01 01.01.2017 // Das Programm basiert auf den Adapter TR064 der die WLAN verfügbarkeit von allen Geräten überwacht // Die States fuer USER1 - USERx müssen aus dem Adapter TR064 entnommen werden // Funktionen: // Ermittlung ob irgendwer anwesend ist // Speichern von kommt und gehtzeiten // Speichern der Anwesenheitsliste mit kommt und geht als Json // Log schreiben für jede Atkualisierung der Anwesenheit //----------------------------------------------------------------------------------------------------- // Einstellbereich //----------------------------------------------------------------------------------------------------- // Hier ist der State für den die Deviceermittlung der durch den TR064 ermittelt wird var StateTR064Device = "tr-064.0.devices."; // Hier ist der State für den die Anwesenheitssimulation. Bei True wird die AWS (separates Programm) gestartet var IDAWSAktiv = "javascript.0.Anwesenheitssteuerung.AWSAktiv"; // ID AWS flag // Falls die Anwesenheitssimulation verknüpft werden soll dann hier TRUE eintragen und dann die Zeit in Sekunden nach Abwesenheit, die vergehen soll bis die Simulation aktiviert wird var AWSCheckAktiv = false; // auf true setzen, wenn die Anwesenheitssimulation genutzt wird var AWSZeit = 600; // nach diesen Sekunden verzoegerung wird die Simulation aktiviert // Maximale Anzahl der User mit Anwesenheitsueberwachung // die Deviceliste aus TR064, die ueberwacht werden soll muss hier eingetragen werden var User = { "Datenpunkt 1": "Bezeichnung Endgerät 1", "Datenpunkt 2": "Bezeichnung Endgerät 2"}; // Allgemeine Anwesenheiten. Die Namen koennen geändert werden var UserAllText = "JemandDa"; var UserString = "Liste"; // Pfad für die userliste nach .0. kann der Name frei vergeben werden und wird entsprechend in die Objektliste geschrieben var path = 'javascript.0.Anwesenheitssteuerung.'; // Pfad für create states //Logging var logflag = false; // logging enabled var LogPath = "/opt/iobroker/iobroker-data/Anwesenheiten.csv"; // Pfad und Dateiname des externen Logs //----------------------------------------------------------------------------------------------------- // Ende Einstellbereich //----------------------------------------------------------------------------------------------------- for (var key in User){ createState(path + 'Userlist.' + User[key], false, {read: true, write: true, type: 'boolean', name: 'Anwesenheit '+User[key], desc: 'Anwesenheit '+User[key]}); createState(path + 'Userlist.KommtGeht.' + User[key]+"Geht", CreationTime, {read: true, write: true, type: 'string', name: 'Anwesenheit Zeit ausloggen aus FB', desc: 'Zeit Verlassen '+User[key]}); createState(path + 'Userlist.KommtGeht.' + User[key]+"Kommt", CreationTime, {read: true, write: true, type: 'string', name: 'Anwesenheit Zeit ausloggen in FB', desc: 'Zeit kommen '+User[key]}); } var CreationTime = " "; var fs = require('fs'); // enable write fuer externes log // Datenpunkte erzeugen createState(path + 'Userlist.' + UserString, "Niemand", {read: true, write: true, type: 'string', name: 'Anwesenheit Userliste', desc: 'Anwesenheit Userliste'}); createState(path + 'Userlist.' + UserAllText, false, {read: true, write: true, type: 'boolean', name: 'Anwesenheit alle User', desc: 'Anwesenheit alle User'}); createState(path + 'Userlist.KommtGeht.' + "AnwesenheitJson", CreationTime, {read: true, write: true, type: 'string', name: 'Anwesenheitsstatus Json Liste', desc: 'UserListe als Json'}); createState(path + 'Userlist.KommtGeht.' + "AnwesenheitHTML", CreationTime, {read: true, write: true, type: 'string', name: 'Anwesenheitsstatus HTML String', desc: 'UserListe als HTML String'}); if (AWSCheckAktiv === true){ createState(IDAWSAktiv,false); } // Funktion synchronisiert Status mit TR064 beim Aufruf des Programmes anwesenheit("ProgramInitialisierung",0); for (var key in User){ on({id: StateTR064Device + key, valNe: 0 }, function(obj) { if (obj.state.ack) { anwesenheit('UserKommtGeht',obj.id.split(".").pop(-1)); } }); } //----------------------------------------------------------------------------------------------------- // Funktion Erstellung der Anwesenheitsliste //----------------------------------------------------------------------------------------------------- function anwesenheit (Ausloeser, Userkey) { log ("Ausloeser: " + Ausloeser,"info"); CreationTime = formatDate(new Date(),"TT.MM.JJJJ SS:mm:ss"); var CurrentUserList = ""; var StatusCurrentUser = false; var StatusAllUser = false; var JsonString = "["; var HTMLString = "
Name | Status | Kommt | Geht |
---|---|---|---|
"+User[key]+" | " HTMLString+=""+(StatusCurrentUser ? ' anwesend ' : 'abwesend ')+" | "
HTMLString+=""+kommttime+" | " HTMLString+=""+gehttime+" | " HTMLString+="