NEWS
On()-Funktion - Reagieren auf _SHORT oder _LONG
-
@Jey Cee:Ich hab auch eine oder verknüpfung in on() und das geht. `
Wirklich ? Wie sieht die funktionierende on-Zeile aus ?Ansonsten zwei mal on() oder RegExp verwenden. `
Das würde ich auch gerne wissen;).
Ich habe jetzt natürlich 2 Mal on() verwendet, nur dachte ich, es könnte auch einfacher gtehen.
Was ist RegExp?
-
on({
id: "harmony.0.Wohnzimmer-Hub.activities.Tv_Schauen"/activity:Tv_Schauen/,
val: 0
}
||
{
id: "harmony.0.Wohnzimmer-Hub.hubConnected"/Wohnzimmer-Hub:hubConnected/,
val: false
}
9527_log_1.11..pdf
9527_log_2.11..pdf
9527_log_3.11..pdf
9527_log_4.11..pdf
9527_log_30.10..pdf
9527_log29.10..pdf -
@Jey Cee:on({
id: "harmony.0.Wohnzimmer-Hub.activities.Tv_Schauen"/activity:Tv_Schauen/,
val: 0
}
||
{
id: "harmony.0.Wohnzimmer-Hub.hubConnected"/Wohnzimmer-Hub:hubConnected/,
val: false
} `
Na ja, das entspricht ja genau dem, was ich eingehend geschrieben habe.
-
Was ist RegExp? `
Regulärer Ausdruck, ist in der readme des Javascript-Adapters aufgeführt.Habe selbst damit keine Erfahrung, deshalb ohne Gewähr auf Richtigkeit:
on({id: /^hm-rpc\.1\.JEQ1234567\.7\.PRESS_.*$/, val:true}, function() { ... });
-
on({id: /^hm-rpc.1.JEQ1234567.7.PRESS_.*$/, val:true}, function() {
…
});
Das hat bei mir eine Fehlermeldung gebracht:
error script.js.Klingel: TypeError: Object /^hm-rpc\.1\.JEQ0713213\.7\.PRESS_*$/ has no method 'split'
-
Das hat bei mir eine Fehlermeldung gebracht: `
Hast Du es mal mit dem Punkt vor dem Sternchen versucht ? -
Hast Du es mal mit dem Punkt vor dem Sternchen versucht ? `
Ich hatte es exakt von dir kopiert.Keine Ahnung, warum in der Fehlermeldung der "." fehlt.
-
Ich hatte es exakt von dir kopiert. `
Sorry. Da warst Du mit dem Kopieren schneller als ich mit dem Einfügen des Punktes vor dem Sternchen.Funktioniert es mit dem zusätzlichen Punkt ?
-
…funktioniert so nicht.
Gleiche Fehlermeldung.
-
on({id: /^hm-rpc.1.JEQ1234567.7.PRESS_.*$/, val:true}, function() {
…
});
Das hat bei mir eine Fehlermeldung gebracht:
error script.js.Klingel: TypeError: Object /^hm-rpc\.1\.JEQ0713213\.7\.PRESS_*$/ has no method 'split' ```` ` `
Diese Fehler werde ich heute fixen.
Ich kann aber anbieten:
function klingeln() { // mache irgendwas log('Klingeklingelin'); } on({id: hm-rpc.1.JEQ1234567.7.PRESS_SHORT, val: true}, klingeln); on({id: hm-rpc.1.JEQ1234567.7.PRESS_LONG, val: true}, klingeln);
-
Ich kann aber anbieten:
function klingeln() { // mache irgendwas log('Klingeklingelin'); } on({id: hm-rpc.1.JEQ1234567.7.PRESS_SHORT, val: true}, klingeln); on({id: hm-rpc.1.JEQ1234567.7.PRESS_LONG, val: true}, klingeln);
Das gefällt mir sehr gut!!!
Und funktioniert einwandfrei:).
DANKESCHÖN!
-
Das gefällt mir sehr gut!!! `
Das ist die Variante mit 2 mal on().Die verkürzte Schreibweise ohne geschweifte Klammern ist möglich, da nur eine einzelne Anweisung (Funktion: klingeln) ausgeführt werden muss.
http://forum.iobroker.de/viewtopic.php?f=21&t=1305&p=10889&sid=8d66987961ab8b9ec660c280b994fba5&sid=8d66987961ab8b9ec660c280b994fba5#p10889 hatte ich allerdings schon mal die Erfahrung gemacht, dass es verkürzt nicht funktioniert. Das hat sich anscheinend inzwischen geändert !?
-
Das gefällt mir sehr gut!!! `
Das ist die Variante mit 2 mal on().Die verkürzte Schreibweise ohne geschweifte Klammern ist möglich, da nur eine einzelne Anweisung (Funktion: klingeln) ausgeführt werden muss.
http://forum.iobroker.de/viewtopic.php?f=21&t=1305&p=10889&sid=8d66987961ab8b9ec660c280b994fba5&sid=8d66987961ab8b9ec660c280b994fba5#p10889 hatte ich allerdings schon mal die Erfahrung gemacht, dass es verkürzt nicht funktioniert. Das hat sich anscheinend inzwischen geändert !? `
Du hast "status()" geschrieben. Und ich ohne Klammern.Bei dir wolltest du das Ergebnis von Funktion status nutzen (Vermutlich "undefined") und ich habe die Funktionen eingegeben.
BTW: Fehler mit RegExp habe ich gefixt.
-
Also da ich ja für die ID's variablen verwende ist diese Variante für mich sehr gut nachvollziehbar.
Auch wenn es eben 2 on()-Funktionen sind.
Könnte man eigentlich der Funktion klingeln() eine Variable übergeben?
Dann bräuchte ich nur eine Funktion, die in Abhängigkeit dieser Variable entsprechendes ausführt.
Da wir zwei Klingeln haben, habe ich jetzt 4 on()-Funktionen, die hätte ich ja dann auch, und 2 klingeln()-Funktionen.
Bin halt noch nicht soooo Weit mit dem Scripten, aber ich arbeite daran;).
Ist das normal, dass wenn man ein Script zum Editieren aufruft, das Editor-Fenster so weit unten geöffnet wird, dass man immer erst runter Scrollen muss? Ist ein wenig stressig, beim Experimentieren.
Vielleicht mal beim nächsten Update…;)
-
Du hast "status()" geschrieben. Und ich ohne Klammern. `
Und nur ohne Klammern funktioniert der Funktionsaufruf ?Javascript wird mir langsam unheimlich :roll:
-
Also da ich ja für die ID's variablen verwende ist diese Variante für mich sehr gut nachvollziehbar.
Auch wenn es eben 2 on()-Funktionen sind.
Könnte man eigentlich der Funktion klingeln() eine Variable übergeben? `
Ja natürlich:function klingeln(number) { // mache irgendwas log('Klingeklingelin ' + number); } on({id: hm-rpc.1.JEQ1234567.7.PRESS_SHORT, val: true}, function (){klingeln(1);}); on({id: hm-rpc.1.JEQ1234567.7.PRESS_LONG, val: true}, function (){klingeln(2);});
Ist das normal, dass wenn man ein Script zum Editieren aufruft, das Editor-Fenster so weit unten geöffnet wird, dass man immer erst runter Scrollen muss? Ist ein wenig stressig, beim Experimentieren.
Vielleicht mal beim nächsten Update…;) `
Ich gehe davon aus, dass du mit dem Skript weiterarbeiten willst. :lol:
-
-
@AndyUM61: Hast Du die RegExp-Variante nach Update des Javascript-Adapters auf Version 1.1.1 nochmal getestet ? `
Nein, noch nicht.
Ich müsste ja einen Regulären Ausdruck für meine Variablennamen finden, so das natürlich geht.
Muss ich mir erst einmal ausprobieren.
Das mit diesen RegExp fiel mir - ehrlich gesagt - bei anderen Programmiersprachen schon immer sehr schwer;).
Ist ja auch wirklich recht unübersichtlich.
Aber ich werde es mit Sicherheit bei anderen Scripten mal versuchen.
Dankeschön trotzdem für den Tip:)!
-
Ich gehe davon aus, dass du mit dem Skript weiterarbeiten willst. :lol: `
Aber du hast verstanden was ich meine;)?
518_script_editor.gif -
Habe das folgende Script mit der Javascript-Adapter Version 1.1.1 getestet:
on({id: /^hm-rpc\.0\.BidCoS-RF\.1\.PRESS_.*$/, val:true}, function(dp) { log(dp.id); });
und es funktioniert. Log:
` > javascript-0 2015-12-16 21:15:51 info script.js._Multistate-Test: hm-rpc.0.BidCoS-RF.1.PRESS_LONGjavascript-0 2015-12-16 21:15:31 info script.js._Multistate-Test: hm-rpc.0.BidCoS-RF.1.PRESS_SHORT `