MAX! dummy Synchronisieren

Begonnen von Himi, 22 Januar 2015, 15:48:41

Vorheriges Thema - Nächstes Thema

Himi

Hallo zusammen,

als Anfänger habe ich nachfolgendes kleine Projekt schon erfolgreich am laufen.

Mit dem App "andFhem" schalte ich von extern (Internet) den Hausmodus um. (Eco,Auto,Comfort)

Wenn ich im Haus über den Taster umschalte, wird der dummy nicht mit synchronisiert.

D.h. per Taster wird auf den Modus Eco geschaltet, der dummy bleibt dann z.B. auf Auto stehen.

Frage: was muss ich am dummy noch ergänzen?

Danke für Euere Unterstützung:


# ————– Max! Cube einbinden ————-
define MaxCube MAXLAN 192.168.1.3:62910 60 ondemand
#attr MaxCube icon taster

# ————– Steckdose Heizung ————-
define MAX_074ca1 MAX HeatingThermostat 074ca1
attr MAX_074ca1 IODev MaxCube
attr MAX_074ca1 alias ZW-Stecker
attr MAX_074ca1 group Heizung
attr MAX_074ca1 icon sani_pump
attr MAX_074ca1 room Heizung
define FileLog_MAX_074ca1 FileLog ./log/MAX_074ca1-%Y.log MAX_074ca1
attr FileLog_MAX_074ca1 logtype text
attr FileLog_MAX_074ca1 room hidden

# ————– Heizkörper Wohnzimmer einbinden ————-
define MAX_0b2632 MAX HeatingThermostat 0b2632
attr MAX_0b2632 IODev MaxCube
attr MAX_0b2632 alias HK-Thermostat
attr MAX_0b2632 group Wohnzimmer
attr MAX_0b2632 icon hc_wht_regler
attr MAX_0b2632 room Wohnzimmer OG
define FileLog_MAX_0b2632 FileLog ./log/MAX_0b2632-%Y.log MAX_0b2632
attr FileLog_MAX_0b2632 logtype text
attr FileLog_MAX_0b2632 room hidden

# ————– Heizkörper Schlafzimmer einbinden ————-
define MAX_0b25f4 MAX HeatingThermostat 0b25f4
attr MAX_0b25f4 IODev MaxCube
attr MAX_0b25f4 alias HK-Thermostat
attr MAX_0b25f4 group Schlafzimmer
attr MAX_0b25f4 icon hc_wht_regler
attr MAX_0b25f4 room Schlafzimmer OG
define FileLog_MAX_0b25f4 FileLog ./log/MAX_0b25f4-%Y.log MAX_0b25f4
attr FileLog_MAX_0b25f4 logtype text
attr FileLog_MAX_0b25f4 room hidden

# ————– Taster Haussteuerung einbinden ————-
define MAX_03fedf MAX PushButton 03fedf
attr MAX_03fedf IODev MaxCube
attr MAX_03fedf group Haussteuerung
attr MAX_03fedf icon taster
attr MAX_03fedf room Haussteuerung
define FileLog_MAX_03fedf FileLog ./log/MAX_03fedf-%Y.log MAX_03fedf
attr FileLog_MAX_03fedf logtype text
attr FileLog_MAX_03fedf room hidden

# ————– Thermostat Wohnzimmer einbinden ————-
define MAX_0a12f3 MAX WallMountedThermostat 0a12f3
attr MAX_0a12f3 IODev MaxCube
attr MAX_0a12f3 group Wohnzimmer
attr MAX_0a12f3 icon temp_control
attr MAX_0a12f3 room Thermostat
define FileLog_MAX_0a12f3 FileLog ./log/MAX_0a12f3-%Y.log MAX_0a12f3
attr FileLog_MAX_0a12f3 logtype text
attr FileLog_MAX_0a12f3 room hidden

#Wohnimmer OG Max-Werte plotten
define MAX_0b2632_weblink SVG FileLog_MAX_0b2632:max_temp:CURRENT
attr MAX_0b2632_weblink label "Wohnzimmer OG Soll-Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr MAX_0b2632_weblink room Wohnzimmer OG

#Schlafzimmer OG OG Max-Werte plotten
define MAX_0b25f4_weblink SVG FileLog_MAX_0b25f4:max_temp:CURRENT
attr MAX_0b25f4_weblink label "Schlafzimmer OG Soll-Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr MAX_0b25f4_weblink room Schlafzimmer OG

