HM-Dis-EP-WM55 e-paper Status Display

So, ich hab das Teil jetzt bekommen und zusammengebaut.
Viel geht aber bisher nicht. Das Modul von Nall-chan (HomeMatic WM55-Dis) funktioniert damit leider nicht…

Hat noch jemand das Teil da und konnte schon spielen?

Gestern geliefert. Aber aktuell keine Zeit :frowning:
Michael

Ok, ich habe es dann mal zusammengebaut.
Allerdings habe ich mir den Aufbau des String welcher an den Datenpunkt ‚SUBMIT‘ gesendet werden muss, nicht weiter angesehen.

Die Instanz der Display-Statusanzeige ist so auch nicht geeignet.
Die Zeilenanzahl stimmt nicht, Farbe kann ePaper nun mal halt auch nicht.
Und der größte Unterschied ist ja, dass die ePaper-Version immer auf Empfang ist und es somit kein Timing bei Übertragen des Text nach einem Tastendruck braucht.

Michael

Bisher habe ich nicht mal richtig gecheckt wie ich das Ding überhaupt sinnvoll mit der CCU nutzen bzw. programmieren kann…
Aber auch mir fehlt da derzeit die Zeit und Muße…

Na geil, das funktioniert ja super.
Hast du folgendes verhalten bei dir auch, Michael?

Klick mich!

Habe aktuell keine Verknüpfung mit einem Aktor hergestellt.
Scheint aber normal zu sein.
Wenn ich etwas an Submit sende, Wird auch erst gelöscht und dann geschrieben.
Bei Verknüpfungen kommt dann ja noch der Status vom Aktor zurück, darum wird zweimal geschrieben.
Michael

@ChristianL
Wenn Du den Link korrigierst sehen wir’s vielleicht auch :wink:
Ansteuerung funktioniert analog zum OLED-Display mit der „netten“ Abweichung, dass es jederzeit angesprochen werden kann -> DETAILS

Beste Grüße
/Jens

Also ich konnte das Video laden?!
@Jens: Danke für den Link.
So ganz identisch ist es aber nicht zum OLED.
Michael

Oh! Liegt wohl an der verwendeten Cipher Suite - die erlaube ich bei mir nicht mehr. Sozusagen mein Fehler :wink:

Muss nachher auch mal ein wenig praktisch spielen. Hatte bisher nur für Theorie Zeit.

Beste Grüße
/Jens

Also ich finde es ein wenig merkwürdig, es wird ja ein paar mal neu „aufgebaut“.
Zudem habe ich der Mitte noch den Status für meine Keymatic, die Zeile wird dann komplett gelöscht wenn sich der Schalt-Aktor Status ändert…

Irgendwie ist das Teil „seltsam“ - das 3x an/aus nach jeder Datenübertragung ist so gewollt. Das soll wahrscheinlich für ein ordentliches Rücksetzen der Anzeige sorgen :rolleyes:
Was ich selten dämlich finde ist, dass man die obere (== Zeile 3 in der Konfig/WebUI) und untere (== Zeile 2 in der Konfig/WebUI) Zeile nicht per Skript setzen kann! Wer denkt sich so’n besch…eidenen Schwachsinn aus!!! :banghead:

[OT]
Toooooooooooooooooooooooooor!!!

[OT]

Beste Grüße
/Jens

Moin Moin ,

Taugt das Zeug was oder ist es wieder ne Null-Nummer von ELV ?

Um ehrlich zu sein … ich habe noch keinen sinnvollen Anwendungsfall für das Teil gefunden!!!
Die Bedienung aus IPS heraus ist soweit ziemlich klar. Ich bin allerdings noch nicht dazu gekommen es soweit in ein Skript zu gießen (analog zum OLED-Display), dass man es durchschaubar ansprechen kann.

Hat jemand Ideen wofür man es noch einsetzen könnte?

Beste Grüße
/Jens

