[FHEM-Tablet-UI] Widgets for fhem-tablet-ui

Begonnen von nesges, 10 April 2015, 10:30:25

Vorheriges Thema - Nächstes Thema

Gunther

Ich möchte gerne den Homestatus auf dem Startbildschirm anzeigen und ändern können.

Ich habe 4 dummys:
haus_Status_1_Zuhause
haus_Status_2_Schlafen
haus_Status_3_KurzWeg und
haus_Status_4_LangeWeg

Folgenden Code habe ich aus dem Wiki:

Zitat<!-- <li data-row="2" data-col="5" data-sizex="2" data-sizey="2">
        <header>Anwesenheit</header>
<div data-type="homestatus" data-device='dummy1'
       data-get-on='["1","2","3","4"]'
       data-alias='["Home","Night","Away","Holiday"]'
       data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'>
</div>
</li>-->

Was ist denn nun bei mir
1.) data-device (dummy1)
2.) data-get-on und
3.) data-alias

Hoffe, ich brauche nun nicht eine einzelne Variable "homestatus", der 1,2,3,4 zugewiesen wird. Dann müsste ich ziemlich viel ändern in meiner cfg.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

Syntaxterror

also ich habs jetzt komplett geändert und hier mit bin ich voll zufieden:

Ein Rpi mit CUL, 1-W usw., der zweite Rpi am LAN, dort dran 433MHz am GPIO und der zweite CUL am USB über ser2net virtuell am Haupr-Rpi. Für den Haupt-Pi sieht das so aus, als wäre der zweite CUL direkt dran. So überbrücke ich wunderbar große Distanzen. Die 433 MHz-Geschichte läuft über RFEHM, da die sowieso nur unidirektional läuft.
Fürs Aquarium reichts allemal. Alles was sicherer laufen soll, mache ich dann über HM.

Mit der Konfiguration kann ich endlich alle Devices auf der Tablet-UI anzeigen und auch steuern, egal wie weit weg.
Da ich die vCCU nutze, teilt sich das System gut auf und sollte ein CUL nicht erreichbar sein, übernimmt der andere, sofern in Reichweite. Bei mobilen Geräten gehts nach Feldstärke, je nachdem, wer näher dran ist.

Nun suche ich nur noch eine Lösung die Temperatureinstellungen für die RT´s über die Tablet-UI zu machen. Sollte grafisch auch für Frauen machbar sein. Allerdings bin ich mir nicht sicher, ob die Temp-Listen dann in den RT geschrieben werden sollten. Die Dinger machen dabei immer wieder Probleme.

Gibts vielleicht schon eine Lösung zum Einstellen der Temperaturkurven?
FHEM5.7produktiv Pi3+Pi2,CUL868,CUL433,ser2net,DS2482 mit ca.30Sensoren/Aktoren, ca.100xHomematic,Gertboard+GPIO, 10xLaCrosse

setstate

#257
Zitat von: Syntaxterror am 03 November 2015, 21:08:05

Nun suche ich nur noch eine Lösung die Temperatureinstellungen für die RT´s über die Tablet-UI zu machen. Sollte grafisch auch für Frauen machbar sein. Allerdings bin ich mir nicht sicher, ob die Temp-Listen dann in den RT geschrieben werden sollten. Die Dinger machen dabei immer wieder Probleme.

Gibts vielleicht schon eine Lösung zum Einstellen der Temperaturkurven?

Sehr gut passend für FTUI wäre diese Lösung von Zach Richard: http://www.zachrichard.com/blog/thermostat-ui-concept-using-css-jquery-slider/

Jetzt muss es nur noch freiwillige Programmierer geben, der das in ein FTUI-Widget giessen und es müsste ein FHEM-Modul dafür entwickelt werden, was die Daten entgegen nimmt und die Regler-HW befüttert. Denn der UI Teil sollte relativ frei von Bussiness-Logik bleiben und für alle Regler-Hersteller nutzbar sein.

Nachtrag: Ich glaube das FHEM Modul gibt es schon: Heating_Control . Dann brauchen wir nur noch das Heating_Scheduler Widget für FTUI.

setstate

Eine etwas andere Lösung zur Steuerung der Badtemperatur, habe ich für meine Frau mit einem zweistufigen at-Timer auf FHEM Seite und zwei Datetimepicker-Widgets auf FTUI Seite realisiert.

