FHEM Forum

FHEM - Hausautomations-Systeme => EnOcean => Thema gestartet von: krikan am 08 August 2014, 21:21:17

Titel: [NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 08 August 2014, 21:21:17
Hallo Fhemler,

in den letzten Wochen haben 50watt und ich den EnOcean-Bereich im Wiki http://www.fhemwiki.de/wiki/Kategorie:EnOcean_Components überarbeitet und erweitert. Damit wird es hoffentlich -vor allem für die Einsteiger in Fhem/EnOcean- einfacher einen Überblick zu gewinnen und wir bekomme eine größere Nutzerbasis. Vielleicht findet auch noch ein Fortgeschrittener die eine oder andere Neuigkeit und Anregung.

Natürlich ist noch längst nicht alles perfekt. Deshalb wird Eure Hilfe gebraucht: Für Fehlerhinweise, Verbesserungsvorschläge und Erweiterung gibt es noch viel Raum. Also ändert es ab oder liefert Anmerkungen. Insbesondere (komplexere) EnOcean-Einsatzbeispiele sind noch mehr als rar. Vermisst werden u.a.:
- Beschattung mit unidirektionale Aktoren mit Steuerung per Tasteremulation (u.a. Peha-Aktoren)
- Fenster-/Türüberwachung
- Dimmer(-szenen)
Wenn ihr so etwas habt, immer her damit. Aber auch anderes gerne...

Ein (großes) Dankeschön an:
Peter (Ph1959de) für die schnelle und unermüdliche Hilfe bei der Wikibearbeitung sowie die Einbindung von EnOcan in die Wiki-Hauptseite
Und natürlich: klaus.schauer der nach Rudis Vorarbeit die EnOcean-Module unermüdlich erweitert und verbessert

Gruß, Christian

HINWEIS aus aktuellem Anlass: Ihr könnt auch gerne selbst Eure Ergebnisse/Änderungen im Wiki in begonnene und neue Seiten einpflegen. Das ist nicht MEINE alleinige Spielwiese und ich bin niemanden böse, wenn er von mir begonne Artikel ändert.  ;)
Titel: Einer muß ja anfangen-Fensterüberwachung mit Hoppe Secu100® + Secustik®-Griffen
Beitrag von: lrosebrock am 08 August 2014, 23:42:25
So, dann will ich mal was zurückgeben:

gegeben sind folgende Fenstergriffe:
http://www.hoppe.com/de/de/fenstergriffe/hoppe-innovationen/secu100-secustik (http://www.hoppe.com/de/de/fenstergriffe/hoppe-innovationen/secu100-secustik)

gelöst habe ich das wie folgt:



### Küchenfenster links ###
define Kuechenfenster_links EnOcean xxxxxxxx
attr Kuechenfenster_links IODev TCM310_0
attr Kuechenfenster_links devStateIcon closed:fts_window_2w open:fts_window_2w_open_l tilted:fts_window_2w_tilt_l open_from_tilted:fts_window_2w_open_l
attr Kuechenfenster_links room EnOcean,Küche,Fenster
attr Kuechenfenster_links subType switch
define FileLog_Kuechenfenster_links FileLog ./log/EnO_switch_Kuechenfenster_links-%Y.log Kuechenfenster_links
attr FileLog_Kuechenfenster_links logtype text
attr FileLog_Kuechenfenster_links room EnOcean


Anmerkung:
Meine GöGa fand bei Fensterflügeln jeweils ein Bild pro Flügel übersichtlicher, daher habe ich auf eine Verknüpfung der beiden Fensterflügel in ein Bild verzichtet.

Christian, fehlt noch was an Info´s ? Ist schon wieder spät .... 8)
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 09 August 2014, 09:47:56
Hallo Lars,
bin begeistert; Du bist erst gerade hier aktiv und schon kommt Input. Hoffe, dass auch die "alten" Fhemler etwas liefern  ;).

Zu Deinem Code:
Mich wundert etwas der subType switch: eigentlich sollte das windowHandle oder windowHandle.10 sein!? Hast Du das per autocreate angelegt oder ist das ein Copy/Paste-Fehler?

Noch mal ein großes Danke, Christian

Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: lrosebrock am 10 August 2014, 06:00:10
Hallo Christian,

nur Geben und Nehmen ist nachhaltig ... und ich werde noch viele Fragen haben .....

Zu Deiner Frage - das Anlegen erfolgte mittels autocreate .

Gruß

Lars
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 10 August 2014, 08:58:31
Hallo Lars!

Zitatnur Geben und Nehmen ist nachhaltig ... und ich werde noch viele Fragen haben .....
Wenn das mal alle so sehen würden....

zum Thema: Habe mal aus meiner (zu) großen EnOcean-Grabbelkiste einen Hoppe-Secusignal-Fenstergriff  herausgesucht: Ja, du hast Recht; per autocreate wird tatsächlich ein subType switch für den Fenstergriff angelegt. Laut commandref sollte das aber subType windowHandle sein ("The device windowHandle or windowHandle.10 should be created by autocreate. "). Die Funktion in Fhem  ist aber dennoch gegeben.
@klaus.schauer: Könntest Du das mal bitte ansehen/erläutern und ggfs. Code bzw. commandref gerade ziehen. Würde das gerne richtig ins Wiki übernommen bzw. verstanden haben. Danke.