Ich habs noch nicht zusammengelötet, will es aber an der Haustür als Statusanzeige (Temperatur, Fenster noch offen, etc.) und leaving home Taster einsetzen … hab aber derzeit auch wenig Zeit mich zu kümmern …

Gesendet von iPhone mit Tapatalk

das mit dem Display zurücksetzen wie im video ist schon seltsam, habs wieder zurück geschickt

Für mich ist es so Sinnfrei.
Wenn ich drei Stati darstelle und einer sich davon ändert, verschwindet die anderen beiden gänzlich vom Display :confused:

Und das selbst dieser „Löschvorgang“ durchgeführt wird wenn ich die Taster nutze, ohne das sich irgendetwas auf dem Display ändern muss finde ich ebenfalls extrem besch***

Leider kann man ja Bausätze nicht zurückschicken.
Ich finde es echt bescheiden was ELV/EQ3 da derzeit auf den Markt wirft!

Also ich verzweifel gerade mit dem Teil, ich habe mir aus verschiedenen Skripten was zusammengebacken und bekomme einfach nicht hin, wollte es einfach mal piepsen lassen…
Ich weiß nicht genau welche Instanz (0,1,2…) ich ansprechen muss, habe aber alle durchprobiert - es macht keinen Mucks.
Dazu würde ich auch gerne wissen wie ich die Zeilen ansprechen kann - den Rest bekomme ich sicher irgendwie hin…
Hier mein Skript:

<?
$CCU_IP='192.168.1.248';
$string='0xC2';
$HM_Script = 'dom.GetObject("BidCos-RF.NEQ0711845:3.SUBMIT").SUBMIT("'.$string.'");
';
HMRS_HTTP_Post($CCU_IP, $HM_Script);

