HOWTO: Enigma2 Power-Status an MS

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • hismastersvoice
    Supermoderator
    • 25.08.2015
    • 7260

    #1

    HOWTO: Enigma2 Power-Status an MS

    !! Im Post #41 gibt es zusätzlich eine Anleitung wie man das ganze mit einem Raspi umsetzen kann. !!


    Ein kurze Anleitung wie ein E2-Receiver bei mir VU+ den Power/Standby Status melden kann.
    Somit kann man z.B. in Verbindung mit Helligkeitsensor automatisch eine Lichtszene schalten.

    Es wird bei jedem Zustand der VT-Eingang geschaltet also bei ein-aus und standby ein-aus.

    MiniServer
    1. Einen Virtuellen-Eingang anlegen und Nummer merken VIxx

    Receiver
    2. Start/Stop-Datei erstellen
    Im Pfad /etc/init.d die Dateien loxone_ein.sh und loxone_aus.sh erstellen und mit nachfolgendem Inhalt füllen

    loxone_ein.sh
    Code:
    #!/bin/bash
    
    # Config
    SERVERIP="192.168.xxx.xxx"; # IP-Adresse des Miniserver
    USER="admin"; # Username fuer Miniserver
    PASS="xxxxxxx"; # Passwort fuer Miniserver
    VI="VI16"; # Virtueller Eingang VIx den ihr angelegt habt
    
    #Programm -- hier nichts ändern--
    PINGMS=`ping -c 2 $SERVERIP | grep loss | cut -d " " -f 4`
    if [ "$PINGMS" -ge "1" ]; then
        wget -O /dev/null -q http://$USER:$PASS@$SERVERIP/dev/sps/io/$VI/Ein
        exit 0
    else
        exit 0
    fi
    loxone_aus.sh
    Code:
    #!/bin/bash
    
    # Config
    SERVERIP="192.168.xxx.xxx"; # IP-Adresse des Miniserver
    USER="admin"; # Username fuer Miniserver
    PASS="xxxxxxx"; # Passwort fuer Miniserver
    VI="VI16"; # Virtueller Eingang VIx den ihr angelegt habt
    
    #Programm -- hier nichts ändern--
    PINGMS=`ping -c 2 $SERVERIP | grep loss | cut -d " " -f 4`
    if [ "$PINGMS" -ge "1" ]; then
        wget -O /dev/null -q http://$USER:$PASS@$SERVERIP/dev/sps/io/$VI/Aus
        exit 0
    else
        exit 0
    fi
    Die Daten in #Config an euren MS anpassen!!!

    3. Datei-Rechte anpassen
    chmod 0755 loxone_aus.sh
    chmod 0755 loxone_ein.sh

    4. verlinken
    ln -s /etc/init.d/loxone_ein.sh /etc/rc3.d/S99loxone_ein
    ln -s /etc/init.d/loxone_aus.sh /etc/rc0.d/K20loxone_aus

    5. Standby.py im Pfad /usr/lib/enigma2/python/Screens ändern

    nach
    Code:
    print "leave standby"
    folgendes einfügen
    Code:
    import os
    os.system("/etc/init.d/loxone_ein.sh &")
    und nach
    Code:
    print "enter standby"
    folgendes einfügen
    Code:
    import os
    os.system("/etc/init.d/loxone_aus.sh &")
    So sollte es dann aussehen.
    Code:
    from Screen import Screen
    from Components.ActionMap import ActionMap
    from Components.config import config
    from Components.AVSwitch import AVSwitch
    from Components.SystemInfo import SystemInfo
    from GlobalActions import globalActionMap
    from enigma import eDVBVolumecontrol, eServiceReference
    from Tools import Notifications
    
    
    inStandby = None
    
    class Standby(Screen):
        def Power(self):
            print "leave standby"
            import os
            os.system("/etc/init.d/loxone_ein.sh &")
            #set input to encoder
            self.avswitch.setInput("ENCODER")
            #restart last played service
            #unmute adc
            self.leaveMute()
            # leave inTryQuitMainloop
            if config.usage.silent_rec_mode.value:
                Notifications.RemovePopup(id = "goStandby")
                global inTryQuitMainloop
                inTryQuitMainloop = False
            #kill me
            self.close(True)
    
        def setMute(self):
            if (eDVBVolumecontrol.getInstance().isMuted()):
                self.wasMuted = 1
                print "mute already active"
            else:    
                self.wasMuted = 0
                eDVBVolumecontrol.getInstance().volumeToggleMute()
    
        def leaveMute(self):
            if self.wasMuted == 0:
                eDVBVolumecontrol.getInstance().volumeToggleMute()
    
        def __init__(self, session):
            Screen.__init__(self, session)
            self.avswitch = AVSwitch()
    
            print "enter standby"
            import os
            os.system("/etc/init.d/loxone_aus.sh &")
            self["actions"] = ActionMap( [ "StandbyActions" ],
            {
                "power": self.Power
            }, -1)
    
    .......

    MiniServer

    5. Kontrollfunktion über Ping

    Ping warum?
    Die Skripte oben funktionieren nur wenn der Receiver richtig Ein/Aus geschaltet oder der Standby ausgeführt wird.
    Wird aber der Receiver nicht herunter gefahren sondern nur die Stromzufuhr gekappt bleibt der Eingang auf EIN (unschön).

    Wenn nun der Receiver nicht mehr erreichbar ist wird der RS Baustein zurückgesetzt und der VI wird über den Virtuellen Ausgang zurück gesetzt.
    So ist die Funktion auch sauber auch wenn der Receiver vom Strom genommen wurde ohne ihn vorher auszuschalten.
    Wischrelais ist damit er nur einen Impuls gibt z.B. 0,5 Sek. Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Bild 3.png
Ansichten: 522
Größe: 12,5 KB
ID: 6638





    Ping IP anpassen / Parameter könnte auch z.B. Timeout 3 Sek. Anzahl 2 dann geht es etwas schneller... Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Bild 4.png
Ansichten: 390
Größe: 8,6 KB
ID: 6634






    Virtueller Ausgang anlegen (User/Pass/IP des MiniServer anpassen) Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Bild 5.png
Ansichten: 385
Größe: 7,2 KB
ID: 6635






    Virtueller Ausgang Befehel (VI auf euren Ausgang anpassen, ist der gleiche wie durch das Skript ein/aus geschaltet wird) Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Bild 6.png
Ansichten: 348
Größe: 1,1 KB
ID: 6636
    Zuletzt geändert von hismastersvoice; 21.02.2016, 10:01.
    Kein Support per PN!
  • darkstar1984
    Extension Master
    • 25.08.2015
    • 190

    #2
    werd das heute abend mal testen.
    das heißt du legst auf der Box eine Datei an, die dann die Stati sendet?
    Greifst du so nur den Power Status ab, oder lässt sich darüber auch mehr Infos ziehen (Lautstärke, Mute, Aktueller Sender...)
    Ich hänge schon eine Weile an der Geschichte, Virtuelle Ausgänge schalten ist ja nicht das Problem, aber vorab den akteullen Status zu ziehen, war mir bisher unbekannt
    Loxone Miniserver / 1-Wire Extension / Air Base Extension, Tree Extension / Dimmer Extension / Debian Server, Raspberry

    Kommentar

    • hismastersvoice
      Supermoderator
      • 25.08.2015
      • 7260

      #3
      Ja die Files werden auf der Box abgelegt und senden beim jeder Veränderung ein Ein/Aus Signal an den Virtuellen-Eingang.

      Im Prinzip kann ich sicher auch ein Skript schreiben das die andere Werte ausliest,
      das einzoge was ich persönlich noch als sinnvoll ansehe ist das Mute ein/aus geschaltet wird z.B. wenn es an der Tür klingelt

      Wenn interesse da ist kann ich das gerne mal machen.
      Kein Support per PN!

      Kommentar

      • Robert L.
        MS Profi
        • 26.08.2015
        • 922

        #4
        überlebt das ein Update der E2 Box ??
        oder muss man da jedes mal neu machen?

        Kommentar

        • hismastersvoice
          Supermoderator
          • 25.08.2015
          • 7260

          #5
          die Scripte in init.d für start und stop ja, bei Standby,py könnte es sein das man es wieder einbauen muss
          Kommt ganz drauf an was beim update überschrieben wird.
          Kein Support per PN!

          Kommentar

          • Gast

            #6
            Hallo mastervoice!
            Funktioniert leider nicht. Muss ich den VI auch noch iwie konfigurieren?
            Kann ich iwo prüfen ob das Script richtig ausgeführt wir?

            edit:
            STB Neustart ebenfalls durchgeführt, der hat gefühlt länger gedauert als sonst.
            Zuletzt geändert von Gast; 29.09.2015, 21:51.

            Kommentar


            • hismastersvoice
              hismastersvoice kommentierte
              Kommentar bearbeiten
              Was für ein image hat du auf der box?
          • hismastersvoice
            Supermoderator
            • 25.08.2015
            • 7260

            #7
            Fuhr eines der Skripts von Hand aus (SSH)
            Dann muss dein VI ein und aus schalten.

            Habe es auf 2 Solo2 und einem Zero am laufen und funktioniert
            Kein Support per PN!

            Kommentar

            • Gast

              #8
              Habe auch eine Soli2 mit aktuellem VTI Image. Wenn ich das Script manuell starte, kommt folgendes (siehe Bild). Oder stimmt der Befehl nicht?

              Kommentar

              • hismastersvoice
                Supermoderator
                • 25.08.2015
                • 7260

                #9
                Hast du die IP User pass usw angepasst weil IP 10.0.... scheint komisch
                Kein Support per PN!

                Kommentar

                • Gast

                  #10
                  Ja User, passwort, IP mit und ohne Port, angepasst IP 10.0.0.10 stimmt so.
                  Angehängte Dateien

                  Kommentar

                  • hismastersvoice
                    Supermoderator
                    • 25.08.2015
                    • 7260

                    #11
                    Konnte den Fehler nachstellen...
                    Das kommt wenn der MS erreichbar ist.
                    Deswegen dauert auch das booten so lange, er versucht recht lange VU zu erreichen bis er abbricht.

                    Was mich wundert ist das du den MS mit dem port 8080 anspricht, standard ist 80.

                    Nochmal die IP User Pass VI müssen mit dem des MiniServer über ein stimmen.

                    Werde später noch ein Timeout einbauen das er nicht ewig versucht den MS zu erreichen wenn er nicht da ist, oder ein Fehler vorliegt.
                    Kein Support per PN!

                    Kommentar

                    • hismastersvoice
                      Supermoderator
                      • 25.08.2015
                      • 7260

                      #12
                      Ich habe den Code für Ein/Aus um eine Pingabfrage ergänzt.
                      Wenn der MS jetzt nicht erreichbar ist wird das Script verlassen und wartet nicht so lange wie ohne die Abfrage.
                      Zusätzlich habe ich noch das Programm und die Config getrennt, so wird es übersichtlicher.
                      Kein Support per PN!

                      Kommentar

                      • Gast

                        #13
                        Danke. Hoffe ich komme heut noch zum testen.

                        Kommentar

                        • Gast

                          #14
                          Hallo
                          @hismastersvoice
                          Bin erst heute wieder zum testen gekommen. Leider funktionierts immer noch nicht.
                          Scripts lassen sich auch nicht per ssh ausführen. (Fehlermeldung siehe Screenshot) Hab ausserdem die Leerzeilen aus den Scripts gelöscht, da auch für diese zeilen ein Fehler angezeigt wurde. Diese Fehler sind jetzt weg. Hast du vielleicht noch eine Idee, oder einen Tipp für mich?

                          Kommentar


                          • hismastersvoice
                            hismastersvoice kommentierte
                            Kommentar bearbeiten
                            Öffne mal die Files mit Editor vi und poste Screenshot.
                            Gehe stark davon aus das du die Files in einer falschen Text Codierung gespeichert hast.
                        • Gast

                          #15
                          Nutze Notepad++. Aber werde mal Editor Vi installieren.
                          Soweit ich weis ist die Codierung UTF-8.

                          Kommentar


                          • hismastersvoice
                            hismastersvoice kommentierte
                            Kommentar bearbeiten
                            vi ist bereits auf der vu
                            einfach vi /pfad/loxone_ein.sh eingeben dann zeigt er die datei an
                        Lädt...