Gruß, Christian
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: buschmann88 am 10 August 2014, 16:30:20
Hallo

Ich bin noch sehr neu in der materie in FHEM und möchte gerne die Zustände des fenstergriffes an den KNX senden bekomme dieses leider aber nnicht zu stande könnte mir bitte einer helfen wo ich ansetzen muss

Danke im voraus
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 10 August 2014, 16:38:32
Könntest Du das bitte als separates Thema eröffnen, da dies nichts mit dem Wiki zu tuen hat. Wird sonst hier zu unübersichtlich
Bitte liefere auch noch ein paar mehr Informationen (http://www.fhemwiki.de/wiki/EnOcean_Starter_Guide#Welche_Infos_sollten_Anfragen_im_EnOcean-Forum_enthalten.3F), das hier gesagte ist ein bißchen knapp. Da kann man (ich) nur pauschal antworten.
Danke,
Christian
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: flurin am 10 August 2014, 21:06:11
Hallo krikan,

Ich könnte ev. einen Beitrag leisten.
EnOcean-Produkte habe ich seit ca. 8 Jahren im Einsatz. Damals habe ich die Software dazu noch selbst in C# entwickelt inkl. EnOcean-Protokoll.
Zurzeit portiere ich mein altes System auf Fhem. Gateway USB 300, div. Switches, Temperatur-Sensoren, Magnetkontakt-Funkmudule und div. Aktoren, funktionieren bereits mit Fhem. Dazu habe ich noch ein Eltako FSM12-UC Funk-Sendemodul, das ich demnächst anbinden möchte. Hauptsächlich habe ich die Temperatur-Regelung mit konfigurierbaren Temperatur-Profilen für jeden Raum implementiert. Zusätzlich sind noch einfache Steuerfunktionen bereits umgesetzt.

Was wäre von Interesse?

Gruss
flurin
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 11 August 2014, 08:27:05
Hallo flurin,
nehmen würde ich alles, was Du zur Verfügung stellen magst. Gerne auch eine komplette Cfg mit Angaben zu den verwendeten Aktoren/Sensoren, die ich dann auseinanderpflücken könnte und Steuerungsfunktionen -soweit interessant- ins Wiki übernehmen kann. Kurze Hinweise zu den Steuerungsfunktionen, wären natürlich hilfreich.
Wenn ich damit -verständlicherweise- zu gierig bin ;), würde mich insbesondere die Temperatur-Regelung mit Steuerung interessieren. Wenn Du Dich mit Programmierung auskennst, würden Deine Ansätze sicherlich sehr hilfreich sein. Dinge, die für Dich selbstverständlich und "einfach" sind, hat der "simple" Anwender (ich) wahrscheinlich noch nie ansatzweise hinbekommen.
Freue mich über jegliche Infos.
Vielen Dank, Christian
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 11 August 2014, 10:03:37
@lrosebrock: Durch Deine Unterstützung ist eine erste Fassung der Wiki-Seite zum Fenstergriff entstanden: http://www.fhemwiki.de/wiki/EnOcean-SecuSignal-Fenstergriff. Danke und weiter so ;), Christian
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: flurin am 11 August 2014, 12:53:07
Hier ist der erste Beitrag:

Einzelraum-Temperaturregelung

Es gibt unzählige Temperatur-Regelungen für Wohnräume, von einfachen Thermostaten bis zu ausgeklügelten Software-Lösungen.
Folgende Variante basiert auf FHEM und verwendet ausschliesslich EnOcean-Komponenten. Es handelt sich um einen ersten Entwurf und ist noch nicht endgültig (work-in-progress).

Begriffe:

Temperatur-Regelung (temperature control): 'Logik', um die Temperatur (in einem Raum) zu regeln
Istwert (sensor_temp) : gemessene Temperatur.
Sollwert (target_temp) : gewünschte Temperatur.
Sensor (sensor) : Gerät (Input) für die Erfassung des Istwertes (Temperatur).
Aktor (actuator) : Gerät (Output) um den Ventil-Stellantrieb zu steuern.
Profil (profile) : Ein Kurve, die den Sollwert im Verlauf des Tages liefert.
Offset (offset) : Ein Wert, der zum Sollwert dazugerechnet wird.

EnOcean Komponenten:

Gateway: USB 300
Sensoren: EnOcean STM 330, AWAG RTF, Thermokon SR04
Aktoren: PEHA, Easyclick, 4 Kanal-Reiheneinbaugerät Typ 454 FU-E REG, AWAG REG-Schaltaktor 8-Kanal, Typ REGS

Funktion:

Bei jedem Empfang eines Temperaturwertes (ca. alle 15 min) wird der Sollwert für die Raumtemperatur in Abhängigkeit eines Temperatur-Profils berechnet und den Offset dazugerechnet (der Wert kann auch negativ sein). Der Istwert wird mit dem Sollwert verglichen, um den Aktor zu steuern (Ventil auf oder zu). Es handelt sich also um eine einfache Ein/Aus-Regelung, die im Wohnbereich ausreichend ist, da die Temperatur-Veränderung insbesondere bei einer Bodenheizung träge ist.

