Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [auf Umweg gelöst] Fritzbox-LEDs via Telnet steuern

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [auf Umweg gelöst] Fritzbox-LEDs via Telnet steuern

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

      Hallo

      Ich würde gerne die Preset-Anzeige meines Smartwares Homewizard-Systems auf einer alten Fritzbox 7170 über die LEDs anzeigen lassen, dass ich nicht jedesmal die App auf dem aufmachen muss um zu prüfen, ob richtig geschalten wurde.

      Die LEDs der Fritzbox sind manuell über eine Telnet-Verbindung steuerbar. Jetzt würde ich gerne diese Steuerung an IO-Broker übergeben.

      Hierfür habe ich im Smartwares-System virtuelle Schalter angelegt, die auf meinem IO-Broker den Zustand (0;1;2;3) im Objekt "javascript.0/Homewizard/Preset/PresetHome" hinterlegen.

      Konfiguration zur Presetübertragung an IO-Broker

      ! ` > Smartwares Homewizard - Konfig

      1 IO-Broker

      1.1 Manuelle Objekterzeugung

      1.1.1 Name=PresetHome

      1.1.2 Typ=state

      1.1.3 type=Zeichenkette

      2 Virtuelle Schalter(Homewizard)

      2.1 Preset01:

      2.1.1 AN: HTTP GET "http://192.168.102.8:8087/set/PresetHome?value=0"

      2.1.2 AUS: HTTP GET "http://192.168.102.8:8087/set/PresetHome?value=1"

      2.2 Preset23:

      2.2.1 AN: HTTP GET "http://192.168.102.8:8087/set/PresetHome?value=2"

      2.2.2 AUS: HTTP GET "http://192.168.102.8:8087/set/PresetHome?value=3"

      3 Automation(Homewizard)

      3.1 Wenn Voreinstellung zuhause aktiviert dann Preset01 schalten ein

      3.2 Wenn Voreinstellung Abwesend aktiviert dann Preset01 schalten aus

      3.3 Wenn Voreinstellung Schlafen aktiviert dann Preset23 schalten ein

      3.4 Wenn Voreinstellung Urlaub aktiviert dann Preset23 schalten aus `
      Blockly-Testscript mit Sprachausgabe bei Änderung funktioniert einwandfrei

      Jetzt würde ich gerne Eine Telnet-Session zu 192.168.100.3 aufbauen, via Passwort anmelden und dort 4 Befehle zur LED-Steuerung absetzen

      nötige Befehle innerhalb Telnet-Session:

      ! ` > Bei Zuhause(PresetHome=0) aktiviert:

      echo 14,2 >/var/led

      echo 13,1 >/var/led

      echo 4,1 >/var/led

      echo 7,1 >/var/led

      Bei Abwesend(PresetHome=1) aktiviert:

      echo 14,1 >/var/led

      echo 13,2 >/var/led

      echo 4,1 >/var/led

      echo 7,1 >/var/led

      Bei Schlafen(PresetHome=2) aktiviert:

      echo 14,1 >/var/led

      echo 13,1 >/var/led

      echo 4,2 >/var/led

      echo 7,1 >/var/led

      Bei Urlaub(PresetHome=3) aktiviert:

      echo 14,1 >/var/led

      echo 13,1 >/var/led

      echo 4,1 >/var/led

      echo 7,2 >/var/led `
      Manuelle Aktion im Terminal-Fenster anhand PresetHome=0(Preset 'Zuhause' aktiviert)

      ! ` > Fritz!Box web password:

      BusyBox v1.8.2 (2009-04-22 13:54:57 CEST) built-in shell (ash)

      Enter 'help' for a list of built-in commands.

      ermittle die aktuelle TTY

      tty is "/dev/pts/0"

      Console Ausgaben auf dieses Terminal umgelenkt

      echo 13,4 >/var/led

      echo 14,1 >/var/led

      echo 4,1 >/var/led

      echo 7,1 >/var/led `

      Leider bin ich in Linux/Javascript/etc nur wenig bewandert. (Lesen von Scripten und kleine Änderungen kein Problem - Komplette Neuentwicklung leider schon)

      Würde mich daher freuen, wenn mir hier jemand weiterhelfen kann. (Bisherige Scripts in Blockly gemacht oder direkt übernommen und angepasst)

      Gruß Florian

      PS: Angegebene IP-Adressen sind in meinem LAN korrekt… ich verwende einen größeren IP-Adressbereich als üblich (Subnetzmaske:255.255.252.0)

      1 Reply Last reply Reply Quote 0
      • F
        FlorianHerold last edited by

        Problem gelöst, wenn vielleicht auch mit Umweg

        • Expect-Pakete lokal nachinstalliert ("apt-get install expect")

        • Für jede der 4 Stati jeweils ein Script geschrieben. Script des Beispiels "Zuhause" (Abgelegt als "/home/pi/Documents/PresetZuhause"):

        ! ````
        spawn telnet 192.168.100.3
        set timeout 10
        expect "Fritz!Box web password:"
        send "<pass>\r"
        expect "# "
        send "echo 13,4 >/var/led\r"
        expect "# "
        send "echo 14,1 >/var/led\r"
        expect "# "
        send "echo 4,1 >/var/led\r"
        expect "# "
        send "echo 7,1 >/var/led\r"
        expect "# "
        send "exit\r"</pass>

        - Den Aufruf des Scripts dann in Blockly-Script als "Aktionen"-"exec" (Kommando="expect -f /home/pi/Documents/PresetZuhause")
        
        Komplettes "Blockly"-Script:
        >! ````
        on({id: "javascript.0.Homewizard.Preset.PresetHome"/*PresetHome*/, change: "ne"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          if (getState("javascript.0.Homewizard.Preset.PresetHome").val == 0) {
            exec('expect -f /home/pi/Documents/PresetZuhause');
          } else if (getState("javascript.0.Homewizard.Preset.PresetHome").val == 1) {
            exec('expect -f /home/pi/Documents/PresetAbwesend');
          } else if (getState("javascript.0.Homewizard.Preset.PresetHome").val == 2) {
            exec('expect -f /home/pi/Documents/PresetSchlafen');
          } else if (getState("javascript.0.Homewizard.Preset.PresetHome").val == 3) {
            exec('expect -f /home/pi/Documents/PresetUrlaub');
          } else {
            setState("sayit.0.tts.text", "de-DE_CLOUD_Male;" + 'Fehlerhafter Preset Status');
            console.error("sayIt[de-DE_CLOUD_Male]: " + 'Fehlerhafter Preset Status');
          }
        });
        

        Es scheint so zu tun wie es soll. Weitere Tests werden es zeigen.

        Vielleicht hat jemand noch eine bessere Lösung… (Als direktes Javascript/o.ähnl.)

        Gruß Florian

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

        Support us

        ioBroker
        Community Adapters
        Donate

        782
        Online

        31.7k
        Users

        79.8k
        Topics

        1.3m
        Posts

        1
        2
        500
        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