NEWS
[gelöst]script fehler
-
Du hast hoffentlich das Skript nicht unter der Gruppe global angelegt ? Wenn ja, dann kopiere den Inhalt in ein Skript unter der Gruppe common und lösche das Skript unter global.
-
Ja habe ich gemacht, was könnte es noch sein?
Grüße
-
was könnte es noch sein? `
Fehler sind keine zu sehen, falls die Datenpunkt-IDs korrekt sind (Groß-/Kleinschreibung beachten !). Um zu sehen, ob getriggert wird, bau mal ein Log ein:on(idAktor, function (data) { log('Aktorwert: ' + data.state.val); ...
Der Aktorwert muss verändert werden, damit etwas passiert !
-
Hallo Paul,
es lag daran das sich der Wert nicht geändert hatte, ich habe mal einen Dimmer als Datenpunkt genommen und schon kamen
auch Werte im LOG an. :roll: Gibt es eine Möglichkeit den Wert beim Starten des scriptes einmal abzufragen?
Gruß Jan
-
Gibt es eine Möglichkeit den Wert beim Starten des scriptes einmal abzufragen? `
Ja. Damit man die Abfrage nicht zweimal machen muss, packt man diese in eine Funktion.var idFarbe = "javascript.0.VIS.Jalousie"; var idAktor = "hm-rpc.0.NEQ1012485.1.FILLING_LEVEL"; createState(idFarbe, 'white', { def: 'white', type: 'string', role: 'text' }); function toVis(level) { var farbe = 'green'; if(level > 0) farbe = 'orange'; if(level > 50) farbe = 'red'; setState(idFarbe, farbe); } toVis(getState(idAktor).val); // Skriptstart on(idAktor, function(data) { toVis(data.state.val); });
-
das will jetzt noch nicht so richtig funktionieren, beim starten bleibt das Feld weis obwohl ich 33 als Wert habe.
Da muss ich heute Abend nochmal danach schauen…
Gruß Jan
-
Hallo Paul, ich habe Fehlermeldungen beim ausführen des Scriptes?
siehe Bild
5664_iob.jpg -
Hallo Paul, ich habe Fehlermeldungen beim ausführen des Scriptes? `
Das kann ich nicht nachvollziehen. Habe es gerade selbst getestet ohne Fehler.Es wird u.a. die Zeile 11, Position 27 angemeckert. Die Position gibt es in Zeile 11 nicht. Hat sich da etwas eingeschlichen ? Zeile 11:
var farbe = 'green';
Oder stimmt die ID zu idAktor nicht (Zeile 2) ? Das würde die Fehlermeldung zu Zeile 19 erklären.
-
Ja Zeile 11 hatte ich dein LOG eingebaut um zu sehen was passiert…
log('Aktorwert: ' + data.state.val);
Hab die Zeile mal raus genommen, jetzt sind ide Fehler weg aber beim Starten wird der hintergrund auf ROT gesetzt obwohl 32 im Datenpunkt steht. Da sollte er doch eigentlich Orange sein?
Gruß Jan
-
log('Aktorwert: ' + data.state.val); `
Richtig wäre an der Stelle gewesen:log('Aktorwert: ' + level);
beim Starten wird der hintergrund auf ROT gesetzt obwohl 32 im Datenpunkt steht. `
Poste mal Dein komplettes Skript in Code tags, denn sonst kann der Fehler nicht lokalisiert werden.Bei mir funktioniert es mit den richtigen Farbwerten.
-
anbei, ich habe eigentlich nichts geändert außer den Namen in der Kopf def.
var idFarbe = "javascript.0.VIS.hgfarbe"; var idAktor = "hm-rpc.0.NEQ1012485.1.FILLING_LEVEL"; createState(idFarbe, 'white', { def: 'white', type: 'string', role: 'text' }); function toVis(level) { var farbe = 'red'; if(level > 30) farbe = 'orange'; if(level > 60) farbe = 'green'; setState(idFarbe, farbe); } toVis(getState(idAktor).val); // Skriptstart on(idAktor, function(data) { toVis(data.state.val); });
-
Habe mir das gerade nach ioBroker kopiert: Bei mir liefert der Wert 32 die Farbe 'orange'.
var idFarbe = "javascript.1.Test.String"/*Test.String*/; var idAktor = "javascript.1.Test.Analog"/*Test.Analog*/; function toVis(level) { var farbe = 'red'; if(level > 30) farbe = 'orange'; if(level > 60) farbe = 'green'; setState(idFarbe, farbe); } toVis(getState(idAktor).val); // Skriptstart on(idAktor, function(data) { toVis(data.state.val); });
-
Hm…tja was nun... ich habe mal beim Aufruf "background" den Namen vom Script eingetragen (hintergrundfarbe) hier kommt aber auch rot raus. vielleicht liegt es ja an dem Datenpunkt, ich werde nochmal den Dimmer zum testen eintragen.
Sonst habe ich jetzt keine weitere Idee... :shock:
Gruß Jan
-
Wenn ich den Datenpunkt vom Dimmer nehme funktioniert es, waran kann das liegen?
-
waran kann das liegen? `
Vielleicht liefert der Datenpunkt keinen Wert vom Typ Zahl (number). Um das zu testen, füge mal ein Log ein.function toVis(level) { log('Level: ' + level + ' ' + typeof level); var farbe = 'red'; if(level > 30) farbe = 'orange'; if(level > 60) farbe = 'green'; log('Farbe: ' + farbe); setState(idFarbe, farbe); }
-
siehe LOG anbei…
5664_iob.jpg -
> getState "hm-rpc.0.NEQ.." not found
Der Datenpunkt existiert nicht oder der Befehl ist falsch geschrieben.Du hast hoffentlich nur die Funktion um die Logs ergänzt ?
EDIT: Das Skript mit zusätzlichem Log:
var idFarbe = "javascript.0.VIS.hgfarbe"; var idAktor = "hm-rpc.0.NEQ1012485.1.FILLING_LEVEL"; createState(idFarbe, 'white', { def: 'white', type: 'string', role: 'text' }); function toVis(level) { log('Level: ' + level + ' ' + typeof level); var farbe = 'red'; if(level > 30) farbe = 'orange'; if(level > 60) farbe = 'green'; log('Farbe: ' + farbe); setState(idFarbe, farbe); } toVis(getState(idAktor).val); // Skriptstart on(idAktor, function(data) { toVis(data.state.val); });
-
ja nur die eine Zeile….
var idFarbe = "javascript.0.VIS.hgfarbe"; var idAktor = "hm-rpc.0.NEQ1012485.1.FILLING_LEVEL"; /*var idAktor = "hm-rpc.0.NEQ1101537.1.LEVEL";*/ createState(idFarbe, 'white', { def: 'white', type: 'string', role: 'text' }); function toVis(level) { log('Level: ' + level + ' ' + typeof level); var farbe = 'red'; if(level > 30) farbe = 'orange'; if(level > 60) farbe = 'green'; setState(idFarbe, farbe); } toVis(getState(idAktor).val); // Skriptstart on(idAktor, function(data) { toVis(data.state.val); });
-
"not found" bedeutet, dass der Datenpunkt mit der ID "hm-rpc.0.NEQ1012485.1.FILLING_LEVEL" nicht existiert (nicht gefunden wurde).
-
Ich kann den Punkt doch sehen wenn ich ihn zum Beispiel mit ID hinzufüge, da wird mir sogar der aktuelle Wert in dieser Auswahl angezeigt.
Gesendet von iPhone mit Tapatalk