NEWS
[Erledigt] Skript Lichtzählen [..] angezeigt
-
@CruziX sagte
@maloross Ja, bin da auch noch Anfänger, daher ist es schwierig wenn man nicht selbst rumprobieren kann
Kannst du mal mit einem log prüfen ob aus raumArray[0] das korrekte ausgelesen wird?Nein kommt ein Fehler.
von meiner Logik her ist es doch so, dass Gerätename und Raumname innerhalb der Schleife in gleicher Weise abgerufen werden sollten
var devicename = name.replace(".state", ""); var raumname = getObject(id, "rooms"); if (status) { ++anzahlLichterAn; textLichterAn.push(devicename); textRaum.push(raumname); } ++anzahlLichter; });
Wobei die Variable devicename die bereinigte ID des Gerätes enthält.
Das Array hat für diese beiden Variablen folgenden Befehle:textLichterAn.sort(); textRaum.sort(); setState(pfad0 + 'Text', textLichterAn.join('<br>')); setState(pfad0 + 'Raum', textRaum.join(', '));
Aber der Raum wird nicht angezeigt., im Log steht: raum: [object Object]
-
@maloross sagte:
var raumname = getObject(id, "rooms");
Richtig:
var raumname = getObject(id, "rooms").enumNames[0];
-
@paul53 hat auch keinen Erfolg....es gab Ende 2017 auf Github diesbezüglich ein Fehlermeldung, allerdings ohne konkreten Lösungsansatz.
-
@maloross Ist ja auch so ziemlich das gleiche wie mein Code Schnipsel
-
@maloross sagte:
hat auch keinen Erfolg..
Wie hast Du die Räume zugeordnet ? Welche Javascript-Version ?
-
-
@paul53
Ich hab die 4.3.4 am Laufen und bekomme es so auch nicht raus leider. Logge ich den Array enumNames, zeigt er mit zwar das JSON-Object darin an, wenn ich aber versuche mit .de auf den deutschen Namen zuzugreifen, sagt er das die Proberty nicht vorhanden wäre. Seltsam... -
@Tictactoo sagte:
zeigt er mit zwar das JSON-Object darin an, wenn ich aber versuche mit .de auf den deutschen Namen zuzugreifen, sagt er das die Proberty nicht vorhanden wäre.
Du hast getObject so verwendet ?
getObject(id, "rooms").enumNames[0].de;
-
@paul53 Ja, hab ich. Wie gesagt, wenn ich "getObject(id, "rooms").enumNames[0]" logge, zeigt er mir auch den Inhalt.
-
-
javascript.0 (17215) script.js.Rhasspy.Slots: [{'en':'bath_room','de':'Bad'}]
Nehm ich die Variable und setzen "[0].de" dahinter bekomme ich nur das:
javascript.0 2020-01-30 15:44:21.547 error (17215) at Script.runInContext (vm.js:133:20) javascript.0 2020-01-30 15:44:21.546 error (17215) at script.js.Rhasspy.Slots:9:84 javascript.0 2020-01-30 15:44:21.546 error (17215) TypeError: Cannot read property 'de' of undefined javascript.0 2020-01-30 15:44:21.546 error (17215) ^ javascript.0 2020-01-30 15:44:21.545 error (17215) var test = getObject(devices[i].replace('.available',''), 'rooms').enumNames[0].de; javascript.0 2020-01-30 15:44:21.545 error (17215) script.js.Rhasspy.Slots: script.js.Rhasspy.Slots:9
Hatte es auch schon mit array['de'] versucht, aber das schluckt er auch net...
-
@Tictactoo sagte:
bekomme ich nur das:
Sehr eigenartig. Was ergibt im Log?
var test = getObject(devices[i].replace('.available',''), 'rooms').enumNames[0];
-
Schomal iobroker bzw Script Engine neugestartet?
-
@paul53 Hatte es vorher oben reingeschrieben, vielleicht hatte sich das mit deiner Antwort überschnitten:
javascript.0 2020-01-30 15:44:21.547 error (17215) at Script.runInContext (vm.js:133:20) javascript.0 2020-01-30 15:44:21.546 error (17215) at script.js.Rhasspy.Slots:9:84 javascript.0 2020-01-30 15:44:21.546 error (17215) TypeError: Cannot read property 'de' of undefined javascript.0 2020-01-30 15:44:21.546 error (17215) ^ javascript.0 2020-01-30 15:44:21.545 error (17215) var test = getObject(devices[i].replace('.available',''), 'rooms').enumNames[0].de; javascript.0 2020-01-30 15:44:21.545 error (17215) script.js.Rhasspy.Slots: script.js.Rhasspy.Slots:9
-
Gibt es schon eine Lösung für diesen Fehler?
// auch mit getObject(ab, 'rooms').enumNames[0].de durchprobiert var test = getObject(ab.replace('.available',''), 'rooms').enumNames[0].de;// Fehler var test = getObject(ab.replace('.available',''), 'rooms').enumNames[0]; log(test.de); // Fehler var test = getObject(ab.replace('.available',''), 'rooms').enumNames[0]; test = JSON.stringify(test); test = JSON.parse(test); // Fehler
Was ich mir nicht erklären kann ist folgendes:
var test = getObject(ab.replace('.available',''), 'rooms').enumNames[0]; if (test === undefined) log('yep'); let t = JSON.stringify(test); //let x = JSON.parse(t);
test ist nicht undefiniert und das Script läuft durch.
Aktiviere ich die 4 Zeile, ist test in Zeile 2 undefiniert. -
@ticaki sagte:
test = JSON.parse(test); // Fehler
Es ist kein JSON.
@ticaki sagte in [Erledigt] Skript Lichtzählen [..] angezeigt:
var test = getObject(ab.replace('.available',''), 'rooms').enumNames[0].de;// Fehler
Wenn die Räume schon in einer früheren Version angelegt wurden, gibt es das Sprach-Objekt nicht. Bei selbst angelegten Räumen fehlt es wohl ebenso.
-
@paul53
Danke für deine AntwortIch war gestern abend zu müde, mein Fehler war, dass das erste Element in der Auflistung kein enumNames hatte.