HM-Dis-WM55

War ich auch schon am überlegen. Geht bestimmt. Mit einem Taster einen Zähler triggern, welcher in dem Anzeige-Script je nach Stand verschiedene Texte/Meldungen anzeigt. Und einen um die betreffende Aktion auszulösen.
Bin sogar (durch das Script inspiriert) am überlegen ob ich nicht den Part der Systemvariable und des CCU-Programms in meinem Modul umsetzen kann, um Diese in der CCU zu sparen. Würde auch die Einrichtung erleichtern. Dann gleich mit besagten Zähler bei Bedarf.
Michael

Was wäre denn die einfachste Möglichkeit

  1. das aktuelle Datum
  2. die aktuelle Uhrzeit

im Display anzeigen zulassen?

Habe noch zwei Zeilen frei.

:wink:

EDIT: Gefunden



 <?

// Programm zum Beschreiben des OLED Display von Homematic
// Voraussetzung ist das Modul für Homematic von Nancilla
//

include "HM_OLED.inc.php";

define ("HM_Modul_ID",     17456 /*[Hardware\HomeMatic Systemvariablen]*/); //ID des HM Moduls, unter dem die Statusvariablen hängen
define ("HM_Status_Variable_ID",  10938 /*[Objekt #10938 existiert nicht]*/); //Nummer der Statusvariablen (siehe dazu im Modul unter Statusvariablen)

$Temperatur = GetValueFloat(37341 /*[Wired\Sonstiges\Anwesenheitsschalter Wohnzimmer\Status]*/);
$Alarmanlage = GetValueBoolean(20243 /*[Wired\HEQ\scharf_unscharf\Alarmanlage Status]*/);
$Alarmanlage2 = GetValueFormatted (20243);
$Datum = date("d.m.Y");
$Uhrzeit = date("H:i");
//--------------------------------
// Definition der Werte für die Icons

// 0x80 AUS                 icon_on
// 0x81 EIN                icon_off
// 0x82 OFFEN              icon_open
// 0x83 geschlossen        icon_closed
// 0x84 fehler             icon_error
// 0x85 alles ok           icon_ok
// 0x86 information        icon_information
// 0x87 neue nachricht     icon_message
// 0x88 servicemeldung     icon_service
// 0x89 Signal grün        icon_green
// 0x8A Signal gelb        icon_yellow
// 0x8B Signal rot         icon_red
//      ohne Icon          icon_no



// Definition der Werte für die Farben

// 0x80 weiss              colour_white
// 0x81 rot                colour_red
// 0x82 orange             colour_orange
// 0x83 gelb               colour_yellow
// 0x84 grün               color_green
// 0x85 blau               color_blue


// Definition des Array für die Textausgabe
//Eintrag im Muster:
//        $display_line[1] =
//            array(    'text'    =>     'Zeile 1',
//                        'icon'    =>     icon_no,
//                        'colour' =>    colour_red);
// statt 'Zeile 1' muss der anzuzeigende Text eingetragen werden.
// dies kann auch in Form von $variable erfolgen

$display_line[1] =
    array(    'text'    =>     "Temp. Aussen",
                'icon'    =>     icon_no,
                'colour' =>    colour_red);

$display_line[2] =
    array(    'text'    =>     "$Temperatur Grad",
                'icon'    =>     icon_no,
                'colour' =>    colour_red);

$display_line[3] =
    array(    'text'    =>     "$Datum",
                'icon'    =>     icon_no,
                'colour' =>    colour_orange);

$display_line[4] =
    array(    'text'    =>     "$Uhrzeit",
                'icon'    =>     icon_no,
                'colour' =>    colour_orange);

$display_line[5] =
    array(    'text'    =>     "Alarmanlage",
                'icon'    =>     icon_no,
                'colour' =>    colour_green);

$display_line[6] =
    array(    'text'    =>     "$Alarmanlage2",
                'icon'    =>     icon_no,
                'colour' =>    colour_green);


//print_r($display_line);


OLED_String($display_line,HM_Modul_ID,HM_Status_Variable_ID);

?>


Hallo,

Ich bin der Meinung du musst in dem Array, also dort wo jede Zeile definiert wird die Anführungszeichen an den Variablen entfernen. So dürfte das nicht korrekt funktionieren.
also in Zeile 2:

'text' =>  $temperatur."Grad"

Als Ausschnitt.

Bei mir sind dort jedenfalls keine drin.

