NEWS
Frage: RegExp in on()
-
Das muss gehen.
Gib einen Beispiel, welcher durch diesen RegExp erkannt werden muss.
-
Hi Bluefox,
Ich habe mal die Instanz des Javascript-Adapters neugestartet, nachdem zu meintest, dass das laufen müsste. Jetzt funktioniert es mit den RegExp-Objekt. Also alles gut!
Danke & beste Grüsse,
Bentschik
-
Hi,
muss das Thema nochmal hoch holen!
Ich würde auch gern mithilfe von RegExp mehrer Signale in einen On Aufruf packen. (Falls das geht)
Ich komme leider nicht weiter, habe schon tausend Sachen probiert, und muss jetzt leider aufgeben.
var a = "hm-rpc.0.MEQ075xxxx.1.STATE"; var b = "hm-rpc.0.MEQ075xxxx.1.STATE"; var c = "hm-rpc.0.MEQ075xxxx.1.STATE"; var x = new RegExp("?????"); on({id: x, val: true}, function(dp) { log('haut hin'); });
-
Hi,
muss das Thema nochmal hoch holen!
Ich würde auch gern mithilfe von RegExp mehrer Signale in einen On Aufruf packen. (Falls das geht)
Ich komme leider nicht weiter, habe schon tausend Sachen probiert, und muss jetzt leider aufgeben.
var a = "hm-rpc.0.MEQ075xxxx.1.STATE"; var b = "hm-rpc.0.MEQ075xxxx.1.STATE"; var c = "hm-rpc.0.MEQ075xxxx.1.STATE"; var x = new RegExp("?????"); on({id: x, val: true}, function(dp) { log('haut hin'); }); ```` `
Probier mal:
var a = "hm-rpc.0.MEQ075xxxx.1.STATE"; var b = "hm-rpc.0.MEQ075xxxx.1.STATE"; var c = "hm-rpc.0.MEQ075xxxx.1.STATE"; var x = /\hm-rpc\.0\.MEQ075[0-9]{4}\.1\.STATE$/; on(x, function(obj) { if (obj.state.val) log('haut hin'); });
Keine Ahnung, ob es passt. RegEx ist ein Buch mit sieben Siegeln.
Hab das mal so unter https://regex101.com/#javascript zusammengeklickt.
-
oder:
var x = new RegExp("\hm-rpc\.0\.MEQ075[0-9]{4}\.1\.STATE$"); on({id:x,change:'ne'}, function (obj) { if (obj.state.val) log('haut hin'); });
-
oder:
var x = new RegExp("\hm-rpc\.0\.MEQ075[0-9]{4}\.1\.STATE$"); on({id:x,change:'ne'}, function (obj) { if (obj.state.val) log('haut hin'); }); ```` `
Hi,
haut hin!
Ich habe nur gedacht, man könne das "variabel" machen. Und dadurch mehrere Trigger in einen on erschlagen.
-
Ich habe nur gedacht, man könne das "variabel" machen. Und dadurch mehrere Trigger in einen on erschlagen. `
Danke für die Rückmeldung!
Das wiederum verstehe ich nun nicht. Das ist doch variabel und Du hast alle drei Trigger in einem on.
-
Hi,
ich ist sicherlich von mir blöd gewählt dass alles drei HomeMatic Kontakte sind. Stellt man sich aber vor man hat 15 verschiedene Datenpunkte, ….....
Aber eigentlich ist es nur rein Interesse halber, ob es möglich wäre.
-
Zur Not kannst du alle Datenpunkte einem Gewerk (homematic) oder Aufzählung (ioBroker) zuordnen und das dann abfragen. Gab's hier ja schon häufiger.
Gruß
Pix
-
@pix:oder Aufzählung (ioBroker) zuordnen und das dann abfragen. Gab's hier ja schon häufiger.
Gruß
Pix `
Hi,
Danke das kannte ich so nicht.!
Könntest du mir noch erklären wie ich das als````
$(selector).onbenutze? Hier meine angelegten Sachen. ![671_unbenannt.png](/assets/uploads/files/671_unbenannt.png)
-
Probier mal:
var cacheSelectorState = $('channel[state.id=*.STATE](alarmanlage="sensoren")'); cacheSelectorState.on(function(obj) { machWas(obj); });
Kommt so aus dem http://forum.iobroker.net/viewtopic.php?f=21&t=869&sid=f9ba5657489ff431a1990884f90779c1#p6564
Gruß
Pix
-
@pix:Probier mal:
var cacheSelectorState = $('channel[state.id=*.STATE](alarmanlage="sensoren")'); cacheSelectorState.on(function(obj) { machWas(obj); });
Kommt so aus dem http://forum.iobroker.net/viewtopic.php?f=21&t=869&sid=f9ba5657489ff431a1990884f90779c1#p6564
Gruß
Pix `
Hi Pix,
geht leider nicht. Ich hatte es im Vorfeld schon so ähnlich mit Hilfe der Doku probiert.
*$('channel(Alarmanlage=sensoren)').on(function(id)
Ich weis aber leider nicht was "channel" bedeutet. :roll:
-
Hi,
ich bekomme es leider nicht hin erstellte Aufzählungen im Skript zu benutzen! Könnte jemand mal eine kleine Erklärung geben wie das geht?
DANKE
-
Hi blauholsten,
hier mal ein skript von mir:
var actors = $('*.STATE(functions=nachtruhe)'); on({ id: "javascript.0.Nachtruhe"/*Nachtruhe*/, change: 'ne' }, function(obj) { if (getState("javascript.0.Nachtruhe"/*Nachtruhe*/).val === true){ actors.each(function (id){ if(getState(id).val === true){ setState(id, false);} }); } });
Das skript funktioniert jetzt einwandfrei. Zu beachten ist bei der Aufzählung das es verschiedene Schreibweisen gibt, hierzu mal in die Doku vom Javascript Adapter auf Github schauen. Entscheidend ist die Richtig auszuwählen/finden. Ich hatte Anfangs eine sehr lange Schreibweise von einem anderen skript hier aus dem Forum übernommen, dabei wurden mir nur 2 von 3 der Aufgezählten Objekte/Datenpunkte gefunden egal was ich gemacht habe. Die Objekte/Datenpunkte waren alle vom gleichen Geräte Typ. Erst als ich die kürzeste Form genommen hab hat es geklappt.
Alles was nach "$" in der Klammer kommt sind Filter. In meinem Beispiel Filtere ich nach "STATE" und der Aufzählung "nachtruhe" in Funktionen.
> Ich weis aber leider nicht was "channel" bedeutet. :roll:
Das ist ein Filter der In den Objekten/Datenpunkten nach "channel" sucht und nur innerhalb der gefundenen Objekten/Datenpunkten nach den weiteren Filtern sucht.Ich hoffe ich konnte dir Helfen.
Was bei mir noch offen ist, ist in on() auf die Änderung zu reagieren das will einfach nicht klappen.
-
@pix:Zur Not kannst du alle Datenpunkte einem Gewerk (homematic) oder Aufzählung (ioBroker) zuordnen und das dann abfragen. Gab's hier ja schon häufiger.
Gruß
Pix `
Hi,
habe gerade auf der Website gelesen, das Aufzählung rein für Homematic ist.
Zitat
> Hier werden die Favoriten, Gewerke und Räume aus der Homematic-CCU aufgelistet.
Gibt es dennoch eine Möglichkeit verschiedene Datenpunkte zu einem Trigger zusammen zu fassen? Oder ist dies gar nicht möglich?
-
habe gerade auf der Website gelesen, das Aufzählung rein für Homematic ist.
Zitat:
Hier werden die Favoriten, Gewerke und Räume aus der Homematic-CCU aufgelistet.
Gibt es dennoch eine Möglichkeit verschiedene Datenpunkte zu einem Trigger zusammen zu fassen? Oder ist dies gar nicht möglich? `
Diese Angabe ist schon historisch
inzwischen gibt es auch weitere Aufzählungen und du kannst auch selber Aufzählungen erstellen.
Ich glaube bei OCC war das mal nötig.
Gruß
Rainer
-
Hi,
Danke deine Erklärungen, aber genau hier liegt meine Frage:…
@Jey Cee:Was bei mir noch offen ist, ist in on() auf die Änderung zu reagieren das will einfach nicht klappen. `