Rückmeldung in IPSLight und IPSShadowing (Eltako FSB14 FSR14 FUD14)

Hallo Zusammen,

leider ist beim erstellen eben alles gelöscht worden. Deswegen jetzt etwas kürzer:

Hier eine kurze Anleitung, wie man seine Eltako Aktoren FSB14, FSR14 und FUD14 mit IPSShadowing und IPSLight synchronisieren kann.

In folgendem Zip FIle sind die benötigten Dateien. Diese bitte alle in den Skript Ordner legen.

IPS_ENO_Skripte.zip (5.7 KB)

Dann kommen folgende Schritte:

  1. RegisterVariable anlegen:

    • Übergeordnete Instanz: Enocean Socket, ich habe KEINEN CUTTER verwendet!
    • RegVar_ENO_Code.ips.php als Skript einfügen.
  2. Allen Licht Aktoren eine STRING Variable „ReturnID“ mit der Melde-ID hinzufügen. Die Melde-ID lässt sich leider nich abfragen.

  3. Allen Rollladen Aktoren eine STRING Variable „ReturnID“ und eine INTEGER Variable „Position“ mit Profil IPSSHADOWINGPOSITION hinzufügen

  4. Für die Rückmeldung bei IPSLight folgende Instanzen dem IPSCOMPONENTSWITCH und *DIMMER hinzufügen: IPSComponent.zip (2.18 KB)
    Die Rückmeldung sollte dann schon klappen.

  5. Für IPSShadowing muss das Skript IPSShadowing_Device.class.php ersetzt werden. Die Änderungen sind mit „BOMMH“ gekennzeichnet.
    IPSShadowing_Device.class.zip (5.51 KB)

Sodann sollte die Rückmeldung funktionieren.

Das ganze ist noch nicht 100% verständlich gecodet. Da liegt noch nen bissl arbeit vor mir, aber es funktioniert :slight_smile:

Bei Fragen und Anregungen einfach melden.

Gruß
Maze

PS: Ja, es ist möglich die FSB14er direkt mit einem Zeitbefehl fahren zu lassen, aber das ist noch nicht implementiert, da dafür IPSShadowing fast komplett bearbeitet werden muss. Irgendwann werde ich es aber machen :slight_smile:

Hab’s gerade bei mir implementiert! - gaaanz große Klasse! Vielen Dank! :slight_smile:

Hallo Maze

Ich bekomme bei mir immer die Meldung im Log .
Für Device1 wurde keine ReturnID Variable gefunden.
Für jedes anderes Rollo bekomme ich die gleiche Meldung.
Variable ist angelegt und die Melde ID ist eingetragen.
Vieleicht kannst Du mir einen Tip geben.

Mfg Stefan

Kannst du mal nen Screenshot von dem Baum in IPS machen?

edit:
Vermutungen wären:

  1. InstanzID falsch
  2. variable ReturnID falsche geschrieben?

Hallo Maze
Hier mal der Screenshot.
Wo kann ich die Instanz ID einstellen.

Die InstanzID wird eigentlich nur im IPSShadowingConfiguration Skript eingestellt.

Was zeigt dein Ausgabefenster in der IPS Console an, wenn du die RegisterVariable Debugst und einen Rollladen bewegst?

Hier mal nach eine Befehl für Rollo Küche

hihi, natürlich in HEX Ansicht :wink:

Ok neuer Versuch :slight_smile:

Das sieht doch schonmal gut aus.

Was steht in dem Meldungsfenster? Wenn du bei dem IPSLogger DEBUG oder ALL auswählst für die Anzeige?

Der String ist vollständig.

Ich denke mal du meinst das

Ja, das meine ich.

Was steht den DAVOR für die RegVar_ENO_Code als Debug Information?

Da wird aufgeschlüsselt nach

Länge Data
Länge OData
Packet Type

etc pp

Und die ENO_Code_Identification Debug Meldungen? Das sollte es ein Debug: ReturnID: XX XX XX XX geben

Ich hoffe das hilft weiter

ich bin jetzt unterwegs. schau heute Abend drauf wenn ich daheim bin. passt die ReturnID die dort steht zu einem deiner Rollläden? oder ist das der Code vom Schalter? Auf dem EnoceanFunk wird beides gesendet.
Gruß
Maze

Hallo, jetzt nochmal ausführlicher:

Die Meldung „Für Device # wurde keine ReturnID Variable gefunden!“ tritt in der Funktion ENO_Device_Identification auf.

Diese Funktion verarbeitet den Datensatz aus der RegisterVariablen.

Zunächst wird hierbei geprüft, ob der Datensatz von dem Gateway gesendet wurde (bei mir ID FF F9 68 80). Diese ID ist im Skript auch hardgecodet. Falls das Gateway ne andere ID hat, wäre das nicht schlimm, aber sollte dennoch angepasst werden.

Wenn der Datensatz NICHT vom Gateway ist, wird zunächst die Konfigurationsdatei von IPSShadowing aufgerufen und dann für jeden dort angelegten Device geprüft, ob er die Variable „ReturnID“ enthält. Enthält er diese Variable nicht, dann kommt es zu obiger Meldung.

Diese Meldung ist also erstmal unabhängig von dem Sender.
Die Funktion sucht unter der InstanzID welche im IPSShadowingConfig File hinterlegt wurde.
Setzt man den IPSLogger auf Trace oder All, findet man die Nachricht: „InstanceID: XXXXX“. Diese ID muss das „Parent“ von der „ReturnID“ Variablen sein. Bei Dir wäre das die IPS ID von „Rollo XXX“.

Überprüf mal, welche InstanceID bei Dir ausgegeben wird und ob unter dieser InstanceID dann auch die ReturnID Variable angelegt ist.

IPSShadowing läuft ohne diese Rückmeldung schon bei dir, oder?

Gruß
Maze

Hallo Maze

Erstmal Vielen Dank für deine Hilfe.
Es funktioniert jetzt alles. Ich hatte in der Shadowing Config den Namen des Devices angeben und nicht die ID.
Das war der Fehler. Sehr gute Arbeit von dir mit den Rückmeldungen.
Danke nochmal und einen schönen Sonntag noch.

Mfg Stefan

Freut mich das es klappt.
Viel Spaß und ebenso schönen Sonntag,
Maze

Hallo Maze,

ich bin noch sehr neu in IP Symcon und habe derzeit eine einfache Testumgebung mit ELTAKO Aktoren (FSR14, FSB14, FUD14). Unter IP Symcon sind einige Module der IPSlibrary installiert (u.a. IPSlight und IPShadowing). Die Steuerung der Aktoren über Taster und aus den Modulen funktioniert. Jetzt würde ich gerne die Synchronisierung der manuell über Taster gesteuerten Aktoren mit den IPSLibrary Modulen realisieren. Das ist in diesem Thread aus dem Jahr 2014 ja schon beschrieben. Hierzu habe ich folgende Fragen bzw. Probleme:

1.) Ist die von Dir hier vorgestellte Vorgehensweise noch aktuell?
2.) Ersetzt dies die Möglichkeiten der Synchronisierung über den MessageHandler oder muss man dort auch noch etwas berücksichtigen?
3.) Ich habe die einzelnen Schritte Deiner Anleitung befolgt und meine Lampen und einen Rolladen mit den Variablen ergänzt. Ein Ausdruck des Debug der RegisterVariable beim Aktivieren einer Lampe ist angehängt. Allerdings bekomme ich nicht die von Masterflash geposteten Meldungen im IPSLogger sondern nur alle 5 Minuten eine Warnung zu dem Rolladen. Eine Synchronisierung findet nicht statt.

Kannst Du mir behilflich sein. Vielen Dank im Voraus

Hallo Marwin,
ich bin gerade noch für gut 2 Wochen im Urlaub.

Debugged kann ich hier leider nichts.

Bei meiner installation habe ich nichts verändert. Läuft noch so wie hier beschrieben, auch auf der aktuelle. IPS Version.

Ob man es noch benötigt, kann ich nicht sagen, nur dass es bei mir ohne Probleme läuft.

Gruß
Maze

edit:
Dein Fehler deutet auf IPSShadowing hin.
Für das Shadowing verwende ich schon immer ein angepasstes System, da die Umsetzung der Steuerung nicht ganz meinen Vorstellungen entspricht.
Versuch mal herauszufinden, welches 3te Argument fehlt.

Hallo Maze,

vielen Dank für Deine schnelle Rückmeldung und dann auch noch aus dem Urlaub!

Die Warnung bezieht sich auf die „elseif“-Zeile (594) in der von Dir modifizierten Datei IPSShadowing_Device.class:
// Custom
} elseif (IPSShadowing_ProgramCustom($this->deviceId, $isDay)) {
$programInfo = ‚CustomProgram‘;
// Action done in Custom Procedure

In der „Original-Datei“ lautet diese Passage:

// Custom
} elseif ( ($paramCountCustom == 3 and IPSShadowing_ProgramCustom($this->deviceId, $isDay, $programInfo))
or ($paramCountCustom == 2 and IPSShadowing_ProgramCustom($this->deviceId, $isDay))) {
if ($programInfo==’’) {$programInfo = ‚CustomProgram‘;}
// Action done in Custom Procedure

Die Fehlermeldung bezieht sich auf den Funktionsaufruf in der IPSShadowing_Custom.inc:

function IPSShadowing_ProgramCustom($DeviceId,$isDay,&$programInfo) {
return false;
}

Mich wundert aber zunächst, dass ich die Meldungen aus Post #13 im IPSLogger nicht erhalte und auch die vermutlich einfachere Synchronisation der Aktoren mit dem IPSLight-Modul nicht funktioniert.

Hat aber natürlich Zeit bis nach dem Urlaub!