#Zwischenstecker Heizraum OG OG Max-Werte plotten
define MAX_074ca1_weblink SVG FileLog_MAX_074ca1:max_temp:CURRENT
attr MAX_074ca1_weblink label "Zwischenstecker Heizraum OG Soll-Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr MAX_074ca1_weblink room Heizung

#Thermostat Wohnzimmer OG Max-Werte plotten
define MAX_0a12f3_weblink SVG FileLog_MAX_0a12f3:max_temp:CURRENT
attr MAX_0a12f3_weblink label "Thermostat Wohnzimmer OG Soll-Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr MAX_0a12f3_weblink room Thermostat

#Dummy für die feste Einstellungen alle MAX
define ECO_Modus dummy
attr ECO_Modus alias Schalter
attr ECO_Modus group Heizung OG.
attr ECO_Modus icon heizung.0
attr ECO_Modus room Schalten 1.OG
attr ECO_Modus setList state:comfort,auto,eco
attr ECO_Modus webCmd state
define ECO_Modus.ntfy notify ECO_Modus set ,MAX_074ca1,MAX_0b25f4,MAX_0b2632,MAX0a12f3 desiredTemperature %

strauch

Du brauchst ein notify das den Zustand des Tasters auf dein Dummy überträgt. Was in der Art:
define MAX_03fedf_Dummy.ntfy notify MAX_03fedf set ECO_Modus $EVENT

Wozu aber überhaupt der Umweg über den Dummy, ich dacht der Taster ist dafür da dies zu machen, oder kannst du den nicht aus andFHEM fernbedienen?
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

Himi

Danke für die Antwort

habe das notify eingebaut, aber das Statusfenster im dummy bleibt leer.
Habe mal gelesen das der Eco-Taster fast keine Infos hergibt.

Kann man den aktuellen Status  (Eco-Auto-Comfort) denn nicht aus dem Cube oder einem
Heizungsventil auslesen und an den dummy übergeben?

Vielleicht gibt es doch einen Lösung...

strauch

Zeig mal was ein
list MAX_03fedf

für Infos ausgibt, dann sieht man wie er die Zustände speichert, vielleicht ist das kein state sondern ein Reading und wir müssen auf ein bestimmtes Reading reagieren.
Vielleicht kannst du auch mal zeigen wie er im EventMonitor ausschaut, wenn du den Taster drückst. Ich hab leider kein Max.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

gero

Der ECO Taster liefert als state opened oder closed. Es gibt noch ein zusätzliches Reading onoff mit den Werten 0 und 1.

Bei mir sieht das notify folgendermaßen aus:
EG.FL.MAX.ECO:onoff.* {
  if ($EVTPART1 == 0) {
   Log(1,"EG.FL.MAX.ECO: eco mode") ;
   fhem("set ecostate 1") ;
   my $temp = ReadingsVal("DG.KI.SI.MAX.HT", "ecoTemperature", 17.0);
   fhem("set DG.KI.SI.MAX.HT.pid desired $temp") ;
   $temp = ReadingsVal("DG.KI.JA.MAX.HT", "ecoTemperature", 17.0);
   fhem("set DG.KI.JA.MAX.HT.pid desired $temp") ;
   $temp = ReadingsVal("DG.BZ.MAX.HT", "ecoTemperature", 17.0);
   fhem("set DG.BZ.MAX.HT.pid desired $temp") ;
   $temp = ReadingsVal("DG.SZ.MAX.HT", "ecoTemperature", 17.0);
   fhem("set DG.SZ.MAX.HT.pid desired $temp") ;
   $temp = ReadingsVal("DG.FL.MAX.HT", "ecoTemperature", 17.0);
   fhem("set DG.FL.MAX.HT.pid desired $temp") ;
   fhem("set OG.WZ.MAX.WT desiredTemperature eco") ;
   fhem("set OG.EZ.MAX.WT desiredTemperature eco") ;
  } else {
   Log(1,"EG.FL.MAX.ECO: auto mode") ;
   fhem("set ecostate 0") ;
   my $temp = ReadingsVal("DG.KI.SI.MAX.HCB", "state", 17.0);
   fhem("set DG.KI.SI.MAX.HT.pid desired $temp");
   $temp = ReadingsVal("DG.KI.JA.MAX.HCB", "state", 17.0);
   fhem("set DG.KI.JA.MAX.HT.pid desired $temp");
   $temp = ReadingsVal("DG.BZ.MAX.HCB", "state", 17.0);
   fhem("set DG.BZ.MAX.HT.pid desired $temp");
   $temp = ReadingsVal("DG.SZ.MAX.HCB", "state", 17.0);
   fhem("set DG.SZ.MAX.HT.pid desired $temp");
   $temp = ReadingsVal("DG.FL.MAX.HCB", "state", 17.0);
   fhem("set DG.FL.MAX.HT.pid desired $temp");
   fhem("set OG.WZ.MAX.WT desiredTemperature auto") ;
   fhem("set OG.EZ.MAX.WT desiredTemperature auto") ;
  }
}


