FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: stevesmaw am 11 August 2017, 14:48:18

Titel: [gelöst] Fensterkontakt Schaltzustand erneut vom Device schicken lassen
Beitrag von: stevesmaw am 11 August 2017, 14:48:18
Hallo Forum,

Ich habe mehrere Fensterkontakte in Fhem eingebunden und in smartvisu visualisiert.
In einem SVG Grundriss befinden sich Rechtecke (meine Fenster) die je nach Zustand <rot> und <grün> färben.
In einer Tabelle darunter sind die Fenster je nach Räumen getrennt, aufgelistet.
Mit einen Klick auf ein Fenster in der Tabelle wird ein Popup geöffnet wo Batteriezustand und Sabotage Kontakt angezeigt werden.
Wenn das Fenster aber geschlossen ist und ein Sabotage Alarm ansteht, bleibt das Fenster in der SVG Datei aber grün, da ich nur den Fensterstatus auswerte.
Dabei kam mir die Idee das entsprechende Fenster zu identifizieren.
Dafür habe ich im FHEM den Status state folgendermaßen verändert
setreading <Device> state identification
Mein Fenster hat nun den Zustand identification.
Wegen mir wird das entsprechende Fenster im Grundriss nun gelb.

Jetzt kommt meine Frage:

Wie kann ich jetzt den Fensterkontakt dazu zwingen mir seinen aktuellen Zustand zu schicken.

Ich hoffe ich habe es halbweg verständlich erklärt.

Grüße Steve

Titel: Antw:Fensterkontakt Schaltzustand erneut vom Device schicken lassen
Beitrag von: Amenophis86 am 11 August 2017, 16:46:39
Frage Nr.1 wäre: Was haste denn überhaupt für einen Kontakt?
Titel: Antw:Fensterkontakt Schaltzustand erneut vom Device schicken lassen
Beitrag von: Otto123 am 11 August 2017, 16:53:40
Liegt das Problem nicht hierin:?
Zitatsetreading

setreading <devspec> <reading> <value>

Der Befehl setzt das Reading <reading> auf den Wert <value> ohne Signale an das betroffene Gerät zu senden, generiert aber Ereignisse und die übliche eventMap und stateFormat Umwandlung wird auch durchgeführt.
Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec> und die Beschreibung des set Befehls für Ersetzung.

Beispiel:
setreading lampe state on
Achtung: setreading generiert kein Event für ein Gerät X, falls es aus einem notify für Gerät X aufgerufen wurde. In so einem Fall könnte man auf "sleep 0.1; setreading X Y Z" ausweichen.
setstate

setstate <devspec> <value>

Der Befehl setzt den STATE Eintrag des Gerätes direkt, ohne Ereignisse zu generieren oder ein Signal an das Gerät zu senden. Dieser Eintrag ist maßgebend für die Status-Anzeige in diversen Frontends. Dieser Befehl wird auch im statefile benutzt.
Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.

Beispiel:
setstate lampe An

Ist es nicht besser ein anderes reading / userreadings zu  nehmen?
Titel: Antw:Fensterkontakt Schaltzustand erneut vom Device schicken lassen
Beitrag von: stevesmaw am 11 August 2017, 21:16:31
Danke für die Antworten

Zitat von: Amenophis86 am 11 August 2017, 16:46:39
Frage Nr.1 wäre: Was haste denn überhaupt für einen Kontakt?

Homematic  HM-SEC-SCo

Zitat von: Otto123 am 11 August 2017, 16:53:40
Liegt das Problem nicht hierin:?
Ist es nicht besser ein anderes reading / userreadings zu  nehmen?

Ein Userreading würde mein Problem glaube nicht lösen.
Ich habe zudem schon ein Userreading und kann (soweit Ich weiß auch pro Gerät nur ein Userreading haben).

Das Problem ist ja nicht den Status abzufragen (der wäre in meinem Fall ja identification),
sondern ich möchte das Gerät Fragen wie der Stand ist, sodass der Zustand identification mit dem reellen Zustand überschrieben wird.

Ich möchte also ein Signal an den Kontakt schicken -> Schicke mir bitte deinen Zustand nochmal.
Titel: Antw:Fensterkontakt Schaltzustand erneut vom Device schicken lassen
Beitrag von: Otto123 am 11 August 2017, 21:26:57
Hi,
mit Deiner Annahme zu userreadings liegst Du falsch
ZitatuserReadings
Komma getrennte Liste von benutzerdefinierten Readings. Jede Definition hat folgendes Format:
<reading>[:<trigger>] [<modifier>] { <perl code> }
Diese benutzerdefinierte Readings werden bei jeder Aktualisierung der Gerätereadings gesetzt, indem das spezifizierte perl code { <perl code> } ausgeführt wird, und dessen Wert dem Reading zugewiesen wird. Falls <trigger> spezifiziert ist, dann findet diese Ausführung nur dann statt, falls einer der aktualisierten Readings dem regexp <trigger> entspricht (matched).
Beispiele:
attr myEnergyMeter userReadings energy { ReadingsVal("myEnergyMeter","counters.A",0)/1250.0;; }
attr myMultiMeter userReadings energy1:counters.A.* {ReadingsVal("myMultiMeter","counters.A",0)/1250.0}, energy2:counters.B.* {ReadingsVal("myMultiMeter","counters.B",0)/1250.0}

Du meinst wenn einer den Fensterkontakt aufgebrochen hat möchtest Du den Kontakt fragen ob das Fenster zu ist? Er soll das per Funk extra mitteilen? Hab ich das richtig verstanden?

Meines Wissens geht das nicht. Du kannst die Datenübertragung nicht initiieren. Das muss der Kontakt tun. Aber ich weiß nicht alles.

Gruß Otto
Titel: Antw:Fensterkontakt Schaltzustand erneut vom Device schicken lassen
Beitrag von: Amenophis86 am 11 August 2017, 21:47:18
Der HM Fensterkontakt sendet nur von selbst, wenn er betätigt wird. Das heißt bewegt oder der Config Knopf gedrückt. Anders keine Chance.
Titel: Antw:Fensterkontakt Schaltzustand erneut vom Device schicken lassen
Beitrag von: stevesmaw am 14 August 2017, 08:44:19
Guten morgen.

Zitat von: Otto123 am 11 August 2017, 21:26:57
Hi,
mit Deiner Annahme zu userreadings liegst Du falsch
Du meinst wenn einer den Fensterkontakt aufgebrochen hat möchtest Du den Kontakt fragen ob das Fenster zu ist? Er soll das per Funk extra mitteilen? Hab ich das richtig verstanden?

Meines Wissens geht das nicht. Du kannst die Datenübertragung nicht initiieren. Das muss der Kontakt tun. Aber ich weiß nicht alles.

Gruß Otto

Danke für die Information ;)

Zitat von: Amenophis86 am 11 August 2017, 21:47:18
Der HM Fensterkontakt sendet nur von selbst, wenn er betätigt wird. Das heißt bewegt oder der Config Knopf gedrückt. Anders keine Chance.

Ich Danke euch für die Antworten,
da werde Ich mir noch was Einfallen lassen müssen.

Grüße Steve