individueller Countdown-Timer möglich?
Moderator: Co-Administratoren
-
- Beiträge: 101
- Registriert: 22.09.2014, 15:58
- Hat sich bedankt: 2 Mal
individueller Countdown-Timer möglich?
Hallo zusammen,
ich würde gerne für einen Aktor (HM-LC-Sw1PBU-FM oder HM-LC-Sw1-FM) eine Art individuellen Countdown-Timer in Mediola Neo erstellen.
Ziel des ganzen soll in etwa sein, das ich bspw. in ein Textfeld welches mit "min" beschriftet ist, eine Zahl eintippe/auswähle, dann auf "Start" gehe und der entsprechende Aktor dann für eben diese Zeit aktiv ist. Ist der Timer abgelaufen, schaltet sich der Aktor wieder aus.
Ist sowas möglich, am besten auch dann mit einer "Live-Anzeige" der Restminuten?
Grüße
Kurzschlusselektriker
ich würde gerne für einen Aktor (HM-LC-Sw1PBU-FM oder HM-LC-Sw1-FM) eine Art individuellen Countdown-Timer in Mediola Neo erstellen.
Ziel des ganzen soll in etwa sein, das ich bspw. in ein Textfeld welches mit "min" beschriftet ist, eine Zahl eintippe/auswähle, dann auf "Start" gehe und der entsprechende Aktor dann für eben diese Zeit aktiv ist. Ist der Timer abgelaufen, schaltet sich der Aktor wieder aus.
Ist sowas möglich, am besten auch dann mit einer "Live-Anzeige" der Restminuten?
Grüße
Kurzschlusselektriker
-
- Beiträge: 1184
- Registriert: 09.01.2016, 17:42
- Wohnort: Sauerland
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
Re: individueller Countdown-Timer möglich?
Mit der Liveanzeige wird das wohl eher schwierig.
Der Timer ist mit Cuxd und ein paar Zeilen Script möglich. Ich nutze ein Textfeld als Uhrzeit zu der Morgens das Licht im Schlafzimmer angehen soll. Mein Lichtwecker...
Der Timer ist mit Cuxd und ein paar Zeilen Script möglich. Ich nutze ein Textfeld als Uhrzeit zu der Morgens das Licht im Schlafzimmer angehen soll. Mein Lichtwecker...
-
- Beiträge: 101
- Registriert: 22.09.2014, 15:58
- Hat sich bedankt: 2 Mal
Re: individueller Countdown-Timer möglich?
Alles klar - Danke für die Antworten. Dann werde ich mich wohl mal mit CUxD beschäftigen (müssen)....
-
- Beiträge: 6741
- Registriert: 22.05.2012, 08:40
- System: CCU
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 484 Mal
Re: individueller Countdown-Timer möglich?
Da NEO nach wie vor noch nicht mal die Eingabe in ein Formularfeld unterstützt geht das nur wenn Du Dir eine eigene Webseite baust am besten mit jquery oder ähnlichem. Diese kannst Du als Webseitenelement einbinden und dort dann auch etwas Eingeben. Die Webseite triggert dann den Aktor. Entweder bastelt Du Dir so was selber oder Du nutzt dafür eine Hausautomationssoftware dann hast Du zumindest etwas weniger Arbeit.
Noch einfacher geht das natürlich mit alternativen Visualisierungslösungen die einfach so was banales wie eine Text / Zahleneingabe in ein Feld unterstützten und damit eine Variable direkt verändert werden kann, dann ist der Umweg über eine eigene Webseite nicht notwendig.
Noch einfacher geht das natürlich mit alternativen Visualisierungslösungen die einfach so was banales wie eine Text / Zahleneingabe in ein Feld unterstützten und damit eine Variable direkt verändert werden kann, dann ist der Umweg über eine eigene Webseite nicht notwendig.
-
- Beiträge: 18
- Registriert: 11.01.2017, 18:24
- Wohnort: Sassenburg bei Wolfsburg
- Hat sich bedankt: 2 Mal
Re: individueller Countdown-Timer möglich?
Hallo,
Ja das ist möglich.
habe vor einiger Zeit so etwas ähnliches schon einmal umgesetzte.
Über einen Nummernblock 0-9, Stern und Raute.
Jede Nummer erweitert eine Variable die auch auf dem Tablet/Handy/NEO ausgegeben wird.
Stern löscht. Raute ist wie Enter und soll eine Auswertung anstoßen. einen Aktor (HM-LC-Sw1PBU-FM oder HM-LC-Sw1-FM).
Nach der Auswertung wird der Variable gelöscht.
In deinem Fall würde ich die Variable an einen Aktor (HM-LC-Sw1PBU-FM oder HM-LC-Sw1-FM) übergeben. Das über eine eigens Programmierte Taste auf dem Tablet/Handy/NEO ausgelöst wird.
Aufwand: Mindestens 12 Homematic Programme für die Tasten. Mindestens eine Systemvariable erstellen. Auf NEO 12 Button, Nummernblock 0-9, Stern und Raute und das Anzeigefeld für die Zahlen.
Beispiel:
… und so weiter.
Das Programm taste_raute ist da schon etwas schwieriger:
Für Dein Projekt müsstest du das ON_TIME Objekt mit der Variable füllen und ausführen.
Beispiel:
In diesem Beispiel ist der Aktor für 45 Sekunden eingeschaltet.
Sorry, für die sehr kurze Anleitung. Werde später mal eine Anleitung dazu schreiben und das unter den Projektvorstellungen einstellen.
Gruß
Michael
Ja das ist möglich.
habe vor einiger Zeit so etwas ähnliches schon einmal umgesetzte.
Über einen Nummernblock 0-9, Stern und Raute.
Jede Nummer erweitert eine Variable die auch auf dem Tablet/Handy/NEO ausgegeben wird.
Stern löscht. Raute ist wie Enter und soll eine Auswertung anstoßen. einen Aktor (HM-LC-Sw1PBU-FM oder HM-LC-Sw1-FM).
Nach der Auswertung wird der Variable gelöscht.
In deinem Fall würde ich die Variable an einen Aktor (HM-LC-Sw1PBU-FM oder HM-LC-Sw1-FM) übergeben. Das über eine eigens Programmierte Taste auf dem Tablet/Handy/NEO ausgelöst wird.
Aufwand: Mindestens 12 Homematic Programme für die Tasten. Mindestens eine Systemvariable erstellen. Auf NEO 12 Button, Nummernblock 0-9, Stern und Raute und das Anzeigefeld für die Zahlen.
Beispiel:
Code: Alles auswählen
! -- Taste 0 ---
var x;
object obj = dom.GetObject('code');
x=obj.State(obj.State()+'0');
! -- Taste 1 ---
var x;
object obj = dom.GetObject('code');
x=obj.State(obj.State()+'1');
Das Programm taste_raute ist da schon etwas schwieriger:
Code: Alles auswählen
string alarmcode="112233";
var x;
object obj = dom.GetObject('code');
!! Beispiel für Alarm aus -----------------------------------
if(obj.State()==alarmcode)
{
x=obj.State('');
dom.GetObject("Alarmanlage").State(off);
}
Beispiel:
Code: Alles auswählen
dom.GetObject("BidCos-RF.IEQxxxxxxx:1.ON_TIME").State(45);
dom.GetObject("BidCos-RF.IEQxxxxxxx:1.STATE").State(true);
Sorry, für die sehr kurze Anleitung. Werde später mal eine Anleitung dazu schreiben und das unter den Projektvorstellungen einstellen.
Gruß
Michael
über 100 angelernten Komponente, Mediola NEO, RaspberryPi 3, IOBroker, VIS
Re: individueller Countdown-Timer möglich?
Hallo
Da MiBu schon die idee mit ccu umgesetzt hat, habe ich einwenig mit dem Automation Manager von Neo gespielt und das mit dem Keypad umgesetzt. Der zähler ist auch im neo live zu sehen.
Ich habe Keypad eingesetzt, möglich wäre auch zwei buttons zu verwenden, +/- und die Minuten einzustellen in schritten.
Was man braucht sind:
2 variablen vom typ string auf dem Gateway erzeugen, zuerst einen raum anlegen mit dem namen CountdownTimer
dann die variable mit dem namen MinutenTimer vom typ string
sofort nach anlegen dieser variable , einen button im neo anlegen, aktion Variable MinutenTimer wert setzen 0 (null)
und noch eine hilfsvariable mit dem namen TasteTimer.
so: Dann brauchen wir eine Makro gruppe mit dem Namen Keypad
und dort die makros von 0-9 sowie * und #
zum testen habe ich nur die keys 0,1,2 stern und raute angelegt, wer das ganze will muss die makros dann erweitern, sowie den task auch, dazu aber später noch.
so z.b. Die taste stern setzt die minuten auf null, falls man sich vertippt hat, und sendet noch einen http befehl auf neo server, welcher den task mit dem namen timer auf inaktiv schaltet.
und sieht so aus, immer die im des neo servers anpassen
im makro für die stern taste gibt es diese befehle:
variable TasteTimer auf on
und http befehl:
für das makro raute taste gibt es die folgenden befehle
variable TasteTimer auf on
den http befehl
und den eigentlichen befehl den man schalten will, also schalter oder was auch immer auf on
bei mir ist das die variable on/off auf on
die tasten 0-2 bzw. wer den ganzen keypad erweitern will sehen so aus
für 0:
variable TasteTimer auf 0 setzen
und http befehl:
mit dem http befehl wird im task reagiert
dazu noch das script taste0:
für jede zahl braucht man einen script, nur in der zeile
tauscht man die 0 gegen die tasten nummer, z.b. für taste 1 wäre die zeile dann
und legt neues script mit dem namen taste1 bzw. bis 9
Dann legen wir einen neuen task mit dem namen Keypad der dann so aussieht
in sobald block bei http befehlen für tasten so eintragen
also für alle 9 nummerntasten musste dann im sobald block ein http stehen, und dann nur taste=0 mit der nummer ersetzen
bei timer=on und timer off folgendes eintragen
IMMER die ipadresse eueren neo server
für weitere tasten 3-9 muss man dementsprechend die falls blöcke einfügen, nach taste 2
für diese dann die scripte taste3 - taste9 anlegen und im falls blöcken in dann teil zuweisen.
unten bei abfrage der variable TasteTimer auf den wert on ist http befehl (GET) mit folgender url drin
und wird gesendet sobald man die raute taste klickt, dann wird die minutenzahl übernommen und der task timer aktiviert
bei abfrage auf off wert der TasteTimer wird diese http befehl eingefügt
WICHTIG: die id= anpassen, diese ist die id des tasks timer, bei mir ist das die 5, bei euch hängt es von anzahl der tasks im AM
das kann man hier sehen:
bei task übersicht:
Dieser task, timer sieht so aus, also den so wie im bild anlegen mit dem namen timer: also in sobald block benutzen wir das neue interval block, es zählt die zeit und immer wenn die angegebene zeit vergeht, führt das was im dann block ist.
und hier ist im dann block das script mit dem namen MinutenDown, also ein script mit dem namen erstellen und diesen code einfügen:
MinutenDown
diesen teil von code ersetzt man mit einem eigenem codesnippet aus dem script editor, je nach dem was geschaltet worden ist in dem makro für raute taste (oben bei mir war es die variable ON/OFF
und den snippet erzeugt man dan so:
am besten neues script erstellen, spaichern braucht man nicht
und den erzeugten code, oben ersetzen
so den task abspeichern und alles auf neo server übertragen.
Im neo legt man jetzt einen Keypad und einen text mit dem status der variable MinutenTimer, jeder taste des keypads einen makro als aktion zuweisen
wie im bld wenn man die fernbedienung startet und z.b. 1 klickt und dann nochmal 1, werden dann 11 angezeigt, dann die raute klickt wird der countdown gestartet und nach eine minute musst die anzeige dann
10 sein bis auf 0, bei null wird dann das entsprechende auf off gehen.
Wie gesagt das was man schalten will muss in dem raute makro auf on geschaltet werden
und dann auf off in MinutenDown script auf off.
Hoffe das ich nicht etwas vergessen habe
Da MiBu schon die idee mit ccu umgesetzt hat, habe ich einwenig mit dem Automation Manager von Neo gespielt und das mit dem Keypad umgesetzt. Der zähler ist auch im neo live zu sehen.
Ich habe Keypad eingesetzt, möglich wäre auch zwei buttons zu verwenden, +/- und die Minuten einzustellen in schritten.
Was man braucht sind:
2 variablen vom typ string auf dem Gateway erzeugen, zuerst einen raum anlegen mit dem namen CountdownTimer
dann die variable mit dem namen MinutenTimer vom typ string
sofort nach anlegen dieser variable , einen button im neo anlegen, aktion Variable MinutenTimer wert setzen 0 (null)
und noch eine hilfsvariable mit dem namen TasteTimer.
so: Dann brauchen wir eine Makro gruppe mit dem Namen Keypad
und dort die makros von 0-9 sowie * und #
zum testen habe ich nur die keys 0,1,2 stern und raute angelegt, wer das ganze will muss die makros dann erweitern, sowie den task auch, dazu aber später noch.
so z.b. Die taste stern setzt die minuten auf null, falls man sich vertippt hat, und sendet noch einen http befehl auf neo server, welcher den task mit dem namen timer auf inaktiv schaltet.
und sieht so aus, immer die im des neo servers anpassen
Code: Alles auswählen
http://192.168.1.20:8088/tm/http?timer=off&auth=Passwort
variable TasteTimer auf on
und http befehl:
Code: Alles auswählen
http://192.168.1.20:8088/tm/http?timer=on&auth=Passwort
variable TasteTimer auf on
den http befehl
Code: Alles auswählen
http://192.168.1.20:8088/tm/http?timer=on&auth=Passwort
bei mir ist das die variable on/off auf on
die tasten 0-2 bzw. wer den ganzen keypad erweitern will sehen so aus
für 0:
variable TasteTimer auf 0 setzen
und http befehl:
Code: Alles auswählen
http://192.168.1.20:8088/tm/http?taste=0&auth=Passwort
dazu noch das script taste0:
Code: Alles auswählen
getDeviceStatus(
"CountdownTimer",
"MinutenTimer",
{"value":"state"},
function(err, status) {
if(!err) {
if (status == "0") {
status = '';
}
status = status + '0';
executeDeviceCommand(
"CountdownTimer",
"MinutenTimer",
{"value":"setValue","ext":status},
function(err) {
err && console.error(err);
}
);
}
}
);
Code: Alles auswählen
status = status + '0';
Code: Alles auswählen
status = status + '1';
Dann legen wir einen neuen task mit dem namen Keypad der dann so aussieht
in sobald block bei http befehlen für tasten so eintragen
Code: Alles auswählen
http://192.168.1.20:8088/tm/http?taste=0&auth=Passwort
Code: Alles auswählen
http://192.168.1.20:8088/tm/http?timer=on&auth=Passwort
Code: Alles auswählen
http://192.168.1.20:8088/tm/http?timer=off&auth=Passwort
für weitere tasten 3-9 muss man dementsprechend die falls blöcke einfügen, nach taste 2
für diese dann die scripte taste3 - taste9 anlegen und im falls blöcken in dann teil zuweisen.
unten bei abfrage der variable TasteTimer auf den wert on ist http befehl (GET) mit folgender url drin
Code: Alles auswählen
http://192.168.1.20:8088/cmd?XC_FNC=setTaskActive&id=5&active=true
bei abfrage auf off wert der TasteTimer wird diese http befehl eingefügt
Code: Alles auswählen
http://192.168.1.20:8088/cmd?XC_FNC=setTaskActive&id=5&active=false
das kann man hier sehen:
bei task übersicht:
Dieser task, timer sieht so aus, also den so wie im bild anlegen mit dem namen timer: also in sobald block benutzen wir das neue interval block, es zählt die zeit und immer wenn die angegebene zeit vergeht, führt das was im dann block ist.
und hier ist im dann block das script mit dem namen MinutenDown, also ein script mit dem namen erstellen und diesen code einfügen:
MinutenDown
Code: Alles auswählen
// diese funktion sendet ein http befehl und wird unten benutzt aus dem script einen task activ/inactiv zu schalten
const getContent = function(url) {
return new Promise((resolve, reject) => {
const lib = url.startsWith('https') ? require('https') : require('http');
const request = lib.get(url, (response) => {
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error('Failed to load page, status code: ' + response.statusCode));
}
const body = [];
response.on('data', (chunk) => body.push(chunk));
response.on('end', () => resolve(body.join('')));
});
request.on('error', (err) => reject(err));
});
};
// inhalt der Variable MinutenTimer geprüft
getDeviceStatus(
"CountdownTimer", //raumname
"MinutenTimer", //variablenname
{"value":"state"},
function(err, status) {
if(!err) {
//minuten zahl wird jede 60 sekunden um 1 veringert
status = parseFloat( status ) - 1;
if (status === 0) {
// hier ist die aufruf der funktion oben um den task mit id=5 auf inaktiv zu schalten, sobald die minuten auf null sind
getContent('http://192.168.1.20:8088/cmd?XC_FNC=setTaskActive&id=5&active=false')
.then((html) => console.log(html))
.catch((err) => console.error(err));
// hier wird der schalter oder variable wieder auf off geschaltet wenn die zeit abgelaufen ist
// in meinem fall einfach eine variable vom typ on/off
executeDeviceCommand(
"mediola",
"ONOFF [0A]",
{"value":"off"},
function(err) {
err && console.error(err);
}
);
}
//hier werden die minuten wieder in die Variable MinutenTimer geschrieben
executeDeviceCommand(
"CountdownTimer",
"MinutenTimer",
{"value":"setValue","ext":status},
function(err) {
err && console.error(err);
}
);
}
}
);
Code: Alles auswählen
// hier wird der schalter oder variable wieder auf off geschaltet wenn die zeit abgelaufen ist
// in meinem fall einfach eine variable vom typ on/off
executeDeviceCommand(
"mediola",
"ONOFF [0A]",
{"value":"off"},
function(err) {
err && console.error(err);
}
);
am besten neues script erstellen, spaichern braucht man nicht
und den erzeugten code, oben ersetzen
so den task abspeichern und alles auf neo server übertragen.
Im neo legt man jetzt einen Keypad und einen text mit dem status der variable MinutenTimer, jeder taste des keypads einen makro als aktion zuweisen
wie im bld wenn man die fernbedienung startet und z.b. 1 klickt und dann nochmal 1, werden dann 11 angezeigt, dann die raute klickt wird der countdown gestartet und nach eine minute musst die anzeige dann
10 sein bis auf 0, bei null wird dann das entsprechende auf off gehen.
Wie gesagt das was man schalten will muss in dem raute makro auf on geschaltet werden
und dann auf off in MinutenDown script auf off.
Hoffe das ich nicht etwas vergessen habe
-
- Beiträge: 101
- Registriert: 22.09.2014, 15:58
- Hat sich bedankt: 2 Mal
Re: individueller Countdown-Timer möglich?
Ihr seid der Wahnsinn Jungs!!!!
Tausenddank für die verschiedenen Möglichkeiten. Ich werde mich die Tage mal hinsetzten und versuchen das umzusetzen. Eigentlich dachte ich als ich mir das so überlegt habe, das dies eine gaaanz einfache Sache wäre, aber das da jetzt so ein Programmieraufwand getrieben werden muss, hätte ich im Leben nicht gedacht.
Nochmals vielen vielen Dank für die sehr ausführlichen Beschreibungen incl. Screenshots!!!!
Kurzschlusselektriker
Tausenddank für die verschiedenen Möglichkeiten. Ich werde mich die Tage mal hinsetzten und versuchen das umzusetzen. Eigentlich dachte ich als ich mir das so überlegt habe, das dies eine gaaanz einfache Sache wäre, aber das da jetzt so ein Programmieraufwand getrieben werden muss, hätte ich im Leben nicht gedacht.
Nochmals vielen vielen Dank für die sehr ausführlichen Beschreibungen incl. Screenshots!!!!
Kurzschlusselektriker
Re: individueller Countdown-Timer möglich?
wäre viel einfacher wenn mediola in der app, eine text eingabe ermöglichen wurde, diese dann in ccu variable oder gateway variable schreiben könnteKurzschlusselektriker hat geschrieben:aber das da jetzt so ein Programmieraufwand getrieben werden muss, hätte ich im Leben nicht gedacht.
hier noch einmal einfachere lösung ohne den keypad, mit eingabe der stunden und minuten über buttons im neo:
5 buttons, 2 für minuten und 2 für stunden, die buttons lösen makro aus, ein button um den timer zu starten, nach eingabe von stunden und minuten.
so z.b. 2 variablen wie oben in meinem thread
eine makrogruppe mit 5 makros:
min+
min-
std+
std-
start
die makros einzeln:
min+
variable TasteTimer wert setzen min+
http befehl
Code: Alles auswählen
http://192.168.1.20:8088/tm/http?taste=min%2B&auth=Passwort
variable TasteTimer wert setzen min-
http befehl
Code: Alles auswählen
http://192.168.1.20:8088/tm/http?taste=min-&auth=Passwort
variable TasteTimer wert setzen std+
http befehl
Code: Alles auswählen
http://192.168.1.20:8088/tm/http?taste=std%2B&auth=Passwort
variable TasteTimer wert setzen std-
http befehl
Code: Alles auswählen
http://192.168.1.20:8088/tm/http?taste=std-&auth=Passwort
schalter licht auf on //der leuchten soll, variable oder was auch immer
http befehl
Code: Alles auswählen
http://192.168.1.20:8088/cmd?XC_FNC=setTaskActive&id=5&active=true
task 5 ist wieder ein interval von 60 sekunden, der das script aufruft:
MinutenDown script:
Code: Alles auswählen
// diese funktion sendet ein http befehl und wird unten benutzt aus dem script einen task activ/inactiv zu schalten
const getContent = function(url) {
return new Promise((resolve, reject) => {
const lib = url.startsWith('https') ? require('https') : require('http');
const request = lib.get(url, (response) => {
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error('Failed to load page, status code: ' + response.statusCode));
}
const body = [];
response.on('data', (chunk) => body.push(chunk));
response.on('end', () => resolve(body.join('')));
});
request.on('error', (err) => reject(err));
});
};
// abfrage der gesetzten zeit, stunden und minuten
getDeviceStatus(
"CountdownTimer",
"MinutenTimer",
{"value":"state"},
function(err, status) {
if(!err) {
var zeit = status.split(':', 2); //Rückgabe der variable MinutenTimer in 2 Teile (arrays) ohne (:)
var std = zeit[0]; //stunden teil
var min = zeit[1]; // minutenteil
var minZahl = parseFloat( min ); // minuten aus dem string in zahl, um damit zu arbeiten
var stdZahl = parseFloat( std );
minZahl = minZahl - 1;
if (minZahl < 0) {
minZahl = 59;
stdZahl = stdZahl - 1;
if (stdZahl <= 9) {
std = '0' + stdZahl;
}
std = stdZahl;
}
zeit = std + ':' + minZahl;
if (minZahl <= 9) {
zeit = std + ':0' + minZahl;
}
if (zeit == '00:00') { // wenn timer auf 00:00 ankommt ist abgelaufen
// hier wird der schalter oder variable wieder auf off geschaltet wenn die zeit abgelaufen ist
// in meinem fall einfach eine variable vom typ on/off
// für einen schalter hier einen snippet im script einfügen und meinen löschen
executeDeviceCommand(
"mediola",
"ONOFF [0A]",
{"value":"off"},
function(err) {
err && console.error(err);
}
);
// hier ist die aufruf der funktion oben um den task mit id=5 auf inaktiv zu schalten, sobald die minuten auf null sind
// id=9 mit eigenem task id ersetzen
getContent('http://192.168.1.20:8088/cmd?XC_FNC=setTaskActive&id=9&active=false')
.then((html) => console.log(html))
.catch((err) => console.error(err));
}
// schreibe bei jedem durchlauf die restliche zeit in die variable MinutenTimer
executeDeviceCommand(
"CountdownTimer",
"MinutenTimer",
{"value":"setValue","ext":zeit},
function(err) {
err && console.error(err);
}
);
}
}
);
dieses zu ersetzen mit eigenem snippet für den schalter:
Code: Alles auswählen
// hier wird der schalter oder variable wieder auf off geschaltet wenn die zeit abgelaufen ist
// in meinem fall einfach eine variable vom typ on/off
// für einen schalter hier einen snippet im script einfügen und meinen löschen
executeDeviceCommand(
"mediola",
"ONOFF [0A]",
{"value":"off"},
function(err) {
err && console.error(err);
}
);
der task dazu, die id nach anlegen beachten und im script ersetzen: jetzt scripts anlegen für die tasten/makros:
min+
Code: Alles auswählen
getDeviceStatus(
"CountdownTimer",
"MinutenTimer",
{"value":"state"},
function(err, status) {
if(!err) {
var zeit = status.split(':', 2);
var std = zeit[0];
var min = zeit[1];
var minZahl = parseFloat( min );
minZahl = minZahl + 1;
if (minZahl > 59) {
minZahl = 0;
}
zeit = std + ':' + minZahl;
if (minZahl <= 9) {
zeit = std + ':0' + minZahl;
}
executeDeviceCommand(
"CountdownTimer",
"MinutenTimer",
{"value":"setValue","ext":zeit},
function(err) {
err && console.error(err);
}
);
}
}
);
Code: Alles auswählen
getDeviceStatus(
"CountdownTimer",
"MinutenTimer",
{"value":"state"},
function(err, status) {
if(!err) {
var zeit = status.split(':', 2);
var std = zeit[0];
var min = zeit[1];
var minZahl = parseFloat( min );
minZahl = minZahl - 1;
if (minZahl < 0) {
minZahl = 59;
}
zeit = std + ':' + minZahl;
if (minZahl <= 9) {
zeit = std + ':0' + minZahl;
}
executeDeviceCommand(
"CountdownTimer",
"MinutenTimer",
{"value":"setValue","ext":zeit},
function(err) {
err && console.error(err);
}
);
}
}
);
Code: Alles auswählen
getDeviceStatus(
"CountdownTimer",
"MinutenTimer",
{"value":"state"},
function(err, status) {
if(!err) {
var zeit = status.split(':', 2);
var std = zeit[0];
var min = zeit[1];
var stdZahl = parseFloat( std );
stdZahl = stdZahl + 1;
if (stdZahl > 23) {
stdZahl = 0;
}
zeit = stdZahl + ':' + min;
if (stdZahl <= 9) {
zeit = '0' + stdZahl + ':' + min;
}
executeDeviceCommand(
"CountdownTimer",
"MinutenTimer",
{"value":"setValue","ext":zeit},
function(err) {
err && console.error(err);
}
);
}
}
);
Code: Alles auswählen
getDeviceStatus(
"CountdownTimer",
"MinutenTimer",
{"value":"state"},
function(err, status) {
if(!err) {
var zeit = status.split(':', 2);
var std = zeit[0];
var min = zeit[1];
var stdZahl = parseFloat( std );
stdZahl = stdZahl - 1;
if (stdZahl < 0) {
stdZahl = 23;
}
zeit = stdZahl + ':' + min;
if (stdZahl <= 9) {
zeit = '0' + stdZahl + ':' + min;
}
executeDeviceCommand(
"CountdownTimer",
"MinutenTimer",
{"value":"setValue","ext":zeit},
function(err) {
err && console.error(err);
}
);
}
}
);
z.b. für min+ so: das zeichen + ist der code hier: %2B und ist nur für das zeichen +, das minus zeichen wird normal als - dargestellt und im code auch verwendet, aber ist hier nicht von bedeutung, nur als hinweis
die buttons erstellen wie ganz oben im bild
min+,min-,std+,std- tasten die entsprechenden makros als aktion zuweisen, genauso der start taste, dem textfeld den status der variable MinutenTimer zuweisen
so jetzt befor man ales testet, noch einen button erstellen, um die variable MinutenTimer auf 00:00 zu stellen, einmalig, diesen button kannst du später löschen
remote starten diesen button klicken, dann musste der status der variable jetzt auf 00:00 stehen
nun kann man mit den buttons minuten, bzw. stunden einstellen...bei minuten bis 59 bei stunden bis 23
nun z.b. auf 00:02 einstellen und start klicken
jetzt musste das licht angehen, welches in dem makro start eingetragen ist als aktion, der task intervall wird aktiv, nach einer minute musste die anzeige dann 00:01 sein
noch eine minute und dann 00:00, das licht musste dann ausschalten.
der timer ist jetzt abgelaufen und der task inaktiv.
Re: individueller Countdown-Timer möglich?
Hallo,
ich habe einen längeren Chat mit Zdenko geführt, da ich seinen Timer nicht zum Laufen gekriegt habe.
Dabei hat er festgestellt, dass ihm ein kleiner Fehler unterlaufen ist. Man muss folgende Änderungen in der Programmierung des Timers vornehmen.
Wir brauchen noch eine Hilfsvariable zusätzlich. Also im Gerätemanager noch eine Hilfsvariable mit dem Namen „Hilfsvariable“ anlegen.
Dann muss im Makroeditor für die Nummern oder je nach Variante +/- Tasten die Änderung des Befehls „TasteTimer“ in den Befehl „Hilfsvariable“ vorgenommen werden. und zusätzlich dann im Task für das Keypad im Fallsblock noch die Bedingung "TasteTimer" gegen „Hilfsvariable“ getauscht werden. Jetzt funktioniert alles bestens.
Hier nochmal einen großen Dank an Zdenko, der sich viel Mühe gemacht hat mir zu helfen.
Beste Grüße
ich habe einen längeren Chat mit Zdenko geführt, da ich seinen Timer nicht zum Laufen gekriegt habe.
Dabei hat er festgestellt, dass ihm ein kleiner Fehler unterlaufen ist. Man muss folgende Änderungen in der Programmierung des Timers vornehmen.
Wir brauchen noch eine Hilfsvariable zusätzlich. Also im Gerätemanager noch eine Hilfsvariable mit dem Namen „Hilfsvariable“ anlegen.
Dann muss im Makroeditor für die Nummern oder je nach Variante +/- Tasten die Änderung des Befehls „TasteTimer“ in den Befehl „Hilfsvariable“ vorgenommen werden. und zusätzlich dann im Task für das Keypad im Fallsblock noch die Bedingung "TasteTimer" gegen „Hilfsvariable“ getauscht werden. Jetzt funktioniert alles bestens.
Hier nochmal einen großen Dank an Zdenko, der sich viel Mühe gemacht hat mir zu helfen.
Beste Grüße