NEWS
Änderung mehrerer Schalter kombinieren
-
Hallo zusammen,
ich möchte eine Funktion auslösen, wenn einer von zwei Schalter aktiviert wird. Allerdings habe ich ein Fehler im Skript, finde aber nichts im Internet…
on({id: 'hm-rpc.1.000193C99D3D76.1.PRESS_SHORT' || 'hm-rpc.1.000193C99D3D6E.1.PRESS_SHORT'}, function (obj) {
Funktioniert das grundsätzlich so?
-
Hallo,
das kannst du mit RegEx machen:
on({ id: /^hm-rpc\.1\.(000193C99D3D76|000193C99D3D6E)\.1\.PRESS_SHORT$/, val: true }, function (obj) { });
oder in diesem Fall der fast identischen ID
on({ id: /^hm-rpc\.1\.000193C99D3D(76|6E)\.1\.PRESS_SHORT$/, val: true }, function (obj) { });
Gruß
Pix
-
Hallo Pix,
vielen lieben Dank! Läuft. Für mich als JavaScript-Anfänger immer wieder faszinierend, was es für Befehle/Möglichkeiten gibt.
Ich arbeite gerade bei diesem Script an einer Alarmanlage und dachte mir, ich kann diesen Code hier für die Fenstersensoren nehmen…läuft aber nicht.
Bei den IP Sensoren:
on({ id: /^hm-rpc\.1\.(0000D3C999A986|0000D569A0B124|0000D569A0B144|0000D569A0B164)\.1\.STATE$/, val: 1 }, function (obj)
Bei den "normalen" Sensoren:
on({ id: /^hm-rpc\.0\.(MEQ0717364|MEQ1726689|MEQ1727185|NEQ0757939)\.1\.STATE$/, val: true }, function (obj) {
Wenn ich etwas öffne, kommt im Protokoll folgendes:
> javascript.0 script.js.Automatisierungen.Alarmanlage: [object Object]
Viele Grüße
Tobi
-
Wenn ich etwas öffne, kommt im Protokoll folgendes:
javascript.0 script.js.Automatisierungen.Alarmanlage: [object Object] `
Das sieht nach einer Log-Ausgabe aus. Wie sieht der Log-Befehl aus ? -
Mein gesamtes Angänger-Script :roll: sieht so aus…bzw. der relevante Teil
on({ id: /^hm-rpc\.0\.(LEQ0172329|LEQ0500217|MEQ0717167|MEQ0717275|MEQ0717199|MEQ0717665|MEQ0717821|MEQ1726821)\.1\.STATE$/, val: true }, function (obj) { var anwesenheit = getState ('javascript.0.alarmanlage.anwesenheit'); log(anwesenheit); if(anwesenheit === 'anwesend-aus' || anwesenheit === 'abwesend-aus') //keine Aktion erforderlich if(anwesenheit === 'anwesend-ein' || anwesenheit === 'abwesend-ein') setState("sayit.0.tts.text", "Fenster Untergeschoss wurde geöffnet"); });
-
Funktioniert das grundsätzlich so? `
Nein, aber mit einem http://forum.iobroker.net/viewtopic.php?f=21&t=2407&p=110805#p108006. -
var anwesenheit = getState ('javascript.0.alarmanlage.anwesenheit'); log(anwesenheit); ```` `
–>
var anwesenheit = getState ('javascript.0.alarmanlage.anwesenheit').val; log(anwesenheit);
Du machst anschließend einen Stringvergleich, was bedeutet der Datenpunkt ist vom Typ "string" ?
-
Funktioniert das grundsätzlich so?
Nein, aber mit einem [http://forum.iobroker.net/viewtopic.php?f=21&t=2407&p=110805#p108006](http://forum.iobroker.net/viewtopic.php?f=21&t=2407&p=110805#p108006).
Hi! Sorry für die späte Rückmeldung. Unser zweites Kind kam dazwischen.
Ich habe es entsprechend umgesetzt, erhalte aber leider keine Funktion…
var idTasterEG = ["hm-rpc.0.MEQ0717364.1.STATE", "hm-rpc.0.MEQ1726689.1.STATE", "hm-rpc.0.MEQ1727185.1.STATE", "hm-rpc.0.NEQ0757939.1.STATE"]; on({id: idTasterEG, val: true}, function(){
–-------------------------------------------------------------
> Du machst anschließend einen Stringvergleich, was bedeutet der Datenpunkt ist vom Typ "string" ?
Was meinst du mit "Stringvergleich"? Ich habe die Variable "javascript.0.alarmanlage.anwesenheit" angelegt, hierunter sind die Stati meiner Alarmanalge hinterlegt (z. B. "anwesend-ein"). Diese rufe ich ja ab, schreibe diese in die Programmvariable und lasse mir den aktuellen Status ausgeben…
Viele Grüße