@aphofis Klar kein ding.
Hier hast du das Script von Kuddel, was ich für mich angepasst habe damit es mit den Power klappt.
// Liest den Adapter Sonoff.0 aus und erstelle neue Datenpunkte unter javascript
schedule('*/10 * * * * *', function (obj) {
//schedule('* * * * *', function (obj) {
createState('0_userdata.0.tasmota-devices.Anzahl', 0, { name: 'Anzahl', desc: 'Anzahl der Devices', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
var counter = 0;
var status_counter = 0;
var offline_devices = 0;
var cacheSelector = $('[id=sonoff.0.*.INFO.Info2_Hostname]');
counter = counter+1;
cacheSelector.each(function(id, i) {
var devicename = getObject(id).common.name;
var devicename = devicename.replace("INFO ","")
var devicename = devicename.replace(" Info2 ","")
var devicename = devicename.replace(" Hostname","")
var devicenameName=devicename;
//Gerätetatus
var connected = getState("sonoff.0." + devicenameName + ".alive").val;
if(connected == true) {var status = true}
else{var status = false}
//Infos abfragen
if(status == true ) {
var status = "1"
//Version
var version = getState("sonoff.0." + devicenameName + ".INFO" + ".Info1_Version").val;
if(version.indexOf("(sonoff)")){var version = version.replace("(sonoff)", "")}
if(version.indexOf("(tasmota)")){var version = version.replace("(tasmota)", "")}
// Version als INT für den Vergleich
var version_1 = parseInt(version)
//Uptime aus dem DP UptimeSec (ab Tasmota 7.x)
if(version_1 > 6) {
var uptime = getState("sonoff.0." + devicenameName + ".UptimeSec").val;
var tage = Math.floor(uptime / (24*3600));
var stunden = Math.floor((uptime % (24*3600))/3600);
var minuten = Math.floor((uptime % (3600))/60);
//var sekunden = Math.floor(uptime % 60);
if (stunden < 10) {stunden = "0"+stunden};
if (minuten < 10) {minuten = "0"+minuten};
if (tage == 1) {uptime = tage.toString()+" Tag, "+stunden.toString()+" Std, "+minuten.toString()+" Min ";};
if (tage != 1) {uptime = tage.toString()+" Tage, "+stunden.toString()+" Std, "+minuten.toString()+" Min ";}
}
//IP-Adresse
var ip = getState("sonoff.0." + devicenameName + ".INFO" + ".Info2_IPAddress").val;
//Typ
var geraet = getState("sonoff.0." + devicenameName + ".INFO" + ".Info1_Module").val;
//Powerschalter
var power = getState("sonoff.0." + devicenameName + ".POWER").val;
//WLAN Singna Quali
var wlan = getState("sonoff.0." + devicenameName + ".Wifi_RSSI").val;
var wlan = String(wlan);
var wlan = wlan + ' %';
}
if(status == false){
var status = "0"
var uptime = ""
var version = ""
var ip = ""
var geraet = ""
var power = ""
var wlan = ""
offline_devices = offline_devices+1;
}
//DPs befüllen
// Device-Name
devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Device-Name";
createState(devicename, 'empty', { name: 'Device-Name', desc: '', type: 'string', role: '',read: true, write: true });
setStateDelayed(devicename, devicenameName, 800);
// Uptime
devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Uptime";
createState(devicename, 'empty', { name: 'Uptime', desc: '', type: 'string', role: '',read: true, write: true });
setStateDelayed(devicename, uptime, 800);
// Status
devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Status";
createState(devicename, 'empty', { name: 'Status', desc: '', type: 'string', role: '',read: true, write: true });
setStateDelayed(devicename, status, 800);
// Version
devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Version";
createState(devicename, 'empty', { name: 'Version', desc: '', type: 'string', role: '',read: true, write: true });
setStateDelayed(devicename, version, 800);
// IP
devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".IP";
createState(devicename, 'empty', { name: 'IP', desc: '', type: 'string', role: '',read: true, write: true });
setStateDelayed(devicename, ip, 800);
// Gereatetyp
devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Geraet";
createState(devicename, 'empty', { name: 'Geraet', desc: '', type: 'string', role: '',read: true, write: true });
setStateDelayed(devicename, geraet, 800);
//Power
devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Power";
createState(devicename, 'empty', { name: 'Power', desc: '', type: 'boolean', role: '',read: true, write: true });
setStateDelayed(devicename, power, 800);
//WLAN Qualität
devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".WLAN";
createState(devicename, 'empty', { name: 'WLAN', desc: '', type: 'string', role: '',read: true, write: true });
setStateDelayed(devicename, wlan, 800);
counter = counter+1;
});
// Wegen sonoff.0.info muss vom Counter (Gesamtanzahl) 1 abgezogen werden
counter = counter - 1
//Anzahl alle Geräte
devicename="0_userdata.0.tasmota-devices.Anzahl";
createState(devicename, 'empty', { name: 'Anzahl', desc: '', type: 'number', role: '',read: true, write: true });
setStateDelayed(devicename, counter, 800);
//Letzte aktualisierung
var datum = new Date();
var heute = datum.getDate()+ "." + (datum.getMonth()+ 1)+"." + datum.getFullYear()+" " +datum.getHours() +":" + datum.getMinutes() +":" + datum.getSeconds() + " Uhr" ;
createState('0_userdata.0.tasmota-devices.Letztes_Update', 0, { name: 'Letztes_Update', desc: '', type: 'string', role: '',read: true, write: true });
setStateDelayed('0_userdata.0.tasmota-devices.Letztes_Update', heute, 800);
//Alle Geräte online
if(status_counter == counter) {
devicename="0_userdata.0.tasmota-devices.Alle_Devices_verbunden";
createState(devicename, 'empty', { name: 'Alle_Devices_verbunden', desc: '', type: 'string', role: '',read: true, write: true });
setStateDelayed(devicename, "1", 800);
}
else{
devicename="0_userdata.0.tasmota-devices.Alle_Devices_verbunden";
createState(devicename, 'empty', { name: 'Alle_Devices_verbunden', desc: '', type: 'string', role: '',read: true, write: true });
setStateDelayed(devicename, "0", 800);
}
//Anzahl offline Geräte
devicename="0_userdata.0.tasmota-devices.Anzahl_offline_Devices";
createState(devicename, 'empty', { name: 'Anzahl_offline_Devices', desc: '', type: 'number', role: '',read: true, write: true });
setStateDelayed(devicename, offline_devices, 800);
});