NEWS
Wie beim Selector keine EIntrag abfangen?
-
Hallo, ich habe folgendes Skript:
Ändert sich der Feuchtigkeitswert eines Raumsensors, so wird der Raum geholt und eine Regelfunktion übergeben.
Diese soll dann nachschauen, ob anhand des Soll-Istwert Vergleichs nachgeregelt werden soll (ist ein Zweipunktregler).
Nun habe ich auch im Badezimmer einen Feuchtesensor (Script reagiert auf alle Sensoren).
Aber dafür gib es keinen Sollwert.Also führt dies hier:
const sollwert = $(`state(rooms=${idRoom})[role=${roleFeuchtesollwert}]`).getState();
zu diesem Fehler:
script.js.common.MobileMessungen.Raumfeuchteregelung: getState has been called with id of type "undefined" but expects a string
kann ich nicht irgendwie abfangen, ob die Selectorfunktion etwas zurückgegeben hat?
Edit?
Erst alles mit der .toArray() funktion prüfen?Habe es jetzt so gelöst:
// Zuerst ids als Array holen und wenn nichts zurück kommt, dann funktion mit return beenden. // (Kein Wert für den Raum vorhanden) const sollwertArray = $(`state(rooms=${idRoom})[role=${roleFeuchtesollwert}]`).toArray(); if(sollwertArray.length === 0){ return; } const sollwert = getState(sollwertArray[0]).val;
Oder hat jemand eine bessere Idee?
-
keine Ahnung ob das "besser" ist oder obs geht. Mehr Auswahl schadet aber nicht.
let sollwert = undefined; try { sollwert = $(`state(rooms=${idRoom})[role=${roleFeuchtesollwert}]`).getState(); } catch { // nix }
-
@ticaki Danke, habe es mal so eingebaut.
Ist kürzer und übersichtlicher.
Wäre trotzdem schön, wenn man irgendwie über die Selektorfunktion herausfinden könnte, dass nichts verfügbar ist.
Ich schreibe am Besten mal ein Issue -
@ben1983 sagte: über die Selektorfunktion herausfinden könnte, dass nichts verfügbar ist.
const ids = $(`state(rooms=${idRoom})[role=${roleFeuchtesollwert}]`); if(ids.length) {}
Der Selektor enthält das Attribut "length".
-
@paul53 cool, ohne eine Funktion dahinter? Ok
-
@ben1983
Ich benutze nie funktionen dahinter immerfor (let i = 0 ...
das toArray() wird aber jetzt immer hinzugefügt - dann gehtfor (const x of xxx)