Antworten
Mrz 31, 2016 - 13:23
Solange Mediola hier nicht an einer so simplen Funktion nachgebessert hat, hilft es nur als Workarround ein Skript in IP-Symcon anzulegen. Dann legst Du auf den Button in NEO das Skript in IP-Symcon das ausgeführt werden soll.
In IP Symcon legst Du ein Skript an mit simples if else
Start of PHP
--
$status = GetValueBoolean($ObjektID); // Status des Geräts auslesen
IPS_LogMessage( "Nachricht für Log:" , "Befehl ausführen" );
if ($status == false)// Befehl ausführen
{
//Hier den Befehl zum Einschalten ausführen oder Script starten z.B.
//IPS_RunScript($SkriptID);
//oder bei Homematic z.B.
// HM_WriteValueBoolean($HomematicObjektID, "STATE", true); //Gerät einschalten
}
elseif ($status == true)// Befehl ausführen
{
//Hier den Befehl zum Ausschalten ausführen oder Script starten z.B.
//IPS_RunScript($SkriptID);
//oder bei Homematic z.B.
// HM_WriteValueBoolean($HomematicObjektID, "STATE", false); //Gerät einschalten
}
--
End of PHP
Danach erneut einen Import in NEO durchführen, damit das angelegte Skript zur Auswahl in NEO zur Verfügung steht.
Bei dem Toggle Button wählst Du dann bei Aktion zuweisen das IP-Symcon Skript das ausgeführt werden soll.
Unter Status zuweisen wählst Du die Variable die getoggelt wird mit status
Sieht dann also so aus
Mrz 31, 2016 - 13:32
Die Guids liest Du mit
//Alle Modulnamen mit GUID ausgeben
foreach(IPS_GetModuleList() as $guid)
{
$module = IPS_GetModule($guid);
$pair[$module['ModuleName']] = $guid;
}
ksort($pair);
foreach($pair as $key=>$guid)
{
echo $key." = ".$guid."\n<br>";
}
aus.
Wie so was aussieht siehts Du z.B. hier
http://homematic-forum.de/forum/viewt...
Falls Du hilfe bei Skript braucht einfach wieder melden.
Mrz 31, 2016 - 20:59
Super das hat sehr geholfen. Nach dem ich dann noch herraus gefunden habe was ich als Befehl schreiben muss.
Vielen Dank.
Für alle die eine ähnliche Lösung suchen hier der Code
"
$status = GetValueBoolean(56275 /*[Büro\mb_output_coils[26]\Büro]*/ );
IPS_LogMessage( "Nachricht für Log:" , "Befehl ausführen" );
if ($status == false)
{
ModBus_WriteCOIL(11502 /*[Büro\mb_output_coils[26]]*/, TRUE);
}
elseif ($status == true)
{
ModBus_WriteCOIL(11502 /*[Büro\mb_output_coils[26]]*/, FALSE);
}
?>"
Im Endeffekt frage ich den Status der Variable ab , schreibe aber dann die Instanz , da die Variable selber als nur Lesen deklariert ist und nicht beschrieben werden kann.
Nov 07, 2017 - 14:44
Ich glaube ich bin zu blöd dazu.
Ich würde gerne eine Funktion in einem Modul toggeln.
Folgendes habe ich deshalb zusammengeschrieben:
$status = GetValueBoolean(48484 /*[Wohnzimmer\AV\RX-A3050\Yamaha AVR\Extra Bass]*/ );
IPS_LogMessage( "Nachricht für Log:" , "Befehl ausführen" );
if ($status == false)
{
YAVR_SetExtraBass(30384 /*[Wohnzimmer\AV\RX-A3050\Yamaha AVR]*/, TRUE );
}
elseif ($status == true)
{
YAVR_SetExtraBass(30384 /*[Wohnzimmer\AV\RX-A3050\Yamaha AVR]*/, FALSE );
}
?>
Nun funktioniert das Toggeln nur, wenn die Variable auf TRUE steht. Steht die Variable jedoch auf FALSE und ich rufe das Skript auf, dann wechselt die Variable ganz kurz auf TRUE und springt nach einer Sekunde wieder zurück auf FALSE. Die eine Sekunde entspricht dabei der Intervallzeit der Abfrage der Hardware durch das Modul.
Mache ich da was falsch?
Nov 08, 2017 - 04:02
Probiere es mal so:
$status = GetValueBoolean(48484 /*[Wohnzimmer\AV\RX-A3050\Yamaha AVR\Extra Bass]*/ );
IPS_LogMessage( "Nachricht für Log:" , "Befehl ausführen" );
if (!$status)
{
YAVR_SetExtraBass(30384 /*[Wohnzimmer\AV\RX-A3050\Yamaha AVR]*/, TRUE );
}
else
{
YAVR_SetExtraBass(30384 /*[Wohnzimmer\AV\RX-A3050\Yamaha AVR]*/, FALSE );
}
Was passiert denn nebenbei gefragt wenn Du nur
YAVR_SetExtraBass(30384 /*[Wohnzimmer\AV\RX-A3050\Yamaha AVR]*/, TRUE );
absetzt? Wechselt die Variable dann auch wieder unmittelbar auf false?
Neuen Kommentar hinzufügen