function HMRS_HTTP_Post($CCU_IP, $HM_Script) {
$fp = fsockopen ($CCU_IP, 8181, $errno, $errstr, 2);
$res = "";
    if (!$fp) {
        $res = "$errstr ($errno)<br />
";
    } else {
        fputs($fp, "POST /Test.exe HTTP/1.1
");
        fputs($fp, "Content-type: application/x-www-form-urlencoded
");
        fputs($fp, "Content-length: ". strlen($HM_Script) ."
");
        fputs($fp, "Connection: close

");
        fputs($fp, $HM_Script);
        while(!feof($fp)) {
            $res .= fgets($fp, 500);
        }
        fclose($fp);
    }
    return $res;
}

?>

Gruß,
Matthias

Hallo zusammen,

anbei meine Ansteuerung des Displays.
(Die Scripte sind aus verschiedenen Scripten zusammengesetzt.)

Include Datei HM_E_Paper.php:

<?
// HM_E_Paper.php

define ("icon_on",             "0x80");
define ("icon_off",            "0x81");
define ("icon_open",           "0x82");
define ("icon_closed",         "0x83");
define ("icon_error",          "0x84");
define ("icon_ok",             "0x85");
define ("icon_information",    "0x86");
define ("icon_message",        "0x87");
define ("icon_service",        "0x88");
define ("icon_no",             "");


function umsetzen($display_line) {
        $string = "0x02,0x0A";
        if ($display_line[1]['text'] != "") {
            $string .= ",0x12,".hex_encode($display_line[1]['text']);
            if ($display_line[1]['icon'] != ""){
                $string .= "0x13,".$display_line[1]['icon'].",0x0A";
            } else {
               $string .= "0x0A";
            }
        } else {
            $string.= ",0x0A";
        }
        if ($display_line[2]['text'] != "") {
            $string .= ",0x12,".hex_encode($display_line[2]['text']);
            if ($display_line[2]['icon'] != ""){
                $string .= "0x13,".$display_line[2]['icon'].",0x0A";
            } else {
               $string .= "0x0A";
            }
        } else {
            $string.= ",0x0A";
        }
        if ($display_line[3]['text'] != "") {
            $string .= ",0x12,".hex_encode($display_line[3]['text']);
            if ($display_line[3]['icon'] != ""){
                $string .= "0x13,".$display_line[3]['icon'].",0x0A";
            } else {
               $string .= "0x0A";
            }
        } else {
            $string.= ",0x0A";
        }
    return $string;
}


function hex_encode($ascii) {
	if (strlen($ascii) > 0 and strlen($ascii) < 5 and strlen($ascii) == 4){

		if ($ascii{0} == "0" and $ascii{1} == "x"){
	      $hex = $ascii;
	      return $hex.",";
	      }
	}
	$hex = '';
	for ($i = 0; $i < strlen($ascii) and $i < 12; $i++) {
		$byte = strtoupper(dechex(ord($ascii{$i})));
		$byte = str_repeat('0', 2 - strlen($byte)).$byte;
		$hex.="0x".$byte.",";
		}
	return $hex;
}


function HMRS_HTTP_Post($CCU_IP, $HM_Script) {
$fp = fsockopen ($CCU_IP, 8181, $errno, $errstr, 2);
$res = "";
    if (!$fp) {
        $res = "$errstr ($errno)<br />
";
    } else {
        fputs($fp, "POST /Test.exe HTTP/1.1
");
        fputs($fp, "Content-type: application/x-www-form-urlencoded
");
        fputs($fp, "Content-length: ". strlen($HM_Script) ."
");
        fputs($fp, "Connection: close

");
        fputs($fp, $HM_Script);
        while(!feof($fp)) {
            $res .= fgets($fp, 500);
        }
        fclose($fp);
    }
    return $res;
}

function wiederholungen_abstand($wiederholungen, $string, $abstand) {
if ($wiederholungen < 1){
       $string = $string . "0xDF,0x1D,";
}   else {
       if ($wiederholungen < 11) {
          $string = $string . "0xD" . ($wiederholungen - 1) . ",0x1D,";
       }
       else {
          if ($wiederholungen == 11) {
             $string = $string . "0xDA,0x1D,";
          }
          else {
             if ($wiederholungen == 12) {
                $string = $string . "0xDB,0x1D,";
             }
             else {
                if ($wiederholungen == 13) {
                   $string = $string . "0xDC,0x1D,";
                }
                else {
                   if ($wiederholungen == 14) {
                      $string = $string . "0xDD,0x1D,";
                   }
                   else {
                      $string = $string . "0xDE,0x1D,";
                   }
                }
             }
          }
       }
    }


if ($abstand <= 10) {
       $string = $string . "0xE0,0x16,";
}   else {
       if ($abstand <= 100) {
          $string = $string . "0xE" . ($abstand - 1 / 10) . ",0x16,";
       }
       else {
          if ($abstand <= 110) {
             $string = $string . "0xEA,0x16,";
          }
          else {
             if ($abstand <= 120) {
                $string = $string . "0xEB,0x16,";
             }
             else {
                if ($abstand <= 130) {
                   $string = $string . "0xEC,0x16,";
                }
                else {
                   if ($abstand <= 140) {
                      $string = $string . "0xED,0x16,";
                   }
                   else {
                      if ($abstand <= 150) {
                         $string = $string . "0xEE,0x16,";
                      }
                      else {
                         $string = $string . "0xEF,0x16,";
                      }
                   }
                }
             }
          }
       }
    }
return $string;
}

?>

Und zum Ansteuern das Script:

<?
//
// Ansteuerung HM-Dis-EP-WM55 E-Paper von Homematic
//

include "HM_E_Paper.php";

$CCU_IP = 'xxx.xxx.xxx.xxx';  // IP der CCU2
$Seriennummer = "NEQxxxxxxx"; // Seriennummer des Display

//---------------------------------------
// Definition der Werte für die Signale
//
//  ! 0xF0 AUS
//  ! 0xF1 Rotes Blitzen
//  ! 0xF2 Grünes Blitzen
//  ! 0xF3 Orangenes Blitzen

$signal = "0xF0";

//---------------------------------------
// Definition der Werte für die Tonfolgen
//
//  ! 0xC0 AUS
//  ! 0xC1 LANG LANG
//  ! 0xC2 LANG KURZ
//  ! 0xC3 LANG KURZ KURZ
//  ! 0xC4 KURZ
//  ! 0xC5 KURZ KURZ
//  ! 0xC6 LANG

$tonfolge = "0xC0";

// Wiederholungen
// 1 bis 15. 0 = Unendlich
$wiederholungen = 5;

// es wird zum nächstmöglichen Abstand aufgerundet. Maximum ist 160s.
$abstand = 10;

//---------------------------------------
//    ******** Icon ***********
// EIN                icon_on
// AUS                icon_off
// OFFEN              icon_open
// geschlossen        icon_closed
// fehler             icon_error
// alles ok           icon_ok
// information        icon_information
// neue nachricht     icon_message
// servicemeldung     icon_service
// ohne Icon          icon_no
//---------------------------------------
// Umlaute - Sonderzeichen:
//
// "{" = "ä"
// "|" = "ö"
// "#" = "Ö"
// "}" = "ü"
// "$" = "Ü"
// "_" = "ß"
// ";" = Sanduhr
// "<" = Pfeil nach unten
// "=" = Pfeil nach oben
// "@" = Pfeil nach rechts unten
// ">" = Pfeil nach rechts oben
//---------------------------------------
//     Zugriff auf vordefinierte Texte
//
//     0x80 Textblock  1
//     0x81 Textblock  2
//     0x82 Textblock  3
//     0x83 Textblock  4
//     0x84 Textblock  5
//     0x85 Textblock  6
//     0x86 Textblock  7
//     0x87 Textblock  8
//     0x88 Textblock  9
//     0x89 Textblock 10

// 1. Zeile *****************************
$display_line[1] =
    array(    'text'    =>     "0x80",
              'icon'    =>     icon_ok);
// 2. Zeile *****************************
$display_line[2] =
    array(    'text'    =>     "0x81",
              'icon'    =>     icon_error);
// 3. Zeile *****************************
$display_line[3] =
    array(    'text'    =>     "0x82",
              'icon'    =>     icon_service);


//*************************************************************************
// Ab hier keine Änderungen machen
//*************************************************************************

$string = umsetzen($display_line);

// Definition der Werte für die Tonfolgen
$string = $string . ",0x14," . $tonfolge . ",0x1C,";

// Wiedeholungen und Abstand hinzufügen
$string = wiederholungen_abstand($wiederholungen, $string, $abstand);

// Definition der Werte für die Signale
$string = $string . $signal . ",0x03";

$HM_Script = '
! Hex-String an das Display senden
dom.GetObject("BidCos-RF.'.$Seriennummer.':3.SUBMIT").State("'.$string.'");
';

//echo $HM_Script;

HMRS_HTTP_Post($CCU_IP, $HM_Script);

?>

Viel Spaß :slight_smile:

Hallo Chris.

Besten Dank für die Scripte, funktioniert 1a! Vielleicht gibt es ja doch noch eine Anwendung für das sch*** Teil…

Hast du zufällig auch das Problem mit dem Löschen bei Tastendruck kompensieren können?

Chris: Vielen vielen Dank!
Jetzt zeigt das Ding mal wenigstens irgendwas an :slight_smile:

Allerdings gehts mir wir ChristianL - wenn ich was drücke geht mir alles „flöten“.

Mein Plan wäre eigentlich wie folgt: Anzeige von irgendwelchen Stati (Licht, Alarmanlagenstatus etc.) und mit einem der Schalter dann abschalten der Alarmanlage (geht über IPS mittels Homematic Rauchmeldern) wenn Sie Alarm gibt oder kurz vor Auslösung. Also wenn der Alarm losgeht (mit Karenzzeit) z.b. den Schalter 10x drücken um Auszuschalten o.Ä.

Aktuell kann ich ja nur was mit dem Skript „draufsenden“ und das geht dann bei Tastendruck ins Nirvana…

Ich würde mich freuen - das erhöht den WAF gewaltig :wink:

LG,
Matthias