Gruß
Christian

Und wieder eine kleine Frage an euch Cracks :slight_smile:

Habe jetzt den Taster oben fertig. Jetzt würde ich gerne den unteren belegen.

In Zeile 2 soll dabei stehen, ob im Haus alle Lichter aus sind.

In Zeile 1 steht bereits ob alle Push etc. Ereignisse aktiv oder inaktiv sind.

Dazu nutze ich dieses Script.



<?

$HMEventID[]=27413 /*[Skripte\Kamera\Snapshot\Briefkasten\BriefkastenSnap\]*/;
$HMEventID[]=35733 /*[Skripte\Kamera\Snapshot\Carport\CarportSnap\]*/;
$HMEventID[]=33305 /*[Skripte\Kamera\Snapshot\Einfahrt\EinfahrtSnap\]*/;
$HMEventID[]=55013 /*[Skripte\Kamera\Snapshot\Einfahrt\EinfahrtSnap\]*/;
$HMEventID[]=38860 /*[Skripte\Kamera\Snapshot\Haustür\Haustür Snap\]*/;
$HMEventID[]=12354 /*[Skripte\Kamera\Snapshot\Satspiegel\SatspiegelSnap\]*/;
$HMEventID[]=37239 /*[Skripte\Kamera\Snapshot\Terrasse\TerrasseSnap\]*/;
$HMEventID[]=53451 /*[Skripte\Kamera\Snapshot\Terrasse\TerrasseSnap\]*/;
$HMEventID[]=37057 /*[Skripte\Kamera\Snapshot\Eingang\EingangSnap\]*/;
$HMEventID[]=56746 /*[Skripte\Kamera\Snapshot\Satspiegel2\Snapshot Satspiegel 2\]*/;




$HMEventID[]=38762 /*[Skripte\PUSH\Wired\Fenster Abstellraum\]*/;
$HMEventID[]=57562 /*[Skripte\PUSH\Wired\Fenster Anbau Terrasse\]*/;
$HMEventID[]=26109 /*[Skripte\PUSH\Wired\Fenster Bad Keller\]*/;
$HMEventID[]=23087 /*[Skripte\PUSH\Wired\Fenster Gästezimmer\]*/;
$HMEventID[]=58470 /*[Skripte\PUSH\Wired\Fenster Werkstatt\]*/;
$HMEventID[]=51510 /*[Skripte\PUSH\Wired\Haustür Push\]*/;
$HMEventID[]=16176 /*[Skripte\PUSH\Wired\TerrasentürPush\]*/;
$HMEventID[]=10504 /*[Skripte\PUSH\Push BWM Carport\]*/;
$HMEventID[]=59189 /*[Skripte\PUSH\Push BWM Eingang\]*/;
$HMEventID[]=58591 /*[Skripte\PUSH\Push BWM Satspiegel\]*/;
$HMEventID[]=32482 /*[Skripte\PUSH\Push BWM Terrasse\]*/;
$HMEventID[]=33393 /*[Skripte\PUSH\Push Lichtschranke\]*/;

$HMEventID[]=17229 /*[Skripte\Status E-MAIL BWM etc.\BWM Carport\]*/;
$HMEventID[]=31976 /*[Skripte\Status E-MAIL BWM etc.\BWM Eingang\]*/;
$HMEventID[]=43803 /*[Skripte\Status E-MAIL BWM etc.\BWM Satspiegel\]*/;
$HMEventID[]=16705 /*[Skripte\Status E-MAIL BWM etc.\BWM Terrasse\]*/;
$HMEventID[]=19725 /*[Skripte\Status E-MAIL BWM etc.\LICHTSCHRANKE MAIL\]*/;

$HMEventID[]=29378 /*[Skripte\Verschiedene Szenarien\BWM Carport\BWM Carport nachts\]*/;
$HMEventID[]=29218 /*[Skripte\Verschiedene Szenarien\BWM Satspiegel\BWM Satspiegel bis 22\]*/;
$HMEventID[]=20055 /*[Skripte\Verschiedene Szenarien\BWM Satspiegel\BWM Satspiegel nachts\]*/;
$HMEventID[]=50186 /*[Skripte\Verschiedene Szenarien\BWM Terrasse\BWM Terrasse bis 22\]*/;
$HMEventID[]=24362 /*[Skripte\Verschiedene Szenarien\BWM Terrasse\BWM Terrasse Nachts\]*/;
$HMEventID[]=19709 /*[Skripte\Verschiedene Szenarien\Lichtschranke\Lichtschranke bis 22\]*/;
$HMEventID[]=29618 /*[Skripte\Verschiedene Szenarien\Lichtschranke\lichtschranke nachts\]*/;
$HMEventID[]=50537 /*[Skripte\Verschiedene Szenarien\BWM Eingang\Bwm Eingang bis 22\]*/;
$HMEventID[]=10129 /*[Skripte\Verschiedene Szenarien\BWM Eingang\BWM Eingang Nachts\]*/;
$HMEventID[]=36916 /*[Skripte\Wired\Erdgeschoss\Türen\Haustür-FoyerEG-LichtAN\]*/;



