Logitech Harmony Hub Modul [Testversion]

Das sich der Client Socket zyklsich öffnet und schließt ist normal sonst würde der Harmoyn Hub die Verbindung abbrechen und dann wäre eine Weile keine Verbindung vorhanden bis IP-Symcon erneut eine Verbindung herstellt. Eine dauerhafte Verbindung lässt der Harmony Hub irgendwie nicht zu ich habe jedenfalls noch nicht herrausgefunden wie man das schafft.

Das der Raspberry deswegen crasht sollte an sich nicht sein, ich wüste jetzt auch nicht wie man das abstellen kann das ist wenn dann ein Problem von IP-Symcon. Vielleicht kann sich da ja mal jemand von IP-Symcon zu äußern bzw. der Grund für den Crash auf den Grund gehen.

Hallo Fonzo

Danke für die rasche Antwort, in diesem Fall werde in diese Richtung weiter suchen.

Hallo zusammen,

ich habe eine neue Aktivität im Harmony Hub angelegt.
Jedoch OHNE Gerät, da es sich um einen Plattenspieler handelt.

Wenn ich nun die Info auslesen will, damit er die Aktivität in IPS erstellt, passiert nichts.

Weiter habe ich versucht nochmals die Punkte 1 (Konfi auslesen),2 (Setup Harmony),3 (Aktualisieren Harmon) auszuführen, da kommt aber schon bei Punkt 2 eine Fehlermeldung…

Bild und Dump anbei.

Grüße

dump.txt (4.75 KB)

Das must Du mal etwas näher ausführen. Geht das überhaupt eine Aktivität ohne Gerät anzulegen? Für was wird die Aktivität dann genutzt wenn da gar kein Gerät vorhanden ist?

Das muss ich mir im Detail näher anschauen, so ein Szenario habe ich selber noch nicht genutzt.

Meine Aussage das sich kein Gerät in der Aktion befindet war nicht ganz korrekt.
Es wird über die Harmony Aktion nur der Kanal am AVR auf Phono gestellt da der Plattenspieler nicht über die Harmony angesprochen werden kann. Es befindet sich also nur der AV Reciever in der Aktion.

Gesendet von iPhone mit Tapatalk

Hallo,

ich habe eine generelle Frage zum Harmony Update. Ich habe ein Gerät und zwei Aktionen hinzu gefügt. Wenn ich in der Harmony Instanz auf Konfiguration auslesen oder Setup Harmony gehe passiert nichts. Es kommt keine Fehlermeldung, es wird aber auch nicht hinzu gefügt. Funktioniert das unter IPS5 etwas anders?

Grüße

Ja ab IP-Symcon 5 wird ein Konfigurator genutzt, dieser muss noch als Instanz angelegt werden. Vom Konfigurator aus werden dann neue Geräte oder Aktionen angelegt.

OK, danke. Habe ich eingefügt. Aber irgendwie funktioniert es bei mir noch nicht so richtig.
Ich gebe den Pfad an wo meine Harmony Daten drin sind, mein neues Gerät wird aber im Hauptverzeichnis angelegt. Die Aktionen wurden gar nicht ausgelesen.

Muss ich da noch was beachten?

Grüße

1.png

Hallo,

wenn ich per Harmony meine Aktivität mit der Shield starte wird es auch im Statusdialog angezeigt. Von Der Aktivität oder Gerät ist in IPS aber nichts zu finden.

Läuft da bei mir irgend etwas falsch oder habe ich es einfach nicht gefunden?

Grüße

Theoretisch sollte ein Dummy Modul mit einem Link angelegt werden, wenn nicht dann gibt noch mal Bescheid dann muss ich mir das noch mal anschauen.

Die Variable, die aktualisiert wird, findest Du unter Splitter Instanzen, dort der Harmony Hub. Die unterste Variable ist Harmony Activity, diese aktualisiert sich bei einem Aktivitäten Wechsel. Wenn Du diese irgendwo im Webfront angezeigt haben willst, dann legst Du auf diese Variable einen Link.

Hallo,

so wie es aussieht habe ich da was mit den Konfiguratoren vertauscht. Nun funktioniert es. Eine kurze Info im ersten Beitrag wäre vielleicht hilfreich falls man wieder nach sucht;)

Gruß und danke

Hallo,

wäre es möglich den Verbindungs-Timeout einstellbar zu machen ???

Mein Hub steht in einem Schrank. Da ist die W-Lan Verbindung nicht so toll und das Modul müllt mir das Logging zu.

Vielen Dank.

Gruß Proxima

Das bringt Dir nichts, da es bisher nicht gelungen ist eine dauerhafte Verbindung aufrecht zu erhalten zum Hub,der trennt die Verbindung nach 60 Sekunden. Da man dann keine Timeouts haben will kommt dem IP-Symcon zuvor und baut die Verbindung wieder neu auf bevor der Logitech Hub die Verbindung trennt. Du kannst das Intervall also höchstens kürzer stellen was aber nur Nachteile hat und das Log noch mehr zufüllt.

Da kannst Du Dir höchstens von IP-Symcon eine Funktion wünschen ob es eine Möglichkeit gibt Dinge aus einem Modul heraus auszulösen ohne das dadurch automatisch ein Log Eintrag generiert wird. Sonst wüste ich da jetzt auch keine Lösung zu.

Wie sieht es aus wenn ich in der Harmony Aktionen umbenenne und in IPS abgleiche, werden die Aktivitäten in IPS auch umbenannt?

Ich habe eine Dreambox 920 UHD und da gibt es zum ausschalten den Idle Modus und den Standby Modus. Ist es eigentlich Möglich für die beiden Mod einen Befehl zu senden und den entsprechenden Status abzufragen?

Ich habe exakt die gleiche Dreambox. Ich habe das bei mir so gelöst das die Dreambox über IP-Symcon über IP geschaltet wird, dazu gibt es ja auch viele Skripte hier im Forum oder auch Module.

Ich habe ein Ereignis auf der Variable der Harmony Aktivität liegen und schalte dann zusätzlich wenn sich die Aktivität der Harmony ändert die Dreambox per IP an bzw. aus.

Beispiel


<?

  $HarmonyHub_ID = 10603 /*[Logitech Harmony Hub Wohnzimmer]*/; // hier ist die Objekt ID der Harmony Hub Instanz auszuwählen zu finden unter Splitter
$PS4_On= "PS4 TV"; // Name der Aktivität
$PS4_On_Screen = "Playstation Leinwand"; // Name der Aktivität
$Dreambox_On= "Fernsehen"; // Name der Aktivität
$Dreambox_On_Screen = "Film Leinwand"; // Name der Aktivität
$Dreambox_Off = "PowerOff"; // Name der Aktivität
// -- ab hier nichts ändern
$Activity = IPS_GetObjectIDByIdent("HarmonyActivity", $HarmonyHub_ID);
//var_dump($Activity);
$HarmonyActivities =  HarmonyHub_GetAvailableAcitivities($HarmonyHub_ID);
//var_dump($HarmonyActivities);

if (Getvalue($Activity) == $HarmonyActivities[$Dreambox_On])  
{ 
    IPS_Runscript(26330 /*[Geräte\Heimkino\Video\Dreambox\Dreambox 920\Dreambox 920 Wohnzimmer Power\Dreambox 920 Power\Dreambox 920 Power Wakeup]*/); 
	IPS_LogMessage("Dreambox", "einschalten");
} 
if (Getvalue($Activity) == $HarmonyActivities[$Dreambox_Off])  
{ 
    IPS_Runscript(21810 /*[Geräte\Heimkino\Video\Dreambox\Dreambox 920\Dreambox 920 Wohnzimmer Power\Dreambox 920 Power\Dreambox 920 Power Standby]*/); 
	IPS_LogMessage("Dreambox", "ausschalten");
} 
if (Getvalue($Activity) == $HarmonyActivities[$PS4_On])  
{ 
    IPS_Runscript(21810 /*[Geräte\Heimkino\Video\Dreambox\Dreambox 920\Dreambox 920 Wohnzimmer Power\Dreambox 920 Power\Dreambox 920 Power Standby]*/); 
	IPS_LogMessage("Playstation 4", "ausschalten");
} 
if (Getvalue($Activity) == $HarmonyActivities[$PS4_On_Screen])  
{ 
    IPS_Runscript(21810 /*[Geräte\Heimkino\Video\Dreambox\Dreambox 920\Dreambox 920 Wohnzimmer Power\Dreambox 920 Power\Dreambox 920 Power Standby]*/); 
	IPS_LogMessage("Playstation 4", "ausschalten");
} 
if (Getvalue($Activity) == $HarmonyActivities[$Dreambox_On_Screen])  
{ 
    IPS_Runscript(26330 /*[Geräte\Heimkino\Video\Dreambox\Dreambox 920\Dreambox 920 Wohnzimmer Power\Dreambox 920 Power\Dreambox 920 Power Wakeup]*/);
	IPS_LogMessage("Dreambox Leinwand", "einschalten");
}

?>

in dem anderen Skript wird dann eben in den passenden Modus geschaltet. Da findest Du wie gesagt die passenden Skript im Forum ich selber nutzte das Modul von Bayaro
Wakeup


Enigma2BY_SetPowerState(DREAMBOX_920, 4);

Standby


Enigma2BY_SetPowerState(DREAMBOX_920, 5);

0 = Toggle Standby // 1 = Deep Standby // 2 = Reboot // 3 = Restart GUI // 4 = Wakeup from Standby // 5 = Standby

Hallo Fonzo,

Danke für die tolle Info, werde mich da dann noch mal schlau machen.

Das Einschalten und Ausschalten und die Abfrage des Status klappt super.

Ich wollte jetzt Textnachrichten an die Dreambox schicken. Kann mir da jemand ein Codeschnipsel zeigen.

Unter der Suche habe ich nichts gefunden.

Findest Du im Enigma Thread.


/*
* Schreibt eine Infomessage auf den Bildschirm
* return
* true wenn erfolgreich
* false wenn nicht erfolgreich
**/
function ENIGMA2_WriteInfoMessage($ipadr,$message = "",$time=5)
{
    $type = 1;
    $result = false;
   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       $message = urlencode($message);
       $xmlResult = new SimpleXMLElement(file_get_contents("http://".$ipadr."/web/message?text=".$message."&type=".$type."&timeout=".$time));
      if ($xmlResult->e2state == "True")
      {
         $result = true;
        }
    }
   else
    {
       $result = false;
    }
return $result;
}
/*
* Schreibt eine Errormessage auf den Bildschirm
* return
* true wenn erfolgreich
* false wenn nicht erfolgreich
**/
function ENIGMA2_WriteErrorMessage($ipadr,$message = "",$time=5)
{
    $type = 3;
    $result = false;
   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       $message = urlencode($message);
       $xmlResult = new SimpleXMLElement(file_get_contents("http://".$ipadr."/web/message?text=".$message."&type=".$type."&timeout=".$time));
      if ($xmlResult->e2state == "True")
      {
         $result = true;
        }
    }
   else
    {
       $result = false;
    }
return $result;
}
/*
* Schreibt eine Message auf den Bildschirm
* return
* true wenn erfolgreich
* false wenn nicht erfolgreich
**/
function ENIGMA2_WriteMessage($ipadr,$message = "",$time=5)
{
    $type = 2;
    $result = false;
   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       $message = urlencode($message);
       $xmlResult = new SimpleXMLElement(file_get_contents("http://".$ipadr."/web/message?text=".$message."&type=".$type."&timeout=".$time));
      if ($xmlResult->e2state == "True")
      {
         $result = true;
        }
    }
   else
    {
       $result = false;
    }
return $result;
}

/******************************************************************************************************************************
* Schreibt eine Message auf den Bildschirm die man mit ja oder nein beantworten kann
* 0 = Initialisierung
* 1 = Dreambox Ausgeschaltet
* 2 = Nachricht nicht gesendet
* 3 = Wenn mit Ja geantwortet wurde
* 4 = Wenn mit Nein geantwortet wurde
* 5 = Wenn Zeit abgelaufen ohne antworten
*/
function ENIGMA2_GetAnswerFromMessage($ipadr,$message,$time)
{
    $result = 0;
    $timeout = 25;
    if ($time > $timeout)
       $time = $timeout;
    if (ENIGMA2_GetAvailable($ipadr))
    {
       $xmlResult =  new SimpleXMLElement(file_get_contents("http://".$ipadr."/web/messageanswer?getanswer=now"));
       if ($time == 0)
        {
           $time = $timeout;
          $xmlResult = new SimpleXMLElement(file_get_contents("http://".$ipadr."/web/message?text=".$message."&type=0"));
       }
       else
          $xmlResult = new SimpleXMLElement(file_get_contents('http://'.$ipadr.'/web/message?text='.$message.'&type=0&timeout='.$time));
        if ($xmlResult->e2state == "True")
       {
          $start = time();
           do
            {
                $xmlResult =  new SimpleXMLElement(file_get_contents("http://".$ipadr."/web/messageanswer?getanswer=now"));
                $diff = time() - $start;
                if ($xmlResult->e2state == "True")
                {
                 if ($xmlResult->e2statetext == "Answer is YES!")
                 {
                    if (($diff + 1) >= $time)
                       $result = 5;
                    else
                        $result = 3;
                  }
                  elseif ($xmlResult->e2statetext == "Answer is NO!")
                     $result = 4;
                }
                sleep(0.5);
            }
            while (($result == 0) and ($diff <= $time));
            if ($result == 0)
               $result = 5;
       }
       else
             $result = 2;
    }
    else
        $result = 1;
    return $result;
}

Ansonsten alternativ auch für das Modul von Bayaro in der Readme beschrieben


Enigma2BY_SendMsg(integer $InstanzID, string $Text, integer $Type, integer $TimeoutSekunden);

Danke, habe ich wohl überlesen. Jetzt ist es klar.