Verknüpfung von TabletUI und Homematic

Begonnen von matrois, 09 September 2018, 17:38:01

Vorheriges Thema - Nächstes Thema

matrois

Wie der Titel schon sagt berührt meine Fragestellung auch TabletUI (https://wiki.fhem.de/wiki/FHEM_Tablet_UI) in Verbindung mit Homematic, speziell den Temperaturprofilen von dem Modul Homematicinfo (https://wiki.fhem.de/wiki/HomeMatic_HMInfo). Ich habe in TabletUI ein Widget Homestatus erstellt (https://wiki.fhem.de/wiki/FTUI_Widget_Homestatus).  Das Widget hat die fünf unterschiedlichen Möglichkeiten "Winter","Sommer","Party","UrlaubIn" und "UrlaubOut". Über data-get-on / data-set-on wird der Status eines zusätlich angelegten Dummys entsprechend auf "tempWinter.cfg","tempSommer.cfg","tempUrlaubIn.cfg","tempUrlaubOut.cfg" oder "tempParty.cfg" gesetzt.

Es existieren Dateien mit den Namen "tempWinter.cfg","tempSommer.cfg","tempUrlaubIn.cfg","tempUrlaubOut.cfg" und "tempParty.cfg" die entpsrechende Temperaturprofile enthalten. Durch manuelles Eingreifen kann ich die Temperaturprofile im Modul Homematic-Info zuweisen. Bsp:
attr homematic_info configTempFile tempWinter.cfg

Ich möchte allerdings, dass eine automatische Umstellung / Einstellung des Attributes "configTempFile" in Abhängigkeit des in TabletUI gewählten Homestatus erfolgt. Ich habe dazu bereits u.a. so etwas wie
attr homematic_info configTempFile {ReadingsVal("status_heizung","state","")} probiert. Das funktioniert allerdings scheinbar nicht. Ich habe auch verschiedene Kombinationen von data-set im TabletUI Widget probiert. Ich bin gerade mit meinem Latein am Ende und bedanke mich für jeden Denkanstoß im voraus.

Zu dem oben angeführten Befehl als Attribut configTempFile
{ReadingsVal("status_heizung","state","")}
Wenn ich diesen Befehl direkt eingebe bekomme ich das zurückgeliefert was ich erwarte. Als Attribut aufgeführt steht dort (natürlich) der Befehl. Wird das denn dann ausgewertet oder läuft das in den von mir oben erwarteten Fehler?

Ich hoffe, dass mein Beitrag unter Automatisierung richtig ist (statt direkt zum Homematic_info Modul), da ich davon ausgehe, dass die Handhabung bei allen Attributen von Geräten gleich ist (entweder wird Code in geschweiften Klammern innerhalb von Attributen ausgeführt oder nicht).
FHEM: 5.9@docker@qnap | 5.9@raspberry pi III
IO: HMLAN | HMUART | Jeelink | MySensors
CUL_HM: CC-RT-DN | SEC-SCo | Sen-DB-PCB | TC-WM-W-EU
Module / Konfig: configdb | FHEMWEB | FRITZBOX | FileLog | HMinfo | IPCAM | SIP | Abfall | Tablet UI - FUIP | Sonoff/Tasmota

matrois

Keiner eine Idee? Falls es andere Möglichkeiten gibt die Heizprofile umzuschalten (also z.B. von "Zuhause" auf "Urlaub" oder "Sommer"), dann lasst es mich bitte auch wissen...
FHEM: 5.9@docker@qnap | 5.9@raspberry pi III
IO: HMLAN | HMUART | Jeelink | MySensors
CUL_HM: CC-RT-DN | SEC-SCo | Sen-DB-PCB | TC-WM-W-EU
Module / Konfig: configdb | FHEMWEB | FRITZBOX | FileLog | HMinfo | IPCAM | SIP | Abfall | Tablet UI - FUIP | Sonoff/Tasmota

rabehd

TabletUI visualisiert Zustände aus FHEM und setzt Zustände in FHEM.
Die Änderung eines Zustandes in FHEM löst etwas aus.

Du hast in FHEM einem Zustand (Dummy) und dessen Änderung führt zu den von Dir gewünschten Ereignissen/Tätigkeiten?
Wenn das klappt, dann käme TableltUI ins Spiel.
Auch funktionierende Lösungen kann man hinterfragen.

CoolTux

Ich habe einen Dummy, den setze ich entsprechend. Sommer Winter und und. Genau wie Du. Darauf reagierte bis vor kurzem ein DOIF welches dann genau die von Dir geschilderten Umstellungen der Attribute und so weiter durchführte.
Ich habe das ganze nun in eine myUtils ausgelagert.

Dummy

Internals:
   CFGFN     
   NAME       setTemperaturTemplateDummy
   NR         95
   STATE      Sommer
   TYPE       dummy
   READINGS:
     2018-05-12 07:42:54   state           Sommer
Attributes:
   alias      Temperatur Profile für Automodus
   devStateIcon WinterFROST:weather_winter Winter:weather_snow_light  Sommer:weather_cloudy_light Dummy:message_attention Urlaub:user_available UrlaubAbwesend:user_ext_away
   group      Heizungssteuerung
   icon       sani_heating_calendar
   readingList state
   room       Heizung
   setList    state:Winter,Urlaub,UrlaubAbwesend,Sommer,HeizungAUS,Neutral,WinterFROST
   sortby     1
   webCmd     state


Notify

Internals:
   CFGFN     
   DEF        setTemperaturTemplateDummy:(Winter|Urlaub|UrlaubAbwesend|Sommer|HeizungAUS|WinterFROST) { setTempList($EVENT) }
   NAME       notifySetTemperaturTemplate
   NR         529
   NTFY_ORDER 50-notifySetTemperaturTemplate
   REGEXP     setTemperaturTemplateDummy:(Winter|Urlaub|UrlaubAbwesend|Sommer|HeizungAUS|WinterFROST)
   STATE      active
   TYPE       notify
   READINGS:
     2018-09-14 07:56:45   state           active
Attributes:
   comment    Subroutine liegt in der Datei 99_myUtils_HeatingControl.pm



99_myUtils

sub setTempList($) {

    my $tempList    = shift;
   
   
    if( $tempList eq 'Winter' or $tempList eq 'Urlaub' ) {
        CommandAttr(undef,'HomeMatic configTempFile Winter.cfg,UrlaubIn.cfg,UrlaubOut.cfg,WinterFROST.cfg') if( $tempList eq 'Winter' );
        CommandAttr(undef,'HomeMatic configTempFile UrlaubIn.cfg,Winter.cfg,UrlaubOut.cfg,WinterFROST.cfg') if( $tempList eq 'Urlaub' );

        fhem('sleep 1; set HomeMatic tempListG restore; sleep 1;
            set structureHeizungsSystemWohnung [FILTER=controlMode!=auto] controlMode auto; sleep 1;
            set structureHeizungsSystemWohnung [FILTER=desired-temp!=6.0:FILTER=desired-temp!=19.0:FILTER=desired-temp!=17.0] desired-temp 19.0');
           
    } elsif( $tempList eq 'UrlaubAbwesend' ) {
        fhem('attr HomeMatic configTempFile UrlaubOut.cfg,UrlaubIn.cfg,Winter.cfg,WinterFROST.cfg; sleep 1;
            set HomeMatic tempListG restore; sleep 1;
            set structureHeizungsSystemWohnung [FILTER=controlMode!=auto] controlMode manual; sleep 1;
            set structureHeizungsSystemWohnung [FILTER=desired-temp!=6.0:FILTER=desired-temp!=15.0] desired-temp 15.0');
           
    } elsif( $tempList eq 'WinterFROST' ) {
        fhem('attr HomeMatic configTempFile WinterFROST.cfg,UrlaubOut.cfg,UrlaubIn.cfg,Winter.cfg; sleep 1;
            set HomeMatic tempListG restore; sleep 1;
            set structureHeizungsSystemWohnung [FILTER=controlMode!=auto] controlMode auto; sleep 1;
            set set structureHeizungsSystemWohnung [FILTER=desired-temp!=6.0:FILTER=desired-temp!=19.0:FILTER=desired-temp!=17.0] desired-temp 20.0');
           
    } elsif( $tempList eq 'Sommer' or $tempList eq 'HeizungAUS' ) {
        CommandSet(undef,'structureHeizungsSystemWohnung controlManu on') if( $tempList eq 'Sommer' );
        CommandSet(undef,'structureHeizungsSystemWohnung [FILTER=desired-temp!=6.0] controlManu 6.0') if( $tempList eq 'HeizungAUS' );
    }
}

HomeMatic ist mein Homematicinfo Device

Vielleicht hilft es ja.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Prof. Dr. Peter Henning

Geht mit Astro (für Jahreszeiten) und YAAHM (für Status und Modi vom Haus) auch ohne Dummy.

LG

pah

matrois

@rabehd: Vollkommen richtig. Ich habe es offensichtlich verkompliziert. TabletUI hätte ich gar nicht in die Fragestellung reinbringen sollen. In meinem Beispiel fehlt ein DoIF oder Notify.

@CoolTux: Danke für die umfangreichen Ausführungen. Ich denke da sind einige Ansätze für mein fehlendes DoIF dabei. Allerdings brauche ich dafür eine ruhige Minute...

@Prof.Dr. Peter Henning: Vielen Dank für den Tipp mit Astro und YAAHM. Jetzt brauche ich schon mehrere ruhige Minuten.  ;)

FHEM: 5.9@docker@qnap | 5.9@raspberry pi III
IO: HMLAN | HMUART | Jeelink | MySensors
CUL_HM: CC-RT-DN | SEC-SCo | Sen-DB-PCB | TC-WM-W-EU
Module / Konfig: configdb | FHEMWEB | FRITZBOX | FileLog | HMinfo | IPCAM | SIP | Abfall | Tablet UI - FUIP | Sonoff/Tasmota