$Count = 0;
foreach($HMEventID as $Event)
        {
      $EreignisInfo = IPS_GetEvent($Event);
        if ($EreignisInfo['EventActive'])
              {
              $Count++;
                }
      }
if ($Count ==0)
          {
        $Aktiv = 0;
         }
        elseif ($Count == count ($HMEventID))
        {
        $Aktiv = 1;
        }
        else
        {
        $Aktiv = -1;
        }
SetValueInteger (15584 /*[Skripte\An- und Abwesenheit Ereignisse\Ereignisse Außen ]*/, $Aktiv);
?>


Wie kann ich jetzt am einfachsten mit Hilfe eines Scripts den Status meiner HM Aktoren abfragen?

Also stelle es mir so vor

if Licht Bad = true
if Licht Küche = true
etc.

Dann soll eine Integer Variable sagen --> „Nein“

if Licht Bad = false
etc.

Dann soll eine Integer Variable sagen --> „Ja“

Danke für eure Mithilfe :slight_smile:

EDIT: Das könnte ich ja dann auch gleich für meine Öffnungsmelder benutzen :wink:

Du kannst es doch genauso wie bei den Events machen: alle zu prüfenden IDs in ein Array und in einer Schleife abfragen…

Gruß

Burkhard

Hallo Leute,

ich habe ein Problem mit IPS.

Kann das an dem Skript liegen? Bzw. an dem Trigger? Habe ja jetzt einfach einen 5 Sekunden auf das Script gelegt. ist das zuviel für IPS und den Rechner?

Es kann eigentlich nur dieses Script schuld sein, da ich in letzter Zeit keine anderen erstellt habe.

Hallo zusammen, hallo Nall chan,

Mein Display ist auch endlich angekommen und der Zusammenbau war schnell erledigt.

Geht das senden der Systemvariable auch ohne das Modul von Michael? Ich versuche es gerade mit der XML API, aber es überträgt nur bis zum ersten Komma. Ich bekomme die Kommas einfach nicht rüber…

Gruß Marcel

Du kannst das über ein Remote HM-Script lösen.
So macht es auch mein Modul.
Beispiel kann ich gerade nicht liefern, da ich diese WE nur unterwegs bin (gerade bei ‚Eure Mütter‘ schlapp gelacht).
Michael

Hallo Michael,

Kein Problem, ich hoffe, ich finde mich zurecht. Also sendest Du per HTTP POST ein Script, welches die Variable setzt?

Gruß Marcel

Jep. An Port 8181. Per Get geht auch, musst dann aber das ganze Script an die URL anhängen. Ist eher unschön, zumal dann alle Sonderzeichen maskiert werden müssen.
Michael

So, kleiner Zwischenstand. Mein Ziel ist es , die Statusanzeige mit wechelnden Displays und zum Schalten diverser Dinge zu nutzen. Angefangen habe ich mit dem Aufbau von Christian und der Hilfe von Michael.

Ich sende jetzt direkt aus IPS, ohne Systemvariable und ohne Programm in der CCU. dazu habe ich Skript-Sende-Funktion (HMRS_HTTP_Post) von Christian (Schablone) an das Script HM_OLED angehangen und übergebe in der Funktion OLED_String nicht die Modul ID, sonder die CCU IP.

Am Ende der Funktion OLED_String übergebe ich es nicht ans Modul, sondern sende über HTTP-POST direkt ans Display:

$HM_Script = '
var OLED = dom.GetObject("OLED-Display");
dom.GetObject("BidCos-RF.[Euer HM Display Name]:1.SUBMIT").State("'.$string.'");
';
echo HMRS_HTTP_Post($ccu_ip, $HM_Script);