roman1528

Zitat von: setstate am 04 November 2015, 07:56:51
Eine etwas andere Lösung zur Steuerung der Badtemperatur, habe ich für meine Frau mit einem zweistufigen at-Timer auf FHEM Seite und zwei Datetimepicker-Widgets auf FTUI Seite realisiert.

Kannst du mir dafür mal den / die codes geben? sowas suche ich nämlich noch nur hab ich noch nicht begriffen wie ich zeiten und was auch immer in einen befehl verpacken kann.

danke schon mal
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

Risiko

Zitat von: setstate am 04 November 2015, 07:38:09
Sehr gut passend für FTUI wäre diese Lösung von Zach Richard: http://www.zachrichard.com/blog/thermostat-ui-concept-using-css-jquery-slider/

Nachtrag: Ich glaube das FHEM Modul gibt es schon: Heating_Control . Dann brauchen wir nur noch das Heating_Scheduler Widget für FTUI.
So was fehlt mir auch noch.
Meiner Meinung nach ist Heating_Control nicht das passende Modul. Man bräuchte meiner Meinung nach ein Modul, welches die Wochenprofile unterschiedlicher Hardware (HM, MAX, etc.) in ein allgemeines Format für die GUI wandelt und unterschiedliche Profile (Sommer, Winter, Ferien, etc.) verwalten kann.
Hatte mich mal mit einer GUI (FHEMWEB) für MAX-Wochenprofile beschäftigt: http://forum.fhem.de/index.php/topic,32390.msg247936.html#msg247936
Leider ging es aus Zeitmangel nicht weiter.  Mit Unterstützung, könnte man hier evtl. was passendes entwickeln.

setstate

Zitat von: roman1528 am 04 November 2015, 09:45:07
Kannst du mir dafür mal den / die codes geben? sowas suche ich nämlich noch nur hab ich noch nicht begriffen wie ich zeiten und was auch immer in einen befehl verpacken kann.

danke schon mal

Hier nun mein Code dazu:
FTUI

        <li data-row="1" data-col="2" data-sizex="9" data-sizey="3">
        <header>TIMER</header>
            <div class="inline large darker thin cell" >Bad warm ab:</div>
            <div data-type="datetimepicker" data-device="BeforeGettingUp"
              data-get="TIMESPEC" data-set-value="*$v" data-cmd="modify"
              data-step="15"
              data-datepicker="false" data-format="H:i"
              class="inline bigger thin orange cell"></div>
            <div class="inline large darker thin cell" >für:</div>
            <div data-type="datetimepicker" data-device="BeforeGettingUp"
                   data-get="onfortimer"
                   data-cmd="setreading"
                   data-set="onfortimer"
                   data-step="15"
                   data-datepicker="false" data-format="H:i"
                   class="inline bigger thin orange cell"></div>
            <div class="inline large darker thin cell" >Stunden</div>
            <div data-type="checkbox" data-device='BeforeGettingUp'
               data-get-on="!off" data-get-off="inactive"
               data-set-on="active" data-set-off="inactive"
               class="inline left-space-3x"></div>
        </li>


und die Definition des at in der fhem.cfg

define BeforeGettingUp at *05:15 {\
  if ( !($we) && Value("HomeStatus")<3 ) {\
      SetHeizungGettingup();;\
      my $onfortimer = ReadingsVal("BeforeGettingUp","onfortimer","01:00");;\
      fhem("define AfterGettingUp at +".$onfortimer.":00 {\
         if( Value('HomeStatus')<3 ) {\
           if(\$hour > 8 && \$hour < 24) {\
             SetHeizungPresent();;;;\
           } else {\
             SetHeizungNormal();;;;\
           }\
         }\
      }");;\
  }\
}


Zur Erklärung:
Wenn das at "BeforeGettingUp" triggert, wird, wenn es ein Wochentag ist !($we) und jemand Zuhause ist Value("HomeStatus")<3, die Heizung auf die definierten Werte laut Funktion in 99_myUtils.pm gesetzt.
Gleichzeitig wird auch ein neues temporäres at "AfterGettingUp" angelegt, was nach einer festgelegten Zeit, die Heizungswerte wieder auf die normalerweise gültigen Werte zu dieser Zeit setzt. Die Dauer speichere ich mir in einem Userreading "onfortimer" des at "BeforeGettingUp".

