NEWS
Objekte nach Wert durchsuchen
-
hallo zusammen,
ich stehe grad schlauch.
Ich habe einen Adapter von dem ich alles gelistet haben m
ö
chte was einen bestimmten Wert hat.Beispiel:
im Adapter weatherunderground.0
–
> alles was den Wert '80' hat.Leider klappt nichts.
-
Hi,
Willst du einen Adapter schreiben?
Falls nicht, kannst du im JavaScript Adapter folgenden Text probiere
…
$("[id=weatherunderground.0.*]").each(function (id) { if(getState(id).val === '80') { ....Mache was....; } }) -
Willst du einen Adapter schreiben? ` ja soll f
ü
rn nen Adapter sein. Will mich mal dran probieren.Der l
ä
uft auch schon mal im Prinzip. Das Ding legt aber so viele Objekte an, die sp
ä
ter nicht genutzt werden, dass ich da noch ein "clean" machen will.Mal schauen was mir dann noch so einf
ä
llt.Was ist UseCase? ` im Prinzip passiert Folgendes: Adapter verbindet sich mit Server, fragt
ü
ber einen Befehl s
ä
mtlich m
ö
gliche Zust
ä
nde ab und legt Objekte an. Wenn alles angelegt ist, werden die Sachen bef
ü
llt.Da hier ganz viele bei sind die ein Err oder ne ewige "0" erzeugen will ich die l
ö
schen.Das script selbst ist nicht von mir.
Ich finde es zum "Lernen" einfacher, ein funktionierendes Script in einen Adapter zu quetschen.
Achso, nach lesen im Forum bin ich auf den hm, ping oder Sonos-Adapter gekommen, da hier wohl
ä
hnlich gearbeitet wird. Habs mir angeschaut. und was soll ich sagen, "Ein Schwein vorm Uhrwerk" macht nen besseren Eindruck.
ich muss noch vieeeeel lernen. -
Der l
ä
uft auch schon mal im Prinzip. Das Ding legt aber so viele Objekte an, die sp
ä
ter nicht genutzt werden, dass ich da noch ein "clean" machen will.Mal schauen was mir dann noch so einf
ä
llt. `
Meinst du Objekte bzw States die man in der Admin Oberfl
ä
che sieht? Oder meinst du Objekte, die nur im Adapter sind.Quasi so
…
var meinobjekt ={}; -
Der l
ä
uft auch schon mal im Prinzip. Das Ding legt aber so viele Objekte an, die sp
ä
ter nicht genutzt werden, dass ich da noch ein "clean" machen will.Mal schauen was mir dann noch so einf
ä
llt. `
Meinst du Objekte bzw States die man in der Admin Oberfl
ä
che sieht? Oder meinst du Objekte, die nur im Adapter sind.Quasi so
…
var meinobjekt ={}; ```` `Ich meine die Objekte dir man im "Objekt"-Reiter sieht.
Quasi adapter.0.wo.was.wert
Gesendet von meinem SM-G925F mit Tapatalk
-
Okay,
An dem Punkt war ich quasi vor einigen schlaflosen N
ä
chten auch :shock: :lol:Kennst du den Thread schon?
-
Okay,
An dem Punkt war ich quasi vor einigen schlaflosen N
ä
chten auch :shock: [emoji38]Kennst du den Thread schon?
http://forum.iobroker.net/viewtopic.php?f=24&t=4355 `
Jupp. Dar
ü
ber bin ich zu ping, hm und sonos gekommen. Und dann kam das schwein und das Uhrwerk ins Spiel.Gesendet von meinem SM-G925F mit Tapatalk
-
Okay,
An dem Punkt war ich quasi vor einigen schlaflosen N
ä
chten auch :shock: [emoji38]Kennst du den Thread schon?
http://forum.iobroker.net/viewtopic.php?f=24&t=4355 `
Jupp. Dar
ü
ber bin ich zu ping, hm und sonos gekommen. Und dann kam das schwein und das Uhrwerk ins Spiel.Gesendet von meinem SM-G925F mit Tapatalk `
Wenn ich wieder am Rechner bin versuche ich es zu erkl
ä
ren
…
.. -
Willst du einen Adapter schreiben? ` ja soll f
ü
rn nen Adapter sein. Will mich mal dran probieren.Der l
ä
uft auch schon mal im Prinzip. Das Ding legt aber so viele Objekte an, die sp
ä
ter nicht genutzt werden, dass ich da noch ein "clean" machen will.Mal schauen was mir dann noch so einf
ä
llt.Was ist UseCase? ` im Prinzip passiert Folgendes: Adapter verbindet sich mit Server, fragt
ü
ber einen Befehl s
ä
mtlich m
ö
gliche Zust
ä
nde ab und legt Objekte an. Wenn alles angelegt ist, werden die Sachen bef
ü
llt.Da hier ganz viele bei sind die ein Err oder ne ewige "0" erzeugen will ich die l
ö
schen.Das script selbst ist nicht von mir.
Ich finde es zum "Lernen" einfacher, ein funktionierendes Script in einen Adapter zu quetschen.
Achso, nach lesen im Forum bin ich auf den hm, ping oder Sonos-Adapter gekommen, da hier wohl
ä
hnlich gearbeitet wird. Habs mir angeschaut. und was soll ich sagen, "Ein Schwein vorm Uhrwerk" macht nen besseren Eindruck.
ich muss noch vieeeeel lernen. `// Delete all states from array (one after each other) function deleteStates(states, callback) { // If array is empty => finished if (!states || !states.length) { if (callback) callback(); return; } // Get one ID var id = states.pop(); // Delete Object adapter.delObject(id, function (err) { // Delete state adapter.delState(id, function (err) { // Go to next ID setTimeout(deleteStates, 0, states, callback); }); }); } // Get all IDs of this adapter adapter.getStates('*', function (err, states) { var toDelete = []; // collect all states that are empty to array for (var id in states) { // test value and store ID if value is empty if (!states[id].val) toDelete.push(id); } // gently delete all empty states deleteStates(toDelete, function() { adapter.log.info('delete finished'); }); });Nicht gepr
ü
ft. -
Dank dir. Muss mal weiter testen. So richtig komm ich noch nicht klar.
Gesendet von meinem SM-G925F mit Tapatalk
-
Hallo Bluefox, habe mal nen bissel gespielt.
mir ist glaube ich immer noch nicht klar was hier genau passieren soll.
ist es richtig wenn ich sage:
der untere Teil ab "getStates" holt alle "leeren" Statis ab und packt sie in ein Array. Danach die Funktion "deleteState" aufrufen und l
ö
schen bis das Array leer ist. Stimmt das in etwa?ist es richtig, dass hier die "leeren Statis" vorgegeben werden?
`var toDelete = [];[/code]` kann ich dafür auch folgendes schreiben? `~~[code]~~var toDelete = 'ERR: no signal';[/code]`suche alles was den Wert "ERR: no signal" enthält und lösche? beim Probieren in der org.-Fassung bekomme ich eine Fehlermeldung und der Adapter startet immer von vorn: `~~[code]~~ebus.0 2016-12-20 20:55:38.648 debug cleaned everything up... ebus.0 2016-12-20 20:55:38.643 error at Decoder. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15) ebus.0 2016-12-20 20:55:38.643 error at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:332:8) ebus.0 2016-12-20 20:55:38.643 error at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) ebus.0 2016-12-20 20:55:38.643 error at Manager. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15) ebus.0 2016-12-20 20:55:38.643 error at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:236:12) ebus.0 2016-12-20 20:55:38.643 error at Socket.onack (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:312:9) ebus.0 2016-12-20 20:55:38.643 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:150:27) ebus.0 2016-12-20 20:55:38.643 error at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2770:61 ebus.0 2016-12-20 20:55:38.643 error at /opt/iobroker/node_modules/iobroker.ebus/main.js:278:5 ebus.0 2016-12-20 20:55:38.643 error at deleteStates (/opt/iobroker/node_modules/iobroker.ebus/main.js:255:22) ebus.0 2016-12-20 20:55:38.643 error TypeError: states.pop is not a function ebus.0 2016-12-20 20:55:38.617 error uncaught exception: states.pop is not a function ebus.0 2016-12-20 20:55:38.458 debug Sending: read -c scan.08 id supplier[/code]` -
Ich sehe dein Kode nicht und auf dem git ist nicht das was du testest. `
Das stimmt wohl
…
@Bluefox:var toDelete = 'ERR: no signal';Ist nat
ü
rlich falsch. `
Ich gehe davon aus das du bluefox seinen gesendeten Code, mit folgenden Abschnitt meinst
…
.if (!states[id].val) toDelete.push(id);der sollte ggf f
ü
r dich wie folgt ge
ä
ndert werden
…
if (!states[id].val || (states[id].val === 'ERR: no signal')) toDelete.push(id);
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