Wie aus dem Bild im Anhang ersichtlich ist (leider ist es jetzt Sommer und die Ist-Temperatur ist entsprechend höher als im Winter), ändert sich der Sollwert teilweise linear also nicht sprunghaft.
Der Stellantrieb (Ventil) für die Heizung (Fussbodenkreis, Heizkörper) wird dadurch in Abhängigkeit von der Nachttemperatur früher oder später eingeschaltet. Damit wird die gewünschte Temperatur zu einer bestimmten Zeit erreicht. Wenn es in der Nacht sehr kalt ist, dann wird der Stellantrieb entsprechend früher eingeschaltet.

Subroutinen in 99_myUtils.pm:

{ #namespace Heating_Control

# room-settigs:
# key=room_name
# values = sensor, profile, offset, actuator
my %home = ();

# argument: room_name
# return value: target_temp
sub get_Target_Temp($)
{
  my ($room) =@_;
  my $target_temp;
 
  if (exists($home{$room})) {
    my @def = @{$home{$room}};
    my $profile_str = $def[1];
    my $offset = $def[2];
    $target_temp = calc_Target_Temp($profile_str) + $offset;
  } else {
    $target_temp = "room undefined";
  }
  return $target_temp;
}

# argument: room_name
# return value: offset
sub get_Offset($)
{
  my ($room) =@_;
  my $offset;
 
  if (exists($home{$room})) {
    my @def = @{$home{$room}};
    $offset = $def[2];
  } else {
    $offset = "room undefined";
  }
  return $offset;
}

# arguments: room_name,sensor,profile, offset, actuator
# return value: none
sub set_Heating_Control($$$$$)
{
  my ($room, @def) = @_;
  $home{$room} = \@def;
 
  Log(3, "set_Heating_Control: room = $room");
 
  #todo: error handling
 
  #my @hdef = @{ $home{$room}};
  #my $sensor = $hdef[0]; my $profile = $hdef[1];my $offset = $hdef[2];my $actuator = $hdef[3];
  #Log (3,"$sensor $profile $offset $actuator");
}

# arguments: none
# return value: none
sub Heating_Control()
{
  my $state = Value("heating_control");
  Log (3,"Heating_Control $state");

  if (Value("heating_control") eq "on") {
    for my $room (keys %home) {
      Temp_Control($room);
    }
  }
  #todo error handling
}

# arguments: room_name
# return value: target_temp
sub Temp_Control($)
{
  return if (Value("heating_control") eq "off");
 
  my ($room) = @_;
  my $target_temp;
 
  if (exists($home{$room})) {
    my @def = @{$home{$room}};
 
    my $sensor = $def[0];
    my $profile_str = $def[1];
    my $offset = $def[2];
    my $actuator = $def[3];
 
    my $sensor_temp = Value($sensor);
    $target_temp = calc_Target_Temp($profile_str) + $offset;

    #Log(3,"sensor_temp = $sensor_temp, target_temp = $target_temp");
 
    if ($sensor_temp > $target_temp) {
      fhem ("set $actuator off");
    } else {
      fhem ("set $actuator on");
    }
  } else {
    $target_temp = "room undefined";
  }
  #to do: error handling
  return $target_temp;
}

} # end namespace Heating_Control


# arguments: profile
# return value: target_temp
sub calc_Target_Temp($)
{
  my ($profile_str) = @_;
  my @profile = split(' ', $profile_str);
     
  my $prior_time = 0;
  my $prior_temp = 0;
  my $point_time;
  my $point_temp;
  my $target_temp;
  my @set_point;
 
  my @now = localtime;
  my $actual_time = $now[1] + $now[2]*60; # value in minutes
 
  foreach my $item (@profile) {
    @set_point = split('=', $item);   
    my @time = split(':', $set_point[0]);
    $point_time = $time[0]*60 + $time[1]; # value in minutes
    $point_temp = $set_point[1];
   
    if ($actual_time < $point_time) {
      $target_temp = $prior_temp + (($actual_time - $prior_time) * ($point_temp - $prior_temp) / ($point_time - $prior_time));
      last;
    }
    $prior_time = $point_time;
    $prior_temp = $point_temp;
  }
  $target_temp = sprintf("%.1f", $target_temp);
  # Log(3, $actual_time . " " . $target_temp);
  #todo error handling
  return $target_temp;
}


fhem.cfg Einträge (Beispiel für 2 Räume: dining, office):

# temp_dining
define temp_dining EnOcean 00003727
attr temp_dining IODev TCM310_FTUS8GG2
attr temp_dining group Temp
attr temp_dining room EnOcean,Testing
attr temp_dining subType tempSensor.05
attr temp_dining userReadings target_temp {get_Target_Temp("dining")}

define FileLog_temp_dining FileLog ./log/temp_dining-%Y.log temp_dining:temperature.*
attr FileLog_temp_dining logtype text
attr FileLog_temp_dining room EnOcean
define SVG_FileLog_temp_dining_1 SVG FileLog_temp_dining:SVG_FileLog_temp_dining_1:CURRENT
attr SVG_FileLog_temp_dining_1 label int($data{min1}-0.3)::$data{max1}+0.5
attr SVG_FileLog_temp_dining_1 room Ground_Floor
attr SVG_FileLog_temp_dining_1 title sprintf("Dining: actual %s °C target %s °C at %s",$data{currval1},ReadingsVal("temp_dining","target_temp","?"),substr($data{currdate1},11,5))

# temp_office
define temp_office EnOcean 0082CF95
attr temp_office IODev TCM310_FTUS8GG2
attr temp_office group Temp
attr temp_office room EnOcean,First_Floor,Testing
attr temp_office subType tempSensor.05
attr temp_office userReadings target_temp {get_Target_Temp("office")}

define FileLog_temp_office FileLog ./log/temp_office-%Y.log temp_office:temperature:.*
attr FileLog_temp_office logtype text
attr FileLog_temp_office room EnOcean
define SVG_FileLog_temp_office_1 SVG FileLog_temp_office:SVG_FileLog_temp_office_1:CURRENT
attr SVG_FileLog_temp_office_1 label int($data{min1}-0.3)::$data{max1}+0.5
attr SVG_FileLog_temp_office_1 room First_Floor
attr SVG_FileLog_temp_office_1 title sprintf("Office: actual %s °C target %s °C at %s",$data{currval1},ReadingsVal("temp_office","target_temp","?"),substr($data{currdate1},11,5),)

# dining_heating
define dining_heating EnOcean FFFFEF84
attr dining_heating IODev TCM310_FTUS8GG2
attr dining_heating eventMap AI:on A0:off
attr dining_heating group Actuator
attr dining_heating icon sani_floor_heating
attr dining_heating room Floor_Heating,EnOcean
attr dining_heating subType switch

# office_heating
define office_heating EnOcean FFFFEF87
attr office_heating IODev TCM310_FTUS8GG2
attr office_heating eventMap AI:on A0:off
attr office_heating group Actuator
attr office_heating icon sani_floor_heating
attr office_heating room EnOcean,Floor_Heating
attr office_heating subType switch

# macro to store the values in a hash
define set_hc notify set_hc {\
set_Heating_Control('dining','temp_dining','00:00=18.0 04:00=18.0 09:00=19.5 18:00=19.5 19:00=18.0 24:00=18.0','-0.5','dining_heating');; \
set_Heating_Control('office','temp_office','00:00=18.0 04:00=18.0 08:00=20.5 18:00=20.5 19:00=18.0 24:00=18.0','1.0','office_heating');; \
}
attr set_hc group Macro
attr set_hc room Testing

# notify dining
define n_hc_dining notify temp_dining:temperature.* { Temp_Control("dining") }
attr n_hc_dining group Notify

#notify office
define n_hc_office notify temp_office:temperature.* { my $temp = Temp_Control("office") }
attr n_hc_office group Notify

# dummy to switch-on heating control (main-switch)
define heating_control dummy
attr heating_control group Control
attr heating_control icon sani_heating_automatic
attr heating_control room Control
attr heating_control setList on off

# notify heating control
define n_heating_control notify heating_control { Heating_Control() }
attr n_heating_control group Notify

# trigger set_hc at start or fhem.cfg reread
define n_init_fhem notify global:(INITIALIZED|REREADCFG) { fhem("trigger set_hc")}
attr n_init_fhem group Notify
attr n_init_fhem room Testing


Ich hoffe, dass es einigermassen verständlich ist, sonst einfach fragen.

Gruss
flurin
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 11 August 2014, 13:13:40
Hallo flurin.
KLASSE!
Schaue ich mir in Ruhe durch. Also bitte nicht wundern, wenn ich einige Zeit brauche. Überlege derzeit auch separate EnOcean-Wiki-Bereiche für komplexer Einsatzbeispiele aufzuziehen. Mal schauen.
Immerhin habe ich schon einmal dank Internet herausgefunden, dass AWAG der Nachfolgher von Omnio ist.
Danke flurin, Christian

PS: Eine Bitte an alle Anderen: Auch einfache Beispiele sind weiterhin gesucht....
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: lrosebrock am 11 August 2014, 16:24:28
Hallo Christian,

falls Du Produktphotos für den WIKI-Eintrag brauchst - ich hab hier noch einen Ersatzgriff - den könnte ich (zerlegt und/oder zusammengebaut) , mal photographieren und die Bilder zur Verfügung stellen
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 11 August 2014, 16:30:48
@lrosebrock: Hallo Lars, klar nehmen wir/ich Fotos. Zur Schande muss ich gestehen, dass ich selbst noch nie ein Foto ins Wiki eingebunden habe; um Fotos hat sich 50watt gekümmert. Aber irgendwie wirds schon klappen, kannst es gerne anhängen. Gruß, Christian
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: lrosebrock am 12 August 2014, 07:36:01
Hallo Christian, mache ich bei Gelegenheit - hier nun der 2. Beitrag, wie im Fred "Anfängerfragen" angekündigt :

Steuerung Licht mittels Bewegungsmelder, in Abhängigkeit von der Helligkeit

Eingesetzte Komponenten:

Anforderungsprofil:

Geschaltet werden soll:
- Licht Grillschuppen per Taster und FHEM
- Ambilight Boden per Taster und FHEM
- Licht und Ambilight bei Bewegung ab einem Restlicht von ca. 70 Lux
- das "Bewegungslicht" soll manuell deaktivierbar sein, um selber im Garten sitzen zu können

Code:

Erstellen / Einlernen des PTM 210:


### Garten Schalter 2 Grillschuppen / Bodenbeleuchtung
###### physikalischer Schalter 2 ######
define 4TG2 EnOcean 00000000
attr 4TG2 IODev TCM310_0
attr 4TG2 room EnOcean
attr 4TG2 subType switch
define TG2_A dummy
attr TG2_A eventMap AI:on A0:off
attr TG2_A room EnOcean
define TG2_B dummy
attr TG2_B eventMap BI:on B0:off
attr TG2_B fp_Garten 50,200,1,
attr TG2_B room EnOcean
define FileLog_4TG2 FileLog ./log/EnO_switch_00000000-%Y.log EnO_switch_00000000
attr FileLog_4TG2 logtype text
attr FileLog_4TG2 room EnOcean

###### physikalischer Schalter Bewegungsmelder ######
define 4TG3 EnOcean 00000000
attr 4TG3 IODev TCM310_0
attr 4TG3 room EnOcean
attr 4TG3 subType switch
define TG3_B dummy
attr TG3_B eventMap BI:on B0:off
attr TG3_B room EnOcean
define FileLog_4TG3 FileLog ./log/EnO_switch_4TG3-%Y.log 4TG3
attr FileLog_4TG3 logtype text
attr FileLog_4TG3 room EnOcean

Erstellen / Anlernvorgang Bewegungsmelder:



define BM_Garten EnOcean 00001111
attr BM_Garten IODev TCM310_0
attr BM_Garten manufID 001
attr BM_Garten room EnOcean,Garten
attr BM_Garten subType lightTempOccupSensor.01
define FileLog_BM_Garten FileLog ./log/BM_Garten-%Y.log BM_Garten
attr FileLog_BM_Garten logtype text
attr FileLog_BM_Garten room EnOcean


Erstellen der "virtuellen" FHEM-Schalter


#Definition des Fhem Schalters Garten 2 links =====  FFFFFFFF  ======
define fh_garten02_li EnOcean FFFFFF
attr fh_garten02_li IODev TCM310_0
attr fh_garten02_li eventMap BI:on B0:off
attr fh_garten02_li icon icoBELEUCHTUNG.png
attr fh_garten02_li room EnOcean
attr fh_garten02_li subType switch

#Definition des Fhem Schalters Garten 2 rechts =====  FFFFFFFF +1  ======
define fh_garten02_re EnOcean FFFFFFFF+1
attr fh_garten02_re IODev TCM310_0
attr fh_garten02_re eventMap AI:on A0:off
attr fh_garten02_re icon icoBELEUCHTUNG.png
attr fh_garten02_re room EnOcean
attr fh_garten02_re subType switch

#Definition des Fhem Schalters Garten 3 links =====  FFFFFFFF+2  ======
define fh_garten03_li EnOcean  FFFFFFFF+2
attr fh_garten03_li IODev TCM310_0
attr fh_garten03_li eventMap BI:on B0:off
attr fh_garten03_li icon icoBELEUCHTUNG.png
attr fh_garten03_li room EnOcean
attr fh_garten03_li subType switch




Koppelung physikalische / "virtuelle" Taster bei unidirektionalen EnOcean-Komponenten siehe http://www.fhemwiki.de/wiki/EnOcean_Starter_Guide#Physischer_EnOcean-_und_virtueller_Fhem-Schalter_zu_einem_Device_zusammenfassen (http://www.fhemwiki.de/wiki/EnOcean_Starter_Guide#Physischer_EnOcean-_und_virtueller_Fhem-Schalter_zu_einem_Device_zusammenfassen):

### Kopplung Schalter phy und fhem ########
define Ambilight structure room fh_garten02_re TG2_A
attr Ambilight clientstate_behavior last
attr Ambilight eventMap AI:on A0:off
attr Ambilight room EnOcean,Garten

### Kopplung Schalter phy und fhem ########
define Grillschuppen structure room fh_garten02_li TG2_B
attr Grillschuppen clientstate_behavior last
attr Grillschuppen eventMap BI:on B0:off
attr Grillschuppen room EnOcean,Garten

### Kopplung Schalter phy und fhem ########
define Bewegungsmelder structure room fh_garten03_li TG3_B
attr Bewegungsmelder clientstate_behavior last
attr Bewegungsmelder eventMap BI:on B0:off
attr Bewegungsmelder room EnOcean,Garten


Notifys:

##### für jeweilige Structure ##########
define n_A2 notify 4TG2:.*A.* { fhem("set TG2_A ".($EVENT=~m/AI/ ? "on" : "off")) }
define n_B2 notify 4TG2:.*B.* { fhem("set TG2_B ".($EVENT=~m/BI/ ? "on" : "off")) }
define n_B3 notify 4TG3:.*B.* { fhem("set TG3_B ".($EVENT=~m/BI/ ? "on" : "off")) }


