So richtig weiter gekommen bin ich mit dem hier nicht. Habe es nicht geschafft es zu realisieren. :(
@Adnim:
Hallo Andre,
Sehe da jetzt mehrere Funktionen in deinem Post
-einmal auswerten ob lampen an sind
-einmal alle Steuern
Steuern am einfachsten per Blockly.
Auswerten würde ich mal versuchen mit dem DeviceCounter hier aus dem Forum der kann auch gleich alle anderen Zustände der Geräte Zählen und anzeigen (mit Liste):
(Ursprünglich aus dem Forum, hier die für mich eingestellte Version):
//Add device rules
addDeviceCounter("lowbat", $('channel[state.id=*LOWBAT]'), true);
addDeviceCounter("lowbat", $('channel[state.id=*lowbat]'), true);
addDeviceCounter("sticky_unreach", $('channel[state.id=*.STICKY_UNREACH]'), true);
addDeviceCounter("unreach", $('channel[state.id=*.UNREACH]'), true);
addDeviceCounter("config_pending", $('channel[state.id=*.CONFIG_PENDING]'), true);
addDeviceCounter("Motion", $('channel[state.id=*.MOTION]'), true);
addDeviceCounter("DutyCycle", $('channel[state.id=*.DUTYCYCLE]'), true);
addDeviceCounter("Spannungsüberwachung", $('channel[state.id=*.VOLTAGE]'), function(state){return state<200;});
addDeviceCounter("Auskühlschutz", $('channel[state.id=*.ACTUAL_TEMPERATURE]'), function(state){return state<13;});
addDeviceCounter("ERROR", $('channel[state.id=*.ERROR*]'), function(state){return state>0;});
addDeviceCounter("Heizbedarf", $('channel[state.id=*.VALVE_STATE]'), function(state){return state>45;});
addDeviceCounter("Alive", $('channel[state.id=*alive]'), false);
addDeviceCounter("CONNECTED", $('channel[state.id=*.connected]'), false);
addDeviceCounter("open_shutters", $('channel{TYPE=BLIND}[state.id=*.LEVEL]'), function(state){return state>0;});
addDeviceCounter("open_windows", $('channel{TYPE=SHUTTER_CONTACT}[state.id=*.STATE]'), true);
/******************************************
* Code - do not change anything bellow this line *
******************************************/
function addDeviceCounter(name, selector, val_to_count) {
//Total amount of devices found by selector
var state_total = 'deviceCounter.' + name + '.total';
createState(state_total, 0);
//List of devices that match condition
var state_list = 'deviceCounter.' + name + '.list';
createState(state_list, "");
//Number of devices that match condition
var state_counter = 'deviceCounter.' + name + '.counter';
createState(state_counter, 0);
function countDevs(obj) {
var d_count = 0;
var d_list = [];
selector.each(function (id, i) {
var status = getState(id).val;
var obj = getObject(id);
if ((typeof val_to_count === 'function' && val_to_count(status)) ||
(typeof val_to_count === 'boolean' && val_to_count == status)) {
//Get parent object
var parentChannelId = id.slice(id.lastIndexOf("."));
var parentDevicelId = id.split(".").slice(0,-2).join(".");
var deviceObject = getObject(parentDevicelId);
//remember device name
d_list.push(deviceObject.common.name);
}
++d_count; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
});
//if ("state_counter" > 0) {event(name + "(" + d_count + "): " + d_list);
//}
setState(state_list, d_list.join('
'));
setState(state_counter, d_list.length);
setState(state_total, d_count);
}
//Re-evaluate when a device status changes
selector.on(function(obj) { // bei Zustandänderung *. LOWBAT in allen Gewerken
countDevs(obj);
});
//Re-evaluate each hour
schedule("*/60 * * * *", countDevs);
//Evaluate for the first time
countDevs();
}
Frohen 1 Advent! `