Das ganze an einen Tastendruck des Displays getriggert geht. Ein Aufwecken aus IPS habe ich aber auch nicht hin bekommen.

Gruß Marcel

Doch, gefällt mir.

Als Display hätte ich es nicht zwingend gebraucht, aber als Display Taster geht es auch.

Oben tasten wechselt die Seite, unten tasten führt aus.

Gruß Marcel

Ich versuche das ganze gerade noch für IPS-Windows Nutzer etwas einfacher zu lösen. Auch mit Blättern und Aktionen.
Dauert aber noch ein paar Tage.
Dafür braucht es dann nur ein PHP Script als Datenquelle / Aktionsskript. Rest geht fast automatisch.
Michael

Hallo,
anders als der Nick-Name vermuten lässt bin ich inzwischen fast komplett auf HM gewechselt und habe bisher alles mit IP-SYMCON gelöst, um die CCU habe ich mich eigentlich nicht gekümmert ( habe jetzt eine CCU2 ).

Nun habe ich eben auch diesen Display-Schalter WM55 und versuch den in die Gänge zu bekommen und bin bisher gescheitert. Ich habe erstmal versucht nur auf der CCU ein Skript zu triggern welches den Display Text ändert. Das Skript stammt aus diesem Thread.


! Systemvariable „OLED_DISPLAY_01“ lesen und ans Display senden
var OLED = dom.GetObject(„OLED_DISPLAY_01“);

dom.GetObject(„BidCos-RF.“ # dom.GetObject("$src$").Name().StrValueByIndex(".",1) # „.SUBMIT“).State(OLED.Value());

Eine Systemvariable mit dem Namen „OLED_DISPLAY_01“ ist in CCU angelegt und an Kanal 1 des WM55 zugeordnet.

Wenn ich nun dieses obige Skript in der CCU aufrufe ( Skript Testen ) passiert einfach nix.

Mein WM55 zeigt bei Tastendruck nur „keine Daten empfangen“.

Angelernt ist das Teil, in IPSYMCON kann ich es auch „sehen“ und die Tast-Drücke sehe ich dort auch.

Hat jemand eine Idee, gibt es noch irgendwo eine Anleitung ?

Vielen Dank schon mal

Uwe

Der Taster geht nur beim Tastendruck für ein paar Sekunden auf Empfang.
Also mußt du ‚drücken‘ -> Sanduhr wird angezeigt.
Und dann das Script auslösen -> Daten werden übertragen -> Anzeige.
Zum Testen per Hand, muss man also schnell sein :slight_smile:

Michael

Hallo Michael,

da tut sich leider gar nichts : Sanduhr wird angezeigt, Skript ausführen gedrückt, „Keine Daten empfangen“ im Display. Gefühlt alle Timing Varianten ausprobiert

Sieht das Skript ok aus ?

! Systemvariable „OLED_DISPLAY_01“ lesen und ans Display senden
var OLED = dom.GetObject(„OLED_DISPLAY_01“);
dom.GetObject(„BidCos-RF.“ # dom.GetObject("$src$").Name().StrValueByIndex(".",1) # „.SUBMIT“).State(OLED.Value());

Ich weiss nicht was das dom.GetObject … genau macht

cu

Uwe

Steht über haupt was in der Systemvariable ? Wenn da nix drinn steht, kann auch nix über tragen werden. Script sieht so ok aus.
Michael

Wenn ich die Variable auf Zeichenkette setze, kann ich keinen Werte setzen über WebUI, also habe ich Werteliste verwendet und dir Variable enthält nun „wert1;wert2;…“

Es funktioniert nicht :frowning:

wenn ich am Ende ein "WriteLine(„fertig“); hinzufüge und das Skript teste wird „fertig“ nie angezeigt. Ich denke er findet das Gerät und/ oder die Variable nicht

Das wird so nix.
Sehe gerade dass das Script $src$ nutzt, kannst du es nicht per Hand starten. Sondern nur über den Tastendruck des Displays.
Und die Systemvariable muss eine Zeichenkette sein. Kannst du per IPS beschreiben. Geht auch per PHP. Wie steht im Wiki.
Michael

Moin,

jetzt muss ich doch einmal nachfragen, geht das HM-Dis-WM55 Funk Statusdisplay auch über IPS ohne CCU/CCU2?

Ich habe nämlich keine und will mir auch keine anschaffen, würde aber das Display gerne nutzen.

Danke und Grüße
Björn