Gunther

Kann mir einer von Euch einen Denkanstoss für den Homestatus geben?
Muss ich hier umbauen oder kann ich meine bestehenden Definitionen bestehen lassen?

Zitat von: Gunther am 14 Oktober 2015, 00:25:48
Ich möchte gerne den Homestatus auf dem Startbildschirm anzeigen und ändern können.

Ich habe 4 dummys:
haus_Status_1_Zuhause
haus_Status_2_Schlafen
haus_Status_3_KurzWeg und
haus_Status_4_LangeWeg

Folgenden Code habe ich aus dem Wiki:

Was ist denn nun bei mir
1.) data-device (dummy1)
2.) data-get-on und
3.) data-alias

Hoffe, ich brauche nun nicht eine einzelne Variable "homestatus", der 1,2,3,4 zugewiesen wird. Dann müsste ich ziemlich viel ändern in meiner cfg.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

setstate

Hallo Gunther,
für das Homestatus Widget braucht man nur ein Dummy. Wenn du deine einzelnen Dummy Devices nutzen willst, müsste man ein weiteres Dummy und 5x Notify nehmen.
Oder du nimmst einzelne Buttons auf dem Tablet.

Gunther

Danke. Hast Du einen Link zur Einrichtung des Homestatus? Ich habe anscheinend eine unpassende Lösung nachgebaut.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

setstate

Zitat von: Gunther am 09 November 2015, 23:39:34
Danke. Hast Du einen Link zur Einrichtung des Homestatus? Ich habe anscheinend eine unpassende Lösung nachgebaut.

full blown solution:
http://fhem.de/commandref_DE.html#RESIDENTS

oder einfachen per
define HomeStatus dummy

Nutzung siehe in einer früheren Version von Zuhause-Status:
http://www.fhemwiki.de/w/index.php?title=Zuhause-Status&oldid=4594

Gunther

Danke.

Nach der vereinfachten Variante habe ich das ja aufgebaut und damit das Problem, dass ich eben nicht einen sondern 4 Dummies habe. Das Homewidget lässt aber nur einen zu.
Oder stehe ich auf der Leitung?
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

setstate

Moin Gunther,

in der Zuhause-Status Lösung aus dem Wiki wird nur ein Dummy "Homestatus" als zentraler Speicherpunkt benutzt:
define HomeStatus dummy

Weiter wir ein Mehrfach-Wandtaster benutzt, wobei 4 Tasten für den Zuhause-Status benutzt werden und jeweils in den Dummy "Homestatus" speichern:
define KurzWeg notify whg_HomeStat3 set HomeStatus 3;

Wenn Taste "whg_HomeStat3" gedrückt, dann "set Homestatus 3"

Das FTUI Homestatus Widget schaut dann auf den Dummy und bekommt auch den Wert 3 von Homestatus.

Gunther

Ahh, ok. Glaube ich habe das dann ungeschickt aufgebaut. Habe leider 4 Dummies und für das Schalten über meine alte statische Oberfläche nochmal 4:

#####################################################################
####    Homestatus
####    angeregt durch http://www.fhemwiki.de/wiki/Zuhause-Status
####    zum Schalten der Devices nach unterschiedlichen Anwesenheiten
####    Definition der Zustände
#####################################################################

define haus_Status_1_Zuhause dummy
attr haus_Status_1_Zuhause room Haus
attr haus_Status_1_Zuhause sortby 01
attr haus_Status_1_Zuhause webCmd state
#attr haus_Status_1_Zuhause setList state:on,off

define haus_Status_2_Schlafen dummy
attr haus_Status_2_Schlafen room Haus
attr haus_Status_2_Schlafen sortby 02
attr haus_Status_2_Schlafen webCmd state
#attr haus_Status_2_Schlafen setList state:on,off

define haus_Status_3_KurzWeg dummy
attr haus_Status_3_KurzWeg room Haus
attr haus_Status_3_KurzWeg sortby 03
attr haus_Status_3_KurzWeg webCmd state
#attr haus_Status_3_KurzWeg setList state:on,off

define haus_Status_4_LangeWeg dummy
attr haus_Status_4_LangeWeg room Haus
attr haus_Status_4_LangeWeg sortby 04
attr haus_Status_4_LangeWeg webCmd state
#attr haus_Status_4_LangeWeg setList state:on,off

define haus_Status_5_Gaeste dummy
attr haus_Status_5_Gaeste room Haus
attr haus_Status_5_Gaeste sortby 05
attr haus_Status_5_Gaeste webCmd state
#attr haus_Status_5_Gaeste setList state:on,off

#####################################################################
####    Homestatus
####    zum Schalten der Devices nach unterschiedlichen Anwesenheiten
####    Zuordnung zu Schaltern auf der Weboberfläche
#####################################################################

define haus_Status_1_Zuhause_web dummy
attr haus_Status_1_Zuhause_web room Haus
attr haus_Status_1_Zuhause_web setList state:on,off
attr haus_Status_1_Zuhause_web sortby 06
attr haus_Status_1_Zuhause_web webCmd state

define haus_Status_2_Schlafen_web dummy
attr haus_Status_2_Schlafen_web room Haus
attr haus_Status_2_Schlafen_web setList state:on,off
attr haus_Status_2_Schlafen_web sortby 07
attr haus_Status_2_Schlafen_web webCmd state

define haus_Status_3_KurzWeg_web dummy
attr haus_Status_3_KurzWeg_web room Haus
attr haus_Status_3_KurzWeg_web setList state:on,off
attr haus_Status_3_KurzWeg_web sortby 08
attr haus_Status_3_KurzWeg_web webCmd state

define haus_Status_4_LangeWeg_web dummy
attr haus_Status_4_LangeWeg_web room Haus
attr haus_Status_4_LangeWeg_web setList state:on,off
attr haus_Status_4_LangeWeg_web sortby 09
attr haus_Status_4_LangeWeg_web webCmd state

define haus_Status_5_Gaeste_web dummy
attr haus_Status_5_Gaeste_web room Haus
attr haus_Status_5_Gaeste_web setList state:on,off
attr haus_Status_5_Gaeste_web sortby 10
attr haus_Status_5_Gaeste_web webCmd state

define haus_Status_1_Zuhause_web_an notify haus_Status_1_Zuhause_web:on set haus_Status_1_Zuhause on;;set haus_Status_2_Schlafen off;;set haus_Status_3_KurzWeg off;;set haus_Status_4_LangeWeg off;;set haus_Status_2_Schlafen_web off;;set haus_Status_3_KurzWeg_web off;;set haus_Status_4_LangeWeg_web off
attr haus_Status_1_Zuhause_web_an room Haus

define haus_Status_2_Schlafen_web_an notify haus_Status_2_Schlafen_web:on set haus_Status_1_Zuhause off;;set haus_Status_2_Schlafen on;;set haus_Status_3_KurzWeg off;;set haus_Status_4_LangeWeg off;;set haus_Status_1_Zuhause_web off;;set haus_Status_3_KurzWeg_web off;;set haus_Status_4_LangeWeg_web off
attr haus_Status_2_Schlafen_web_an room Haus

define haus_Status_3_KurzWeg_web_an notify haus_Status_3_KurzWeg_web:on set haus_Status_1_Zuhause off;;set haus_Status_2_Schlafen off;;set haus_Status_3_KurzWeg on;;set haus_Status_4_LangeWeg off;;set haus_Status_1_Zuhause_web off;;set haus_Status_2_Schlafen_web off;;set haus_Status_4_LangeWeg_web off
attr haus_Status_3_KurzWeg_web_an room Haus

define haus_Status_4_LangeWeg_web_an notify haus_Status_4_LangeWeg_web:on set haus_Status_1_Zuhause off;;set haus_Status_2_Schlafen off;;set haus_Status_3_KurzWeg off;;set haus_Status_4_LangeWeg on;;set haus_Status_1_Zuhause_web off;;set haus_Status_2_Schlafen_web off;;set haus_Status_3_KurzWeg_web off
attr haus_Status_4_LangeWeg_web_an room Haus

define haus_Status_5_Gaeste_web_an notify haus_Status_5_Gaeste_web:on set haus_Status_5_Gaeste on
attr haus_Status_5_Gaeste_web_an room Haus


Dann arbeite ich mit Lightszene
#####################################################################
####    Homestatus
####    zum Schalten der Devices nach unterschiedlichen Anwesenheiten
####    Modul Lightscene zum Verwerten der unterschiedlichen Status
#####################################################################

