Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Windows Steuerung

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Windows Steuerung

    This topic has been deleted. Only users with topic management privileges can see it.
    • Q
      Qlink last edited by

      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 ...

      1 Reply Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky last edited by liv-in-sky

        dieser "chk" funktioniert bei mir nicht - weder über browser-test noch mit iobroker - hat jmd eine idee, was das sein kann

        1 Reply Last reply Reply Quote 0
        • liv-in-sky
          liv-in-sky last edited by

          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?

          1 Reply Last reply Reply Quote 0
          • Q
            Qlink last edited by

            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 ...

            1 Reply Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky last edited by liv-in-sky

              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

              1 Reply Last reply Reply Quote 0
              • Q
                Qlink last edited by

                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:
                alt text

                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.

                1 Reply Last reply Reply Quote 0
                • wendy2702
                  wendy2702 last edited by

                  Ich mache das mit dem Systeminfo Adapter. Der ist auch recht einfach zu konfigurieren.

                  1 Reply Last reply Reply Quote 0
                  • liv-in-sky
                    liv-in-sky last edited by

                    @Qlink

                    habe mal einen stresstest gemacht - alle 5 sek ein chk (2 verschiedene processe - einer true einer false)
                    alle 7 sek eine cmd abfrage

                    tmer.png

                    läuft schon halbe stunde - ohne fehler

                    dia.png

                    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 🙂

                    1 Reply Last reply Reply Quote 0
                    • Q
                      Qlink last edited by

                      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.

                      1 Reply Last reply Reply Quote 0
                      • Q
                        Qlink last edited by

                        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 ?

                        M 1 Reply Last reply Reply Quote 0
                        • liv-in-sky
                          liv-in-sky last edited by

                          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

                          1 Reply Last reply Reply Quote 0
                          • Q
                            Qlink last edited by

                            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 ?

                            1 Reply Last reply Reply Quote 0
                            • M
                              mayer @Qlink last edited by

                              @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

                              1 Reply Last reply Reply Quote 0
                              • liv-in-sky
                                liv-in-sky last edited by liv-in-sky

                                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 aufrufeImage 1.png
                                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

                                1 Reply Last reply Reply Quote 0
                                • Q
                                  Qlink last edited by

                                  @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/7

                                  Eventuell hast du ja eine Idee wie man das mittels Blockly und exec aufrufen kann ?

                                  1 Reply Last reply Reply Quote 0
                                  • liv-in-sky
                                    liv-in-sky last edited by liv-in-sky

                                    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

                                    Image 2.png

                                    wenn das funktioniert , können wir den rest darum-herum-bauen

                                    1 Reply Last reply Reply Quote 0
                                    • Q
                                      Qlink last edited by

                                      @liv-in-sky

                                      das scheint schon ganz gut zu klappen.
                                      curlblockly.PNG curlobj.PNG
                                      wofür ist erstelle Text aus Wert von javascript1.GetAdmin.chk ? Das bleibt bei mir leer ...

                                      Wie kann ich das curl Ergebnis jetzt auswerten und entsprechend weiterverarbeiten ?
                                      Würdest du den exec Befehl in einem Intervall innerhalb Blockly aufrufen ?

                                      Vielen Dank jedenfalls für deine tolle Hilfe !

                                      1 Reply Last reply Reply Quote 0
                                      • liv-in-sky
                                        liv-in-sky last edited by

                                        das blockly läuft bei mir garnicht - das war nur ein beispiel - damit du das prinzip siehst

                                        der aufruf liegt an dir - entweder dauerhaft mit cron - oder aber es gibt zeiten , wo du es nicht nutzt und mit einem einzelnen datenpunbkt steuerst - so würd ich es machen - wenn nicht gebraucht - keine abfrage - also eher eine kleines steurungsscript voran stellen

                                        aber das schewierigste kommt erst - wir müssen das true aus der antwort generieren - so was habe ich noch nie mit blockly gemacht - ich schwenke da meist auf nodered - das find ich super genial für solche aufgaben

                                        man könnte auch eine funktion ins blockly einführen - ich schau mal was mir einfällt

                                        1 Reply Last reply Reply Quote 0
                                        • liv-in-sky
                                          liv-in-sky last edited by

                                          versuche mal das - bei mir gehts - in blockly importieren !

                                          <xml xmlns="http://www.w3.org/1999/xhtml">
                                            <variables>
                                              <variable type="" id="0pe!D9m|DQ0n2vS{pc^L">i</variable>
                                              <variable type="" id="IAIZZNEg)FEHn(.QqghV">curly</variable>
                                              <variable type="" id="9y]DS@|@Bk_.|#S~9?`Z">result</variable>
                                              <variable type="undefined" id="timeout">timeout</variable>
                                            </variables>
                                            <block type="on_ext" id="#Ua9Q^]Tk`C.~BXLBK~i" x="188" y="88">
                                              <mutation items="1"></mutation>
                                              <field name="CONDITION">ne</field>
                                              <field name="ACK_CONDITION"></field>
                                              <value name="OID0">
                                                <shadow type="field_oid" id="*^SU@bJ`LfXLD:8TSg=6">
                                                  <field name="oid">javascript.1.GetAdmin.chk</field>
                                                </shadow>
                                              </value>
                                              <statement name="STATEMENT">
                                                <block type="variables_set" id="/bC!@nXBob[Lh6!kVdx=">
                                                  <field name="VAR" id="IAIZZNEg)FEHn(.QqghV" variabletype="">curly</field>
                                                  <value name="VALUE">
                                                    <block type="text_join" id="#05!$CXXh9(tA1f]lzmc">
                                                      <mutation items="3"></mutation>
                                                      <value name="ADD0">
                                                        <block type="text" id="fYMXe;OE*KC}sSC5tjA$">
                                                          <field name="TEXT">curl "http://192.168.178.36:8585/?chk=</field>
                                                        </block>
                                                      </value>
                                                      <value name="ADD1">
                                                        <block type="get_value" id="#_;FY?:{NT3OMs%Bi4oO">
                                                          <field name="ATTR">val</field>
                                                          <field name="OID">javascript.1.GetAdmin.chk</field>
                                                        </block>
                                                      </value>
                                                      <value name="ADD2">
                                                        <block type="text" id="YY`yunwF?raQc;tVM~B,">
                                                          <field name="TEXT">"</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </value>
                                                  <next>
                                                    <block type="exec" id="eSJpXB=73vc).D9Q)|[-">
                                                      <mutation with_statement="true"></mutation>
                                                      <field name="WITH_STATEMENT">TRUE</field>
                                                      <field name="LOG"></field>
                                                      <value name="COMMAND">
                                                        <shadow type="text" id="^hQJf(G00rYsUyb-)lCL">
                                                          <field name="TEXT">text</field>
                                                        </shadow>
                                                        <block type="variables_get" id="vKQP4@tnNu-3,Q]f(2x;">
                                                          <field name="VAR" id="IAIZZNEg)FEHn(.QqghV" variabletype="">curly</field>
                                                        </block>
                                                      </value>
                                                      <statement name="STATEMENT">
                                                        <block type="control" id="XBOz5lk(8G!`+$uX*U)L">
                                                          <mutation delay_input="true"></mutation>
                                                          <field name="OID">javascript.1.GetAdmin.singleprocess</field>
                                                          <field name="WITH_DELAY">TRUE</field>
                                                          <field name="DELAY_MS">1000</field>
                                                          <field name="UNIT">ms</field>
                                                          <field name="CLEAR_RUNNING">FALSE</field>
                                                          <value name="VALUE">
                                                            <block type="variables_get" id="jPNU,YG#ZJnce)*MW2Cz">
                                                              <field name="VAR" id="9y]DS@|@Bk_.|#S~9?`Z" variabletype="">result</field>
                                                            </block>
                                                          </value>
                                                          <next>
                                                            <block type="timeouts_settimeout" id="4B5ok$v)19CRt3;9Dru/">
                                                              <field name="NAME">timeout</field>
                                                              <field name="DELAY">1000</field>
                                                              <field name="UNIT">ms</field>
                                                              <statement name="STATEMENT">
                                                                <block type="procedures_callcustomnoreturn" id="zbf*lGC7X0$qd^(T(9|A">
                                                                  <mutation name="etwas tun2">
                                                                    <arg name="i"></arg>
                                                                  </mutation>
                                                                  <value name="ARG0">
                                                                    <block type="variables_get" id="!,=a4X?*2*@4;HAUI_S;">
                                                                      <field name="VAR" id="9y]DS@|@Bk_.|#S~9?`Z" variabletype="">result</field>
                                                                    </block>
                                                                  </value>
                                                                </block>
                                                              </statement>
                                                            </block>
                                                          </next>
                                                        </block>
                                                      </statement>
                                                    </block>
                                                  </next>
                                                </block>
                                              </statement>
                                            </block>
                                            <block type="procedures_defcustomnoreturn" id="t.a?5b7s^$L%nOYdazMf" x="238" y="538">
                                              <mutation statements="false">
                                                <arg name="i" varid="0pe!D9m|DQ0n2vS{pc^L"></arg>
                                              </mutation>
                                              <field name="NAME">etwas tun2</field>
                                              <field name="SCRIPT">dmFyIHJlID0gLy4rPHA+KFthLXpdKyk8XC9wPi4rL2c7DQogICAgIGkgPSAgICBpLnJlcGxhY2UocmUsICAnJDEnKTsNCiAgDQogICAgbG9nKGkpOw0KICAgIHNldFN0YXRlKCJqYXZhc2NyaXB0LjEuR2V0QWRtaW4uc2luZ2xlcHJvY2VzcyIvKkNsb3VkSGVscCovLCBpKTsNCiAgICBpZiAoaSAhPSAidHJ1ZSIpIHtyZXN1bHQgPSAiZmFsc2UiO30=</field>
                                              <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                            </block>
                                          </xml>
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • liv-in-sky
                                            liv-in-sky last edited by liv-in-sky

                                            sieht so aus :

                                            Image 13.png

                                            ach ja - den steuere single process mit result kannst du deaktivieren und den timeout mal auf 500ms setzen - musst du ausprobieren, wie "kurz" er sein darf - wird ja über netzwerk gearbeitet

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            894
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            windows
                                            36
                                            178
                                            36058
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo