NEWS
[gelöst]-DutyCycle - Telegram Meldung
-
was ist in meinem Script falsch ? `
Es wird auf change: "any" getriggert, also bei jeder Aktualisierung des Zeitstempels und nicht nur bei Wertänderung. -
Besser so:
on({id: 'javascript.0.DutyCycle.DutyCycle', change: 'ne'}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if(value) { sendTo("telegram", "send", { text: (['Achtung: ','DutyCycle ist: ',getState("hm-rega.0.6172").val,'%'].join('')) }); } else { sendTo("telegram", "send", { text: (['DutyCycle ','ist wieder unter 60%, ','aktuell sind es: ',getState("hm-rega.0.6172").val,'%'].join('')) }); } });
-
Ich habe ja wirklich fast keine Ahnung, aber
@paul53:Es wird auf change: "any" getriggert `
Da traue ich mich sogar Paul zu widersprechen.Da steht bei dsl-raser nämlich:
@dslraser:on({id: 'hm-rega.0.6172', change: "ne"}, function (obj) { `
und selbst für mich als js-Legastheniker heisst das not equalsind das vielleicht die Hochkommas schuld
Gruß
rainer
-
Die Aussage betrifft das Triggern auf den Datenpunkt 'javascript.0.DutyCycle.DutyCycle'.
-
Danke, ich habe es jetzt so, scheint zu funktionieren. (verstanden habe ich es aber leider nicht :shock: )
! ````
createState("DutyCycle.DutyCycle", {
name: 'DutyCycle',
role: 'switch',
type: 'boolean',
desc: 'DutyCycle über 60%',
read: true,
write: true,
def: false,
! });
! on({id: 'hm-rega.0.6172', change: "ne"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("hm-rega.0.6172").val >= 60) {
setState("javascript.0.DutyCycle.DutyCycle"/DutyCycle/, true);
} else if (getState("hm-rega.0.6172").val < 60) {
setState("javascript.0.DutyCycle.DutyCycle"/DutyCycle/, false);
}
});
on({id: 'javascript.0.DutyCycle.DutyCycle', change: 'ne'}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if(value) {
sendTo("telegram", "send", {
text: (['Achtung: ','DutyCycle ist: ',getState("hm-rega.0.6172").val,'%'].join(''))
});
} else {
sendTo("telegram", "send", {
text: (['DutyCycle ','ist wieder unter 60%, ','aktuell sind es: ',getState("hm-rega.0.6172").val,'%'].join(''))
});
}
}); -
was ist in meinem Script falsch ?
Es wird auf change: "any" getriggert, also bei jeder Aktualisierung des Zeitstempels und nicht nur bei Wertänderung.
Change nicht angegeben oder übersehe ich das?
Wenn nicht definiert ist default "ne"
> not equal) New value must be not equal to the old one (state.val != oldState.val) If pattern is id-string this value is used by default
-
Aber eine andere Frage…
Nutzt ihr alle hm oder tcl Skripte für den Duty Cycle?
(hm-rega.0.6172 al Variable für ein Skript?).
Mittlerweile kann man doch DC über hm-rega direkt synchronisieren.
-
verstanden habe ich es aber leider nicht `
Die https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#on–-subscribe-on-changes-or-updates-of-some-state kennst Du ? -
verstanden habe ich es aber leider nicht
Die [https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#on–-subscribe-on-changes-or-updates-of-some-state](https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#on–-subscribe-on-changes-or-updates-of-some-state) kennst Du ?
jetzt ja.[emoji3] -
Change nicht angegeben oder übersehe ich das?
Wenn nicht definiert ist default "ne" `
@Doku:Please note, that by default "change" is equal to "any", except when only id as string is set (like on("id", function (){});). In last case change will be set to "ne". `
const idXy = '...'; on(idXy, callback); // Triggert bei Wertänderung on({id: idXy}, callback); // Triggert bei Aktualisierung des Zeitstempels
-
Change nicht angegeben oder übersehe ich das?
Wenn nicht definiert ist default "ne" `
@Doku:Please note, that by default "change" is equal to "any", except when only id as string is set (like on("id", function (){});). In last case change will be set to "ne". `
const idXy = '...'; on(idXy, callback); // Triggert bei Wertänderung on({id: idXy}, callback); // Triggert bei Aktualisierung des Zeitstempels ```` `
OK. Stimmt
Böse Falle.
-
Ich bin noch ein Newbie hier aber hab einige Jahre auf dem Buckel mit anderen Skriptsprachen etc. auch in der Entwicklung in Teams.
Nichtsdestotrotz praktiziere hier noch ein "Trial & Error", macht einfach mega Spaß mit ioBroker und Heim-Automatisierung.
Aus Gründen der Lesbarkeit des Quellcodes empfehle ich aber im Zweifel immer, Default-Werte entweder im Quelltext-Kommentar zu erwähnen oder dennoch mit an die Prozedur zu übergeben. Natürlich macht man das nicht bei Alltags-Funktionen und ich halte mich selbst leider auch nicht immer dran…
-
Wie kriege ich denn den DutyCycle in hm-rega.0.6172 angezeigt?
Also der Datenpunkt existiert bei mir nicht…
edit: hat sich erledigt, in den Adaptereinstellungen aktivieren :lol: