NEWS
[gelöst] Überwachen und schalten
-
@paul53 @mickym
Dank Eurer Hilfe bin ich soweit das der Trigger über die Funktion den Datenpunkt schaltet.on({id: idVar, fromNe: 'system.adapter.javascript.0', change: 'ne', ack:false}, function (obj) { //nur unbestätigte Änderungen und nicht durch ein javascript geändert log("AUSGELÖST: Datenpunkt unbestätigt nicht aus Script geändert" ,"info"); setRelais(1)// Hier der Code, der aber nur ausgeführt wird, falls aktiv im VIS etc. ausgeführt. ACK ist da standardmäßig immer false. });
Da es 8 Relais gibt würde ich gern alle 8 gleichzeitig in einem Script überwachen lassen.
Dafür habe ich schon mal die 8 Datenpunkte in ein Enum zusammengefasst.
Wie muss ich varID (Datenpunktvariable) ändern um enum.functions.relaisschalter zu triggern?
Wie kann ich dann auslesen welcher der Datenpunkte ausgelöst hat damit ich das in setRelais(x) übergeben kann.(wenn man auf enum nicht triggern kann, meine so was gelesen zu haben, leg ich halt 8 x varID1-8 als Array an) oder gibt ne schlankere Variante
-
@ostseeskipper sagte: Wie muss ich varID (Datenpunktvariable) ändern um enum.functions.relaisschalter zu triggern?
Mit dem $Selector:
$('*(functions=relaisschalter)').on(function(dp) { log('Auslöser: ' + dp.id + ', Wert: ' + dp.state.val); });
oder mit RegExp im on(), da die 8 IDs sicherlich eine einheitliche Struktur haben, die sich von anderen Datenpunkt-IDs unterscheidet.
-
@paul53
Danke.
Hab das rüberkopiert aber es löst nicht aus.
Es sieht auch so komisch aus als ob es Text ist
Allerdings ehrlich gesagt ist mir leider grad 1 Schritt zu weit. Ist schwer grad, da ich auch keinen Bezug zu meiner enum Liste enum.functions.relaisschalter finde.
Ja die 8 ID's haben eine einheitliche Struktur
Hatte sgrad mit on und dem Array probiert, hab allerdings aktuell die Herausforderung das ich noch nicht weiss wie ich ermitteln kann welches der 8 der Auslöser war.on({id: [idVar1,idVar2,idVar3,idVar4,idVar5,idVar6,idVar7,idVar8], fromNe: 'system.adapter.javascript.0', change: 'ne', ack:false}, function (obj) { //nur unbestätigte Änderungen und nicht durch ein javascript geändert log("AUSGELÖST: Datenpunkt unbestätigt nicht aus Script geändert" ,"info"); setRelais(1)// Hier der Code, der aber nur ausgeführt wird, falls aktiv im VIS etc. ausgeführt. ACK ist da standardmäßig immer false. });
-
@ostseeskipper sagte: Ja die 8 ID's haben eine einheitliche Struktur
Wie sieht die aus?
-
const idVar1 = 'javascript.0.Anel.1.R1.Rel_Status'; // Datenpunkt-ID const idVar2 = 'javascript.0.Anel.1.R2.Rel_Status'; // Datenpunkt-ID const idVar3 = 'javascript.0.Anel.1.R3.Rel_Status'; // Datenpunkt-ID const idVar4 = 'javascript.0.Anel.1.R4.Rel_Status'; // Datenpunkt-ID const idVar5 = 'javascript.0.Anel.1.R5.Rel_Status'; // Datenpunkt-ID const idVar6 = 'javascript.0.Anel.1.R6.Rel_Status'; // Datenpunkt-ID const idVar7 = 'javascript.0.Anel.1.R7.Rel_Status'; // Datenpunkt-ID const idVar8 = 'javascript.0.Anel.1.R8.Rel_Status'; // Datenpunkt-ID
-
@ostseeskipper
Dann mit RegExp z.B. so:on({id: /^javascript\.0\.Anel\.1\.R\d\.Rel_Status$/, fromNe: 'system.adapter.javascript.0', change: 'ne', ack:false}, function (obj) { //nur unbestätigte Änderungen und nicht durch ein javascript geändert log('Auslöser: ' + obj.id); log("AUSGELÖST: Datenpunkt unbestätigt nicht aus Script geändert" ,"info"); setRelais(1)// Hier der Code, der aber nur ausgeführt wird, falls aktiv im VIS etc. ausgeführt. ACK ist da standardmäßig immer false. })
-
-
@paul53
Paul, kann ich mir irgendwie einfach das \d\ in eine variable holen?/^javascript\.0\.Anel\.1\.R\d\.Rel_Status$/
-
@ostseeskipper sagte: Nun muss ich mir die obj.id nur noch zerlegen
let id = obj.id.split('.'); let relais = parseInt(id[4].substr(1,1));
-
@paul53 said in Überwachen und schalten:
Paul, vielen Dank für eine so tolle Hilfe