FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Alveole am 15 Dezember 2014, 21:57:18

Titel: [gelöst] Statusanzeige eines Dummys
Beitrag von: Alveole am 15 Dezember 2014, 21:57:18
Hallo,
ich möchte gern meine EIB-Heizmodi der Raumkontrollen per fhem umstellen.
Die Umstellung der Heizmodi funktioniert nun mit folgendem Code


define Diele_EG_umstell EIB 312a
attr Diele_EG_umstell IODev EIB

define Diele_EG_umstell_v dummy
attr Diele_EG_umstell_v alias Heizmodus Diele EG
attr Diele_EG_umstell_v webCmd Tag:Nacht
attr Diele_EG_umstell_v room Diele EG
attr Diele_EG_umstell_v group Klima
attr Diele_EG_umstell devStateIcon Tag:tag Nacht:nacht
define umstellen1 notify Diele_EG_umstell_v:Nacht set Diele_EG_umstell value "03"
define umstellen2 notify Diele_EG_umstell_v:Tag set Diele_EG_umstell value "01"



Nun meine Frage:
das Icon zeigt nun immer entweder Tag oder Nacht an und ändert sich je nach Click auf den Modi. Soweit so gut.
Ändert nun aber ein anderes externes EIB-Gerät per Adresse 312a den Modi der Raumregler, ändert sich das Symbol, auch nach neu laden der Seite, nicht.
Wie kann ich das einfügen?
Es müsste der aktuelle Wert der Adresse 312a an dieser Stelle dargestellt werden.

Danke!
Titel: Antw:Statusanzeige eines Dummys
Beitrag von: KernSani am 15 Dezember 2014, 22:08:38
Hi,

eines vorneweg: Ich kenne mich mit EIB überhaupt nicht aus. So wie es aussieht bekommt aber FHEM nicht mit, wenn ein externes Gerät den Controller verstellt und dieser sagt auch nicht bei FHEM Bescheid dass er verstellt wurde.
Variante A) In regelmäßigen Abständen den Status des EIB Controllers abfragen
Variante B) Die externen Geräte in FHEM einbinden

Hoffe das hilft ein bisschen,

Grüße,

Oli
Titel: Antw:Statusanzeige eines Dummys
Beitrag von: der-Lolo am 15 Dezember 2014, 22:18:20
du solltest im event monitor schauen was dort ankommt wenn die 312a nachricht kommt und auf dieses "event" mit einem notify reagieren.
Titel: Antw:Statusanzeige eines Dummys
Beitrag von: Alveole am 15 Dezember 2014, 22:42:19
Danke für Eure schnelle Antwort,

Kernsani: leider kann man den Status nicht Anfragen. Das Gerät hat leider keine Gruppenadresse dafür.

Somit bleibt nur die Möglichkeit, die Adresse 312a "mitzulauschen" und das Icon demnach anzupassen.
Im Eventmonitor kommt nur der jeweilige Umstellcode auf der Adresse an.
Bedeutet "01" für Tag und "03" für Nacht
Man müsste also das Icon des Dummys so umändern, das es an den Wert der Adresse 312a gebunden ist.
Titel: Antw:Statusanzeige eines Dummys
Beitrag von: der-Lolo am 15 Dezember 2014, 22:49:14
ohne eventmonitor mitschnitt ist es schwierig...

aber etwas wie

define diele_switch notify ...01 set blabla dummy tag

auch eine gute möglichkeit wäre DOIF darin kannst du dann mehrere zustände erfassen und weitereichen.
Titel: Antw:Statusanzeige eines Dummys
Beitrag von: Alveole am 16 Dezember 2014, 17:23:39
hier der Mitschnitt des Eventmonitors beim auslösen durch ein externes Bedientablet.

Events:
2014-12-16 17:21:51 EIB Diele_EG_umstell 03
2014-12-16 17:21:52 EIB Diele_EG_umstell on

nicht wirklich mehr aussagend.
Titel: Antw:Statusanzeige eines Dummys
Beitrag von: der-Lolo am 16 Dezember 2014, 17:51:06
das reicht doch...

define dummyreaction notify EIB.Diele_EG_umstell.03 set Diele_EG_umstell_v Nacht

wie ich aber schon schrieb, wenn du auf mehrere zustände reagieren willst ist ein DOIF besser geeignet.
Titel: Antw:Statusanzeige eines Dummys
Beitrag von: Alveole am 17 Dezember 2014, 21:15:51
So,
ich hab die letzten Abend rumprobiert und hab leider nicht das gewünschte erreicht.

Folgendes vorhanden:

define Diele_EG_umstell EIB 312a
attr Diele_EG_umstell IODev EIB

define Diele_EG_umstell_status EIB 312b
attr Diele_EG_umstell_status IODev EIB

define Diele_EG_umstell_v dummy
attr Diele_EG_umstell_v alias Heizmodus Diele EG
attr Diele_EG_umstell_v webCmd Tag:Nacht
define umstellen1 notify Diele_EG_umstell_v:Nacht set Diele_EG_umstell value "03"
define umstellen2 notify Diele_EG_umstell_v:Tag set Diele_EG_umstell value "01"