# LightScene Kino: Definition der zu behandelnden Geräte
define LS_eg_ki LightScene eg_ki_Stehlampe g4_eg_ki_Leinwand eg_ki_Wandthermostat_Climate eg_ki_Leuchtkasten_1m_links eg_ki_Leuchtkasten_1m_mitte eg_ki_Leuchtkasten_1m_rechts eg_ki_Leuchtkasten_1m_panorama Onkyo_Receiver VUDuo2
attr LS_eg_ki room Kino

# LightScene Heizung: Definition der zu behandelnden Geräte
# Heizung: Definition der Viesmann-Heizung Zirkulationspumpe und angeschlossenen Heizkörper
define LS_heizung LightScene k_WW_Zirkulationspumpe_Sw Viessmann eg_ki_Wandthermostat_Climate eg_ku_Wandthermostat_Climate eg_bz_wandthermostat_Climate eg_az_Heizung k_foto_heizung og_gr_Heizung eg_wc_Heizung og_gz_Heizung og_az_Heizung og_sz_Heizung k_wr_Heizung
attr LS_heizung room Heizungsraum

#####################################################################
####    Homestatus
####    zum Schalten der Devices nach unterschiedlichen Anwesenheiten
####    Modul Lightscene Zuordnung der Status
#####################################################################
# Zuordnung LightScene Kino (Sceneänderung aufgrund von Haus-Statusänderung)
define LS_eg_ki_Zuordnung_haus_Status_1_Zuhause notify haus_Status_1_Zuhause:on set LS_eg_ki scene haus_Status_1_Zuhause
define LS_eg_ki_Zuordnung_haus_Status_2_Schlafen notify haus_Status_2_Schlafen:on set LS_eg_ki scene haus_Status_2_Schlafen
define LS_eg_ki_Zuordnung_haus_Status_3_KurzWeg notify haus_Status_3_KurzWeg:on set LS_eg_ki scene haus_Status_3_KurzWeg
define LS_eg_ki_Zuordnung_haus_Status_4_LangeWeg notify haus_Status_4_LangeWeg:on set LS_eg_ki scene haus_Status_4_LangeWeg

# Zuordnung LightScene Heizung (Sceneänderung aufgrund von Haus-Statusänderung)
define LS_heizung_Zuordnung_haus_Status_1_Zuhause notify haus_Status_1_Zuhause:on set LS_heizung scene haus_Status_1_Zuhause
define LS_heizung_Zuordnung_haus_Status_2_Schlafen notify haus_Status_2_Schlafen:on set LS_heizung scene haus_Status_2_Schlafen
define LS_heizung_Zuordnung_haus_Status_3_KurzWeg notify haus_Status_3_KurzWeg:on set LS_heizung scene haus_Status_3_KurzWeg
define LS_heizung_Zuordnung_haus_Status_4_LangeWeg notify haus_Status_4_LangeWeg:on set LS_heizung scene haus_Status_4_LangeWeg


Habe vor knapp einem Jahr angefangen und habe dann aufgrund Zeitmangel die Geschichte nicht "zuende" geführt. Kann ich mit einem einfachen Eingriff umstellen auf einen Dummy oder ist es besser komplett neu aufzubauen.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

setstate

Wenn du viel Zeit und Lust hast, würde ich das Thema neu aufsetzen, alles etwas verschlanken.

Man kann aber auch erst einmal versuchen einen zusätzlichen Homestatus Dummy einbauen.

Also ein

define HomeStatus dummy
anlegen und deine notifies erweitern:

define haus_Status_3_KurzWeg_web_an notify haus_Status_3_KurzWeg_web:on set haus_Status_1_Zuhause off;;set haus_Status_2_Schlafen off;;set haus_Status_3_KurzWeg on;;set haus_Status_4_LangeWeg off;;set haus_Status_1_Zuhause_web off;;set haus_Status_2_Schlafen_web off;;set haus_Status_4_LangeWeg_web off;;set Homestatus 3


Und neue notifies für die andere Richtung Homestatus -> haus_Status_3_KurzWeg_web
Das bläht das Ganze zwar noch mehr auf, geht aber schneller, weil es mehr Tipparbeit ist statt neues Konzept ausdenken.