Momentan Nutzbar mit:
Variablen lesen und schreiben (über CustomAction)
Scripte ausführen HomeMatic Aktoren lesen und schalten
HomeMatic Devices lesen
HomeMatic Dimmer, KeyMatic, WinMatic sind momentan noch nicht implementiert und getestet zum schalten
ich gehe mal davon aus, dass du die version 0.0.3 von meinen script benutzt.
dann muss irgendwas mit den assoziationen in deinem variablenprofil nicht stimmen. kann es sein, dass dort keine hinterlegt sind, oder der text fehlt?
veruch mal bitte folgendes zu verändern im siri.php script
Zeile 124
$p = IPS_GetVariable($id);
durch
$p = @IPS_GetVariable($id);
Zeile 130
$p = IPS_GetVariableProfile($p);
durch
$p = @IPS_GetVariableProfile($p);
und Zeile 133
$state=GetValue($id);
durch
$state=@GetValue($id);
dann müsste zumindest der Fehler unterdrückt werden, sodass er nicht mehr ausgegeben wird.
elseif ($instance['ModuleInfo']['ModuleName'] == 'xComfort Switch') {
if (isset($source['STATE']) && $source['STATE'] != "") {
$value = $stateValues['boolean'][$source['STATE']];
MXC_SwitchMode($linkTargetID,$value);
}
}
elseif ($instance['ModuleInfo']['ModuleName'] == 'xComfort Shutter') {
if (isset($source['STATE']) && $source['STATE'] != "") {
$value = $stateValues['jalousiestring'][$source['STATE']];
switch ($value) {
case 'rauf':
MXC_ShutterStepUp($linkTargetID);
break;
case 'runter':
MXC_ShutterStepDown($linkTargetID);
break;
case 'auf':
MXC_ShutterMoveUp($linkTargetID);
break;
case 'zu':
MXC_ShutterMoveDown($linkTargetID);
break;
case 'stop':
MXC_ShutterStop($linkTargetID);
break;
}
}
}
Den Status von anderen XComfort Komponenten kann man ja mit dem Link auf die Variable bereits verwenden.
@basti85: evtl kannst du ja die Änderungen in dein Script übernehmen, dann ist X-Comfort acuh fix mit drinnnen, auch bei zukünfigen Updates. (Bei Bedarf kann ich das File auch schicken bzw hochladen)
ist es eventuell möglich hier den Text eine Assoziation einer Statusvariable aus dem Variablenprofil als Schaltbefehl zu verwenden? wie das Array oben sollte möglichst klein gehalten werden, weil nun müsste man die ganzen Sonderfälle abfangen, wenn man z.B. ein licht auf stop schalten will, wird er ja nichts finden und schalten können. Aber der Reguläre Ausdruck würde es im Vorfeld zulassen. Da ich beim prüfen vom regulären Ausdruck ja noch nicht weiß um was für ein Device es sich handelt.
Leider gibt es in den Standard X-Comfort Statusprofilen nur 3 Zustände (Öffnen, Schließen, Stop).
Zum Bedienen gibt es aber 5 Zustände (Öffnen, Schließen, Stop, Schritt auf, Schritt runter). Für Jalousien sind halt die die Schritt rauf und runter wichtig, wegen der Lamellenverstellung.
Die Variablen und dem X-Comfort sind auch nur Read only, über diese kann keine Aktion augelöst werden.
evtl kann man ja noch eine zuätzliche Variable anlegen, die die Erlaubten zustände kennt, und trotzdem über MXC_ … schalten
Es ist nun Version 0.0.4 Online.
Achtung!!! Neue Configdatei. Dort muss wieder die Siri-Root-Kategorie eingetragen werden.
Nun kann jeder in den Unterordner selbst Module integrieren ohne, dass diese bei jedem Update verlohren gehen.
@grafi: ich habe nun das script so umgebaut, dass eigene module selbst integriert werden können. Ich war so frei und hab deine Erweiterung als xComfort.modules.php integriert, im Unterordner „modules“. Entsprechendes mit einen benötigten values im Unterordner „values“. Wenn du nicht willst, dass dein Code als festes Modul integriert ist, dann sag bescheid, dann nehme ich es raus.
super arbeit, das funktioniert gut. Einzig Siri jammert noch etwas, da es anscheinend auf eine Antwort wartet. Daher hab ich das XComfort Script etwas ereitert.
<?php
/*************
Version: 0.0.2
Author: Garfi35
Date: 24.08.2013
**************/
if ($instance['ModuleInfo']['ModuleName'] == 'xComfort Switch') {
if (isset($source['STATE']) && $source['STATE'] != "") {
$value = $stateValues['boolean'][$source['STATE']];
MXC_SwitchMode($linkTargetID,$value);
if ($value==true) {
addToSay($categoryName." ".$linkName." ist an.");
}
else {
addToSay($categoryName." ".$linkName." ist aus.");
}
}
}
elseif ($instance['ModuleInfo']['ModuleName'] == 'xComfort Shutter') {
if (isset($source['STATE']) && $source['STATE'] != "") {
$value = $stateValues['xComfortShutterPositions'][$source['STATE']];
switch ($value) {
case 1:
MXC_ShutterStepUp($linkTargetID);
addToSay($categoryName." ".$linkName." geht rauf.");
break;
case -1:
MXC_ShutterStepDown($linkTargetID);
addToSay($categoryName." ".$linkName." geht runter.");
break;
case 2:
MXC_ShutterMoveUp($linkTargetID);
addToSay($categoryName." ".$linkName." wird hoch gefahren.");
break;
case -2:
MXC_ShutterMoveDown($linkTargetID);
addToSay($categoryName." ".$linkName." wird geschlossen.");
break;
case 0:
MXC_ShutterStop($linkTargetID);
addToSay($categoryName." ".$linkName." gestoppt.");
break;
}
}
}
?>
Und ein Problem hab ich noch mit umlauten. Wenn ich im IPS einen Ordner anlege mit z.B „Büro“, wird darunter nichts ausgeführt, er findet die Kategorie nicht. Wenn ich den aber auf „Arbeitsraum“ umbenne, funktioniert es. Alsp liegt es am „ü“
Hi, also ich habe in der Anleitung beschrieben, dass nur Variablen mit einer hinterlegten „Eigenen Aktion“ oder auch „CustomAction“ genannt geschaltet werden können. Des weiteren muss der Variable ein VariablenProfil mit hinterlegten Assoziationen zugeordnet werden. Dann kann die Variable über den Text der bei den Assoziationen hinterlegt ist geschaltet werden.
für deinen Zweck solltest du einfach mal ein Script mit folgendem Inhalt anlegen und dieses dann als „Eigene Aktion“ der Variable zuordnen:
also ich hab es gerade bei mir getestet. „äüöß“ klappt alles bei mir wunderbar.
Vielleicht ist ein Bug in der Version 0.0.4, dass kann ich leider nicht mehr prüfen, bin schon weiter
Ansonsten musst du mal deinen SiriProxy prüfen ob der auch auf UTF-8 arbeitet. Es kann sein, dass dort kein UTF-8 verarbeitet wird sondern standardmäßig ein anderer Charset eingestellt ist, dann gibt es natürlich Probleme.