+ Antworten
Seite 2 von 3 ErsteErste 1 2 3 LetzteLetzte
Ergebnis 11 bis 20 von 27
  1. #11
    Registriert seit
    Sep 2020
    Beiträge
    23

    Post Änderung der Vorgabe

    Ich habe einmal soweit ich konnte die Vorgabe Deines Profils angepasst und habe nun noch die
    Laufzeit sowie TeachIn/TeachOut offen.
    Da komme ich nicht weiter, aber der Anfang des Scriptes könnte funktionieren.
    Vielleicht schaust Du mal drüber ob das so klappen kann.

    MfG
    Ingo

    <?php
    class mEnOceanFEEPA53808_7 extends IPSModule
    {
    public function Create()
    {
    //Never delete this line!
    parent::Create();
    $this->RegisterPropertyString("ReturnID", "00000000");

    $this->RegisterPropertyString("BaseData", '{
    "DataID":"{70E3075F-A35D-4DEB-AC20-C929A156FE48}",
    "Device":165, //Telegram Type RPS/1BS/4BS/VLD etc.
    "Status":0,
    "DeviceID":0,
    "DestinationID":-1,
    "DataLength":4,
    "DataByte12":0,
    "DataByte11":0,
    "DataByte10":0,
    "DataByte9":0,
    "DataByte8":0,
    "DataByte7":0,
    "DataByte6":0,
    "DataByte5":0,
    "DataByte4":0,
    "DataByte3":0,
    "DataByte2":0,
    "DataByte1":0,
    "DataByte0":0
    }');

    //Connect to available enocean gateway
    $this->ConnectParent("{A52FEFE9-7858-4B8E-A96E-26E15CB944F7}");

    }

    public function Destroy(){
    //Never delete this line!
    parent:estroy();

    }

    public function ApplyChanges()
    {
    //Never delete this line!
    parent::ApplyChanges();

    $this->RegisterVariableInteger('Position', $this->Translate('Position'), "~Blinds");

    # Filter setzen
    $this->SetReceiveDataFilter(".*"DeviceID":".(int)hexdec( $this->ReadPropertyString("ReturnID")).",.*");

    # Slider für Position aktivieren
    $this->EnableAction("Position");

    }

    public function ReceiveData($JSONString)
    {
    $this->SendDebug("Received", $JSONString, 0);
    $data = json_decode($JSONString);

    switch($data->Device) {
    case "165": // 4BS
    $position = $data->DataByte2;
    $this->SendDebug("Received Position", $position."%", 0);
    SetValue($this->GetIDForIdent("Position"), $position);
    break;
    default:
    $this->LogMessage("Unknown Message", KL_ERROR);
    }

    }

    public function RequestAction($Ident, $Value)
    {
    switch($Ident) {
    case "Position":
    $this->ShutterMoveTo($Value);
    break;
    default:
    throw new Exception("Invalid Ident");
    }
    }

    public function ShutterMoveTo(int $position)
    {
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->DataByte0 = 72; // DB0 Bit 1 Pos.Value avail Bit6 (Val 4) Drive to.. DB2 Pos.Val DB0.3 = 1 Data Telegram
    $data->DataByte2 = $position;
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function ShutterStop()
    {
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->DataLength= 1;
    $data->DataByte0 = 10; // Set Func Stop DB0.4 = 1
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function ShutterMoveDown()
    {
    $this->ShutterMoveTo(100);
    }

    public function ShutterMoveUp()
    {
    $this->ShutterMoveTo(0);
    }

    public function UpdatePosition()
    {
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->DataLength= 1;
    $data->DataByte0 = 8; // DB0.3 = 2 Data Telegram DB 0.4-7 = 0 Status request
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }



    public function SetRunTime(int $milliseconds)
    {
    $milliseconds = (int)($milliseconds/10);
    if($milliseconds < 500 || $milliseconds >32767) $milliseconds = 32767;
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->DataLength= 5;
    $data->DataByte0 = 5;
    $data->DataByte1 = 7;
    $data->DataByte3 = $milliseconds%256;
    $data->DataByte4 = (int)($milliseconds/256);
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function TeachIn()
    {
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->Device = 165, //Telegram Type RPS/1BS/4BS/VLD etc.
    $data->DataLength = 4; // 4BS = 4Byte ????
    $data->DataByte0 = 8;
    $data->DataByte1 = 5;
    $data->DataByte2 = 0;
    $data->DataByte3 = 0;
    $data->DataByte4 = 70;
    $data->DataByte5 = 1;
    $data->DataByte6 = 145;
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function TeachOut()
    {
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->Device = 165, //Telegram Type RPS/1BS/4BS/VLD etc.
    $data->DataLength = 4; // 4BS = 4Byte ????
    $data->DataByte0 = 210;
    $data->DataByte1 = 5;
    $data->DataByte2 = 0;
    $data->DataByte3 = 0;
    $data->DataByte4 = 70;
    $data->DataByte5 = 1;
    $data->DataByte6 = 161;
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    protected function SendData($data)
    {
    $this->SendDataToParent($data);
    $this->SendDebug("Sended", $data, 0);
    }


    protected function SendDebug($Message, $Data, $Format)
    {
    if (is_array($Data))
    {
    foreach ($Data as $Key => $DebugData)
    {
    $this->SendDebug($Message . ":" . $Key, $DebugData, 0);
    }
    }
    else if (is_object($Data))
    {
    foreach ($Data as $Key => $DebugData)
    {
    $this->SendDebug($Message . "." . $Key, $DebugData, 0);
    }
    }
    else
    {
    parent::SendDebug($Message, $Data, $Format);
    }
    }
    }

  2. #12
    Registriert seit
    Sep 2020
    Beiträge
    23

    Post Änderungen fertig

    Hallo zusammen,

    ich habe die Änderungen an dem Modul fertig und brauche jetzt mal Hilfe für die DataID und das Einbinden dises Teils in das MEF Projekt.

    Hier der Code zu dem Profil:

    <?php
    class mEnOceanFEEPA53808_7 extends IPSModule
    {
    public function Create()
    {
    //Never delete this line!
    parent::Create();
    $this->RegisterPropertyString("ReturnID", "00000000");

    $this->RegisterPropertyString("BaseData", '{
    "DataID":"{70E3075F-A35D-4DEB-AC20-C929A156FE48}",
    "Device":165, //Telegram Type RPS/1BS/4BS/VLD etc.
    "Status":0,
    "DeviceID":0,
    "DestinationID":-1,
    "DataLength":4,
    "DataByte12":0,
    "DataByte11":0,
    "DataByte10":0,
    "DataByte9":0,
    "DataByte8":0,
    "DataByte7":0,
    "DataByte6":0,
    "DataByte5":0,
    "DataByte4":0,
    "DataByte3":0,
    "DataByte2":0,
    "DataByte1":0,
    "DataByte0":0
    }');

    //Connect to available enocean gateway
    $this->ConnectParent("{A52FEFE9-7858-4B8E-A96E-26E15CB944F7}");

    }

    public function Destroy(){
    //Never delete this line!
    parent:estroy();

    }

    public function ApplyChanges()
    {
    //Never delete this line!
    parent::ApplyChanges();

    $this->RegisterVariableInteger('Position', $this->Translate('Position'), "~Blinds");

    # Filter setzen
    $this->SetReceiveDataFilter(".*"DeviceID":".(int)hexdec( $this->ReadPropertyString("ReturnID")).",.*");

    # Slider für Position aktivieren
    $this->EnableAction("Position");

    }

    public function ReceiveData($JSONString)
    {
    $this->SendDebug("Received", $JSONString, 0);
    $data = json_decode($JSONString);

    switch($data->Device) {
    case "165": // 4BS
    $position = $data->DataByte2;
    $this->SendDebug("Received Position", $position."%", 0);
    SetValue($this->GetIDForIdent("Position"), $position);
    break;
    default:
    $this->LogMessage("Unknown Message", KL_ERROR);
    }

    }

    public function RequestAction($Ident, $Value)
    {
    switch($Ident) {
    case "Position":
    $this->ShutterMoveTo($Value);
    break;
    default:
    throw new Exception("Invalid Ident");
    }
    }

    public function ShutterMoveTo(int $position)
    {
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->DataByte0 = 72; // DB0 Bit 1 Pos.Value avail Bit6 (Val 4) Drive to.. DB2 Pos.Val DB0.3 = 1 Data Telegram
    $data->DataByte2 = $position;
    $data->DataByte3 = 7; // Command 7 = Shutters/Blinds
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function ShutterStop()
    {
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->DataLength= 2;
    $data->DataByte0 = 10; // Set Func Stop DB0.4 = 1
    $data->DataByte3 = 7; // Command 7 = Shutters/Blinds
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function ShutterMoveDown()
    {
    $this->ShutterMoveTo(100);
    }

    public function ShutterMoveUp()
    {
    $this->ShutterMoveTo(0);
    }

    public function UpdatePosition()
    {
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->DataLength= 1;
    $data->DataByte0 = 8; // DB0.3 = 2 Data Telegram DB 0.4-7 = 0 Status request
    $data->DataByte3 = 7; // Command 7 = Shutters/Blinds
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }



    public function SetRunTime(int $milliseconds)
    {
    $milliseconds = (int)($milliseconds/10);
    if($milliseconds < 500 || $milliseconds >32767) $milliseconds = 32767;
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->DataLength= 4;
    $data->DataByte0 = 112; // DB0.4-7 set Runtime Func.7
    $data->DataByte1 = $milliseconds%256; // Runtime Value to open Func.7
    $data->DataByte2 = $milliseconds%256; // Runtime Value to close Func.7
    $data->DataByte3 = 7; // Command 7 = Shutters/Blinds
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function TeachIn()
    {
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->Device = 212, //Telegram Type Universal Teach In
    $data->DataLength = 7; // Länge 7Byte
    $data->DataByte0 = 165; //165=A5
    $data->DataByte1 = 56; // 56=38
    $data->DataByte2 = 8; // 8=8
    $data->DataByte3 = 0; // 3Bit MSB Manufacturer ID
    $data->DataByte4 = 2d; // Afriso= 2d LSB Manufacturer ID 46 wäre NodOn bzw. ID RF !!!!
    $data->DataByte5 = 1; // Number of indiv.Channels to be taught in
    $data->DataByte6 = 224; // 1 Bidirectional 0 Teach in response expected 0 0 -0 0 0 0- Teach in Query = 0
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function TeachOut()
    {
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->Device = 212, //Telegram Type Universal Teach In
    $data->DataLength = 7; // Länge 7Byte
    $data->DataByte0 = 165;
    $data->DataByte1 = 56;
    $data->DataByte2 = 8;
    $data->DataByte3 = 0;
    $data->DataByte4 = 2d;
    $data->DataByte5 = 1;
    $data->DataByte6 = 161;
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    protected function SendData($data)
    {
    $this->SendDataToParent($data);
    $this->SendDebug("Sended", $data, 0);
    }


    protected function SendDebug($Message, $Data, $Format)
    {
    if (is_array($Data))
    {
    foreach ($Data as $Key => $DebugData)
    {
    $this->SendDebug($Message . ":" . $Key, $DebugData, 0);
    }
    }
    else if (is_object($Data))
    {
    foreach ($Data as $Key => $DebugData)
    {
    $this->SendDebug($Message . "." . $Key, $DebugData, 0);
    }
    }
    else
    {
    parent::SendDebug($Message, $Data, $Format);
    }
    }
    }

    MfG

    Ingo

  3. #13
    Registriert seit
    Jan 2012
    Beiträge
    869

    Hallo Ingo,
    Ich sehe jetzt erst, dass Du hier sehr aktiv warst. Sehr schön. Ich gucke mir das mal an und baue das, wenn Du magst in mein Modul mit ein.

    Viele Grüße
    Jürgen

  4. #14
    Registriert seit
    Sep 2020
    Beiträge
    23

    Standard Re.

    Hallo Jürgen,

    das Angebot steht dir eines meiner Module zum testen zuzusenden.
    Natürlich kannst Du das bei Dir mit einbinden in die MEF, vielleicht besteht ja die Möglichkeit die fehlenden Funktionen wie Blinds angle etc. noch mit einzubauen, dann wäre das so ein universal Teil für diese Geräte.

    In den Kommentaren habe ich Dein bestehendes Modul mit angesprochen, so das Du dort noch mal sehen kannst ob das alles richtig ist.
    Ich bin aber nicht tiefer in Deine Programmierung reingegangen.
    Da ich fast alles kommentiert habe solltest Du das recht einfach haben mit dem nachvollziehen.
    Vor allem an dem Teach in/out hab ich gesessen und das kommentiert weil nicht ganz klar war was dort gemacht wurde.
    Sollte jetzt aber so passen.

    Wie gesagt, das ist nur die Grundprogrammierung, für den Rest können wir ja mal überlegen ob wir`s machen.

    MfG

    Ingo

  5. #15
    Registriert seit
    Jan 2012
    Beiträge
    869

    Standard More Enocean Features V3.00 mit A5-38-08-7

    Hallo Ingo,

    ich habe eben eine neue Version von More Enocean Features als Beta-Version in den Module-Store eingestellt. Dabei habe ich an einigen Stellen etwas improvisiert bzw. geraten oder auf Deine Vorlage gebaut, da ich die Hardware selbst nicht habe. Gucke mal bitte, ob das so funktioniert. Zu einem besonderen TeachIN-Prozedere habe ich nichts gefunden. Ich sende deshalb ein ganz einfaches TeachIn-Telegramm und hoffe, dass es so funktioniert.

    Viel Erfolg und bitte um Rückmeldung, was geht und was nicht geht.

    Jürgen

  6. #16
    Registriert seit
    Sep 2020
    Beiträge
    23

    Arrow Re.

    Hallo Jürgen,

    Wie gesagt, ich sende Dir gerne das Hardwaremodul und die Beschreibung vom Hersteller zu :-)

    Habe Deine Software mal probiert ( der Trick mit der Beta war nicht schlecht ) wer kann das ahnen, aber habs gefunden) und es will leider nicht

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Fehler einlernen.JPG 
Hits:	13 
Größe:	26.4 KB 
ID:	55886

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Fehler einlernen2.JPG 
Hits:	11 
Größe:	21.5 KB 
ID:	55887

    Verstehe leider nicht wo da kein Integer sein soll, sieht für mich gut aus aber....hmm
    Vielleicht hast Du noch eine Idee.

    MfG

    Ingo

  7. #17
    Registriert seit
    Jan 2012
    Beiträge
    869

    Das ist ja merkwürdig. Passiert das immer oder nur bei einem bestimmten Befehl?
    Kannst Du mir mal zeigen, was im Debug steht? Kommen die Rückmeldungen des Rolladen bereits rein?
    Du kannst versuchsweise Deine GeräteID auch selbst von HEX nach Integer wandeln. Entsprechend Umrechner findest Du im Internet. Und dann trägst Du die GeräteID direkt als Integer ein.

    Viele Grüße
    Jürgen

  8. #18
    Registriert seit
    Sep 2020
    Beiträge
    23

    Standard Re.

    Hallo Jürgen,

    Habe gestern den ganzen Tag Versuche gemacht.
    Werde Dir entsprechende Bilder zukommen lassen.
    Fakt ist das learn in muss anders werden damit das Gerät Befehle akzeptiert vom Sender und dazu muss der geänderte Befehl gesendet werden.
    Ich war mit dem Senden per Symcon erfolglos, da nur der Basestring mit der 7 gesendet wird und ein Teach in nicht übernommen wird( kannst dir meinen fork ja mal ansehen)
    Leider komm ich grade erst von der Arbeit/Coronatest und bin etwas kaputt im Moment. Erst mal essen und dann weiter sehen.

    MfG

    Ingo

  9. #19
    Registriert seit
    Jan 2012
    Beiträge
    869

    kein Problem. Bei mir ist der zeitliche Rahmen auch nicht wirklich üppig. Ich schiebe das immer mal zwischen, weil ich das spannend finde. Ich habe heute Abend noch ein bisschen gelesen, bin aber nicht viel schlauer geworden. Zum Lerntelegramm habe ich sehr wenig gefunden. Eventuell kann das A5-38-08-Lerntelegramm verwendet werden, dass ich bei Eltako gefunden habe, wenn man die Manufacturer-ID von "0D" für Eltako auf "2D" für Afriso umstellt. Das sieht dann wie folgt aus:
    DB3: 224, DB2: 64, DB1: 45, DB0: 128.

    Kannst Du das mal probieren?

    Ggf. setzt Du DB1 auch mal auf 0.

    Womit hast Du Deine Aktoren vor IPS betrieben? Hast Du ggf. noch ein Afriso Gateway? Dann könntest Du mit dem Gateway einen Einlernvorgang starten und mit IPS lauschen. Dann kennen wir auch das gesendete Lerntelegramm.

    Die Antworten Deines Aktors kommen mit A5-11-03. Das müssen wir auch noch kontrollieren.

    Viele Grüße
    Jürgen

  10. #20
    Registriert seit
    Sep 2020
    Beiträge
    23

    Thumbs up Melde Erfolg auf der fast ganzen Linie

    Hallo Jürgen,

    ich habe heute etwas Zeit gehabt und die Telegramme/Programmierung angepasst.
    Was ich konnte hab ich nun zum laufen gebracht.
    Zum Ablauf, ich hatte die gleiche Idee wie Du und habe die "alten" Telegramme von Hom.ee mitgespickt.
    Habe Sie dann eingebaut und ein Modul mit Lampen dran laufen lassen.
    Mit ein bischen hin und her hat das geklappt.
    Du kannst den Code aus dem Fork von Github holen und schön machen oder diesen hier nehmen mit viel getippsel.
    Die Blinds habe ich nicht mit drin nur die Rollershutter Funktionen. Ich wüste im moment auch nicht wie ich die dann testen sollte
    Und noch mal zu den Modulen:
    Es sind die Afriso ABR 152 wie Du schon richtig gelesen hast haben die als Empfänger das A5-38-08 mit Befehlscode 7 drinne und Antworten mit dem A5-11-03 gem. dem Afriso Dokument mit ID:900 100 0872 Version: 06.2017.0 falls es jemanden interessiert.
    Falls die anderen Funktionen noch von jemandem benötigt werden, gerne melden, ich helfe wenn ich kann.
    @ Jürgen: Vielen Dank für Deine Hilfe, es ist bestimmt nicht das letzte Mal das ich Dich benötige.

    MfG

    Ingo

    <?php
    class mEnOceanF_EEP_A53808_7 extends IPSModule{
    public function Create(){
    //Never delete this line!
    parent::Create();
    $this->RegisterPropertyString("ReturnID", "00000000");

    $this->RegisterPropertyString("BaseData", '{
    "DataID":"{70E3075F-A35D-4DEB-AC20-C929A156FE48}",
    "Device":165,
    "Status":0,
    "DeviceID":0,
    "DestinationID":-1,
    "DataLength":4,
    "DataByte12":0,
    "DataByte11":0,
    "DataByte10":0,
    "DataByte9":0,
    "DataByte8":0,
    "DataByte7":0,
    "DataByte6":0,
    "DataByte5":0,
    "DataByte4":0,
    "DataByte3":0,
    "DataByte2":0,
    "DataByte1":0,
    "DataByte0":0
    }');

    //Connect to available enocean gateway
    $this->ConnectParent("{A52FEFE9-7858-4B8E-A96E-26E15CB944F7}");

    }

    public function Destroy(){
    //Never delete this line!
    parent:estroy();

    }

    public function ApplyChanges(){
    //Never delete this line!
    parent::ApplyChanges();

    $this->RegisterVariableInteger('Position', $this->Translate('Position'), "~Shutter");

    # Slider für Position aktivieren
    $this->EnableAction("Position");

    # Filter setzen
    $this->SetReceiveDataFilter(".*"DeviceID":".(int)hexde c( $this->ReadPropertyString("ReturnID")).",.*");

    }

    public function ReceiveData($JSONString){
    $this->SendDebug("Received", $JSONString, 0);
    $data = json_decode($JSONString);

    switch($data->Device) {
    case "165":
    $position = $data->DataByte2;
    $this->SendDebug("Received Position", $position."%", 0);
    $this->SetValue("Position", $position);
    break;
    default:
    $this->LogMessage("Unknown Message", KL_ERROR);
    }

    }

    public function RequestAction($Ident, $Value){
    switch($Ident) {
    case "Position":
    $this->ShutterMoveTo($Value);
    break;
    default:
    throw new Exception("Invalid Ident");
    }
    }

    public function ShutterMoveTo(int $position){
    if($position <0)$position = 0; // geprüft i.O.
    if($position >100)$position = 100;
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->DataByte0 = 72;
    $data->DataByte1 = 00;
    $data->DataByte2 = $position;
    $data->DataByte3 = 07;
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function ShutterStop(){
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->DataByte0 = 24; // geprüft i.O.
    $data->DataByte1 = 00;
    $data->DataByte2 = 00;
    $data->DataByte3 = 07;
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function ShutterMoveDown(){
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->DataByte0 = 56; // geprüft i.O.
    $data->DataByte1 = 00;
    $data->DataByte2 = 00;
    $data->DataByte3 = 07;
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function ShutterMoveUp(){
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->DataByte0 = 40; // geprüft i.O.
    $data->DataByte1 = 00;
    $data->DataByte2 = 00;
    $data->DataByte3 = 07;
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function UpdatePosition(){
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->DataByte0 = 8; // geprüft es wird was gemeldet Hardwaretest später
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function SetRunTime(int $secondsUp, int $secondsDown){
    if($secondsUp <0)$secondsUp = 0; // Nicht unterstützt
    if($secondsUp >255)$secondsUp = 255;
    if($secondsDown <0)$secondsDown = 0;
    if($secondsDown >255)$secondsDown = 255;
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->DataByte0 = 120;
    $data->DataByte1 = $secondsUp; //Test
    $data->DataByte2 = $secondsDown;
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function TeachIn()
    {
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->Device = 165; // geprüft i.O.
    $data->DataLength = 4; //
    $data->DataByte0 = 128; //
    $data->DataByte1 = 255; //
    $data->DataByte2 = 71; //
    $data->DataByte3 = 224; //
    $data->DataByte5 = 00;
    $data->DataByte6 = 00;
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    public function TeachOut()
    {
    $data = json_decode($this->ReadPropertyString("BaseData"));
    $data->Device = 165; //ungetestet
    $data->DataLength = 4; //
    $data->DataByte0 = 128;
    $data->DataByte1 = 255;
    $data->DataByte2 = 71;
    $data->DataByte3 = 224;
    $data->DataByte4 = 00;
    $data->DataByte5 = 00;
    $data->DataByte6 = 00;
    $data->DestinationID = (int)hexdec($this->ReadPropertyString("ReturnID"));
    $this->SendData(json_encode($data));
    }

    protected function SendData($data){
    $this->SendDataToParent($data);
    $this->SendDebug("Sended", $data, 0);
    }


    protected function SendDebug($Message, $Data, $Format){
    if (is_array($Data)){
    foreach ($Data as $Key => $DebugData){
    $this->SendDebug($Message . ":" . $Key, $DebugData, 0);
    }
    }else if (is_object($Data)){
    foreach ($Data as $Key => $DebugData){
    $this->SendDebug($Message . "." . $Key, $DebugData, 0);
    }
    }else{
    parent::SendDebug($Message, $Data, $Format);
    }
    }
    }

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 04.02.20, 17:14
  2. Zweite CCU2 oder vorhd. CCU2 um LAN-Gateway erweitern
    Von Ottersberger im Forum HomeMatic
    Antworten: 7
    Letzter Beitrag: 03.01.17, 11:36
  3. Z-Wave Vera Control Gateway Edge
    Von matterazi im Forum Z-Wave
    Antworten: 1
    Letzter Beitrag: 27.08.16, 15:01
  4. Location Control um flexible Zeitangaben erweitern
    Von paschendale im Forum Allgemeine Diskussion
    Antworten: 13
    Letzter Beitrag: 06.06.16, 10:43
  5. Blinds and windows
    Von Ron im Forum Skripte, PHP, SQL
    Antworten: 0
    Letzter Beitrag: 08.08.12, 12:35

Stichworte