Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. schreda

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    S
    • Profile
    • Following 0
    • Followers 0
    • Topics 7
    • Posts 19
    • Best 3
    • Groups 1

    schreda

    @schreda

    Starter

    3
    Reputation
    30
    Profile views
    19
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    schreda Follow
    Starter

    Best posts made by schreda

    • PC Booten / Herunterfahren und Befehle ausführen (v2)

      Hi.

      Da ich meinen PC gerne über ioBroker booten und herunterfahren möchte, habe ich mir ein keines Script geschrieben, dass es mir ermöglicht über WOL zu booten und über einen HTTP GET request ein shutdown Befehl auszuführen.

      Das Script kann beliebig erweitert werden und es können somit beliebig viele Systembefehle ausgeführt werden!

      Als voraussetzung hierfür ist nur ein Mainboard das WOL unterstützt und ein installierter Web server.
      Am einfachsten ist es ihr installiert XAMPP mit der minimalinstallation (nur Apache) und lässt dann Apache als Dienst laufen. Somit bekommt ihr nichts davon mit.

      Im webroot (htdocs) müsst ihr ein .php file (z.b. index.php) mit den folgenden Inhalt erstellen:

      <?php
      if (isset($_GET['cmd'])) {
          switch ($_GET['cmd']) {
              case 'info':     echo('info');                break;
              case 'shutdown': exec('shutdown -s -f -t 0'); break;
          }
      }
      ?>
      

      In der script Engine erstellt ihr ein neues Javascript mit folgenden Inhalt:

      var wol  = require('wake_on_lan');
      var ping = require('ping');
      
      const objTarget       = 'pc.0.power';
      const ip              = '192.168.0.XXX';
      const macAddr         = 'XX:XX:XX:XX:XX:XX';
      const pollingInterval = 10000;
      
      createState(objTarget, false, {
        read:  false, 
        write: true, 
        desc:  'PC Power switch', 
        type:  'boolean', 
        def:   false
      });
      
      function sendRequest(cmd) {
          try {
              var request = require('sync-request');
              var result  = request(
                 'GET', 
                 'http://'+ip+'/index.php?cmd='+cmd, 
                 { timeout: 10000 }
              );
      
              if (!result.error && result.statusCode) {
                  return result.body;
              }
          } catch(e) {}
      
          return 'error';
      }
      
      setInterval(function () {
          ping.sys.probe(ip, function(isAlive) {
              setState(objTarget, isAlive, true);
          });
      }, pollingInterval);
      
      on({ id: 'javascript.0'+objTarget, change: 'any', ack: false }, function (obj) {
          if (obj.state.val == false) {     
              sendRequest('shutdown');
              log('powered off '+objTarget, 'info'); 
          } else {
              wol.wake(macAddr);
              log('powered on '+objTarget, 'info');  
          }
      });
      

      Ihr müsst die Module sync-request, ping und wake_on_lan in den settings der Script Engine hinzufügen, damit sie auch geladen werden undverfügbar sind (Instanz einstellungen).

      Schlussendlich könnt ihr mit dem Objekt javascript.0.pc.0.power (wie im Javascript file festgelegt) erstellen um den State zu triggern.

      Wie gesagt, es ist möglich das Ganze zu erweitern und es können noch parameter für die Befehle hinzugefügt werden usw...

      posted in Praktische Anwendungen (Showcase)
      S
      schreda
    • RE: Speicherort ioBroker auf Synology NAS - Docker

      @Negalein said in Speicherort ioBroker auf Synology NAS - Docker:

      @schreda sagte in Speicherort ioBroker auf Synology NAS - Docker:

      Beim Docker Container von buanet läuft die iobroker Instanz im hintergrund, was meiner Meinung nach suboptimal ist. Docker kann somit nicht mehr einen eventuellen crash erkennen... Um das zu ändern musst du im im file /opt/scripts/iobroker_startup.sh auf Zeile 54 das & zum schluss entfernen und alle nachfolgenden Zeilen löschen.

      Wie komme ich zu der Datei? Bzw. wo finde ich die auf der Synology?

      Dazu muss man in das Terminal des Docker-Containers gehen und dann mit vi oder nano die Datei öffnen.
      Falls kein editor installiert ist, einfach mit apt install nano installieren

      posted in ioBroker Allgemein
      S
      schreda
    • RE: [Adapter] Neuer radar2-Adapter

      Hi

      Ich nöchte gerne auf folgenden GitHub issue verweisen:
      https://github.com/frankjoke/ioBroker.radar2/issues/17

      Ich habe mir mittlerweile die MAC-Adressen-Erkennung selbst geschrieben und möchte diese gerne teilen:

      const objPrefix          = 'geofence.';
      const objPostfixIsHere   = '.isHere';
      const objPostfixLastSeen = '.lastSeen';
      
      const arp_scan_cmd      = 'sudo arp-scan --interface=wlan0 -lgq --retry=5 --timeout=400';
      const arp_scan_interval = 20 * 1000; // ms
      const device_timeout    = 3; // min
      const welcomeTimeDelay  = 20 * 1000; // ms
      
      const macs = [
          { 'id': 'id1', 'mac':  'XX:XX:XX:XX:XX:XX'},
          { 'id': 'id2', 'mac':  'XX:XX:XX:XX:XX:XX'},
          { 'id': 'id3', 'mac':  'XX:XX:XX:XX:XX:XX'}
      ];
      
      for (var i in macs) {
          createState(objPrefix + macs[i].id + objPostfixIsHere,   false, { type: 'boolean', def: false });
          createState(objPrefix + macs[i].id + objPostfixLastSeen, false, { type: 'string', def: '' });
      }
      createState(objPrefix + 'nHere', false, { read: true, write: true, type: 'number', def: 0 });
      
      setInterval(() => {
          exec(arp_scan_cmd, (err, stdout, stderr) => {
              if (!err) {
                  var macs_found = '';
                  for (var i in macs) {
                      if (stdout.includes(macs[i].mac.toLowerCase())) {
                          macs_found += macs[i].mac + ' ';
                          setState(objPrefix + macs[i].id + objPostfixLastSeen, new Date().toString(),true);
                          setState(objPrefix + macs[i].id + objPostfixIsHere, true, true);
                      } else {
                          var lastSeen = new Date(getState(objPrefix + macs[i].id + objPostfixLastSeen).val);
                          lastSeen.setMinutes(lastSeen.getMinutes() + device_timeout)
                          if (new Date() > lastSeen) {
                              log('Device ' + macs[i].mac + ' went inactive', 'debug');
                              setState(objPrefix + macs[i].id + objPostfixIsHere, false, true);
                          }                 
                      }
                  }
                  if (macs_found) {
                      log('MACS found: '+macs_found, 'debug');
                  }
      
                  var nHere = 0;
                  for (var i in macs) {
                      if (getState(objPrefix + macs[i].id + objPostfixIsHere).val) {
                          nHere++;
                      }
                  }
                  setState(objPrefix + 'nHere', nHere, true);
              } else {
                  log(err.message, 'error');
              }
          });
      }, arp_scan_interval);
      
      for (var i in macs) {
          const mac = macs[i];
      
          on({ id: OBJ_JS_INSTANCE + objPrefix + mac.id + objPostfixIsHere, change: 'ne', val: true }, (obj) => { 
              log('Devie ' + mac.mac + ' went active', 'debug');
              // user func
          });
      }
      

      Sollte zugleich eine feature suggestion sein, um eine MAC-only-detection zu ermöglichen

      xolom created this issue in frankjoke/ioBroker.radar2

      closed Use only MAC #17

      posted in Entwicklung
      S
      schreda

    Latest posts made by schreda

    • RE: Adapter: DasWetter

      Hi.

      Ich habe das Problem, dass durch den Adapter die Vis regelmäßig neu geladen wird. Das ist ziemlich nervig. Habe ewig gebraucht bis ich herausgefunden habe, dass es von diesem Adapter kommt.
      Irgendjemand eine Idee, das weiter zu debuggen?

      posted in ioBroker Allgemein
      S
      schreda
    • RE: Wetter Icons werden auf dem Tablet nicht angezeigt

      Super, Danke!

      posted in Visualisierung
      S
      schreda
    • RE: [Adapter] Neuer radar2-Adapter

      @frankjoke
      Ich hatte genau die selbe Frage auf GitHub gestellt und da hast du anders geantwortet 😉
      Nunja, es hat mit dem radar Adapter leider nicht funktioniert..

      posted in Entwicklung
      S
      schreda
    • RE: [Adapter] Neuer radar2-Adapter

      Hi

      Ich nöchte gerne auf folgenden GitHub issue verweisen:
      https://github.com/frankjoke/ioBroker.radar2/issues/17

      Ich habe mir mittlerweile die MAC-Adressen-Erkennung selbst geschrieben und möchte diese gerne teilen:

      const objPrefix          = 'geofence.';
      const objPostfixIsHere   = '.isHere';
      const objPostfixLastSeen = '.lastSeen';
      
      const arp_scan_cmd      = 'sudo arp-scan --interface=wlan0 -lgq --retry=5 --timeout=400';
      const arp_scan_interval = 20 * 1000; // ms
      const device_timeout    = 3; // min
      const welcomeTimeDelay  = 20 * 1000; // ms
      
      const macs = [
          { 'id': 'id1', 'mac':  'XX:XX:XX:XX:XX:XX'},
          { 'id': 'id2', 'mac':  'XX:XX:XX:XX:XX:XX'},
          { 'id': 'id3', 'mac':  'XX:XX:XX:XX:XX:XX'}
      ];
      
      for (var i in macs) {
          createState(objPrefix + macs[i].id + objPostfixIsHere,   false, { type: 'boolean', def: false });
          createState(objPrefix + macs[i].id + objPostfixLastSeen, false, { type: 'string', def: '' });
      }
      createState(objPrefix + 'nHere', false, { read: true, write: true, type: 'number', def: 0 });
      
      setInterval(() => {
          exec(arp_scan_cmd, (err, stdout, stderr) => {
              if (!err) {
                  var macs_found = '';
                  for (var i in macs) {
                      if (stdout.includes(macs[i].mac.toLowerCase())) {
                          macs_found += macs[i].mac + ' ';
                          setState(objPrefix + macs[i].id + objPostfixLastSeen, new Date().toString(),true);
                          setState(objPrefix + macs[i].id + objPostfixIsHere, true, true);
                      } else {
                          var lastSeen = new Date(getState(objPrefix + macs[i].id + objPostfixLastSeen).val);
                          lastSeen.setMinutes(lastSeen.getMinutes() + device_timeout)
                          if (new Date() > lastSeen) {
                              log('Device ' + macs[i].mac + ' went inactive', 'debug');
                              setState(objPrefix + macs[i].id + objPostfixIsHere, false, true);
                          }                 
                      }
                  }
                  if (macs_found) {
                      log('MACS found: '+macs_found, 'debug');
                  }
      
                  var nHere = 0;
                  for (var i in macs) {
                      if (getState(objPrefix + macs[i].id + objPostfixIsHere).val) {
                          nHere++;
                      }
                  }
                  setState(objPrefix + 'nHere', nHere, true);
              } else {
                  log(err.message, 'error');
              }
          });
      }, arp_scan_interval);
      
      for (var i in macs) {
          const mac = macs[i];
      
          on({ id: OBJ_JS_INSTANCE + objPrefix + mac.id + objPostfixIsHere, change: 'ne', val: true }, (obj) => { 
              log('Devie ' + mac.mac + ' went active', 'debug');
              // user func
          });
      }
      

      Sollte zugleich eine feature suggestion sein, um eine MAC-only-detection zu ermöglichen

      xolom created this issue in frankjoke/ioBroker.radar2

      closed Use only MAC #17

      posted in Entwicklung
      S
      schreda
    • RE: Wetter Icons werden auf dem Tablet nicht angezeigt

      Es kann eigentlich nur an der VIS App liegen, da es mit allen anderen Browsern funktioniert...

      posted in Visualisierung
      S
      schreda
    • RE: Wetter Icons werden auf dem Tablet nicht angezeigt

      Hab das selbe Problem. Nur die ioBroker Vis app zeigt die Grafiken nicht an. Hab sicherheitshalber nochmal gechekt obs eh png und keine svg Grafiken sind..

      @sigi234 Welches Widget verwendest du zum anzeigen der Grafiken? Ich verwende String img src, eventuell liegts daran?

      posted in Visualisierung
      S
      schreda
    • Ladeanzeige für Flot anpassen

      Ist es möglich die Ladeanzeige für Flot anzupassen?

      Bei mir dauert es immer ein wenig, bis die Diagramme geladen sind und der Grauße Bildschirm sieht irgendwie unschön aus.

      2d105ef1-e79f-46c4-b1e3-755ddc4c9b5b-image.png

      Gruß
      André

      posted in Visualisierung
      S
      schreda
    • RE: Austausch zu neuem Alexa2 (Alpha 2.1!) SSML Feature

      Kann man irgendwie SSML auch in Kombination mit dem "announcement" command benutzen?

      posted in Cloud Dienste
      S
      schreda
    • Flot smoothing

      Ich hab bei Flot das Problem, dass bei einem refresh durch flot smoothing deaktiviert wird. Jemand das selbe Problem?

      posted in Error/Bug
      S
      schreda
    • RE: IoBroker.owntracks

      Hi.

      Ich bin gerade dabei den Adapter einzurichten. Eigentlich funkt alles top, jedoch bekomm ich von einen Handy die locations nicht rein.
      Der Payload wird jedenfalls laut log empfangen. Die Objekte werden allerdings nicht erstellt.
      Bei meinen zweiten Gerät funktionierts ohne Probleme...

      posted in ioBroker Allgemein
      S
      schreda
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo