NEWS
Windows Steuerung
-
Hi Leute,
danke für die Tipps. Das Tool werde ich mir die Tage mal anschauen. Danke.
Habt ihr auch das Problem, dass sich GetAdmin relativ oft abschießt ?
Hier das Eventlog Report.werHätte schon den Windows 8 Kompatibilitätsmodus und "permanent als Administrator ausführen" probiert, hilft aber leider nichts.
Ich frage per Parser Adapter im 5 Sekunden Rythmus den Status der laufenden Applikationen ab:
Diese Stati verarbeite ich dann in einem Blockly weiter.
Kann es sein, dass das GetAdmin überfordert ?
Gibt es eine "schonendere" Möglichkeit an den Status der Programme zu kommen ?
Hier noch mein Blockly:
-
Also bei mir läuft GetAdmin stabil. Ich frage allerdings auch nicht im 5 sekunden Rythmus ab ob Chrome / VLC läuft, wofür braucht man das?
-
siehe Blockly.
Ich wecke das Display meines Win10 Rechners auf, wenn eine Bewegung erkannt wird.
Ich prüfe ob Chrome läuft -> wenn ja, dann nur Display einschalten -> wenn nein, dann Chrome mit VIS starten und Display einschalten
Ich schalte das Display nach 1min automatisch wieder aus.
Ich prüfe ob VLC läuft, wenn ja, dann Display nicht automatisch nach 1min ausschalten -> wenn nein, dann Display nach 1 min ausschaltenDazu brauche ich permanent den Status ob Chrome und/oder VLC laufen ...
Ich wäre aber wie gesagt dankbar, falls es einen weniger belastendend Weg gibt den Status festzustellen.
Ich hätte aber noch keine Möglichkeit gefunden wie ich den Check direkt ins Blockly einbauen kann, ohne Umweg des Parser Adapters ... -
Also ich wecke auch mein WIN10 Display auf auf dem Chrome seit 4 Wochen ohne einen einzigen Absturz durchläuft.
Stürzt Chrome bei dir ab oder wozu die Überwachung genau?
Geht nicht eventuell der weg auch anders herum das dein Tablet dir eine Benachrichtigung nach ioBroker sendet für den Fall das Chrome unerwartet beendet wird?
Oder läuft dein VIS nicht ständig auf dem Tablet sondern wechselt sich mit VLC ab?
VLC dient der Anzeige von Kameras "?" und solange die beobachtet werden soll auch das Display an bleiben?
-
Nein, Chrome stürzt nicht ab.
Ich verwende nur zusätzlich zu Chrome mit VIS auch noch VLC für eine Kaminfeuer Simulation und Dream Aquarium für eine Aquarium Simulation(siehe hier: https://homematic-forum.de/forum/viewtopic.php?f=31&t=48178), sowie ab und zu Kodi für eine Slide Show.
Wenn das Kaminfeuer oder Aquarium oder Kodi läuft, dann soll das Bild natürlich nicht automatisch nach 1min ausgehen, sondern solange an bleiben wie das entsprechende Programm läuft. Läuft aber nur Chrome, dann soll das Bild nach 1min wieder automatisch ausgehen ... -
dieser "chk" funktioniert bei mir nicht - weder über browser-test noch mit iobroker - hat jmd eine idee, was das sein kann
-
manchmal stehe ich daneben - über browser-test funktioniert es - mit z.b. chrome nicht mit chrome.exe
aber wie geht es über iobroker ? muss man da etwas im script hinzufügen?
-
Ich habe bei der CHK Funktion wie gesagt denn Umweg über den Parser Adapter genommen um einen verwertbaren Status in iobroker zu bekommen. (siehe 6 Posts weiter oben)
Das hat nur leider das Problem, dass die permanenten Abfragen des Parser Adapters GetAdmin abschießen ...
Für eine bessere Methode wäre ich dankbar ...
-
hilf mir biite mal - über den parser adapter bedeutet du sendest über http direkt - vergleichbar als ob ich
http://192.168.178.36:8585/?chk=vlc im browser eingebe - du gibst das im parser ad. ein?ist das richtig (kenne den parser adapter nicht wirklich!
ich hab mich schon gefragt, wie du das gemacht hast
ich nehme mal einen exec() befehl und darin ein :
curl "http://192.168.178.36:8585/?chk=chrome"
wird bei dir nichts ändern - man lagert halt das ganze auf linux aus - funktionieren tut es bei mir - hab es gerade probiert
exec('curl "http://192.168.178.36:8585/?chk=chrome"', function(err, stdout, stderr) { if (err) { log(stderr,'error'); sendTo("email", "send", { text: stderr + 'error', to: 'xxxxxxx, subject: 'Mount Reserve Fehler' }); return; } log(stdout); setState("javascript.1.GetAdmin.singleprocess"/*CloudHelp*/, stdout); //Mach was mit stdout; }); setTimeout(function () { //The timer stopScript(); }, 3000);
muss nur den output "stdout" bereinigen
-
Genau.
Am besten du installierst dir einfach mal den Parser Adapter. Der erklärt sich ziemlich von selbst.
Mittels regex Commands kann man dort eingetragene URLs nach bestimmten Zeichen, Wörtern, Werten etc. absuchen und entsprechend weiterverarbeiten.Siehe Screenshot:
Mit dem Regex Command (true) suche ich die beiden chk URLs nach dem Wort true ab im Intervall von 5 bzw. 6 Sekunden.
Wird ein true gefunden(=Programm läuft), liefert der Parser Adapter ein true, wird kein true gefunden liefert der Adapter ein false. -
Ich mache das mit dem Systeminfo Adapter. Der ist auch recht einfach zu konfigurieren.
-
habe mal einen stresstest gemacht - alle 5 sek ein chk (2 verschiedene processe - einer true einer false)
alle 7 sek eine cmd abfrageläuft schon halbe stunde - ohne fehler
mit diesem script
on({id: 'javascript.1.GetAdmin.chk', change: 'any'}, function (obj) { if(obj.newState.val !== '' || typeof obj.newState.val !== "undefined"){ var curly = 'curl "http://192.168.178.36:8585/?chk=' + getState('javascript.1.GetAdmin.chk').val + '"'; log(curly); exec(curly, function(err, stdout, stderr) { if (err) { log(stderr,'error'); sendTo("email", "send", { text: stderr + 'error', to: 'xxxxxx.de', subject: 'Mount Reserve Fehler' }); return; } log(stdout); var re = /.+<p>([a-z]+)<\/p>.+/g; stdout2 = stdout.replace(re, '$1'); log(stdout2); setState("javascript.1.GetAdmin.singleprocess"/*CloudHelp*/, stdout2); if (stdout2 != "true") {stdout2 = "false";} }); log('Send command to GetAdmin - cmd: '+ obj.newState.val); }else{log('GetAdmin. No command found.');} }); /***************************************************************************************/
hab auch mal des server load gescheckt - keine probleme - brauche keinen zusätlichen adapter
lg
hatte lust zum ausprobieren
-
Okay, danke für euer Feedback. Hab mir den systeminfo Adapter angesehen, aber der macht eigentlich auch nicht wirklich was anderes als der Parser Adapter, mit dem Unterschied, dass er noch zusätzliche Sachen abfragen kann.
Leider bin ich des scriptens nicht mächtig, daher versuche ich soviel wie möglich mit Blockly oder Adaptern zu realisieren, damits für mich nachvollziehbar bleibt.
Ich habe mich am WE jedenfalls nochmals mit dem Parser Adapter gespielt und die Intervalle auf 10, 15 und 20 Sekunden für meine 3 Chks gesetzt. Das läuft jetzt erstmal 2 Tage stabil ohne Appcrash.
Anscheinend war also der Intervall zu knapp gesetzt...Besten Dank für Hilfe.
-
okay hab mich wohl leider zu früh gefreut.
Heute in der Früh hatte GetAdmin wieder einen AppCrash ...@liv-in-sky : lässt sich dein Script auch per Blockly umsetzen ? Könntest du mir hier behilflich sein ?
-
sorry - ist zu aufwendig - da ja ein script vorliegt.
gibt es einen grund, warum du das umzusetzen willst - muss noch etwas geändert werden, denn es erfüllt ja seinen zweck
ich bin auch ein blockly fan und fast alle meine scripts sind blockly aber bei solchen scripts ist das so einfacher
für diese zeilen
var re = /.+<p>([a-z]+)</p>.+/g;
stdout2 = stdout.replace(re, '$1');bräuchte ich länger in blockly wie in js
-
Mein iobroker läuft auf windows. Hat das einen Einfluss auf dein Script ?
Kann ich dein Script einfach copy/pasten als js oder muss ich vorher noch variablen o.ä. anlegen ? -
@Qlink
Bei mir läuft GetAdmin schon seit Monaten ohne Probleme. Muss also an deinem Polling liegen.
Warum verlagerst du die Abfragen nicht auf den Win10 Rechner direkt und lässt das z.B. durch einen PowerShell Skript machen, welcher von GetAdmin gestartet wird?
PowerShell -
ok verstehe- definitiv ein argument - habe kein windows für iobroker - daher denke ich es müßte ähnlich sein - soweit ich weiß muß man "curl für windows" installieren. wie das mit powershell läuft, weiß ich nicht.
https://curl.haxx.se/windows/ich habe nur mit batch files auf windows gearbeitet - da benötigt man curl für windows - das ist ein exe file und man legt es einfach in den system32 ordner - hier ein bild im dosfenster meines rechner indem ich curl aufrufe
im script wird das true herausgefiltert und in den iobrokerdatenpunkt gescchrieben!vielleicht könnte @mayer so nett sein und dir das mit der powershell erklären -(falls du das nicht weißt) er weiß dann auch sicher, wie man den exec befehl im script ändern muss - ich kann es hier bei mir nicht testen, deshalb kann ich dir keine hilfe sein
-
@mayer grundsätzlich möchte ich versuchen sowenige Instanzen wie möglich in meine Abläufe zu integrieren. Powershell wäre nur noch eine weiter Instanz/Abhängigkeit. Daher gefällt mir der Ansatz mit curl für windows erstmal besser...
@liv-in-sky danke für den Vorschlag. Die Frage wäre dann eigentlich nur wie man aus Blockly die curl exe aufrufen kann...
hier hat das anscheinend schonmal jemand probiert, aber wohl erfolglos: https://forum.iobroker.net/topic/4904/sh-oder-bat-datei-ausführen/7Eventuell hast du ja eine Idee wie man das mittels Blockly und exec aufrufen kann ?
-
in deinem beispiel ist das auch linux - bash !
macht nix
wird schwierig - da ich nicht testen kann - must du machen
versuch mal
- ip ändern - den rückgabewert habe ich einen extra datenpunkt "singleprocess"
- result musst du als variable anlegen
wenn das funktioniert , können wir den rest darum-herum-bauen