@ Maze77: Hast Du den Neigungssensor nicht mittels IPSHomematic zu IPS hinzugefügt ???
In IPSHomematic ist doch ein Typ anzugeben, der dann auch, entsprechend des Typs die erforderlichen Variablenprofile anlegt, oder verstehe ich da was falsch ???
Ich hätte erwartet, dass die Statusvariable dann den Status offen / geschlossen oder auf / zu liefert, ähnlich wie bei den Tür-/Fenster-Griff-kontakten (die TFK’s sind bei mir übrigens als BUTTON eingebunden und liefern geschlossen, gekippt und geöffnet; ist das so richtig).
Bau Dir mal eine Debug Meldung ein, damit wir sehen, wo die Meldung herkommt:
public function RefreshStatusVariables() {
$instanceIdList = IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}");
foreach ($instanceIdList as $instanceId) {
$variableId = @IPS_GetVariableIDByName('STATE', $instanceId);
if ($variableId!==false) {
set_time_limit(HM_TIMEOUT_REFRESH);
IPSLogger_Inf(__file__, "Refresh Status for InstanceID=$instanceId");
HM_RequestStatus($instanceId, 'STATE');
}
}
}
Zu finden ist die Funktion in IPSHomematic_Manager.class.php
ich habe mir jetzt auch die IPSHomatic-Funktion herunter geladen und hatte die Hoffnung, damit diese unreach-Flags zurücksetzten zu können. Ich habe keine CCU sondern nur LAN-Module und habe hier im Thread gelesen, dass das nur mit CCU-Steuerung funktioniert. Habe ich das richtig verstanden und ist der Status so noch aktuell ?
Wenn ich die den Zurücksetz-Butten betätige oder das Script direkt aufrufen, passiert einfach nix - auch keine Fehlermeldung.
Hallo Brownson,
ich hätte mal wieder einen Verbesserungsvorschlag.
Könnte man in RefreshRSSIValues() eine Error-Ausgabe einbauen?
Ist die „RSSI_DEVICE“ oder „RSSI_PEER“ nicht vorhanden, erhält man aktuell keinen Hinweis, dass etwas mit der Instanz im Argen sein könnte.
Des Weiteren erhält man eine nicht abgefangene „Unknown Instance“ Meldung von HM_RequestStatus(), wenn man ein Gerät bspw. von der CCU gelöscht hat, jedoch vergessen hat diese in IPS zu löschen. Da die Fehlermeldung nicht wirklich aussagekräftig ist, muss man selbst auf die Suche gehen…
/**
* @public
*
* Refreshed alle RSSI Variablen von der CCU
*/
public function RefreshRSSIValues() {
$instanceIdList = $this->GetMaintainanceInstanceList();
foreach ($instanceIdList as $instanceId) {
$variableId = @IPS_GetVariableIDByName('RSSI_DEVICE', $instanceId);
if($variableId!==false)
{
usleep(100000);
set_time_limit(HM_TIMEOUT_REFRESH);
if(!@HM_RequestStatus($instanceId, 'RSSI_DEVICE'))
{
IPSLogger_Err(__file__, "IPSHomematic: Device ".IPS_GetName(".$instanceId.")." (ID: ".$instanceId.") unbekannt. Von CCU gelöscht?");
}
}
else
{
IPSLogger_Err(__file__, "IPSHomematic: Maintenance-Instanz ".$instanceId." unvollständig/defekt");
}
Habs mir mal notiert und werds bei nächster Gelegenheit ändern…
einzig beim ELSE Zweig bin ich mir etwas unsicher - der setzt doch voraus, dass jedes Device eine Variable „RSSI_DEVICE“ hat - ist das überhaupt gegeben??
public function RefreshRSSIValues() {
$instanceIdList = $this->GetMaintainanceInstanceList();
foreach ($instanceIdList as $instanceId) {
$variableId = @IPS_GetVariableIDByName('RSSI_DEVICE', $instanceId);
if($variableId!==false)
{
usleep(100000);
set_time_limit(HM_TIMEOUT_REFRESH);
if(!@HM_RequestStatus($instanceId, 'RSSI_DEVICE'))
{
IPSLogger_Err(__file__, "IPSHomematic: Device ".IPS_GetName(".$instanceId.")." (ID: ".$instanceId.") unbekannt. Von CCU gelöscht?");
}
}
else
{
IPSLogger_Err(__file__, "IPSHomematic: Maintenance-Instanz ".$instanceId." unvollständig/defekt");
}
$variableId = @IPS_GetVariableIDByName('RSSI_PEER', $instanceId);
if ($variableId!==false)
{
usleep(100000);
set_time_limit(HM_TIMEOUT_REFRESH);
@HM_RequestStatus($instanceId, 'RSSI_PEER');
}
}
}
Hallo Andreas,
ich bin jetzt nicht der allzu intensive Homematic Nutzer. Bei mir ist Homematic aktuell eher als eine vorübergehende Notlösung an Stellen eingesetzt, die per Bus-Kabel noch nicht erreicht werden können. Daher müssten sich hier vermutlich die Homematic Gurus dazu äußern. Meine HM-Geräte habe jedoch alle eine „RSSI_DEVICE“.
Ansonsten müsste man den ELSE am Besten zu „RSSI_PEER“ verschieben, sofern diese Variable jedes HM-Gerät besitzt.
hab jetzt auch dauerhaft das gleiche Problem wie aus Post #84 versteh nur nicht wie ich das zum debugen einfürgen soll in IPSHomematic_Manager einfach vor Skript ende hineinkopieren geht nicht.