Den Code mußt du natürlich für deine Belange anpassen.

Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

fruit

Sorry no German..

As far as I am aware the Eco switch does not report its state if using a Cube, only with a CUL

It's probably possible if you check the mode of all radiator stats rather than the state of the switch.
Feel free to follow up in German if you prefer

strauch

Zitat von: fruit am 23 Januar 2015, 09:55:34
Sorry no German..

no problem

Zitat von: fruit am 23 Januar 2015, 09:55:34
It's probably possible if you check the mode of all radiator stats rather than the state of the switch.

thats a good advice, thanks. so we only need a small notify like this:
define ecotaster.ntfy notify MAX_074ca1 {if (Value("MAX_074ca1") eq "eco" || Value("MAX_074ca1") eq "auto") set ECO_Modus $EVENT}
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

fruit

#7
Yes but check all thermostats as they will all change mode on Eco - and from memory  (and I have just checked), they change to manual mode, not eco.
The desiredTemperature also changes to ecoTemperature setting - obviously, but it's another way to check.

My log (reversed) for the change shows
2015-01-23_09:38:41 MAX_0759c6 12.0 °C
2015-01-23_09:38:41 MAX_0759c6 valveposition: 0
2015-01-23_09:38:41 MAX_0759c6 temperature: 16.1
2015-01-23_09:38:41 MAX_0759c6 desiredTemperature: 12.0
2015-01-23_09:38:41 MAX_0759c6 mode: manual


Edit:
I should probably add that the change is not immediate and only occurs once the stats have received the signal from the switch and adjusted valveposition etc.
Feel free to follow up in German if you prefer

Himi

Hallo,

komme nochmals auf mein Problem zurück...

nachfolgend habe ich einmal die Readings des ECO-Taster beigefügt.

Habe noch einen anderen Denkansatz.

Um den aktuelle Staus (ECO-AUTO-Comfort) an den dummy zu übergeben, könnte ich doch den Staus im Heizkörperthermostat (state) auswerten.

z.Beispiel ist bei mir

    - state 12 Grad C der ECO-Modus 
    - state 22 Grad C der Comfort Modus
    - state 21 Grad C der Auto Modus

Könnte das ein Lösungsansatz sein?

Danke für euere Hilfe!


  • MAXLAN_error 0
       
    2015-01-26 09:50:23
    MAXLAN_errorInCommand
       
       
    2015-01-26 09:50:23
    MAXLAN_initialized 1
       
    2015-01-26 09:50:23
    MAXLAN_isAnswer 0
       
    2015-01-26 09:50:23
    MAXLAN_valid 1
       
    2015-01-26 09:50:23
    battery ok
       
    2015-01-26 09:50:23
    connection 1
       
    2015-01-26 09:50:23
    firmware 1.2
       
    2015-01-26 09:50:23
    groupid 0
       
    2015-01-26 09:50:23
    state connected
       
    2015-01-26 09:50:23
    testresult 15
       
    2015-01-26 09:50:23

fruit

#9
Here are some very quick and messy bits to play with

define ecoSwitch_dummy dummy
attr ecoSwitch_dummy room Heat_Control,MAX
attr ecoSwitch_dummy setList auto comfort eco

define eco_Switch_notify notify .*ecoSwitch_dummy.* {
if ( Value ( "ecoSwitch_dummy" ) eq "auto" )
{
  my @@MAX_HT = devspec2array( "DEF=HeatingThermostat.*" );
  foreach ( @@MAX_HT )
  {
   if ( ReadingsVal ( $_, "mode", "off" ) ne "auto" )
   {
    fhem ( "set $_ desiredTemperature auto" );
   }
  }
}
elsif ( Value ( "ecoSwitch_dummy" ) eq "eco" )
{
  my @@MAX_HT = devspec2array( "DEF=HeatingThermostat.*" );
  foreach ( @@MAX_HT )
  {
   if ( ReadingsVal ( $_, "mode", "off" ) ne "eco" )
   {
    fhem ( "set $_ desiredTemperature eco" );
   }
  }
}
elsif ( Value ( "ecoSwitch_dummy" ) eq "comfort" )
{
  my @@MAX_HT = devspec2array( "DEF=HeatingThermostat.*" );
  foreach ( @@MAX_HT )
  {
   if ( ReadingsVal ( $_, "mode", "off" ) ne "comfort" )
   {
    fhem ( "set $_ desiredTemperature comfort" );
   }
  }
}
}

