Navigation

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

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    M
    • Profile
    • Following 0
    • Followers 0
    • Topics 6
    • Posts 37
    • Best 4
    • Groups 1

    Mephist0

    @Mephist0

    4
    Reputation
    18
    Profile views
    37
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Mephist0 Follow
    Starter

    Best posts made by Mephist0

    • RE: [GELÖST] Telegram: "Last received request" Antwort

      @dslraser Ich fürchte ich kann dir nicht ganz folgen. In meinem Eingangsposting hatte ich einen Screenshot gepostet.
      Dort sieht man, wie zunächst ich eine Abfrage starte mit der Anweisung "Status". Die wird dann erstmal mit dem unerwünschten "Received Request" quittiert, bevor dann die eigentliche (von mir programmierte) Antwort kommt.
      Danach sieht man dieselbe Abfrage von dem Telegram User "Jana" aus meinem Netzwerk, deren Request-Bestätigung ich ebenfalls erhalten.

      Und von meinem Coding kann ich schlecht was zeigen, weil es ein solches Coding eben nicht gibt 🙂
      Ich kann aber gerne mal einen Ausschnitt aus meiner Methode hier posten:

      on({id: "telegram.0.communicate.request", change: "ne"}, function (obj) {
          //Initialisiere Variablen
          objectID = "";
          objectTxt = "";
          room = "";
          activity = "";
          temperatur = "";
          gueltigerBefehl = false;
      
          var stateval = getState('telegram.0.communicate.request').val;              // Statevalue in Variable schreiben
          var benutzer = stateval.substring(1,stateval.indexOf("]"));                 // Benutzer aus Statevalue extrahieren
          var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length);   // Befehl/Text aus Statevalue extrahieren
          
          if(stateval == ''){
              return;
          }
          
          var anrede = benutzer;
      
      if (befehl.search(/(?=.*(\bSTATUS|\bSTAND)).+/ig) != -1) {
              var alleZu = true;
              var statusMessage = 'Ich sehe sofort nach, ' + zufaelligeAnrede(anrede) + '\n';
      
              // Fenster prüfen *************************************
              if(getState(cFensterBadStatus).val==1){
                  alleZu = false;
                  statusMessage = statusMessage + "\nBadfenster ist offen.";
              }
              if(getState(cFensterWCStatus).val==1){
                  alleZu = false;
                  statusMessage = statusMessage + "\nWC-Fenster ist offen.";
              }
      ...
      
       sendTo("telegram", "send", {
                  text: statusMessage,
                  user: benutzer,
              });
      
      posted in Error/Bug
      M
      Mephist0
    • RE: Test Adapter Awtrix-Light (Awtrix 3)

      @haus-automatisierung sagte in Test Adapter Awtrix-Light:

      @mcu sagte in Test Adapter Awtrix-Light:

      Man kann auch Kurven und Bars darstellen:

      Ja, das steht noch als Feature auf Todo dass das auch direkt im Adapter geht.

      @haus-automatisierung Gibt es schon einen Plan, wann du die Bar-Charts hinzufügst?

      Wirklich herausragende Arbeit von dir. Macht richtig Spaß damit zu arbeiten weil alles so einfach und gut funktioniert. DANKE für deinen Einsatz ❤

      posted in Tester
      M
      Mephist0
    • RE: [gelöst] Refresh eines externen Systems

      @Mephist0 sagte in Refresh eines externen Systems:

      var nextMovementCheck = new Date();

      Das ist einfach ein Zahlenwert in Sekudnen. Da du alle 10 Minuten prüfen willst, sähe es bei dir so aus:

          var nextCheck = new Date();
      
          nextCheck.setMinutes(nextCheck.getMinutes() + 10);
      
          var hrs = nextCheck.getHours();
      
          var mins = nextCheck.getMinutes();
         (...)
      
      posted in JavaScript
      M
      Mephist0
    • RE: [GELÖST] Telegram: "Last received request" Antwort

      @dslraser Das wars! Das habe und hätte ich wohl sehr sehr lange nicht selbst gefunden. Es bleibt jetzt aus. Vielen lieben Dank! (wie auch immer das aktiviert wurde)

      posted in Error/Bug
      M
      Mephist0

    Latest posts made by Mephist0

    • RE: Test Adapter Awtrix-Light (Awtrix 3)

      @haus-automatisierung sagte in Test Adapter Awtrix-Light:

      ja möglichst einfach und verständlich, aber trotzdem flexibel sein. SQL-Statements gehören da also absolut nicht hin Wer das braucht, kann ja gleich eine eigene Ap

      Ok verstanden. Als einfache Alternative kannst du das ja auch erstmal in die Expertenapps mit aufnehmen. Dann kann jeder selbst die Datenpunkte in ein Objekt reinschreiben. Z.B. durch Semikolon getrennt.

      posted in Tester
      M
      Mephist0
    • RE: Test Adapter Awtrix-Light (Awtrix 3)

      @haus-automatisierung sagte in Test Adapter Awtrix-Light:

      @mephist0 Gibt keinen Zeitplan. History ist eh noch ein größeres Thema, da der selektierte Bereich noch undefiniert ist. Aktuell werden einfach die letzten x Werte genommen. Da muss noch mehr Auswahl geboten werden und dann wird alles getestet.

      Gern mal ein Konzept erstellen wie das aussehen könnte mit Aggregationen und Zeiträumen um möglichst viel abzudecken

      Hast du in der API denn freien Zugriff auf die volle SQL Syntax? Wenn ja könntest du ja sogar das SQL dem User selbst definieren lassen. Wobei du dann bisschen wegen SQL Injection aufpassen müsstest. Wobei ja eigentlich nur Leute Zugriff haben die dem System nix böses wollen. Höchstens dass jemand was aus Unwissenheit verbockt. Daher könnte man halt prüfen, dass ein Statement nur mit SELECT (und nicht mit UPDATE/INSERT/DELETE etc.) arbeitet. Vielleicht gibt es auch ne fertige Library gegen SQL Injection?

      Ansonsten ist das Problem, dass es zu viele verschiedene Anwendungsfälle gibt. Ich habe mir auf meiner SQL Datenbank eigene Views gebaut die gewisse Fragen beantworten. Auch das könnte man noch als Option bieten, dass man garnicht zwingend auf iobroker Datenpunkte geht sondern auf ne View. Weiß aber nicht wie das (auch Rechte/Rollenmäßig gegenüber der DB) im Backend abgebildet ist.

      tl;dr: Prüfen ob freier SQL Syntax möglich ist. Sonst hätte ich die folgenden Optionen als Default vorgeschlagen:

      • Wähle die letzten x Datenpunkte basierend auf Timestamp
      • Wähle die Top x Werte (also höchster Wert)
      • Wähle die Low x Werte (also niedrigster Wert)
      • Optional: Wähle die letzten/höchsten/niedrigsten x Werte PRO TAG
      • Optional: Angabe eines Zeitraums (z.B. letzten 7 Tage). Dann müsste man irgendwie die Werte (deren Anzahl potentiell > 19 ist) irgendwie zusammenführen. Da könnte man dem User wieder die Option auf SUM, MIN, MAX, Ø geben.

      x kann jeweils vom User gewählt werden und ist ein Wert zwischen 1 und 19. 19 ist die maximale Anzahl an Pixel in der Breite die das Chart/die Uhr darstellen kann - ggf. mehr falls kein Icon angezeigt wird.

      PS: Ich arbeite selbst in der Datenvisualisierung und hab viel mit SQL zu tun. Wenn ich dir da Statements schreiben soll melde dich gerne. Müsste dann nur vorher die Rahmeninfos austauschen.

      posted in Tester
      M
      Mephist0
    • RE: Test Adapter Awtrix-Light (Awtrix 3)

      @mephist0 sagte in Test Adapter Awtrix-Light:

      @haus-automatisierung Gibt es schon einen Plan, wann du die Bar-Charts hinzufügst?

      Weiß nicht ob das unter gegangen ist... @haus-automatisierung Gibt es schon einen Plan, wann du die Bar-Charts hinzufügst? Kann man vielleicht irgendwie unterstützen?

      posted in Tester
      M
      Mephist0
    • RE: Test Adapter Awtrix-Light (Awtrix 3)

      @haus-automatisierung sagte in Test Adapter Awtrix-Light:

      @mcu sagte in Test Adapter Awtrix-Light:

      Man kann auch Kurven und Bars darstellen:

      Ja, das steht noch als Feature auf Todo dass das auch direkt im Adapter geht.

      @haus-automatisierung Gibt es schon einen Plan, wann du die Bar-Charts hinzufügst?

      Wirklich herausragende Arbeit von dir. Macht richtig Spaß damit zu arbeiten weil alles so einfach und gut funktioniert. DANKE für deinen Einsatz ❤

      posted in Tester
      M
      Mephist0
    • RE: exec mit sudo

      Today I learned a thing - or 2. Danke schonmal für eure Antworten.

      Dokumentation / Minimum Working Example für die Nachwelt:

      Ich habe ein test script "reboot" gebaut, das einfach nur einen Reboot durchführen soll.

      #!/bin/bash
      echo "sudo shutdown -r now"
      sudo shutdown -r now
      

      Das Script liegt in /opt/iobroker/. Mein JavaScript lautet:

       exec('sudo /opt/iobroker/reboot', function (error, stdout, stderr) {
                  console.log('stdout: ' + stdout);
                  console.log('stdout: ' + error);
       });
      

      Über das Kommando

      sudo visudo -f /etc/sudoers.d/iobroker
      

      habe ich in /etc/sudoers.d/iobroker folgende neue Zeile ergänzt

      iobroker ALL=(ALL) NOPASSWD: /opt/iobroker/reboot
      

      Auf Basis von @ticaki Hinweis, habe ich dem Script noch die Lese-Rechte entfernt (schreiben konnte es schon vorher nicht) mit dem command sudo chmod 751 reboot

      pi@iobroker-pi: $ ls -l /opt/iobroker
      -rwxr-xr-x+   1 pi       pi          388 Jul 30 10:36 reboot
      pi@iobroker-pi: $ sudo chmod 751 /opt/iobroker/reboot
      pi@iobroker-pi: $ ls -l /opt/iobroker
      -rwxr-x--x+   1 pi       pi          388 Jul 30 10:36 reboot
      

      Ich habe sicherheitshalber iobroker neu gestartet, damit die neuen Einträge auch wirklich neu eingelesen werden.
      Nun wird das Skript ausgeführt.

      Danke euch!

      posted in Skripten / Logik
      M
      Mephist0
    • exec mit sudo

      Ich möchte ein bash script via exec ausführen. Einer der Befehle in dem Script braucht sudo Rechte.
      Wie bekomme ich exec "überredet" ein Script als root auszuführen? Ich bekomme im Log die Fehlermeldung

      stdout: Error: Command failed: echo -e "MyPassword " | sudo -S MyBashScript We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for iobroker: Sorry, try again. [sudo] password for iobroker: Sorry, try again. [sudo] password for iobroker: sudo: no password was provided sudo: 2 incorrect password attempts
      

      Das Passwort ist korrekt. Mein JavaScript command lautet:

      exec('echo -e "MyPassword\n" | sudo -S MyBashScript', function (error, stdout, stderr) {
                  console.log('stdout: ' + stdout);
                  console.log('stdout: ' + error);
       });
      

      Ich habe es schon mit und ohne '\n' probiert. Mein root user auf dem Raspberry heißt pi. Daher habe ich auch

      exec('echo -e "MyPassword\n" | sudo -S -u pi MyBashScript', function (error, stdout, stderr) {
      

      versucht. Leider auch vergeblich. Die Fehlermeldung bleibt dieselbe
      Habe leider in der Suche nichts gefunden. Hat jemand einen Tipp?

      PS: Bitte keine Diskussion darüber ob sudo hier Sinn macht oder ob man das tun sollte.

      posted in Skripten / Logik
      M
      Mephist0
    • RE: Command line 'iobroker update' ohne Bestätigungsabfrage

      @thomas-braun Des Risikos bin ich mir bewusst. Soll auch nicht zum pauschalen permanenten Updaten verwendet werden.

      Danke für die schnelle Antwort. War genau was ich gesucht habe!

      posted in Einsteigerfragen
      M
      Mephist0
    • Command line 'iobroker update' ohne Bestätigungsabfrage

      Wenn ich die Adapter meines iobrokers via console aktualisiere, dann werde ich bei jedem Adapter Update nach einer Bestätigung gefragt.

      iobroker upgrade
      

      Wie kann ich diese Abfrage deaktivieren bzw. alle pauschal mit "Yes" bestätigen?

      Hintergrund: Ich würde mir gerne ein Shell Script bauen, das die verschiedenen Schritte automatisiert. Also:

      iobroker stop
      iobroker backup
      iobroker update
      iobroker upgrade
      shutdown -r now
      

      Das Skript möchte ich dann via exec aufrufen. Das setzt aber voraus, das (auch das upgrade) ohne weitere menschliche Interaktion durchläuft.
      Die Suchfunktion und die Command Line Docu habe ich bemüht, jedoch hat mir da nichts weiter geholfen.

      posted in Einsteigerfragen
      M
      Mephist0
    • RE: [solved]Google home kann iobroker nicht erreichen

      @haselchen Dann bist du in diesem Threat falsch. Dann recherchiere mal, wie man generell Google Home mit iobroker einrichtet. Scheinbar kann/darf ich hier keine Links posten. Aber mit Google/SuFu kommst du auf jeden Fall weiter. Der Threat hier heißt "google-home-assistant-iobroker-einrichten-nutzen"

      posted in Cloud Dienste
      M
      Mephist0
    • RE: [solved]Google home kann iobroker nicht erreichen

      @haselchen Hast du obiges Problem oder willst du das erstmalig initial einrichten?

      posted in Cloud Dienste
      M
      Mephist0
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo