NEWS
Alle Lampen aus
-
Hallo alle zusammen,
ich bin gerade dabei mir was zu basteln im Bereich der Lampensteuerung.
Geplant ist das ich einen Button in meiner VIS habe der dort dann alle Lampen ausschaltet.
Wieso möchte ich das haben? Angedacht habe ich das, weil ich ein Tablet am Wohnungseingang habe und dort kontrollieren möchte ob alle Fenster geschlossen sind oder nicht und falls noch irgendwo ein Lampe oder ein Radio an ist, dies dann gleich am Tablet ausschalten möchte.
Wie kann ich da anfangen?
Habe bis jetzt zwei Gruppen/Räume welche ich steuere. Demnächst mehr.
Die Lampen an sich kann ich schalten oder das Tablet.
Soll einfach ein Button sein welcher ROT leuchtet wenn irgendwo eine Lampe an ist und GRÜN wenn alle aus sind.
Oder das ganze sogar mit einenn TEXT mir anzeigt.
Ich bin in Skripten schreiben ganz neu. Habe da null Ahnung.
besten Dank an euch schon mal und einen schönen ersten Advent gewünscht.
-
Ausschalten würde leicht gehen mit blockly, du machst dir ein object und wen das geschaltet wird führe Script aus und darin alle Lampen aus (also steuere)
Wen du haben möchtest wen irgendeine Lampe an las sehen in vis geht das nur mit Javascript.
Darin alle Lampen auslesen wenn irgendeines ein Status auf true
Sent from my iPhone using Tapatalk
-
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!
-
So richtig weiter gekommen bin ich mit dem hier nicht. Habe es nicht geschafft es zu realisieren.
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! `