define eco_Switch_state_notify notify .*(mode|valveposition).* {
my $eco = 0;
my $auto = 0;
my @@MAX_HT = devspec2array( "DEF=HeatingThermostat.*" );
foreach ( @@MAX_HT )
{
  if ( ReadingsVal ( $_, "mode", "101" ) eq "manual" &&  ReadingsVal ( $_, "desiredTemperature", "30" ) eq ReadingsVal ( $_, "ecoTemperature", "30" ) )
  {
   $eco++;
  }
  elsif ( ReadingsVal ( $_, "mode", "101" ) eq "auto" )
  {
   $auto++;
  }
}
if ( ( $eco == 0 ) && ( $auto != 0 ) )
{
  fhem ( "set ecoSwitch_dummy auto" );
}
else
{
  fhem ( "set ecoSwitch_dummy eco" );
}
}

Feel free to follow up in German if you prefer

Himi

Danke für den Tipp,

als Anfänger habe ich noch wenig Kenntnisse. An welcher Stelle muss ich jetzt nach anpassen?

Da muß doch jetzt noch der Eco-Schalter <Max03fedf> eingefügt werden. Wo......

Das wäre schön, wenn ich das noch hinbekommen würde...

elfrinjo

Hallo himi,

über das Problem habe ich auch lange nachgedacht. Aber leider bist du als MAX-LAN User ein wenig gekniffen. Der Eco-Taster teil FHEM, abgesehen vom Batteriestatus, nichts sinnvolles mit.
Was fruit gemacht hat, ist einen virtuellen Taster in FHEM zu definieren, der sich selbst auf eco stellt, wenn alle Heizkörper auf eco Temperatur laufen. Der eigentliche Taster muss also eigentlich gar nicht in FHEM auftauchen (außer du willst die Batterie überwachen)

Bei mir zuhause habe ich einfach komplett auf einen Taster mit Statusanzeige in FHEM verzichtet und verwende nur zwei Buttons um alle Thermostate auf Auto oder eco/manual zu setzen.


Gruß, elfrinjo

fruit

ecoSwitch_dummy should reflect the status of the Eco Switch - and can be used to change it

Try adding those definitions and see if it helps you. You can modify/rename/delete as you wish

A tip for adding those long notifies...

Enter just
define eco_Switch_notify notify .*ecoSwitch_dummy.* { }
then add the rest by editing the DEF (check that you have matching { and } )
Feel free to follow up in German if you prefer

Himi

Hallo elfrinjo,

danke für deine Antwort.

Mit dem dummy will ich von Unterwegs über das App (addfem) den Heizungsmodus Eco-Auto-Comfort schalten können.
Wenn aber daheim jemand den Eco-Taster betätigt, z.B. von Auto auf --> Eco dann bleibt ja der dummy im fhem auf Auto stehen
und somit erhalte ich auf dem App einen falschen Status.

Jetzt bin ich ja schon mal soweit, dass ich den Eco-Taster im fhem nicht anfassen brauche. Somit ist der Beitrag von -fruit- nicht ganz verkehrt.
Ich muss jetzt eigendlich nur noch den Staus eines Heitkörpers auf den dummy von -fruit- bekommen und somit bin ich ja auf dem andfhem App aktuell.

An welcher Stelle im virtuellen Taster von -fruit-  (dummy) muss ich den Heizkörper (bei mir Max0b2632) einfügen.

Danke im Voraus.

elfrinjo

#14
Falls die Frage nicht schon offline beantwortet ist:

die Geräte werden mit "DEF=HeatingThermostat.*" ausgewählt.
Das ist ein Regulärer Ausdruck der alle definierten Geräte erwischt, deren DEF mit HeatingThermostat anfängt. Dabei gehört der Punkt am Ende zum Ausdruck und nicht zum String nach dem gesucht wird.