### Bewegung einschalten bei Dunkelheit #####
define chk_lux notify (BM_Garten:brightness:.*) {if (ReadingsVal("BM_Garten","brightness",1) < 70){fhem "set Bewegungsmelder on"}}
#### Licht Schalten bei Bewegung
define mv_garten notify (BM_Garten:motion:.on) {if (Value("Bewegungsmelder")eq "on"){fhem "set Grillschuppen on-for-timer 120"}}
##### Bewegung ausschalten bei Helligkeit #####
define chk_lux2 notify (BM_Garten:brightness:.*) {if (ReadingsVal("BM_Garten","brightness",1)> 75) {fhem "set Bewegungsmelder off"}}


Gruß

Lars
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 12 August 2014, 07:43:20
@lrosebrock: Danke! Wie bei flurin der Hinweis: Für die größeren Beispiele brauche ich ein wenig Zeit; Also bitte nicht wundern, wenn etwas nicht sofort verwendet wird. Es darf ruhig weitergeliefert werden. Gruß, Christian
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: flurin am 12 August 2014, 14:43:27
Einfaches Beispiel:

Logging der Zustände open/closed und graphische Darstellung mit dem SVG Hilfsmodul.

EnOcean: Magnetkontakt-Funkmodul STM 250

fhem.cfg:

define garden_door EnOcean 0000077E
attr garden_door IODev TCM310_FTUS8GG2
attr garden_door devStateIcon open:fts_door_open@red closed:fts_door@black
attr garden_door subType contact
define FileLog_garden_door FileLog ./log/garden_door-%Y.log garden_door:.*
attr FileLog_garden_door logtype text
attr FileLog_garden_door room EnOcean

define SVG_FileLog_garden_door_1 SVG FileLog_garden_door:SVG_FileLog_garden_door_1:CURRENT
attr SVG_FileLog_garden_door_1 room Ground_Floor
attr SVG_FileLog_garden_door_1 title sprintf("Garden Door %s at %s",$data{currval1}=~"1"?'open':'closed',substr($data{currdate1},11,5))


www/gplot/SVG_FileLog_garden_door_1.gplot:


# Created by FHEM/98_SVG.pm, 2014-07-31 14:38:17
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics ("open" 1, "closed" 0)
set y2tics ("open" 1, "closed" 0)
set grid ytics y2tics
set ylabel ""
set y2label "Status"
set yrange [-0.1:1.1]
set y2range [-0.1:1.1]

#FileLog 3::0:$fld[2]=~"open"?1:0

plot "< awk '{print $1, $3~/open/? 1 : 0; }' <IN>"\
        using 1:2 notitle with steps


Gruss
flurin
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 12 August 2014, 16:09:48
@flurin: Danke! Hast Du die graphische Darstellung nur über den Ploteditor gelöst? Christian

Offtopic: Im Wiki bin ich über diesen Code gestolpert http://www.fhemwiki.de/wiki/Funktionsbeschreibung_zu_notify: if( $month ge "6" && $month le "9"); du weist bestimmt, ob dass nicht if( $month >= 6 && $month <= 9) heißen muss; zumindest ist das meine Meinung als Perl-Laie. Würde das gerne geraade ziehen, falls es falsch ist.
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: flurin am 12 August 2014, 16:30:23
Zitat von: krikan am 12 August 2014, 16:09:48
Hast Du die graphische Darstellung nur über den Ploteditor gelöst?

Nein, ich habe die Datei von einem Beispiel, das ich im Forum gefunden habe, kopiert. Mit dem Ploteditor geht es meines Wissens nicht.

Zitat von: krikan am 12 August 2014, 16:09:48
Offtopic: Im Wiki bin ich über diesen Code gestolpert http://www.fhemwiki.de/wiki/Funktionsbeschreibung_zu_notify: if( $month ge "6" && $month le "9"); du weist bestimmt, ob dass nicht if( $month >= 6 && $month <= 9) heißen muss; zumindest ist das meine Meinung als Perl-Laie. Würde das gerne geraade ziehen, falls es falsch ist.

Es scheint mir korrekt zu sein, denn es wird ein String "6" verglichen. Wenn es ein numerischer Wert (also 6) wäre, dann müsste man <= verwenden.
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 12 August 2014, 16:39:02
Offtopic:
Es scheint mir korrekt zu sein, denn es wird ein String "6" verglichen. Wenn es ein numerischer Wert (also 6) wäre, dann müsste man <= verwenden.
Ich war der Meinung es ist ein numerischer Wert. Zumindest $month, $ day, usw. hatte ich bei Fhem so eingeordnet und daher 6 genommen.
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: flurin am 12 August 2014, 17:04:39
Zitat von: krikan am 12 August 2014, 16:39:02
Offtopic:
Es scheint mir korrekt zu sein, denn es wird ein String "6" verglichen. Wenn es ein numerischer Wert (also 6) wäre, dann müsste man <= verwenden.
Ich war der Meinung es ist ein numerischer Wert. Zumindest $month, $ day, usw. hatte ich bei Fhem so eingeordnet und daher 6 genommen.

Richtig! in fhem ist $month numerisch, zwischen 1 und 12. Siehe Perl Special in CommandRef.
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 12 August 2014, 17:11:13
Richtig! in fhem ist $month numerisch, zwischen 1 und 12. Siehe Perl Special in CommandRef.
So, jetzt für Dumme (mich): daraus schließe ich, dass der Vergleich mit if( $month ge "6" && $month le "9") nicht richtig ist und >=  6 usw. verwendet werden sollten, oder!?
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: flurin am 12 August 2014, 17:21:19
Zitat von: krikan am 12 August 2014, 17:11:13
.... daraus schließe ich, dass der Vergleich mit if( $month ge "6" && $month le "9") nicht richtig ist und >=  6 usw. verwendet werden sollten, oder!?

