NEWS
Push-Benachrichtigungen bei Adapter-Updates
-
Mal schnell geschaut siehe Screenshot, es gibt die Zahl und welche Adapter ein Update haben können.
Du könntest also auf Änderung dieser Werte triggeren und dem entsprechende actionende auslösen.
~~![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201805 ... 7fac7a.jpg">https://uploads.tapatalk-cdn.com/20180508/a6f6a8c1ff5af678b86c3bcbef7fac7a.jpg</link_text>" />
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community~~ ` ~~Heisst die 15 jetzt, du hast 15 Updates, die du noch machen musst?! :shock:
Habe aus Jux auch gerade mal geschaut und bei mir steht 1. Aktualisier ich jetzt die Adapterliste wird aber kein Adapter zum aktualisieren angezeigt.
Also passt dein Datenpunkt wohl noch nicht richtig oder irre ich mich?..~~
-
mal auf ein Codebeispiel verweisen ? Wie ich da ne E-Mail verschicke `
on('admin.0.info.updatesList', function(dp) { sendTo("email", { subject: "Adapter-Updates", text: dp.state.val }); });
-
Heisst die 15 jetzt, du hast 15 Updates, die du noch machen musst?! :shock:
Habe aus Jux auch gerade mal geschaut und bei mir steht 1. Aktualisier ich jetzt die Adapterliste wird aber kein Adapter zum aktualisieren angezeigt.
Also passt dein Datenpunkt wohl noch nicht richtig oder irre ich mich?.. `
Doch der past schon nur nachdem man einen Adapter geupdated hat muss man erneut
iobroker update
Ausführen damit der Zähler sich wieder resetet.
Ja 15… Ist mein Test System für ein paar Sachen was seit 2 Monaten nicht gepflegt ist (schäm)
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
-
Genau auf das Codebeispiel bekomme ich folgende Fehlermeldung und keine Mail
Error {"code":"ESTREAM","command":"API"}
aller Anfang ist schwer
-
Ich möchte das Thema erneut aufgreifen, da ich mir ebenfalls eine Benachrichtigung wünsche. Zusätzlich würde ich allerdings gerne das Update automatisch durchführen.
Mein Skript ist bisher nicht von Erfolg gekrönt. Ich hatte bereits eine Benachrichtigung erhalten, welche allerdings leer (Adapter wurden nicht genannt) war. Zum Zeitpunkt des Versands ist die Liste zu updatenden Adapter leer - daher dachte ich, dass es sinnig wäre das Versenden verzögern. Funktioniert nur leider nicht.Wenn die Benachrichtigung funktioniert, würde ich gerne die Modulupdates durchführen.
Gemäß https://forum.iobroker.net/topic/19830/alle-adapter-gleich-aktualisieren/13
interpretiere ich, dass iobroker upgrade hier funktionieren sollte. EXEC ist im JavaScript-Adapter aktiviert.Es wäre schön, wenn hier jemand weiterhelfen könnte.
-
@Ulfhednir Also um das update durhczuführen rufe ich bei mir ein script auf das unter /opt/iobroker liegt und "adapter_update.sh" heißt:
cd /opt/iobroker sleep 5 iobroker upgrade sleep 5
Mein Skript für die Benachrichtigung sieht so aus:
var timeout,Letzter_Absender,Letzter_Text,Letzter_Text_klein; //Wenn ein Update für einen Adapter vorhanden schicke Info per Telegram on({id: 'admin.0.info.newUpdates', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("admin.0.info.newUpdates").val == true) { sendTo("telegram", "send", { text: (['Es gibt Updates für: ',getState("admin.0.info.updatesNumber").val,' Adapter'].join('')) }); timeout = setTimeout(function () { sendTo("telegram", "send", { text: ('Adapter: ' + String(getState("admin.0.info.updatesList").val)) }); console.log('+++' + ' Update für ' + getState("admin.0.info.updatesList").val); //Auswahlmenü Telegram ob Adapter aktualisiert werden soll sendTo('telegram', { text: 'Bitte wähle ein Button', reply_markup: { keyboard: [ ['Aktualisieren', 'Nichts ändern'], ], resize_keyboard: true, one_time_keyboard: true } }); }, 100); } }); //Verwertung Telegram Antwort on({id: 'telegram.0.communicate.request', change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Letzter_Absender = (obj.state ? obj.state.val : "").slice(1, ((obj.state ? obj.state.val : "").indexOf(']') + 1) - 1); Letzter_Text = subsequenceFromStartLast((obj.state ? obj.state.val : ""), (((obj.state ? obj.state.val : "").indexOf(']') + 1 + 1) - 1)); Letzter_Text_klein = subsequenceFromStartLast((obj.state ? obj.state.val : ""), (((obj.state ? obj.state.val : "").indexOf(']') + 1 + 1) - 1)).toLowerCase(); if (Letzter_Absender == 'Tobi' && (Letzter_Text == 'Aktualisieren')) { setState("javascript.0.Adapter_Update", true); //Funktionsaufruf Start_Update_Adapter(); } else if (Letzter_Absender == 'Tobi' && (Letzter_Text == 'Nichts ändern')) { sendTo("telegram", "send", { text: ('Es wird keine aktualsisierung durchgeführt') }); } }); //Adapter update durchführen function Start_Update_Adapter(){ on({id: 'javascript.0.Adapter_Update', val: true}, function (obj) { exec("/opt/iobroker/adapter_update.sh") setState("javascript.0.Adapter_Update", false, true); }); } function subsequenceFromStartLast(sequence, at1) { var start = at1; var end = sequence.length - 1 + 1; return sequence.slice(start, end); }
Ich selbst prüfe das Object "NewUpdates" auf den Wert "true"
Leider ist es bei mir kein Blockly, sehe aber so spontan keinen Fehler.
Vllt fällt einem anderen da noch was auf. -
@Ulfhednir sagte:
das Versenden verzögern. Funktioniert nur leider nicht.
Kann auch nicht, da die Verzögerung sofort gestoppt wird, also die Verzögerungszeit nie abläuft.
-
hi, ich hab das skript benutzt. Ich erhalte auch eine Nachricht und kann auf "aktualisieren" klicken, allerdings passiert dann nichts - woran kann das liegen?
Zudem, wo füge ich die Empfänger an, die die Nachricht per Telegram erhalten sollen?
Danke vorab!
-
Hallo an alle,
hab mir hierzu auch ein kleines Blockly-Skript gebastelt.
Ich frage hierbei auch den Wert zu "newUpdates" unter Admin/Info ab und lasse mir per Nachricht die Anzahl und die Namen der Adapter schicken. Funktioniert "eigentlich" auch ganz gut, nur funktioniert es nur dann, wenn ich im Admin selbst (Fernzugriff oder direkt am Netzwerk) den Punkt "Info" anklicke bzw. aktuallisiere.
Das macht aber irgendwie keinen Sinn, wenn ich eh manuell anwählen muss, brauche ich keine Benachrichtigung die genau in dem Moment gesendet wird wenn ich es eh auf meinem Bildschirm sehe.
Ist das bei euch auch so? Gibt es da eine Lösung?
Gruß
Jan -
@schlumpf bist du hier weiterkommen? Magst du dein Skript mal teilen!