So steuerst du dein VU+ mit dem Fibaro HomeCenter und andersrum...

Geschrieben von boomx

Wir haben vermehrt Anfragen in unserem Forum, bzw. in unserer Facebook-Gruppe bekommen, ob und wie es möglich ist, das VU+ mit dem Fibaro HomeCenter zu steuern. Wir erklären euch mit diesem Tutorial, wie das funktioniert.

Die weißen VU+ Solo SE v2 am besten. Mit diesem wurde auch dieses Tutorial verfasst.

Die Möglichkeiten der Betriebssystem-Software des VU+ sind zu Beginn meiner Meinung nach zu beschränkt. Deshalb empfehle ich euch, dass Ihr euer VU+ auf das alternative Betriebssystem VTI zu flashen. Dann habt Ihr die Möglichkeit z.B. andere Themes zu nutzen, euch für die Sender Picons einzurichten, eigene Boot-Logos zu hinterlegen und diverse andere kleine & große Gimmicks. :) Das benötigte Plugin obenwebif ist dort bereits vorinstalliert.

Eine Anleitung und den Download findet Ihr hier.

VU+ in das HomeCenter integrieren

Ihr benötigt dazu als erstes ein neues Virtuelles Device. Dazu begebt Ihr euch auf dem HomeCenter-Webinterface zu dem Menüpunkt "Devices". Dort klickt Ihr dann links in der Menüleiste auf "Add or remove device".

Hier klickt Ihr auf Durchsuchen im Roten Rechteck

Hier klickt Ihr auf Durchsuchen im Roten Rechteck

Dort sucht Ihr euch dann den Speicherort des heruntergeladenen VD_Solo.vfib. Das Virtuelle Device könnt Ihr euch hier herunterladen. Nach dem Import sollte es folgendermaßen aussehen (und nach dem Hinzufügen des Icons ;) ):

VU+ Virtuelles Device

Das Virtuelle Device im HomeCenter 2

Hier tragt Ihr noch die IP-Adresse eures VU+ ein und speichert, fertig. Hier findet Ihr das dazugehörigen schwarze Icon für das VU+ Solo (Diese müssen für alle Buttons hinterlegt werden, ansonsten springt das Icon wieder auf das blaue Quader zurück):

vu+-icon schwarz

Das Icon für das VU+ Solo

vu+-icon weiß

Und auch für das weiße VU+ Solo

VU+ Nachrichten auf dem Fernseher anzeigen lassen

Als weiteres, geniales Feature könnt Ihr euch Nachrichten in das laufende Fernsehbild einblenden lassen. So kann zum Beispiel eine Benachrichtigung auf dem Fernseher erfolgen, wenn die Waschmaschine fertig ist:

vu_screen

Benachrichtigung auf dem Fernseher, dass die Waschmaschine fertig ist. Die Meldung kann mit einem Klick auf OK weggedrückt werden.

Dazu müsst Ihr euch einfach einen neuen Button in dem Virtuellen Device anlegen und dort folgenden Code hinein kopieren:

Die Nachrichten sind nach dem Muster

aufgebaut. Zur Erklärung:

  • messagetext: Die Nachricht, welche dargestellt werden soll. (Leerzeichen müssen als %20 geschrieben werden; siehe Beispiel oben)
  • messagetype: Nummer von 0-3: 0=Ja/Nein; 1=Info; 2=Message; 3=Attention (Beispiele findet Ihr weiter unten)
  • messagetimeout: Zeit, nach der die Benachrichtigung verschwinden soll. Kann auch weggelassen werden. Dann bleibt die Nachricht solange stehen, bis diese mit OK auf der Fernbedienung bestätigt wird
vu_message

messagetyp: 2=message

messagetyp: 3=attention

Das besondere Highlight. VU+ "steuert" das HomeCenter

Euch ist sicherlich aufgefallen, dass wir dem messagetyp=0 (Ja/Nein) oben keine besondere Beachtung geschenkt haben. ;) Das hat auch einen bestimmten Grund. Mit diesem Nachrichtentyp ist es nämlich möglich, Rückmeldung an das HomeCenter zu senden und anhand dieser Rückmeldungen bestimmte Aktionen auszuführen.

vu_ja_nein

messagetyp: 0=Ja/Nein

Dafür möchten wir euch mal an einem konkreten Beispiel die mögliche Nutzung vorstellen:

Stellt euch vor, Ihr sitzt Abends auf dem Sofa und schaut fern. Mit dem Laufe der Dämmerung wird es draußen immer dunkler und dunkler. Zwangsläufig wird es auch bei euch im Wohnzimmer immer dunkler. Nun unterschreitet der Lux-Wert im Raum einen bestimmten Wert. Klar, Ihr könntet zum Beispiel eine Stehlampe in diesem Fall automatisch einschalten lassen. Aber vielleicht wollt Ihr das in diesem Moment ja gar nicht, weil Ihr euch grad einen spannenden Film anschaut... Nun, ab jetzt könnt Ihr euch einfach eine Abfrage auf den TV schicken, mit dem Ihr bestimmen könnt, ob die Stehlampe nun eingeschaltet wird, oder nicht...

vu_stehlampe

Soll die Stehlampe eingeschaltet werden?

Dazu müsst Ihr euch nur einen Button im Virtuellen Device des VU+ einrichten, welcher ausgelöst wird, wenn der Lux-Wert eines devices auf unter 50 Lux fällt. Dann kopiert Ihr folgenden Code in diesen Button:

Um den Button des Virtuellen Devices zu nutzen, müsst Ihr folgende Zeilen anpassen:

  1. Zeile 6: Message, welche geschickt werden soll + den Counter, wie lange die Nachricht angezeigt werden soll (timeout)
  2. Zeile 11: Counter an timeout angleichen
  3. Zeile 32: Aktion, welche bei Antwort JA ausgeführt werden soll
  4. Zeile 41: Aktion, welche bei Antwort NEIN ausgeführt werden soll
  5. Zeile 51: Aktion, welche beim Verstreichen der TimeOut-Zeit angewendet werden soll

Das war es auch schon... Wir wünschen euch viel Spass mit dem virtuellen Device :)

Diesen Blogpost hat geschrieben ...

boomx

