NEWS
Tr-064.0 adapter frage??
-
hallo, ich habe den fritzbox tr-064 Adapter installiert, wie kann ich ein Skript erstellen wenn zwei oder mehr Handys "also nicht nur eins"
nicht mehr im wlan sind das ich dann ein gerät schalte. ich bekomme es nur hin wenn 1 Handy von beiden aus dem wlan ist, aber es soll wie gesagt erst schalten wenn beide aus dem wlan sind???
Danke im Vorraus
-
zeig mal dein coding
-
-
also ich möchte einfach gesagt wenn: handy1 und handy2 sind true schalte gerätaus, und wenn: handy1 und handy2 sind false schalte gerät an
-
Hi,
probier es mal damit.
Frag den Adapter ab und setzt An-oder Abwesenheit.
! // 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 = "";
! var kommttime = "";
! var gehttime = "";
! for (var key in User){
! StatusCurrentUser = getState(StateTR064Device + key).val; // Lesen des status des users
! setState(path + 'Userlist.' + User[key], StatusCurrentUser); // Den Status aus TR64 setzen
! kommttime = getState(path + 'Userlist.KommtGeht.' + User[key]+"Kommt").val;
! gehttime = getState(path + 'Userlist.KommtGeht.' + User[key]+"Geht").val;
! if (key === Userkey) {
! setState(path + 'Userlist.KommtGeht.' + User[key]+(StatusCurrentUser ? "Kommt": "Geht"),CreationTime); // Schreibe den Zeitstempel für den user der grerade gegangen ist
! if(StatusCurrentUser) kommttime = CreationTime; else gehttime = CreationTime;
! writelog(User[key] + ";" + (StatusCurrentUser ? "Kommt": "Geht"));
! }
! if (StatusCurrentUser === false && StatusAllUser !== true) { // user geht mmt es ist niemand mehr da
! StatusAllUser = false; // jetzt wird der Status "niemand mehr da" gesetzt
! } // Ende Anwesenheit auf false gesetzt
! if (StatusCurrentUser) { // Wenn der user der gerade gecheckt wird anwesend ist
! CurrentUserList += User[key] + " "; // user in der userlist aufnehmen
! StatusAllUser = true;
! } // Ende Anwesenheit auf true gesetzt
! log("Anwesenheit " + User[key] +" " + StatusCurrentUser,"info");
! JsonString += JsonCreate ("Name", User[key], "Status", StatusCurrentUser, "Kommt", kommttime, "Geht", gehttime) + ",";
! HTMLString+="";
! HTMLString+/>! HTMLString+/>! HTMLString+/>! HTMLString+/>! HTMLString+="";
! } // ende for
! JsonString += "]";
! HTMLString += "! Name Status Kommt Geht "+User[key]+" "+(StatusCurrentUser ? 'anwesend' : 'abwesend')+" "+kommttime+" "+gehttime+" ! ";
! setState(path + 'Userlist.KommtGeht.' + "AnwesenheitJson", JsonString);
! setState(path + 'Userlist.KommtGeht.' + "AnwesenheitHTML", HTMLString);
! if (!StatusAllUser) {
! CurrentUserList = "Niemand"; // es ist niemand da
! }
! setState(path + 'Userlist.' + UserAllText,StatusAllUser); // Setzen des All Status
! setState(path + 'Userlist.' + UserString,CurrentUserList); // userlist speichern
! log("Anwesenheit genereller Status " + StatusAllUser,"info");
! log("Anwesenheitsliste " + CurrentUserList,"info");
! // Anwesenheitssimulation ein-oder ausschalten
! if (AWSCheckAktiv === true){
! if (StatusAllUser === true) {
! setState(IDAWSAktiv,false);
! } else {
! if (getState(IDAWSAktiv).val === false) { // prüfe status AWS flag
! setStateDelayed(IDAWSAktiv,true,AWSZeit*1000);
! log("EVENT Anwesenheit ist auf false gesetzt - AWSFlag wird aktiviert in " + AWSZeit + " Sekunden","info");
! } // endif AWS aktiv
! } // endif StatusAllUser
! } // AWSCheckAktiv
! } // Ende Funktion Anwesenheit
! //–---------------------------------------------------------------------------------------------------
! // Erstellung von json strings zur Tabellendarstellung
! //-----------------------------------------------------------------------------------------------------
! function JsonCreate (Desc1, Wert1, Desc2, Wert2, Desc3,Wert3, Desc4,Wert4,anzahlzeilen,aktuellezeile) {
! var buildzeile = "{";
! buildzeile += '"' + Desc1+ '":';
! buildzeile += '"' + Wert1 + '"' + ",";
! buildzeile += '"' + Desc2 + '"' + ":";
! buildzeile += '"' + Wert2 + '"' + ",";
! buildzeile += '"' + Desc3 + '"' + ":";
! buildzeile += '"' + Wert3 + '"' + ",";
! buildzeile += '"' + Desc4 + '"' + ":";
! buildzeile += '"' + Wert4 + '"' + "}";
! return buildzeile;
! } // Ende Funktion
! //-----------------------------------------------------------------------------------------------------
! // Funktion schreibt einen Logeintrag in das Filesystem und auch in das interne Log-System
! //-----------------------------------------------------------------------------------------------------
! function writelog(string) {
! if (logflag === true) {
! var logdate = formatDate(new Date(),"TT.MM.JJJJ");
! var logtime = formatDate(new Date(),"SS:mm:ss");
! if (fs.existsSync(LogPath)) {
! fs.appendFileSync(LogPath, logdate+" ;"+logtime+" ;"+string + "\n"); // Füge Satz in Datei ein
! } else {
! log("Logfile nicht gefunden - wird angelegt"), "info";
! var headerLine= "Datum;Uhrzeit;Name;Kommt-Geht";
! fs.appendFileSync(LogPath, headerLine + "\n"); // Füge Satz in Datei ein
! fs.appendFileSync(LogPath, logdate+" ;"+logtime+" ;"+string + "\n"); // Füge Satz in Datei ein
! } // endif Filecheck
! } // Ende check on logflag
! } // Ende Funktion -
kann ich irgendwie in blockly nicht einfügen
-
kann ich irgendwie in blockly nicht einfügen `
Nicht einfügen ist ein komplettes Javascript musst du neu Anlegen, ist schon fertig musst nur noch dein Smartphone einfügen.
Schau mal unter dem Link.
-
okay das habe ich noch nie gemacht, habe bis jetzt immer nur mit blockly gearbeitet
-
okay das habe ich noch nie gemacht, habe bis jetzt immer nur mit blockly gearbeitet `
Ist dort sehr gut beschrieben.
-
das mir echt zu hoch gerade, wo muss ich die Handys eintragen
-
das mir echt zu hoch gerade, wo muss ich die Handys eintragen `
Zeile 29 im Script
// 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"};
Schau es dir mal bein dem Link an, auf der 2 Seite da ist es Ausführlich beschrieben.
-
könntest du mir genauer erklären wie ich das mache, sorry
-
könntest du mir genauer erklären wie ich das mache, sorry `
Adapter hast du ja schon angelegt als nächsten dein Smartphone im Adapter anlegen.Adapter öffnen auf Geräte dann Geräte suche dein Smartphone einfügen dann ist es in Objekten als Devices angelegt genau diese Bezeichnung
setzt du dann in die genannte Zeile 29 im Script ein.
Und mehr ist es garnicht.
5373_screenshot_2018-10-21_instances_-_iobroker.png
5373_screenshot_2018-10-21_objects_-_iobroker.png
5373_screenshot_2018-10-24_javascript_-_iobroker.png -
-
-
! var User = { "Meister-iPhone": "1_Steffen", "iPhone-von-Nadine": "2_Nadine", "iPhone-von-Christin": "3_Christin"};
@Homer1976:soo??? `
nein schaut dir mal das erste Bild an von den dreien. `
Füg das ein und pass es an dein Smartphone an wie es unter devices steht den rest schmeißt du rauss.
-
so aber
3445_24-10-_2018_18-28-40.png -
so aber `
So siehts gut aus starte mal das Script und schau unter der Anwesenheitserkennung unter Javascript mal nach.
Hast du noch irgendwas gelöscht im Script, weil es bei dir jetzt in Zeile 28 ist. ?
-
ja geil, läuft besten dank. genau so wie ich es haben wollte
-
ja geil, läuft besten dank. genau so wie ich es haben wollte `
Kein Problem.
Schreib noch in den Beitrag oben gelöst.
Grüße