Moin Leute,
besteht die Möglichkeit mit einem Telegram Befehl alle Rauchmelder im Haus anzusprechen und ihren Status chronologisch anzeigen zu lassen, also Position und Kapazität in %?
Einzeln bekomme ich es hin, jedoch ist mir dies zu umständlich.
Moin Leute,
besteht die Möglichkeit mit einem Telegram Befehl alle Rauchmelder im Haus anzusprechen und ihren Status chronologisch anzeigen zu lassen, also Position und Kapazität in %?
Einzeln bekomme ich es hin, jedoch ist mir dies zu umständlich.
const rm = getObject('enum.functions.rauchmelder').common.members;
for(let i = 0; i < rm.length; i++) {
$('state[id='+rm[i]+']').each(function(id) {
var obj = getObject(id);
var name = getObject(rm[i]).common.name;
switch(obj.common.name) {
case "Battery percent":
if (getState(id).val <= 20) {
sendTo('telegram.0', {user: 'Christian', text: 'Die Batterie vom Rauchmelder '+ name +' neigt sich dem Ende zu. Aktuell noch ' + getState(id).val + '% Batterie.'});
}
break;
case "Gas leak detected":
if (getState(id).val === true) {
sendTo('telegram', {user: 'Christian', text: 'Am Rauchmelder '+ name +' wurde Rauch entdeckt Bitte überprüfen.'});
_doAllRollosUp();
}
break;
case "Battery voltage":
if (getState(id).val <= 2.8) {
sendTo('telegram.0', {user: 'Christian', text: 'Die Batterie vom Rauchmelder '+ name +' neigt sich dem Ende zu. Die aktuelle Spannung beträgt ' + getState(id).val + 'V.'});
}
break;
}
});
}
Alles anzeigen
Ich danke dir, jedoch habe ich noch ein paar Probleme. Erstmal meckert der Compiler schon in Zeile 32 mit der Begründung "dont make functions within a loop". Mehrere Versuche das Problem zu lösen resultierte lediglich in eine Umverteilung der Fehlermeldungen.
Und der Log sagt mir zusätzlich noch folgende Fehler:
21:14:09.352 [error] javascript.0 script.js.common.Zustandsabfrage: script.js.common.Zustandsabfrage:3
21:14:09.353 [error] javascript.0 at script.js.common.Zustandsabfrage:3:23
Hast du ggf. eine Idee wo mein Fehler liegen könnte? Und im obigen Script müsste ich doch auch "user: 'Christian'" durch "send" ersetzen können, damit ich die Meldung an alle Geräte im Telegram Adapter zugeschickt bekomme. Sehe ich das richtig?
Gruß
das ist nicht der compiler, denn ein javascript wird nicht compiliert. vergiss den hinweis. das teil läuft
den user mußt du durch deinen telegram user ersetzen
wichtig ist, dass du die enum.function rauchmelder anlegst, sprich im menü unter aufzählungen unter functions mußt du die rauchmelder anlegen und dann mußt du die rauchmelder auch zuordnen, sonst werden ja keine members gefunden
Alles klar. Nur wie kann ich diese zuordnen? Habe gerade die Aufzählung erstellt, jedoch habe ich dort keine direkte Möglichkeit sie zuzuordnen? Drücke ich auf das "+" kann ich eine Datei auf meinem PC auswählen, jedoch hilft mir das nicht weiter.
du gehst unter objekte und dort gibt es die spalte functions und dann weißt du eine oder mehrere zu
Perfekt. Jetzt sollte alles funktionieren, auch wenn ich es nicht testen kann. Vielen Dank für deine Hilfe!
Klar kannst du es testen... Du kannst zb maldie batteriewerte ändern bei einem dann solltest eine Information bekommen
Habe ich versucht, jedoch bekomme ich im Log nur folgende Info "Cannot control mihome.0.devices.smoke_158d0002887e01.percent"
Dachte halt, dass ich dort einfach die %-Angabe der Batterie auf 17 herunterstelle. Eine leere habe ich leider nicht mehr im Haus, da ich nur für die Rauchmelder so ein CR123A Format benötige und diese auch erst frisch gekauft habe.
Also ich hab es genau so getestet und es funktioniert
Alles klar, nun hat es auch bei mir endlich funktioniert. Hatte das falsche Gerät ausgewählt
So kann das natürlich auch nichts werden. Jedenfalls vielen Dank für deine Hilfe!
Kein Problem... Bitteschön und viel Spaß damit
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!