Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

iobroker.alexa-timer-vis

Package Overview
Dependencies
Maintainers
2
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

iobroker.alexa-timer-vis - npm Package Compare versions

Comparing version 0.1.7 to 0.1.8

40

io-package.json
{
"common": {
"name": "alexa-timer-vis",
"version": "0.1.7",
"version": "0.1.8",
"news": {
"0.1.7":{
"en":"New state,'Input Device'"
"0.1.8": {
"en": "Bugfix, Button added to stop the selected Timer",
"de": "Bugfix, Schaltfläche hinzugefügt, um den ausgewählten Timer zu stoppen",
"ru": "Исправление, добавлена ​​кнопка для остановки выбранного таймера.",
"pt": "Bugfix, botão adicionado para parar o temporizador selecionado",
"nl": "Bugfix, knop toegevoegd om de geselecteerde timer te stoppen",
"fr": "Correction de bug, bouton ajouté pour arrêter la minuterie sélectionnée",
"it": "Bugfix, pulsante aggiunto per fermare il timer selezionato",
"es": "Corrección de errores, botón agregado para detener el temporizador seleccionado",
"pl": "Bugfix, przycisk dodany do zatrzymania wybranego timera",
"zh-cn": "错误修复,添加按钮以停止选定的计时器"
},
"0.1.6":{
"en": "numbers from 1-9 are always displayed as two digits, 1 => 01"
"0.1.7": {
"en": "New state,'Input Device'",
"de": "Neuer Status „Eingabegerät“",
"ru": "Новое состояние \"Устройство ввода\"",
"pt": "Novo estado, 'Dispositivo de entrada'",
"nl": "Nieuwe staat, 'Invoerapparaat'",
"fr": "Nouvel état, 'Périphérique d'entrée'",
"it": "Nuovo stato, \"Dispositivo di input\"",
"es": "Nuevo estado, 'Dispositivo de entrada'",
"pl": "Nowy stan „Urządzenie wejściowe”",
"zh-cn": "新状态,'输入设备'"
},
"0.1.6": {
"en": "numbers from 1-9 are always displayed as two digits, 1 => 01",
"de": "Zahlen von 1-9 werden immer zweistellig angezeigt, 1 => 01",
"ru": "числа от 1 до 9 всегда отображаются как две цифры, 1 => 01",
"pt": "números de 1 a 9 são sempre exibidos como dois dígitos, 1 => 01",
"nl": "cijfers van 1-9 worden altijd weergegeven als twee cijfers, 1 => 01",
"fr": "les nombres de 1 à 9 sont toujours affichés sous forme de deux chiffres, 1 => 01",
"it": "i numeri da 1 a 9 vengono sempre visualizzati come due cifre, 1 => 01",
"es": "los números del 1 al 9 siempre se muestran como dos dígitos, 1 => 01",
"pl": "liczby od 1-9 są zawsze wyświetlane jako dwie cyfry, 1 => 01",
"zh-cn": "1-9 的数字始终显示为两位数,1 => 01"
},
"0.1.5": {

@@ -13,0 +43,0 @@ "en": "New keywords added",

245

main.js

@@ -52,5 +52,5 @@ "use strict";

"timer1": {
"hour": 0,
"minute": 0,
"second": 0,
"hour": "0",
"minute": "0",
"second": "0",
"string_Timer": "",

@@ -64,2 +64,4 @@ "onlySec": 0,

"inputDevice":"",
"serialNumber":"",
"timerInput":""
},

@@ -147,3 +149,5 @@ },

this.on("unload", this.onUnload.bind(this));
}
/**

@@ -154,2 +158,3 @@ * Is called when databases are connected and adapter received configuration.

// Initialize your adapter here

@@ -180,98 +185,104 @@ this.setState("info.connection", false, true);

this.on("stateChange", (id, state) => {
// @ts-ignore
if (state.val !== "" && init == false) {
// Nur wenn die aktualisierung aus der Variable "datapoint" kommt soll der Code ausgeführt werden
if (id == datapoint){
// @ts-ignore
if (state.val !== "" && init == false) {
// Die Init Variable soll verhindern das innerhalb von der eingestellten Zeit nur ein Befehl verarbeitet wird, Alexa Datenpunkt wird zweimal aktualisiert
init = true;
timeout_1 = setTimeout(() => {
init = false;
clearTimeout(timeout_1);
}, 5000);
// Die Init Variable soll verhindern das innerhalb von der eingestellten Zeit nur ein Befehl verarbeitet wird, Alexa Datenpunkt wird zweimal aktualisiert
init = true;
timeout_1 = setTimeout(() => {
init = false;
clearTimeout(timeout_1);
}, 5000);
// Code Anfang
// Code Anfang
// @ts-ignore
timerObject.timerActiv.data.value = state.val;
const value = timerObject.timerActiv.data.value;
// @ts-ignore
timerObject.timerActiv.data.value = state.val;
const value = timerObject.timerActiv.data.value;
// Überprüfen ob ein Timer Befehl per Sprache an Alexa übergeben wurde
if (value.indexOf("timer") >= 0) {
this.log.info("Command to control the timer function found");
// Überprüfen ob ein Timer Befehl per Sprache an Alexa übergeben wurde
if (value.indexOf("timer") >= 0) {
this.log.info("Command to control the timer found");
// Überprüfen ob ein Timer hinzugefügt wird oder gestoppt wird
let i = false;
for (const array in timerObject.timerActiv.condition) {
for (const element of timerObject.timerActiv.condition[array]) {
// Überprüfen ob ein Timer hinzugefügt wird oder gestoppt wird
let i = false;
for (const array in timerObject.timerActiv.condition) {
for (const element of timerObject.timerActiv.condition[array]) {
// Timer soll gestoppt werden
if (value.indexOf(element) >= 0 && array == "deleteTimer") {
this.log.info("Timer is to be stopped!");
//Eingabe Text loggen
this.log.info("Voice input: " + value);
// Input aus Alexas Spracheingabe zu Array konvertieren
const timerArray = value.split(" ");
// Timer soll gestoppt werden
if (value.indexOf(element) >= 0 && array == "deleteTimer") {
this.log.info("Timer is to be stopped!");
//Eingabe Text loggen
this.log.info("Voice input: " + value);
// Input aus Alexas Spracheingabe zu Array konvertieren
const timerArray = value.split(" ");
// RückgabeArray erfassen
const returnArray = zeiterfassung(timerArray);
// RückgabeArray erfassen
const returnArray = zeiterfassung(timerArray);
// Name
const name = returnArray[1];
// Name
const name = returnArray[1];
// Timer in Sekunden ausgeben lassen, damit der passende Timer abgebrochen werden kann
const timerAbortsec = eval(returnArray[0]);
// Timer in Sekunden ausgeben lassen, damit der passende Timer abgebrochen werden kann
const timerAbortsec = eval(returnArray[0]);
// Index Timer löschen
const deleteTimerIndex = returnArray[2];
// Index Timer löschen
const deleteTimerIndex = returnArray[2];
// Timer anhalten
deleteTimer(timerAbortsec, name, deleteTimerIndex);
// Timer anhalten
deleteTimer(timerAbortsec, name, deleteTimerIndex);
i = true;
break;
i = true;
break;
} // Timer soll erstellt werden
// Das gesuchte Element muss vorhanden sein, TimerStop darf nicht aktiv sein
else if (value.indexOf(element) >= 0 && i === false) {
this.log.info("Timer is to be added!");
//Eingabe Text loggen
this.log.info(`Voice input: ${value}`);
// Input aus Alexas Spracheingabe zu Array machen
const timerArray = value.split(" ");
} // Timer soll erstellt werden
// Das gesuchte Element muss vorhanden sein, TimerStop darf nicht aktiv sein
else if (value.indexOf(element) >= 0 && i === false) {
this.log.info("Timer is to be added!");
//Eingabe Text loggen
this.log.info(`Voice input: ${value}`);
// Input aus Alexas Spracheingabe zu Array machen
const timerArray = value.split(" ");
// Timer in Sekunden und den Namen ausgeben lassen in einem Array
const returnArray = zeiterfassung(timerArray);
// Timer in Sekunden und den Namen ausgeben lassen in einem Array
const returnArray = zeiterfassung(timerArray);
// Rückgabewert Timer in Sekunden [0]
//this.log.info("Eval: " + returnArray[0]);
const timerSeconds = eval(returnArray[0]);
// Rückgabewert Timer in Sekunden [0]
//this.log.info("Eval: " + returnArray[0]);
const timerSeconds = eval(returnArray[0]);
// Rückgabewert "Name" des Timers [1]
const name = returnArray[1];
// Rückgabewert "Name" des Timers [1]
const name = returnArray[1];
// Anzahl Aktiver Timer um eins hochzählen
timerObject.timerActiv.timerCount++;
// Rückgabewert "Input String" des Timers [3]
const inputString = returnArray[3];
// States erstellen lassen, bei mehr als 4 Timern
createState(timerObject.timerActiv.timerCount);
// Anzahl Aktiver Timer um eins hochzählen
timerObject.timerActiv.timerCount++;
// Ein weiteren Eintrag im Object erzeugen, falls nicht vorhanden
const timer = "timer" + timerObject.timerActiv.timerCount;
// States erstellen lassen, bei mehr als 4 Timern
createState(timerObject.timerActiv.timerCount);
if (timerObject.timerActiv.timer[timer] == undefined) {
// Ein weiteren Eintrag im Object erzeugen, falls nicht vorhanden
const timer = "timer" + timerObject.timerActiv.timerCount;
timerObject.timerActiv.timer[timer] = false;
timerObject.timer[timer] = {};
}
// Timer starten
startTimer(timerSeconds, name);
// Nur ausführen wenn noch nicht aktiv ist
if (!writeStateActiv){
// auf aktiv setzen
writeStateActiv = true;
// States schreiben, darf aber nur einmal ausgeführt werden
writeStateIntervall();
}
if (timerObject.timerActiv.timer[timer] == undefined) {
timerObject.timerActiv.timer[timer] = false;
timerObject.timer[timer] = {};
}
// Timer starten
startTimer(timerSeconds, name, inputString);
// Nur ausführen wenn noch nicht aktiv ist
if (!writeStateActiv){
// auf aktiv setzen
writeStateActiv = true;
// States schreiben, darf aber nur einmal ausgeführt werden
writeStateIntervall();
}
break;
break;
}
}

@@ -281,4 +292,18 @@ }

}
}else if (id != "alexa-timer-vis.0.info.connection"){
// Akualisierung aus Reset Datenpunkten
this.log.info("ID Reset Button " + JSON.stringify(id));
// Aus ID den Timer erfassen
const timerArray = id.split(".");
const timer = timerArray[2];
// Alexa2 Adapter Timer
// alexa2.0.Echo-Devices.G090XG1210960L67.Commands.textCommand
const timerOb = timerObject.timer[timer];
const alexaCommandState = `alexa2.0.Echo-Devices.${timerOb.serialNumber}.Commands.textCommand`;
let name = "";
// Wenn der Name ungleich nur "Timer" ist soll dieser mit ausgegeben werden
if (timerOb.name != "Timer") name = timerOb.name;
const alexaTextToCommand = `stoppe ${name} ${timerOb.inputString} Timer`;
this.setForeignState(alexaCommandState, alexaTextToCommand,false);
}
// Code Ende

@@ -288,5 +313,5 @@

// @ts-ignore
if (!state.ack) {
this.log.info("ack is not set!");
}
// if (!state.ack) {
// this.log.info("ack is not set!");
// }
});

@@ -336,2 +361,3 @@

* @param {string} name Name des Timers
* @param {string} inputString String der Eingabe per Alexa
*

@@ -341,3 +367,3 @@ *

const startTimer = async (sec, name)=> {
const startTimer = async (sec, name, inputString)=> {
const startTimer = new Date().getTime(); // Startzeit Timer

@@ -362,2 +388,4 @@ const start_Time = time(startTimer);

}
// Input Device ermitteln, und im Objekt speichern
getInputDevice(timerObject.timer[index]);

@@ -405,2 +433,3 @@

timer.time_end = end_Time;
timer.inputString = inputString;

@@ -479,3 +508,3 @@

write: true,
def: 0,
def: "0",
},

@@ -492,3 +521,3 @@ native: {},

write: true,
def: 0,
def: "0",
},

@@ -505,3 +534,3 @@ native: {},

write: true,
def: 0,
def: "0",
},

@@ -570,2 +599,18 @@ native: {},

});
this.setObjectNotExistsAsync("timer" + i + ".Reset", {
type: "state",
common: {
name: "Reset Timer",
type: "boolean",
role: "button",
read: false,
write: true,
def: true,
},
native: {},
});
// id zusammenbauen
const id = `alexa-timer-vis.0.timer${i}.Reset`;
// Subscribe Reset Button
subscribeForeignStates(id);
}

@@ -580,7 +625,7 @@ } catch (e) {

* Eingabegerät ermitteln
* @param path Pfad zum Speicherort im Objekt
*
*
*/
const getInputDevice = (a)=>{
const getInputDevice = (path)=>{
this.getForeignObject("alexa2.0.History.name", async (err, obj) => {

@@ -590,8 +635,10 @@ if (err || obj == null) {

this.log.error(`The State "name" of Alexa was not found!`);
a.inputDevice = "-";
path.inputDevice = "-";
} else {
const obj = await this.getForeignStateAsync("alexa2.0.History.name");
// @ts-ignore
a.inputDevice = obj.val;
path.inputDevice = obj.val;
const serial = await this.getForeignStateAsync("alexa2.0.History.serialNumber");
// @ts-ignore
path.serialNumber = serial.val;
}

@@ -611,2 +658,3 @@

let timerString = "";
let inputString = "";
let name = "";

@@ -632,2 +680,3 @@ let deleteVal = 0; // Nummer zum bestimmen der Art Timer zu löschen

timerString += "+"; // Und bildet ein Verbindungsglied welches für die berechung ein "+" ist
inputString += "und ";
}

@@ -638,2 +687,3 @@ }

timerString += ")*3600+";
inputString += "Stunden ";
}

@@ -643,2 +693,3 @@ // Nach Minuten suchen, um den Fakor einzufügen

timerString += ")*60+";
inputString += "Minuten ";
}

@@ -648,2 +699,3 @@ // Nach Sekunden suchen, um die Klammern zu schliessen( Wichtig für z.B. 120 Minuten)

timerString += ")";
inputString += "Sekunden ";
}

@@ -655,7 +707,10 @@ // Überprüfen ob es sich um Zahlen handelt

timerString += "(" + timerObject.zahlen[element];
inputString += timerObject.zahlen[element] + " ";
// Wenn das Element "Hundert" ist und das letzte Element eine Zahl war soll multipliziert werden( Zwei * hundert + vierzig)
}else if (element == "hundert"){
timerString +=("*" + timerObject.zahlen[element]);
inputString += timerObject.zahlen[element] + " ";
}else { // Wenn nicht Hundert(eigentlich auch tausend usw.) dann nur addieren
timerString +=("+" + timerObject.zahlen[element]);
inputString += timerObject.zahlen[element] + " ";
}

@@ -671,3 +726,3 @@ }

}
const array = [timerString, name, deleteVal];
const array = [timerString, name, deleteVal, inputString];
return array;

@@ -787,8 +842,16 @@ };

/**
*
* @param {string} id id der Button
*/
const subscribeForeignStates = (id)=>{
this.subscribeForeignStates(id);
};
// You can also add a subscription for multiple states. The following line watches all states starting with "lights."
// this.subscribeStates("lights.*");
// Or, if you really must, you can also watch all states. Don't do this if you don't need to. Otherwise this will cause a lot of unnecessary load on the system:
//this.subscribeStates("*");
// this.subscribeStates("*");

@@ -795,0 +858,0 @@ /*

{
"name": "iobroker.alexa-timer-vis",
"version": "0.1.7",
"version": "0.1.8",
"description": "Alexa Timer ausgeben um in der Vis anzuzeigen",

@@ -5,0 +5,0 @@ "author": {

@@ -86,2 +86,3 @@ ![Logo](admin/alexa-timer-vis.png)

* Alexa, lösche 5 Minuten Timer
* Alexa, Timer 5 Minuten beenden

@@ -97,2 +98,5 @@

## Changelog
### 0.1.8 (28.01.2022)
* Bugfix
* Button added to stop the Timer
### 0.1.7 (22.06.2022)

@@ -102,2 +106,3 @@ * New State, "Input Device"

* numbers from 1-9 are always displayed as two digits, 1 => 01
* When you update to this or a newer Version, please delete the timer folders or delete the whole adapter, otherwise errors will occur
### 0.1.5 (08.01.2022)

@@ -104,0 +109,0 @@ * New keywords added

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc