NEWS
Einfach mal zeigen will….. :-) - Teil 2
-
@Rummelmugge:Hier mein aktuelles Smartphone UI und hier auch als https://www.youtube.com/watch?v=ofWp_UoPVhQ&t=11s.
Wir benutzen unser Smartphone viel öfter zum Steuern von ioBroker als das Wandtablet. Deswegen steck ich da viel mehr arbeit rein. Ist das bei euch auch so?
! Screenshot_20180909-115652.jpgScreenshot_20180909-120205.jpgScreenshot_20180909-120043.jpgScreenshot_20180909-115812.jpgScreenshot_20180909-115748.jpg `
Hallo Rummelmugge,
finde dein Smartphone UI super, besonderes Interesse hab ich an den Lichtszenen mit den Iconbilder.
Könntest du nochmals versuchen diese als Exportdatei bereitzustellen?
Danke im voraus und schöne Grüße
Christian `
Hallo Christian,
geplant hatte ich, mich heute nochmal an den export zu begeben. Gestern beim Aufbauen meiner neuen Küche ist dann der Supergau passiert. FI ist rausgeflogen und hat dabei meine iobroker installation gekillt. Die Dateien konnte ich zwar noch kopieren, und mit einem 1 Monate alten Backup vieles wiederherstellen, aber die gezeigte Smartphone UI ist nach dem Backup erstellt worden und ich kann die nur noch teilweise wiederherstellen.
Ich muss jetzt erstmal weider den Scherbenhaufen zusammenkehren und schauen was noch klappt. Sobald ich land sehe stelle ich das aber gerne hier zur Verfügung.
Wie sichert ihr euch denn gegen Stromausfälle?
-
Hi Daniel,
vielen Dank hat geklappt
Mit diesem Script kannst den LOWBat deiner Xiaomi auslesen
Nicht von mir, habe ich im Forum gefunden. Funktioniert auch soweit sehr gut.
Allerdings erkennt er natürlich keine HM-Sensoren, den HM LowbatScript parallel unter einem anderen Namen laufen zu lassen funktioniert bei mir leider nicht
8995_lowbat_xiaomi.txt -
Bin kein Profi, aber so könntest Du beides kombinieren
createState('zählenLowbat.möglicheLOWBAT', 0); // wenn benötigt: Anzahl der vorhandenen LOWBAT createState('zählenLowbat.anzahlLOWBAT', 0); // wenn benötigt: Anzahl der vorhandenen LOWBAT createState('zählenLowbat.textLOWBAT', " "); // Anzahl LOWBAT, die an sind als Variable unter Javascript.0 anlegen var minlevel = 70; // HIER LEGT DU DEINE SCHWELLE FEST. ICH HABE DIE 87% WILLKÜRLICH GEWÄHLT, denn damit sollte beim Test mindestens einmal "lowbat".rauskommen var cacheSelectorLOWBAT = $('channel[state.id=*.percent|.LOW_BAT]'); // HIER HABE ICH NUN AUF DEIEN PROZENT WERT VERWIESEN function countLowbat(obj) { // Setzt die Zähler vor dem Durchlauf aller Elemente auf 0 var moeglicheLOWBAT = 0; var textLOWBAT = []; if (obj) { log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val); // Info im Log, welcher Zustand sich geändert hat } else { log('Ausgelöst bei Timer'); } cacheSelectorLOWBAT.each(function (id, i) { // Schleife für jedes gefundenen Element *.LOWBAT var value = getState(id).val; // Zustand *.LOWBAT abfragen (jedes Element) var obj = getObject(id); var status = getState(id).val; var name = getObject(id).common.name; if( status === true ) devicename = name.substring(0, name.indexOf(".STATE")); else devicename = name.replace("Battery percent",""); if (status === true || status <= minlevel)) { // wenn Zustand der Variable "lowbattery" = true, dann wird die Anzahl der Geräte hochgezählt textLOWBAT.push(devicename); // Zu Array hinzufügen } log("Geräte Nr. " + i + ": " + devicename + "meldet: " + lowbattery); ++moeglicheLOWBAT; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status }); // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon LOWBAT zutreffend) ausgegeben log("Text: " + textLOWBAT.join(', ')); log("Anzahl Geräte: " + moeglicheLOWBAT + " # davon LOWBAT erkannt: " + textLOWBAT.length); // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS) setState("zählenLowbat.textLOWBAT", textLOWBAT.join(', ')); // Schreibt die aktuelle Namen der Geräte mit LOWBAT Meldung setState("zählenLowbat.anzahlLOWBAT", textLOWBAT.length); // Schreibt die aktuelle Anzahl der Geräte im System setState("zählenLowbat.möglicheLOWBAT", moeglicheLOWBAT); // Schreibt die aktuelle Anzahl der vorhandene Geräte } cacheSelectorLOWBAT.on(function(obj) { // bei Zustandänderung *. LOWBAT in allen Gewerken countLowbat(obj); }); schedule("*/60 * * * *", function () { //oder!! soll entweder ausgelöst werden alle 10 Minuten countLowbat(); }); // Bei Start: countLowbat();
-
Hallo, ich stelle auch mal wieder mein aktuelles Projekt rein, ist noch nicht Komplet fertig…......
-
Hallo sigi ,
kannst du hier deinen Export posten?
-
Kann ich gerne machen wenn der anonymisierte Export funktionieren würde…........
-
Hmmm , kannst du nicht einfach den Ordner unter /opt/iobroker/iobroker-data/files/vis.0/dein-name/ rauskopieren und als Rar packen oder so ?
Ich habe mal getestet und funktioniert auch so , keine Ahnung was genau da anonymisiert wird aber so geht auch .
-
Hi sigi234,
hätte auch interesse an deiner Vis vor allen an der Kodi Vis. Müsstest mir mal erklären wie du den Kodi aktiviert hast hänge schon seit 2 Wochen daran den Adapter ans laufen zu bekommen aber es klappt nicht.
Gruß
helfi
-
Zeige mal deine Einstellungen….........
-
Hi,
Könntest du mir bitte dein export von den Fenstern geben?
Ich hatte von Seite 11 dein Projekt runtergeladen aber irgedwie bekomme ich das nicht eingefügt.
Ich bräuchte nur für die Fenster was.
Danke dir schon mal `
gerne … IDs sind anaonym...
-
@Rummelmugge:[
Wie sichert ihr euch denn gegen Stromausfälle? `
Hatte das gleiche, allerdings war das letzte Backup 8 Monate alt. Ich glaub, da war ich dann ne Stunde im Keller zum Heulen…
Seit dem nehm ich das BackItUp-AddOn und sicher aller 2 Tage auf meine NAS - die wiederum sichert jede Nacht aufs Strato-Hidrive.
-
Mit diesem Script kannst den LOWBat deiner Xiaomi auslesen
Nicht von mir, habe ich im Forum gefunden. Funktioniert auch soweit sehr gut.
Allerdings erkennt er natürlich keine HM-Sensoren, den HM LowbatScript parallel unter einem anderen Namen laufen zu lassen funktioniert bei mir leider nicht `
Danke für das Script, aber das klappt bei mir leider nicht
Die Xiaomis (Aqara) haben kein LowBat sondern einfach ein Battery, da habe ich schon mal die eine Zeile so angepasst:
var cacheSelectorLOWBAT = $('channel[state.id=*.battery]'); // HIER HABE ICH NUN AUF DEIEN PROZENT WERT VERWIESEN
Damit erreiche ich schon mal, dass er meine 13 Geräte auch durchzählt und auch sagt das X sich melden.
Danach habe ich aber folgende Meldungen im Log:
7:48:53.911 [info] javascript.0 script.js.Batterieanzeige.LowBat: Geräte Nr. 1: meldet: true 17:48:53.911 [info] javascript.0 script.js.Batterieanzeige.LowBat: Geräte Nr. 2: meldet: true 17:48:53.911 [info] javascript.0 script.js.Batterieanzeige.LowBat: Geräte Nr. 3: meldet: true 17:48:53.911 [info] javascript.0 script.js.Batterieanzeige.LowBat: Geräte Nr. 4: meldet: true 17:48:53.911 [info] javascript.0 script.js.Batterieanzeige.LowBat: Geräte Nr. 5: meldet: true 17:48:53.911 [info] javascript.0 script.js.Batterieanzeige.LowBat: Geräte Nr. 6: meldet: true 17:48:53.911 [info] javascript.0 script.js.Batterieanzeige.LowBat: Geräte Nr. 7: meldet: true 17:48:53.911 [info] javascript.0 script.js.Batterieanzeige.LowBat: Geräte Nr. 8: meldet: true 17:48:53.911 [info] javascript.0 script.js.Batterieanzeige.LowBat: Geräte Nr. 9: meldet: true 17:48:53.912 [info] javascript.0 script.js.Batterieanzeige.LowBat: Geräte Nr. 10: meldet: true 17:48:53.913 [info] javascript.0 script.js.Batterieanzeige.LowBat: Geräte Nr. 11: meldet: true 17:48:53.913 [info] javascript.0 script.js.Batterieanzeige.LowBat: Geräte Nr. 12: meldet: true 17:48:53.913 [info] javascript.0 script.js.Batterieanzeige.LowBat: Text: , , , , , , , , , , , 17:48:53.913 [info] javascript.0 script.js.Batterieanzeige.LowBat: Anzahl Geräte: 13 # davon LOWBAT erkannt: 12 17:48:53.913 [info] javascript.0 script.js.Batterieanzeige.LowBat: registered 13 subscriptions and 1 schedule 17:50:00.910 [info] javascript.0 script.js.Batterieanzeige.LowBat: Ausgelöst bei Timer
Nach der Gerätenummer sollte der "Devicename" kommen, doch der wird ja im Script noch gekürzt vom "Battery percent".
Schaue ich mir im RAW das an, dann ist der Device Name aber nur der "Battery percent" .
{ "type": "state", "common": { "name": "Battery percent", "type": "number", "unit": "%", "read": true, "write": false, "role": "battery.percent", "min": 0, "max": 100, "icon": "img/battery_p.png" }, "from": "system.adapter.zigbee.0", "ts": 1539273177032, "_id": "zigbee.0.00158d0002320570.battery", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "native": {} }
Im Grunde müsste ich erst eine Ebene höher springen, um dann dort den Namen auszulesen.
{ "type": "device", "common": { "name": "Aussentemperatur", "type": "lumi.weather", "icon": "img/aqara_temperature_sensor.png" }, "from": "system.adapter.zigbee.0", "ts": 1539209821969, "_id": "zigbee.0.00158d0002320570", "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "user": "system.user.admin", "native": {} }
Kennt da einer den Weg? Oder denke ich falsch?
Sollte dies hier schon zu OffTopic sein, dann bitte melden und als eigenen Thread o.ä. verschieben
-
@Rummelmugge:Hallo Christian,
geplant hatte ich, mich heute nochmal an den export zu begeben. Gestern beim Aufbauen meiner neuen Küche ist dann der Supergau passiert. FI ist rausgeflogen und hat dabei meine iobroker installation gekillt. Die Dateien konnte ich zwar noch kopieren, und mit einem 1 Monate alten Backup vieles wiederherstellen, aber die gezeigte Smartphone UI ist nach dem Backup erstellt worden und ich kann die nur noch teilweise wiederherstellen.
Ich muss jetzt erstmal weider den Scherbenhaufen zusammenkehren und schauen was noch klappt. Sobald ich land sehe stelle ich das aber gerne hier zur Verfügung.
Wie sichert ihr euch denn gegen Stromausfälle? `
Hallo Rummelmugge,
daß ist ja Sch….
Wenn alles wieder fertig Sortiert ist und du dann die Zeit hast kannst es gerne Exportieren und bereitstellen. Danke
Gruß Christian
-
Hallo sigi234,
auch ich wäre sehr interessiert an deinem View.
Vielleicht findest du doch noch einen Weg diesen zu exportieren.
Danke und Gruß
Christian
-
Mit diesem Script kannst den LOWBat deiner Xiaomi auslesen
Nicht von mir, habe ich im Forum gefunden. Funktioniert auch soweit sehr gut.
Allerdings erkennt er natürlich keine HM-Sensoren, den HM LowbatScript parallel unter einem anderen Namen laufen zu lassen funktioniert bei mir leider nicht `
Danke für das Script, aber das klappt bei mir leider nicht `
Hallo tugsi,
das Skript habe ich damals geschrieben, basierend auf dem LowBat Skript für Homematic von ich meine Pix. Die normalen Xiaomi Teile haben die Angabe Percent. Darüber läuft das Skript. Zeig doch mal bitte die Datenpunkte der aqara, dann kann man weitersehen. Ich rate aber mal, dass die auch einen Percent Wert haben.
das LowBat ist hier einfach nur eine Variable und hat nichts mit dem Status "low_bat" oder "lowbat" der Homematic Komponenten zu tun. Ich war nur zu faul, die Kommentierung aus dem originären Homematic low_bat skript zu entfernen, daher wahrscheinlich deine Verwirrung.
Mit korrigierter Kommentierung:
function countLowbat(obj) { // Setzt die Zähler vor dem Durchlauf aller Elemente auf 0 var moeglicheLOWBAT = 0; var textLOWBAT = []; var lowbattery = false; // NEU EINGEFÜGT, um bei niedrigem Prozntwert entsprechend hochzuzählen if (obj) { log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val); // Info im Log, welcher Zustand sich geändert hat } else { log('Ausgelöst bei Timer'); } cacheSelectorLOWBAT.each(function (id, i) { // Schleife für jedes gefundenen Element *.percent var value = getState(id).val; // Zustand *.percent abfragen (jedes Element) if(value < minlevel){lowbattery = true} else {lowbattery = false} // NEU EINGEFÜGT. Ist der Ladestand kleiner als der Schwellwert? Wenn ja, setze die Variable lowbattery auf true var obj = getObject(id); var name = getObject(id).common.name; var devicename = name.replace("Battery percent",""); if (lowbattery=== true) { // wenn Zustand der Variable "lowbattery" = true, dann wird die Anzahl der Geräte hochgezählt textLOWBAT.push(devicename); // Zu Array hinzufügen } log("Geräte Nr. " + i + ": " + devicename + "meldet: " + lowbattery); ++moeglicheLOWBAT; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status }); // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon geringer Ladestatus zutreffend) ausgegeben log("Text: " + textLOWBAT.join(', ')); log("Anzahl Geräte: " + moeglicheLOWBAT + " # davon LOWBAT erkannt: " + textLOWBAT.length); // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS) setState("zählenLowbat.textLOWBAT", textLOWBAT.join(', ')); // Schreibt die aktuelle Namen der Geräte mit LOWBAT Meldung setState("zählenLowbat.anzahlLOWBAT", textLOWBAT.length); // Schreibt die aktuelle Anzahl der Geräte im System setState("zählenLowbat.möglicheLOWBAT", moeglicheLOWBAT); // Schreibt die aktuelle Anzahl der vorhandene Geräte } cacheSelectorLOWBAT.on(function(obj) { // bei Zustandänderung *.percent in allen Gewerken countLowbat(obj); }); schedule("*/60 * * * *", function () { //oder!! soll entweder ausgelöst werden alle 10 Minuten countLowbat(); }); // Bei Start: countLowbat();
-
Danke für die Antwort,
nein die Kommentierung hat mich jetzt nicht irritiert, ich suche ja schon etwas nach diesem Script hier und wusste, dass es für die HM-Geräte erstellt wurde.
Nur bin ich noch recht frisch hier bei iOBroker und finde mich erstmal zurecht
Wie Du siehst, gibt es zwar eine Prozentangabe, dass war für mich ja auch nicht das Problem, ich bekomme ja auch die Anzahl der möglichen Geräte und auch die Anzahl der mit einem Status "LowBat", aber ich erhalte nicht einen Namen.
script.js.Batterieanzeige.BatLow: Anzahl Geräte: 13 # davon LOWBAT erkannt: 12 .... script.js.Batterieanzeige.BatLow: Geräte Nr. 12: meldet: true
Aber eben keinen Namen dazu:
script.js.Batterieanzeige.BatLow: Text: , , , , , , , , , , ,
Ich bekomme ja nur einen Namen wie z.B. Aussentemperatur, wenn ich im Device im common.name schaue
{ "type": "device", "common": { "name": "Aussentemperatur", "type": "lumi.weather", "icon": "img/aqara_temperature_sensor.png" }, "from": "system.adapter.zigbee.0", "ts": 1539209821969, "_id": "zigbee.0.00158d0002320570", "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "user": "system.user.admin", "native": {} }
Ich bin aber ja "unterhalb" des Devices, wo ich die Prozentzahl, Temperatur etc bekomme:
{ "type": "state", "common": { "name": "Battery percent", "type": "number", "unit": "%", "read": true, "write": false, "role": "battery.percent", "min": 0, "max": 100, "icon": "img/battery_p.png" }, "from": "system.adapter.zigbee.0", "ts": 1539349041776, "_id": "zigbee.0.00158d0002320570.battery", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "native": {} }
Ich müsste also irgendwie von dort den übergeordneten Devicenamen bekommen
Klingt einfach… ist es aber nicht :lol:
Gruß
Thomas
-
Hier
viewtopic.php?f=21&t=869&hilit=HIER+LEG … &start=100
ist die Diskussion, aus der das Skript entstammt.
Dort war auch das gleiche Problem "keine Namen". Es lag daran, dass die Teile in der xiaomi App nicht benannt worden waren.
Sobald das nachgeholt und einmal neugestartet wurde, hat das Skript die Namen ausgelesen. Denn genau das tut es eigentlich auch, siehe hier:
var obj = getObject(id); var name = getObject(id).common.name; var devicename = name.replace("Battery percent","");
-
Hier
viewtopic.php?f=21&t=869&hilit=HIER+LEG … &start=100
ist die Diskussion, aus der das Skript entstammt.
Dort war auch das gleiche Problem "keine Namen". Es lag daran, dass die Teile in der xiaomi App nicht benannt worden waren.
Sobald das nachgeholt und einmal neugestartet wurde, hat das Skript die Namen ausgelesen. Denn genau das tut es eigentlich auch, siehe hier:
var obj = getObject(id); var name = getObject(id).common.name; var devicename = name.replace("Battery percent",""); ```` `
Danke für den Beitrag, genau ist mein Problem …
Ich habe kein Xiaomi Gateway, habe an einem Raspberry ein CC2531 USB-Stick, der den Zigbee-Gateway mimt und das funzt 1a.
Aber dadurch kann ich mit der Xiaomi-App die nicht sehen und somit da auch kein Namen vergeben.
Mit dem Befehl:
var name = getObject(id).common.name;
Bekomme ich nur "Battery percent" zurück und das wird ja eine Zeile darunter entfernt.
Im Adapter selber kann ich ein Namen dem Gerät (Device) vergeben, hier zB Aussentemperatur:
Ich sehe für mich nur 2 Möglichkeiten:
- 1. Entweder kann ich einen eigenen state da hinein schreiben mit "Name"
oder 2\. Ich kann irgendwie den Namen des Devices auslesen
-
Ich habe es jetzt anders gelöst.
Ich habe im STATE der Batterieprozente, den Namen einfach angepasst:
Dann bekomme ich auch den richtigen NamenOk, dann muss ich einmal das Device mit dem Adapter benennen und dann in den Objekten manuell da dies noch anpassen..
Egal, hauptsache es passt.
Danke Dir nochmal für die Unterstützung!
-
Hallo sigi234,
wie schauts eigentlich mit deinem Handy View aus. Könntest du diesen hier auch als Export anbieten?
Danke und Gruß
Christian