IPSHomematic

Hallo,

@ 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).

Gruß Proxima

Der Typ beeinflusst das Anlegen nicht, da dies durch die BidCos-Info mitgeliefert wird.

Gruß
Bruno

Hallo,

ich habe gerade ein Modul-Update auf die 2.50.4 gemacht und dabei den folgenden Fehler bekommen:

Wo liegt das Problem ???

Gruß Proxima

Guten Morgen,
wenn ich auf refresh Statusvariablen klicke bekomme ich folgende Meldung:

Wie kann man dies verhindern ??

@Proxima

Kommt die Meldung immer wieder - eventuell war ja grad einmal der Server etwas überlastet und es gab ein Timeout …

@weimigolf

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

Hallo,

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.

Dann hast Du dir die Antwort ja selber gegeben … :wink:

ich hatte gehofft, dass es inzwischen neuere Erkenntnisse gibt :frowning:

@Brownson
habe ich gemacht, kann es sein, dass dies mit der Rauchmelder Gruppe zusammen hängt ??

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");
            }
            $variableId = @IPS_GetVariableIDByName('RSSI_PEER', $instanceId);
            if ($variableId!==false)
            {
                usleep(100000);
                set_time_limit(HM_TIMEOUT_REFRESH);
                @HM_RequestStatus($instanceId, 'RSSI_PEER');
            }
        }
    }

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.

Hi,

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.

In dem Skript ist die Funktion RefreshStatusVariables() enthalten, einfach suchen und die Zeile

                    IPSLogger_Inf(__file__, "Refresh Status for InstanceID=$instanceId");

zwischen den Zeilen

                    set_time_limit(HM_TIMEOUT_REFRESH);
                    HM_RequestStatus($instanceId, 'STATE');

einfügen.

Ergebnis

                    set_time_limit(HM_TIMEOUT_REFRESH);
                    IPSLogger_Inf(__file__, "Refresh Status for InstanceID=$instanceId");
                    HM_RequestStatus($instanceId, 'STATE');

Gruß
Bruno

Hab ich so eingefügt bekomme aber einen fehler… siehe Bild

Dann ist wohl ein Schreibfehler beim Einfügen passiert

so jetzt bekomme ich das hier:

Auf der Seite bleiben, nachdem Du das Refresh angeklickt hast, dann kommt ein Fenster mit den kompletten Meldungen

das ist alles was ich bekomme…