Ich würde gerne Radiosender per Webfront umschalten. Dazu gibt es eine Variable vom Typ Integer die im Webfront angezeigt wird. Wenn ich auf das Icon klicke geht eine Liste auf.
Allerdings ändert sich die Variable nicht wenn ich auf einen Listeneintrag klicke. Was mache ich da falsch oder muss ich da noch irgendwas zusätzlich konfigurieren? Ich nutzte Chrome als Browser.
Warum sollte sie sich ändern?
Wenn die dahinter liegende Aktion die Variable nicht ändert, wird halt der alte Wert angezeigt.
Das hat auch nix mit Modulen zu tun, sondern diese Liste gibt es immer im WebFront.
Michael
Das ist ja das Problem ich verstehe eben nicht warum die Aktion nicht greift der Rest lässt sich ja auch einwandfrei schalten.
public function RequestAction($Ident, $Value)
{
$devicenumber = $this->ReadPropertyString('Devicenumber');
$this->SendDebug("Echo Remote:","Request Action trigger device ".$devicenumber." by Ident ".$Ident,0);
if($Ident == "EchoRemote")
{
switch($Value)
{
case 1: // Rewind30s
$this->Rewind30s();
$this->SendDebug("Echo Remote:","Request Action Rewind 30s",0);
break;
case 2: // Previous
$this->Previous();
$this->SendDebug("Echo Remote:","Request Action Previous",0);
break;
case 3: // Pause / Stop
$this->Pause();
$this->SendDebug("Echo Remote:","Request Action Pause",0);
break;
case 4: // Play
$this->Play();
$this->SendDebug("Echo Remote:","Request Action Play",0);
break;
case 5: // Next
$this->Next();
$this->SendDebug("Echo Remote:","Request Action Next",0);
break;
case 6: // Forward30s
$this->Forward30s();
$this->SendDebug("Echo Remote:","Request Action Forward 30s",0);
break;
}
}
if($Ident == "EchoShuffle")
{
$this->Shuffle($Value);
$this->SendDebug("Echo Remote:","Request Action Shuffle",0);
}
if($Ident == "EchoRepeat")
{
$this->Repeat($Value);
$this->SendDebug("Echo Remote:","Request Action Repeat",0);
}
if($Ident == "EchoVolume")
{
$this->SetVolume($Value);
$volume = $Value*100;
$this->SendDebug("Echo Remote:","Request Action set Volume to ".$volume,0);
}
if($Ident == "EchoTuneInRemote_".$devicenumber)
{
$stationid = GetTuneInStationID($Value);
$this->SendDebug("Echo Remote:","Request Action set Station to ".$stationid,0);
$this->TuneIn($stationid);
}
$objid = $this->GetIDForIdent($Ident);
SetValue($objid, $Value);
$this->SendDebug("Echo Remote:","Set value of variable with object ID ".$objid." and ident ".$Ident." to ".$Value,0);
}
Geschaltet werden soll wenn $Ident == „EchoTuneInRemote_“.$devicenumber
Ich bekomme ja aber noch nicht mal eine Debug Message. Also daher verstehe ich nicht was da falsch läuft.
P.S.: Jetzt wo ich es ins Forum poste sehe ich zumindest selber das da ein $this fehlt mal sehen ob das die Ursache war, ich melde mich.
So Fehler gefunden, wie oben schon gesagt hatte ich ein $this vergessen.
Statt
$stationid = GetTuneInStationID($Value);
eben
$stationid = $this->GetTuneInStationID($Value);
dann klappt das auch. Da schließt sich bei mir noch einen Frage an, muss man solche Flüchtigkeitsfehler im Code finden oder gibt es eine Möglichkeit das IPS da auch eine Fehlermeldung ausspuckt damit man den Fehler schneller findet?
Ein guten Editor nutzen?
Der hätte dir dann keinen Vorschlag unterbreitet oder auch gesagt er kennt die Funktion nicht, was mich immer stutzig macht.
Ansonsten hilft nur alles haarklein zu testen und dabei das Log und Debug im Auge zu behalten.
Bei dir hätte im WF eigentlich ein Fehler kommen müssen, dass die Funktion nicht bekannt ist.
Michael
Ich weis das wurde schon an anderer Stelle andiskutiert aber kannst Du da einen Editor empfehlen der so was kann oder ist da dann gleich eine IDE notwendig?
Anbindung ist gut. Zu 99% nutze ich das Teil standalone. Und ein zweimal mit xDebug ausprobiert.
Git-Einbindung ist nett, aber auch da nutze ich andere Tools.
Einfach mal ausprobieren was einem gefällt und in deine Infrastruktur passt.
Michael
Ich habe heute mal Atom ausprobiert und dort konnte ich keine Möglichkeit finden die zusätzliche php Datei einzubinden, damit die IPS Funktionen und IPS Klasse vorhanden sind.