66 Kommentare

  • Hey
    super geil das das endlich mal jemand gemacht hat

    VIELEN DANK.

    Warum sollte man das VTI Image drauf machen und nicht das Open ATV, nicht falsch verstehen aber welches ist das bessere ?

    Woher hast du die Befehle für die einzelnen Tasten hast evtl. ne Liste, weil ich mir noch ein paar Buttons selber hinzufügen möchte z.B. REC, EPG etc.

    Würde gerne die Komplette Fernbedienung in Fibaro haben.

    Grund ist das der VU+ Reciver im Keller steht und ich den VU+ Reciver dann super über Fibaro steuern kann.

    Gruss Splinter

  • Hallo,

    Habe dies Datei installiert, bekomme aber keine Befehle zur Box. Könnte es sein, das es sich bei einer DUO²
    etwas anders verhält mit den Befehlen als bei einer Solo.

    MFG Christian

  • Hallo,
    hätte eine Frage ich würde gerne wenn es klingelt, dass ich den Türöffner betätigen kann
    (der Türöffner funktioniert bei mir einfach über ein Fibaro Relay)

    meine Frage jetzt wie schaut das Skript aus
    du hast ja geschrieben das man
    Zeile 32: Aktion, welche bei Antwort JA ausgeführt werden soll
    Zeile 41: Aktion, welche bei Antwort NEIN ausgeführt werden soll
    Wie könnte das aussehen die ID des Türöffners wäre 107

    DANKE schon mal :-)
    LG
    Duschi

    • Hi,

      das Relay kannst du ja nur an oder ausschalten. Das machst du mit fibaro:call(ID, 'turnOn') oder turnOff. Mehr muss die Szene ja eigentlich nicht machen.

      Gruß :)

      • Hallo,
        ich schaffe es einfach nicht, habe von deinem Skript die Zeile 32 mal so angepasst
        fibaro:call(107, "turnOn");

        Hätte gleich noch eine Frage geht das, dass ich der Türöffner (also ID 107) nur 5s lang schalte und dann dieser sich ausschaltet ?

        DANKE Daniel für deine Hilfe
        lg

        • Hi,

          was passiert denn genau? Nichts? Erkennt das HC2 überhaupt, welche Taste du drückst? Wird im VD etwas debuggt? Bekommst du die Nachricht auf deinen Fernseher?

          Das, was du umsetzen willst, könnte so umgesetzt werden:

          fibaro:call(74, "turnOn")
          fibaro:sleep(5*1000)
          fibaro:call(117, "turnOff")

          • Hallo,
            vielleicht kurz zur Info ich verwende keine VD sondern eine gigablue quad funktioniert aber alles genau so.

            Damit ich nicht ständig an meiner Haustüre läuten muss :-)
            teste ich es so. ich schalte das Küchenlicht ein und ich möchte das im Wohnzimmer wenn ich mit JA am Fernseher antworte, dass das Licht für 5s an geht.

            so was passiert ich schalte das Licht in der Küche an, am Fernseher kommt die Meldung mit der Frage ob ich das Licht im Wohnzimmer einschalten möchte diese bestätige ich mit JA.
            die Meldung verschwindet dann am Fernseher jedoch das Licht geht nicht an im Wohnzimmer

            Den virtuellen Button von der gigablue betätige ich über eine Szene welche nur
            "Küchenlicht = EIN und Fernseher = EIN dann gigablue Button 131 betätigen" macht

          • Hi,

            poste mal deinen Code. Das VD nutzt du ja ;) du meinst, dass du kein VU+ nutzt. Und schick mir mal bitte den Debug des Buttons.

            Gruß

  • Hallo,
    hab mal einfach den Code kopiert hoffe das geht so

    ...

    irgendwo zwischen Sekunde 4 und 12 habe ich habe ich am Fernseher mit JA bestätigt

    Wie du sicher schon bemerkt hast bin ich eher der die Codes kopiert und dann hofft, dass das funktioniert was ihr Spezialisten
    programmiert habt :-) funktioniert

    lg

    • Hi,

      kannst du den Code bitte nochmal neu von der Seite kopieren. Scheint, als ob es beim Kopieren ein Problem gegeben hat. Bei mir hat dein Skript funktioniert. Der Debug müsste übrigens so aussehen:


      [DEBUG] 21:32:38: Keine rechtzeitige Antwort
      [DEBUG] 21:32:38: c & d == NIL
      [DEBUG] 21:32:38: e & f == NIL
      [DEBUG] 21:32:39: 27
      [DEBUG] 21:32:39: Keine rechtzeitige Antwort
      [DEBUG] 21:32:39: c & d == NIL
      [DEBUG] 21:32:39: e & f == NIL
      [DEBUG] 21:32:40: 28
      [DEBUG] 21:32:40: a & b == NIL
      [DEBUG] 21:32:40: Antwort lautet JA!
      [DEBUG] 21:32:40: e & f == NIL
      [DEBUG] 21:32:40: COUNTER OFF

      Gruß

  • Hallo ,
    nochmal der Debug
    egal ob ich mit ja oder nein antworte sieht dieser gleich aus

    [DEBUG] 18:12:34: a & b == NIL
    [DEBUG] 18:12:34: c & d == NIL
    [DEBUG] 18:12:34: e & f == NIL
    [DEBUG] 18:12:35: 27
    [DEBUG] 18:12:35: a & b == NIL
    [DEBUG] 18:12:35: c & d == NIL
    [DEBUG] 18:12:35: e & f == NIL
    [DEBUG] 18:12:36: 28
    [DEBUG] 18:12:36: a & b == NIL
    [DEBUG] 18:12:36: c & d == NIL
    [DEBUG] 18:12:36: e & f == NIL
    [DEBUG] 18:12:37: 29
    [DEBUG] 18:12:37: a & b == NIL
    [DEBUG] 18:12:37: c & d == NIL
    [DEBUG] 18:12:37: e & f == NIL
    [DEBUG] 18:12:38: 30
    [DEBUG] 18:12:38: a & b == NIL
    [DEBUG] 18:12:38: c & d == NIL
    [DEBUG] 18:12:38: e & f == NIL
    [DEBUG] 18:12:38: COUNTER OFF

  • Hallo,

    folgende Antwort bekomme ich wenn ich den Link aufrufe was immer das bedeutet ?

    -
    True
    Answer is NO!

    Danke nochmal für deine Bemühungen :-)
    lg

  • Nein sollte eigentlich Deutsch sein

    liegt wahrscheinlich irgendwie an dem Image das die Gigablue oben
    Ich glaube ich gebe mich zufrieden, dass ich es am Fernseher anzeigen kann, dass jemand vor der Tür steht.

    DANKE nochmal für deine Hilfe

    lg
    Duschi

    • Da wäre ich jetzt als letztes drauf gekommen. Ja, wird an dem Image liegen.

      Du kannst auch einfach die Texte in dem Quellcode in Englisch übersetzen. Also anstatt "Antwort ist NEIN!" "Answer is NO!" eintragen. Dann geht das auch. Müsstest nur mal schauen, wie es bei "Keine rechtzeitige Antwort" übersetzt ist ;)

      Kein Problem :)

  • Hey boomx,
    sehr coole Sache mit dem Vu+ VD. Habs importiert & funktionierte auch auf Anhieb mit der Steuerung der VU+.
    Hätte da noch n paar Fragen zum Verständnis. Wo muss das Script für die Waschmaschinen Nachricht zwischen damit es am TV angezeigt wird? Oder wie wird das integriert? So sieht mein push Script aktuell aus:

    --[[
    %% properties
    26 power
    %% globals
    --]]

    local wallplug = 26 -- wallplug
    local standby = 3 -- Verbrauch, unter dem der Standby-Modus erkannt werden soll
    local phone1 = 40 -- ID iPad
    local phone2 = 38 -- ID iPhone Mausi
    local phone3 = 37 -- ID iPhone Me

    if (fibaro:countScenes()>1)
    then
    fibaro:abort();
    fibaro:debug('abort');
    end

    local run = 0
    local counter = 0
    local currentDate = os.date('*t');
    local power = fibaro:getValue(wallplug, "power")

    if ((tonumber(fibaro:getValue(wallplug, "power")) > 1 ) and run == 0) then
    local start = (os.time())
    fibaro:debug('Waschmaschine ist an...')
    fibaro:debug('Verbrauch = '..power..' Watt')
    fibaro:sleep(120*1000);
    run = 1
    end

    while run == 1 do

    if (tonumber(fibaro:getValue(wallplug, "value")) == 1) then
    if ((tonumber(fibaro:getValue(wallplug, "power")) standby)
    then
    fibaro:debug('Waschmaschine wieder an; counter resettet');
    counter = 0
    end
    elseif (tonumber(fibaro:getValue(wallplug, "value")) == 0) then
    fibaro:debug("Waschmaschine aus... Abort scene")
    run = 0
    counter = 0
    end
    fibaro:sleep(10*1000)
    end

    Danke für Deine Mühen

  • Es wird nur ein Teil des kompletten Kommentars gepostet. Sorry wenn ich hier beim Versuch, den richtigen Ausschnitt zu posten, alles voll spamme. Wenns geht bitte wieder löschen.

  • Hi, habe folgendes Problem, ich würde gerne ein Relais schalten mit der Dreambox mit dem Script, aber bekomme es einfach nicht hin. Bin neuling was Fibaro und LUA betrifft,

    Die ID vom Relais ist 6, wenn ich in die Zeile 32 fibaro:call(6, "turnOn") eingebe und auf der Box auf JA gehe tut sich einfach nichts.
    im Debug habe ich diese Meldungen die mir nichts sagen?
    [DEBUG] 23:53:48: 0
    [DEBUG] 23:53:49: a & b == NIL
    [DEBUG] 23:53:49: c & d == NIL
    [DEBUG] 23:53:49: e & f == NIL
    [DEBUG] 23:53:50: 1
    [DEBUG] 23:53:50: a & b == NIL
    [DEBUG] 23:53:50: c & d == NIL
    [DEBUG] 23:53:50: e & f == NIL
    [DEBUG] 23:53:51: 2
    [DEBUG] 23:53:51: a & b == NIL
    [DEBUG] 23:53:51: c & d == NIL
    [DEBUG] 23:53:51: e & f == NIL
    [DEBUG] 23:53:52: 3
    [DEBUG] 23:53:52: a & b == NIL
    [DEBUG] 23:53:52: c & d == NIL
    [DEBUG] 23:53:52: e & f == NIL
    [DEBUG] 23:53:53: 4

    • Hi,

      dann ist die Antwort auf Englisch und du musst diese ändern. Schau mal die Kommentare durch, da hatten wir das Thema schon einmal und dort konnten wir das Problem so lösen.

      Gruß

      • Verdammt, hatte mir vorhin die antworten angesehen, und diese waren wirklich auf englisch, geändert und siehe da es funzt alles, habe mich jetzt nur mit dem counter gespielt.

        Danke dir

        • welchen befehl benötige ich wenn fibaro alle 2 sekunden den status von der box abfragt zb.: /web/powerstate

          Den Code hab ich schon einwenig bearbeitet und er funzt zum teil, der status wird halt nicht ständig abgefragt, sondern nur wenn ich es aktiviere, was mir leider nicht viel nutzt.

          Hier mein Code local selfId = fibaro:getSelfId()
          local ip = fibaro:get(selfId, "IPAddress")
          local answer = 0

          local url = "/web/powerstate"

          local ws = Net.FHttp(ip, 80)
          local resp = ws:GET(url)

          while (answer == 0) do
          fibaro:sleep(1*1000)
          fibaro:debug(counter);
          local url2 = "/web/powerstate"
          local ws2 = Net.FHttp(ip, 80)
          local resp2 = ws2:GET(url2)
          --KEINE ANTWORT GEKOMMEN
          a, b = string.find(resp2,"No answer in time")
          if (a == nil and b == nil) then
          fibaro:debug('a & b == NIL')
          else
          response_false = string.sub(resp2, a, b)
          fibaro:debug(response_false)
          end

          -- ANTWORT:JA
          c, d = string.find(resp2,"false")
          if (c == nil and d == nil) then
          fibaro:debug('c & d == NIL')
          else
          response_true_yes = string.sub(resp2, c, d)
          fibaro:call(6, "turnOn");fibaro:debug(response_true_yes)
          answer = 1
          end
          -- ANTWORT: NEIN
          e, f = string.find(resp2,"true")
          if (e == nil and f == nil) then
          fibaro:debug('e & f == NIL')
          else
          response_true_no = string.sub(resp2, e, f)
          fibaro:call(6, "turnOff");fibaro:debug(response_true_no);
          answer = 1
          end
          end
          -- COUNTER ABGELAUFEN oder ANTWORT ERFOLGT
          if (answer == 1) then
          -- ANTWORT ERFOLGT
          fibaro:debug('Response is')
          else
          -- COUNTER IST ABGELAUFEN. ALTERNATIVE?
          fibaro:call(6, "turnOff");fibaro:debug('COUNTER OFF');
          end

  • Moin
    Bei mir läuft es leider nicht. Hab es auch schon mit englisch probiert leider ohne Erfolg:
    Hat jemand eine Idee, wo ich den Fehler mache?

    local selfId = fibaro:getSelfId()
    local ip = fibaro:get(selfId, "IPAddress")
    local counter = 0
    local answer = 0

    local url = "/web/message?text=Lux-Wert%20unter%2050!%20Stehlampe%20einschalten?&type=0&timeout=30"

    local ws = Net.FHttp(ip, 80)
    local resp = ws:GET(url)

    while (counter <= 30 and answer == 0) do
    fibaro:sleep(1*1000)
    fibaro:debug(counter);
    counter = counter + 1
    local url2 = "/web/messageanswer?getanswer=now"
    local ws2 = Net.FHttp(ip, 80)
    local resp2 = ws2:GET(url2)
    --KEINE ANTWORT GEKOMMEN
    a, b = string.find(resp2,"No answer in time")
    if (a == nil and b == nil) then
    fibaro:debug('a & b == NIL')
    else
    response_false = string.sub(resp2, a, b)
    fibaro:debug(response_false)
    end
    -- ANTWORT:JA
    c, d = string.find(resp2,"Answer is YES!")
    if (c == nil and d == nil) then
    fibaro:debug('c & d == NIL')
    else
    response_true_yes = string.sub(resp2, c, d)
    fibaro:call(17, "turnOn");fibaro:debug(response_true_yes);
    answer = 1
    end
    -- ANTWORT: NEIN
    e, f = string.find(resp2,"Answer is NO!")
    if (e == nil and f == nil) then
    fibaro:debug('e & f == NIL')
    else
    response_true_no = string.sub(resp2, e, f)
    fibaro:debug(response_true_no);
    answer = 1
    end
    end
    -- COUNTER ABGELAUFEN oder ANTWORT ERFOLGT
    if (answer == 1) then
    -- ANTWORT ERFOLGT
    fibaro:debug('Antwort erfolgt')
    else
    -- COUNTER IST ABGELAUFEN. ALTERNATIVE?
    fibaro:debug('COUNTER OFF');
    end

      • 11:45:18: 0
        11:45:18: No answer in time
        11:45:18: c & d == NIL
        11:45:18: e & f == NIL
        11:45:19: 1
        11:45:19: No answer in time
        11:45:19: c & d == NIL
        11:45:19: e & f == NIL
        11:45:20: 2
        11:45:20: No answer in time
        11:45:20: c & d == NIL
        11:45:20: e & f == NIL
        11:45:21: 3

        • Hi,

          das Skript erkennt, dass noch keine Antwort erfolgt ist. Ergo ist die Sprache richtig eingestellt. Hast du die Frage mal am Fernseher beantwortet? Was passiert dann?

          Gruß

          • Hallo
            Ja, habe am TV geantwortet! Es passiert nichts! Im Debug lauft der Counter weiter durch bis 30 ohne eine Änderung.
            p.s. ich hab eine Dreambox DM8000

          • Hi,

            das Verhalten liegt nicht am VD. Hab es grad nochmals getestet und funktioniert weiterhin ohne Probleme. Du müsstest dir mal die XML-Response von deinem System anschauen.

            Gruß

  • Hallo,

    ich habe mein Standart Passwort in der VU+ geändert. Nun funktioniert der Zugang über das Webinterface nicht. Gibt es über Lua ein Befehl welcher den Zugang zur VU+ mit einem anderen Passwort zulässt ?

    Grüße und schon mal vielen Dank

    • Hi,

      sofern der Media Receiver eine offene API zur Verfügung stellt, lässt sich das relativ einfach realisieren. Allerdings ist mir keine fertige Lösung bekannt.

      Gruß

  • Hi Boomx,
    coole Sache. Habe mir gerade erst eine vu+ (Solo SE) angeschafft und die Steuerung funktioniert prima. ich habe allerdings noch eine Frage. Zum vollständigen herunterfahren der Box benutze ich einen langen Tastendruck auf die Standby Taste. Das klappt ja so sicher nicht über das VD. Also würde ich gerne eine weitere virtuelle Taste hinzufügen und dieser sagen das sie einen langen Tastendruck (116) an die VU+ schickt. Nur weiss ich leider nicht wie ich das umsetzen kann. kannst Du mir da helfen?
    Gruss
    Alex

        • Moin Boomx,
          Funzt! Habe einen neuen Button für den DeepStandby hinzugefügt. Der Grund warum ich unbedingt den DeepStandby haben will ist das bekannte Problem der hellen LED der VUPLUS. Da meine Frau Nachts sehr empfindlich auf Licht reagiert, möchte ich also die Box über einen Wallplug komplett vom Strom nehmen. Das soll natürlich nicht aus dem Standby Modus geschehen, sondern erst nachdem die Box heruntergefahren ist. Ich habe mir jetzt eine Szene auf den Keyfob gelegt, die zunächst den VD Button für den DeepStandby (s.u.) triggert und nach einer Verzögerung dann die Wallplugs für Fernseher und die Box abschaltet.
          Das könnte man natürlich auch bei Ausschaltung des TV mit der "power" Variablen automatisch triggern (WENN power von TV Wallplug unter Schwellenwert, DANN fahre VUPLUS runter und Wallplugs OFF).
          Gruss
          Alex

          local selfId = fibaro:getSelfId();
          local ip = fibaro:get(selfId, "IPAddress")

          local url = "/web/powerstate?newstate=1"

          local ws = Net.FHttp(ip, 80)
          local resp = ws:GET(url)
          fibaro:debug(resp);

Gib deinen Senf dazu!

Cookie Consent mit Real Cookie Banner