NEWS
Automatische Übersicht aller Sonoff Geräte
-
@Kuddel said in Automatische Übersicht aller Sonoff Geräte:
@Bluelinux der powerstatus wird über "Powerschalter" und das Schalter Widget korrekt und immer aktuell dargestellt.
Das Skirpt läuft alle 60 Sekunden. Würde ich den Powerwert abfragen, kann der Wert bis zu 60 Sekunden alt sein.Da ich keinen POW habe, kann ich das nicht testen.
Bekommst du irgendwelche Fehler im Log?
Wie sehen die Datenpunkte aus ?Guten Morgen, also ich habe den sonoff Pow mal die aktuelle tasmota software gegönnt und jetzt wird er Angezeigt. Leider ist jetzt genau das passiert mit dem status ob AN oder AUS was ich mir gedacht hatte... dadurch das die liste sich alphabetisch auflistet stimmt die reihenfolge nicht mehr.
eventuell kannst du das bei deinem nächstes skript berücksichtigen.... grüße und danke
-
@Bluelinux so ganz verstehe ich dein Problem nicht.
kannst du das irgendwie kurz mit Screenshots verdeutlichen?
-
@Kuddel said in Automatische Übersicht aller Sonoff Geräte:
@Bluelinux so ganz verstehe ich dein Problem nicht.
kannst du das irgendwie kurz mit Screenshots verdeutlichen?
das ist der Datenpunkt bei Powerschalter:
wenn er dort true oder false anzeigen würde je nach power state der sonoff geräte wäre es perfekt!
-
@Bluelinux wenn man den DP beim Schalter hinterlegtmit {jabascript.0.Sonoff-Devices.Device_1.Powerschalter}, dann zeigt dein Widget den Status des Status aus dem Sonoff-Adapter an.
-
@Bluelinux ich glaube jetzt verstehe ich dein Problem.
Mein einer Sonoff, der gerade automatisch mein Tablet läd ist aktiv (POWER = true).
Das Widget im View ist allerdings aus.
Keine Ahnung warum der Status nicht richtig dargestellt wird.
-
Mahlzeit. Ich hätte eine Frage?
Kann das sein das ab Tasmota 9.5.0 das Script die Geräte nicht mehr findet? Habe es jetzt erst gefunden und finde es klasse für mein VIS. Nur leider alle Geräte die über 9.3.1 sind werden nicht gefunden.
Kann man das irgendwie Fixen? habe leider zu wenig ahnung in sache Javascript.MFG
-
@maikdor meine SOnoff Aktoren habe die FW Version 9.5.0
Hier ist mein aktuelles Skript
// 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 für alle Geräte außer Sonoff 4CH Pro R2 if(geraet != "Sonoff 4CH Pro"){var powerschalter = "sonoff.0." + devicenameName + ".POWER"}; if(geraet == "Sonoff 4CH Pro"){var powerschalter = "sonoff.0." + devicenameName + ".POWER1"}; //Power if(geraet != "Sonoff 4CH Pro"){var power = getState("sonoff.0." + devicenameName + ".POWER").val}; if(geraet == "Sonoff 4CH Pro"){var power = getState("sonoff.0." + devicenameName + ".POWER1").val}; var power = String(power) //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: 'string', 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); });
-
@kuddel
Super danke danke danke.
Hat geklappt. Sogar die Firmware 10.0.0 erkennt er und finde es klasse das er nun auch die Wlan Stärke mit übernimmt. -
@maikdor bei mir komme ich leider nicht weiter als Version 9.5.0.
Bisher ging das immer mit dem TasmoAdmin.
Wie hast du deine Aktoren aktualisiert?
-
@kuddel Ich gehe immer auf die Admin Seite von den Aktor und aktualisiere immer da über das Firmware Update. Aber nicht per Web-Server sondern über Datei hochladen, update über Web-Server klappt bei mir auch nicht immer. Ich habe auch paar Steckdosen wo ich vorher auf minimal flashen muss und dann kann ich erst die Haupt Firmware Flashen.
PS: die Firmware 11.0.0 zeigt das Script auch an
Aber ich bekomme nun immer warnungen im Script.
09:17:30.009 warn javascript.0 (4105437) at script.js.Vis.Sonoff_Device:59:56
09:17:30.009 warn javascript.0 (4105437) at Object.<anonymous> (script.js.Vis.Sonoff_Device:12:19)kann ich die ignorieren? Habe es 1 zu 1 kopiert von dir.
-
@maikdor ich versuche mal einen Aktor auf Version 11 zu bekommen, damit ich das Problem nachstellen kann.
Nochmal zum Update:
Ich habe mit die Datei "tasmota-DE.bin.gz" von http://ota.tasmota.com/tasmota/release/ heruntergeladen und dann im Aktor als Updatedatei verwendet:
-
@kuddel nimm erst die mini
dann die tasmota-DE.bin.gz -
@kuddel
Das habe ich auch ab und zu dann muss ich erst die minimal flashen. Dann die Richtige. Ich denke mal das dann für beide Firmwares der Speicher zu klein ist.
Wegen den Fehler habe noch einige mit 9.5.0 und 10.0.0 am laufen. Werde heute oder morgen auch mal alle auf 11 Updaten. Dann mal schauen ob ich den immer noch habe. -
-
@kuddel ok werde heute oder morgen alle mal auf 11 Updaten dann mal schauen. Werde berichten dann
-
@kuddel ich glaube den Fehler habe ich gefunden im Script bei mir mit der Warnung
//Powerschalter für alle Geräte außer Sonoff 4CH Pro R2
if(geraet != "Sonoff 4CH Pro"){var powerschalter = "sonoff.0." + devicenameName + ".POWER"};
if(geraet == "Sonoff 4CH Pro"){var powerschalter = "sonoff.0." + devicenameName + ".POWER1"};So ein Sonoff 4CH Pro habe ich nicht. Und in der Zeile kommt auch meine Warnung. Kann ich die dann einfach löschen?
Habe nun alle aktive auf 11 gebracht und der Fehler ist immer noch bei mir
-
@maikdor kannst du zum Test ja einfach mal rausnehmen
-
@kuddel
So habe es nun so gemacht und es geht nun kommt kein warning mehr.
aber musste dann den type in power von "string" auf "Boolean" stellen.
-
@maikdor ja stimmt.
so wie ich das sehe, habe ich alle DPs als Strings definiert.
Wenn der Aktor nicht verbunden ist, kann ich die Strings so besser leeren mit dem Inhalt ""
-
@kuddel Ok wieder was gelernt. Bin noch Anfänger und versuche es immer wieder mit C&P zu lernen wie was wo geht und Fummel mich dann ein zurecht. Wie jetzt zb