Spätestens bei der Ausführung meldet sich der Computer, wenn es nicht richtig ist. Er ist erbarmungslos  :)

Ja, so ist es richtig:

if( $month >= 6 && $month <= 9)
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 12 August 2014, 17:26:05
Puh, doch nicht ganz verblödet. ;) Werde dann mal das Wiki ändern. Sorry, will nicht alles ausprobieren, was mir im Wiki komisch erscheint. Die fehlerhaften Variablen-Zuweisungen auf der Seite mit == habe ich mich noch ohne Kontrolle getraut... Danke, Christian
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: flurin am 12 August 2014, 17:29:49
Zitat von: krikan am 12 August 2014, 17:26:05
Puh, doch nicht ganz verblödet. ;) Werde dann mal das Wiki ändern. Sorry, will nicht alles ausprobieren, was mir im Wiki komisch erscheint. Die fehlerhaften Variablen-Zuweisungen auf der Seite mit == habe ich mich noch ohne Kontrolle getraut... Danke, Christian

Ergänzung:

Perl macht es trotzdem auch mit ge "6" richtig! er wandert die Variable um. Ich hab es soeben ausprobiert. Trotzdem besser ist es mit >=
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 12 August 2014, 17:52:05
Perl macht es trotzdem auch mit ge "6" richtig! er wandert die variable um. Ich hab es soeben ausprobiert. Trotzdem besser ist es mit >=
Scheint aber nur in diesem Fall richtig zu sein und ist vermutlich eher Zufall; im Debugfall sucht man wahrscheinlich ewig. Habe es nämlich jetzt auch noch auf http://www.compileonline.com/execute_perl_online.php durchlaufen lassen.  Mit dieser Änderung im Vergleich ist das Chaos bereits perfekt:

my $month=10;
if ($month ge "1" && $month le "6") {
  print "yes";
  }
  else {
  print "no";
  }

ergibt: yes ==> damit falsch
ACHTUNG: CODE IST FALSCH / WAR NUR ZUR FEHLERPRÜFUNG
So, nachdem ich dies hier selbst ins Offtopic geschoben habe, zurück zum Thema....

Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: rudolfkoenig am 12 August 2014, 17:52:47
ZitatPerl macht es trotzdem auch mit ge "6" richtig! er wandert die Variable um.

Das funktioniert aber nur von Januar bis September.
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 13 August 2014, 11:48:01
@flurin: Durch Deine Unterstützung ist das Einsatzbeispiel "Plot zum Türstatus" ins Wiki gekommen http://www.fhemwiki.de/wiki/EnOcean-STM-250-Fenster-T%C3%BCrkontakt#T.C3.BCrstatus_in_einem_Plot_darstellen. Vielen Dank und weiter so, Christian.

PS: Plot kann über den Plot-Editor erstellt werden
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: flurin am 13 August 2014, 13:10:26
... ich habe am Anfang auch sehr viel vom Forum profitiert und werde gerne versuchen, einen kleinen Beitrag zu leisten.

Zitat von: krikan am 13 August 2014, 11:48:01
PS: Plot kann über den Plot-Editor erstellt werden

Ich schaue es mir noch mal an. Bei Änderungen [Write .gplot file] habe ich Probleme erhalten, das gplot-File wurde nicht richtig zurückgeschrieben.
Ev. ist es jetzt mit dem Update i.O.
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 13 August 2014, 20:13:54
@lrosebrock:
Hallo Lars,
bin gerade beim "Verstehen" Deines 2. Beispiels. Könntest Du bitte einmal nachschauen, ob
define n_A2 notify 4TG2:.*A.* { fhem("set TG2_A ".($EVENT=~m/AI/ ? "on" : "off")) }
.*A.* zum doppelten triggern des notifys und damit zur Doppelausführung des Codeteils führt. Müsstest Du im Event-Monitor sehen können. Ist nur für mein Verständnis; keine funktionale Auswirkung auf Deinen Code.
Danke, Christian
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: lrosebrock am 14 August 2014, 06:58:02
Hallo Christian,

folgender Auswurf des Eventmonitors bei Schaltvorgang on/off binnen 2 sec. :

2014-08-14 06:42:34 dummy TG2_A on
2014-08-14 06:42:34 EnOcean fh_garten02_re on
2014-08-14 06:42:34 structure Ambilight on
2014-08-14 06:42:36 dummy TG2_A off
2014-08-14 06:42:36 EnOcean fh_garten02_re off
2014-08-14 06:42:36 structure Ambilight off


Gerne gebe ich zu, dass diese Zeile nicht von mir stammt (habe diese nur angepasst) - habe Sie hier aus dem Forum, kann die Quelle aber grad nicht finden.
Aber ein doppeltes Triggern kann ich nicht erkennen - weder im Log, noch im täglichen Betrieb.

Allerdings habe ich den Code zwischenzeitlich angepasst - aus der Zeile ALT


