[NEU] EnOcean-Bereich auf fhemwiki.de erweitert / noch Einsatzbeispiele gesucht

Begonnen von krikan, 08 August 2014, 21:21:17

Vorheriges Thema - Nächstes Thema

krikan

@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

flurin

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

krikan

@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.

flurin

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.

krikan

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.

flurin

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.

krikan

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!?

flurin

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)

krikan

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

flurin

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 >=

krikan

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....


rudolfkoenig

ZitatPerl macht es trotzdem auch mit ge "6" richtig! er wandert die Variable um.

Das funktioniert aber nur von Januar bis September.

krikan

@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

flurin

... 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.

krikan

@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