NEWS
Datenpunktlisten zusammenfassen
-
Hallo
Ich habe
const EspDevice = "483FDA35C141"; var Sensors = $("esphome.0." + EspDevice + ".Sensor.*.state"); var Switches = $("esphome.0." + EspDevice + ".Switch.*.state");
alle Sensoren und Schalter in 2 Arrays(?)
Wie kann ich die zusammenfassen?var Statess = [Sensors, Switches];
geht nicht.
-
@wolfgangfb sagte in Datenpunktlisten zusammenfassen:
in 2 Arrays(?)
Das sind keine Arrays, sondern Objekte. Mit each-Schleifen kann man sie in einem Array zusammenfassen:
const EspDevice = "483FDA35C141"; var Sensors = $("esphome.0." + EspDevice + ".Sensor.*.state"); var Switches = $("esphome.0." + EspDevice + ".Switch.*.state"); const ids = []; Sensors.each(function(id, i) { ids.push(id); }); Switches.each(function(id, i) { ids.push(id); });
-
Danke, so ganz verstehe ich den Unterschied aber noch nicht.
const Sensor = $("esphome.0.483FDA35C141.Sensor.*.state"); const ids = []; Sensor.each(function(id, i) { ids.push(id); }); console.log("Sensor:") console.log(Sensor); console.log("ids: ") console.log(ids); for (var i=0; i<Sensor.length;i++){ var obj = getObject(Sensor[i]); console.log(obj); console.log("Sensor[" + i + "]: "); console.log(Sensor[i]); console.log(getState(Sensor[i]).val) var obj = getObject(ids[i]); console.log(obj); console.log("ids[" + i + "]: "); console.log(ids[i]); console.log(getState(ids[i]).val) }
liefert
12:07:33.283 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: Sensor: 12:07:33.283 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: {'0':'esphome.0.483FDA35C141.Sensor.2992319204.state','1':'esphome.0.483FDA35C141.Sensor.4035668188.state','length':2} 12:07:33.284 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: ids: 12:07:33.284 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: ['esphome.0.483FDA35C141.Sensor.2992319204.state','esphome.0.483FDA35C141.Sensor.4035668188.state'] 12:07:33.284 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: {'type':'state','common':{'modify':'','name':'State of D7.humidity Temperatur 0 humidity','type':'number','role':'state','read':true,'unit':'%','write':false},'from':'system.adapter.esphome.0','user':'system.user.admin','ts':1656065642107,'_id':'esphome.0.483FDA35C141.Sensor.2992319204.state','acl':{'object':1636,'state':1636,'owner':'system.user.admin','ownerGroup':'system.group.administrator'}} 12:07:33.285 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: Sensor[0]: 12:07:33.285 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: esphome.0.483FDA35C141.Sensor.2992319204.state 12:07:33.285 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: 63 12:07:33.286 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: {'type':'state','common':{'modify':'','name':'State of D7.humidity Temperatur 0 humidity','type':'number','role':'state','read':true,'unit':'%','write':false},'from':'system.adapter.esphome.0','user':'system.user.admin','ts':1656065642107,'_id':'esphome.0.483FDA35C141.Sensor.2992319204.state','acl':{'object':1636,'state':1636,'owner':'system.user.admin','ownerGroup':'system.group.administrator'}} 12:07:33.286 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: ids[0]: 12:07:33.286 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: esphome.0.483FDA35C141.Sensor.2992319204.state 12:07:33.287 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: 63 12:07:33.287 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: {'type':'state','common':{'modify':'','name':'State of D7.temperature Temperatur 0 temperature','type':'number','role':'state','read':true,'unit':'°C','write':false},'from':'system.adapter.esphome.0','user':'system.user.admin','ts':1656065642107,'_id':'esphome.0.483FDA35C141.Sensor.4035668188.state','acl':{'object':1636,'state':1636,'owner':'system.user.admin','ownerGroup':'system.group.administrator'}} 12:07:33.287 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: Sensor[1]: 12:07:33.288 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: esphome.0.483FDA35C141.Sensor.4035668188.state 12:07:33.288 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: 20.4 12:07:33.288 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: {'type':'state','common':{'modify':'','name':'State of D7.temperature Temperatur 0 temperature','type':'number','role':'state','read':true,'unit':'°C','write':false},'from':'system.adapter.esphome.0','user':'system.user.admin','ts':1656065642107,'_id':'esphome.0.483FDA35C141.Sensor.4035668188.state','acl':{'object':1636,'state':1636,'owner':'system.user.admin','ownerGroup':'system.group.administrator'}} 12:07:33.289 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: ids[1]: 12:07:33.289 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: esphome.0.483FDA35C141.Sensor.4035668188.state 12:07:33.290 info javascript.0 (26728) script.js.Programmieren.Objekte.DollarArray: 20.4
Ist Sensors quasi ein Array von Objekten während ids "nur" ein Array von Objektnamen ist?
Kann man Sensors und Switches echt zusammenfassen oder geht das nicht, weil die Objekte ja unterschiedliche Eigenschaften haben (können)? -
@wolfgangfb sagte: Ist Sensors quasi ein Array von Objekten während ids "nur" ein Array von Objektnamen ist?
Sensors ist ein Objekt mit den Attributen 0, 1, ... , die IDs enthalten und dann am Ende length.
ids ist ein Array von Datenpunkt-IDs und kann die IDs von Sensors und Switches enthalten.