#### Licht Schalten bei Bewegung
define mv_garten notify (BM_Garten:motion:.on) {if (Value("Bewegungsmelder")eq "on"){fhem "set Grillschuppen on-for-timer 120"}}

wurde NEU

#### Licht Schalten bei Bewegung
define mv_garten notify (BM_Garten:motion:.on) {if (Value("Bewegungsmelder")eq "on"){fhem "set Grillschuppen on-for-timer 120;;sleep 121;;set TG2_B off"}}


Sicherlich nicht die eleganteste Lösung, aber funktioniert - hast Du ggf. eine bessere Idee , den Event "Ablauf der 120 sec => ergo Grillschuppen off" abzufangen ... weiteres notify ggf ...

Gruß

Lars
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: flurin am 14 August 2014, 08:48:05
Zitat von: krikan am 13 August 2014, 11:48:01
PS: Plot kann über den Plot-Editor erstellt werden

Hallo krikan,

Es geht nun auch bei mir, so wie in der Wiki beschrieben ist. Ich hab's bei mir auch angepasst. Danke.

Eine kleine Bemerkung:
Wenn bei Punkt 11 DefaultValue: 0 gesetzt wird, dann ist in .gplot:

#FileLog 3:EnO_contact_00017500.*:0:$fld[2]=~"open"?1:0
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 14 August 2014, 13:16:22
@flurin
Danke für das aufmerksame Lesen des Wikis, habe die .gplot korrigert.
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 14 August 2014, 13:57:58
@lrosebrock

Verstehe gerade nicht warum das nicht 2 mal triggert:
4TG2 ist ein physischer Schalter.
Das Regex  "4TG2:.*A.*" müsste
beim Event "4TG2 channelA: AI" und
beim Event "4TG2 AI"  matchen; also 2x
Darum hätte ich als RegEx "4TG2.channelA:.*" oder "4TG2.A." genommen. Sieht jemand meinen Gedankenfehler? Ich würde es gerne verstehen

Zu Deiner Änderung/Problem habe ich noch keine Meinung/Idee. Schaue ich mir noch mal an. Statt dummy ein readingsproxy!? Vermutlich fehlt mir aber noch der Durchblick bei Deinem Code. Ich muss es mal nachbauen, um es besser zu verstehen.
Vielleicht hat aber ein anderer noch eine Idee.
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: flurin am 14 August 2014, 15:53:05
Zitat von: krikan am 14 August 2014, 13:57:58
Vielleicht hat aber ein anderer noch eine Idee.

Eine Lösung ohne "structure":


# switch_office
define switch_office EnOcean 00217921
attr switch_office IODev USB_300
attr switch_office group Switch
attr switch_office room EnOcean
attr switch_office subType switch
define FileLog_switch_office FileLog ./log/switch_office-%Y.log office_radio
attr FileLog_switch_office logtype text
attr FileLog_switch_office room EnOcean



# office_lamp (virtual switch)
define office_lamp EnOcean FFFFEFA3
attr office_lamp IODev USB_300
attr office_lamp eventMap AI:on A0:off
attr office_lamp group Virtual_Switches
attr office_lamp room EnOcean,First_Floor
attr office_lamp subType switch


1. Variante:

# n_office_lamp
define n_office_lamp notify switch_office.channelB:.* { fhem("set office_lamp ".($EVENT =~ m/B0/ ? "off" : "on")) }


oder 2. Variante:

# n_office_lamp
define n_office_lamp notify switch_office.channelB:.* {\
if ($EVENT =~ m/B0/) {fhem("set office_lamp off") } \
elsif ($EVENT =~ m/BI/) {fhem("set office_lamp on") } }
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: lrosebrock am 14 August 2014, 22:52:13
@krikan

sorry - mein Fehler - er triggert bei der Nutzung des physikalischen Tasters 2 mal - ich hatte heute morgen nur per virt. Taster geschaltet ..... ich passe die RegEx an, teste und berichtige dann ggf. den Code ....


Gruß

Lars

Der 2.Punkt war nicht so wesentlich  - ich fands nur ein wenig dirty
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: krikan am 17 August 2014, 14:52:32
@flurin und lrosebrock: Sorry, komme momentan gerade nicht wirklich vorwärts und brauche noch ein bißchen. Ich habe es nicht vergessen. Ihr könnt aber gerne weiter liefern, wenn Ihr noch etwas habt.

@all: Hat sonst niemand mehr Beispiele (u.a Dimmer/-szenen oder Rollladensteuerung). Es wäre schön, wenn ihr das zur Verfügung stellen könntet!

Danke, Christian
Titel: Antw:[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht
Beitrag von: flurin am 17 August 2014, 18:49:50
Zitat von: krikan am 17 August 2014, 14:52:32
@flurin und lrosebrock: Sorry, komme momentan gerade nicht wirklich vorwärts und brauche noch ein bißchen.

Hallo Christian,

Bei der Temperatur Regelung habe ich noch Einiges eingebaut und vor allem die ganze Konfiguration in einer XML-Datei ausgelagert.
Es wird für den Benutzer einfacher, ich brauche jedoch noch ein paar Tage für die Fertigstellung. Ich würde den ersten Entwurf vergessen und abwarten.  :)