define umstellen3 notify Diele_EG_umstell_status:3 { fhem " setstate Diele_EG_umstell_v Nacht-set" }
define umstellen4 notify Diele_EG_umstell_status:1 { fhem " setstate Diele_EG_umstell_v Tag-set" }


Der Modus wird beim Clicken auf Tag/Nacht umgeschalten - super!
Ändert jetzt aber ein externes Gerät (oder der Gerät selbst) den Modus, kommt dieser zurück als "Diele_EG_umstell_status" (es gibt duch ein Rückmeldeobjekt - mein Fehler).
Nur das Status-Text des Dummys ändert sich noch nicht.

Der Eventlog sagt:
2014-12-17 21:17:04 EIB Diele_EG_umstell_status 3
Hab ich einen Denkfehler oder ist der Code falsch???
Titel: Antw:Statusanzeige eines Dummys
Beitrag von: der-Lolo am 17 Dezember 2014, 21:21:49
woher nimmst du die idee die setstate befehle in {} zu setzen? warum überhaupt setstate? woher kommt der doppelpunkt im notify?
Titel: Antw:Statusanzeige eines Dummys
Beitrag von: Alveole am 17 Dezember 2014, 21:34:27
die Ideen sind aus einem Forum. Keine gute Idee???
setstate stammt auch aus einem Forum.
Der Befehl
   setstate Diele_EG_umstell_v Tag-set
funktioniert, wenn er direkt mit in der Datei steht.
Titel: Antw:Statusanzeige eines Dummys
Beitrag von: der-Lolo am 17 Dezember 2014, 21:57:51
Du solltest in jedem fall mal das einsteiger.pdf lesen.
{} bedeutet jetzt kommt perl.
FHEM ist auch ein Perl befehl.
du sagst also fhem in deinem notify es soll perl nutzen und perl wiederum sagst du es soll fhem aufrufen.
das ist kein problem, funktioniert auch - aber es zeigt das du nicht verstehst was du da machst.

Versuchen wir es mal mit einem DOIF

define dummyReaction DOIF ([Diele_EG_umstell_status] eq "3") (set Diele_EG_umstell_v Nacht-set) DOELSEIF ([Diele_EG_umstell_status] eq "1") (set Diele_EG_umstell_v Tag-set) DOELSE (set Diele_EG_umstell_v noMatch)


bitte den auswähl button benutzen, kopieren und ins FHEM eingabefeld einfügen.
Titel: Antw:Statusanzeige eines Dummys
Beitrag von: Alveole am 17 Dezember 2014, 22:12:05
Zitat von: der-Lolo am 17 Dezember 2014, 21:57:51
Du solltest in jedem fall mal das einsteiger.pdf lesen.
bereits gelesen!!!
Zitat von: der-Lolo am 17 Dezember 2014, 21:57:51
{} bedeutet jetzt kommt perl.
FHEM ist auch ein Perl befehl.
du sagst also fhem in deinem notify es soll perl nutzen und perl wiederum sagst du es soll fhem aufrufen.
das ist kein problem, funktioniert auch - aber es zeigt das du nicht verstehst was du da machst.
was ich aber doch tue!!!
Zitat von: der-Lolo am 17 Dezember 2014, 21:57:51
Versuchen wir es mal mit einem DOIF

define dummyReaction DOIF ([Diele_EG_umstell_status] eq "3") (set Diele_EG_umstell_v Nacht-set) DOELSEIF ([Diele_EG_umstell_status] eq "1") (set Diele_EG_umstell_v Tag-set) DOELSE (set Diele_EG_umstell_v noMatch)


Dies hattest Du schon mal weiter oben vorgeschlagen, nur hab ich den Befehl noch nicht verstanden! Und da sind wir wieder bein verstehen!
Alles in Allem:
Dein Vorschlag funktionierte!
Danke!
Titel: Antw:Statusanzeige eines Dummys
Beitrag von: der-Lolo am 17 Dezember 2014, 23:04:11
Der Einstieg in FHEM ist leider nicht immer einfach - copy & paste hilft oft nicht...
Schau dir DOIF noch in der deutschen commandref an, es ist sehr mächtig und relativ einfach zu verstehen.

grundsätzlich solltest du immer im Eventmonitor schauen welche ereignisse kommen, und dann eben darauf reagieren. Ausserdem sehr wichtig nicht in der fhem.cfg rumfingern und lieber in der DEF editieren. Dort kannst du dir das eben angelegte doif auch mit ein paar zeilenumbrüchen übersichtlicher gestalten.

define dummyReaction DOIF ([Diele_EG_umstell_status] eq "3") (set Diele_EG_umstell_v Nacht-set)
DOELSEIF ([Diele_EG_umstell_status] eq "1") (set Diele_EG_umstell_v Tag-set)
DOELSE (set Diele_EG_umstell_v noMatch)

Titel: Antw:Statusanzeige eines Dummys
Beitrag von: Alveole am 25 Dezember 2014, 19:52:42
Danke! Hat funktioniert!