FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Hackstall am 25 Dezember 2017, 11:59:51

Titel: dev per systemaufruf in fhem.cfg
Beitrag von: Hackstall am 25 Dezember 2017, 11:59:51
Hallo,
jetzt habe ich folgendes Problem dass ich /dev/pts/<nr> in fhem.cfg definieren muss.
Da ich noch einpaar Aenderungen in Fhem machen muss benötige ich ein shutdown restart.
Leider ändert sich die nummer <nr> des pts devices jedesmal.
Ich könnte diese per system call "system cat /dev/picom2" in Erfahrung bringen.
meine Frage ist:
kann ich eine Zeile wie
define mdhg33t ECMD /dev/pts/1@9600
irgendwie auch
define mdhg33t ECMD {system(cat /dev/picom2)}@9600
schreiben?

danke und schöne Weihnachten
Andreas
Titel: Antw:dev per systemaufruf in fhem.cfg
Beitrag von: DeeSPe am 25 Dezember 2017, 12:02:15
Soweit ich weiß geht das nicht.
Du könntest aber nach global:INITIALIZED das Ergebnis von "system cat /dev/picom2" per defmod auf Dein Device anwenden.

Gruß
Dan
Titel: Antw:dev per systemaufruf in fhem.cfg
Beitrag von: Hackstall am 25 Dezember 2017, 14:44:57
Hallo das klingt vielversprechend leider bin ich noch nicht so erfahren dass ich das in Code ausdrücken kann.

Hättest Du ein Beispiel?

Danke Andreas
Titel: Antw:dev per systemaufruf in fhem.cfg
Beitrag von: betateilchen am 25 Dezember 2017, 14:46:30
Könntest Du Dir bitte einen kürzeren Nickname zulegen? Dein Mammut-Text sprengt den Bildschirm...

zu global:INITIALIZED und wie man defmod anwendet, findest Du sämtliche Antworten in commandref, wiki und hier im Forum.
Titel: Antw:dev per systemaufruf in fhem.cfg
Beitrag von: DeeSPe am 25 Dezember 2017, 16:34:00
Zitat von: andreas@die4krauses.net am 25 Dezember 2017, 14:44:57
Hallo das klingt vielversprechend leider bin ich noch nicht so erfahren dass ich das in Code ausdrücken kann.

Hättest Du ein Beispiel?

Danke Andreas

Etwa so, ungetestet:
define n_global_INITIALIZED notify global:INITIALIZED {my $dev=qx(cat /dev/picom2);; chomp $dev;; fhem "defmod mdhg33t ECMD $dev\@9600"}

Gruß
Dan

EDIT: Es kommt natürlich drauf an was "cat /dev/picom2" tatsächlich zurück liefert. Ist es nur die Nummer oder der ganze Pfad? Mein Beispiel geht davon aus dass der komplette Pfad geliefert wird.
Titel: Antw:dev per systemaufruf in fhem.cfg
Beitrag von: Hackstall am 26 Dezember 2017, 09:02:48
Halöo vielen Dank. Ja Du hast Recht es wir der komplette Pfad geliefert.
Och werde es heute ausprobieren
Titel: Antw:dev per systemaufruf in fhem.cfg
Beitrag von: Hackstall am 26 Dezember 2017, 10:51:41
Hallo habe es ausprobiert,

und es schein auch zu funktionieren  :) :) :) :),

jedoch wird zum Beispiel Attr ROOM Keller nicht mehr in FHEM angezeigt bzw angelegt. :( :( :( :(

Mein derzeitiger Code:
define NGI_MSR1 notify global:INITIALIZED {my $dev2=qx(cat /dev/picom1);; chomp $dev2;; fhem "define Dev_MSR1 MSR1 $dev2\@9600"}
attr Dev_MSR1 room Keller

Das Logfile
2017.12.26 10:23:36 5: Cmd: >define NGI_MSR1 notify global:INITIALIZED {my $dev2=qx(cat /dev/picom1); chomp $dev2; fhem "define Dev_MSR1 MSR1 $dev2\@9600"}<
2017.12.26 10:23:36 5: Loading ./FHEM/91_notify.pm
2017.12.26 10:23:36 5: Cmd: >attr Dev_MSR1 room Keller<
2017.12.26 10:23:36 5: Cmd: >define FileLog_MSR1 FileLog ./log/MSR1-%Y-%m.log Dev_MSR1<
2017.12.26 10:23:36 5: Cmd: >attr FileLog_MSR1 logtype text<
2017.12.26 10:23:36 5: Cmd: >attr FileLog_MSR1 room Logs<
2017.12.26 10:23:36 1: Including ./log/fhem.save
2017.12.26 10:23:36 5: Cmd: >setstate FileLog_MSR1 active<
2017.12.26 10:23:36 5: Cmd: >setstate FileLog_MSR1 2017-12-25 23:45:29 linesInTheFile 18<
2017.12.26 10:23:36 5: Cmd: >setstate Logfile active<
2017.12.26 10:23:36 5: Cmd: >setstate NGI_MSR1 active<
2017.12.26 10:23:36 5: Cmd: >setstate NGI_MSR1 2017-12-26 10:23:25 state active<
2017.12.26 10:23:36 5: Cmd: >setstate autocreate active<
2017.12.26 10:23:36 5: Cmd: >setstate eventTypes active<
2017.12.26 10:23:36 5: Cmd: >setstate global no definition<
2017.12.26 10:23:36 5: Starting notify loop for global, 1 event(s), first is INITIALIZED
2017.12.26 10:23:36 5: createNotifyHash
2017.12.26 10:23:36 5: Triggering NGI_MSR1
2017.12.26 10:23:36 4: NGI_MSR1 exec {my $dev2=qx(cat /dev/picom1);; chomp $dev2;; fhem "define Dev_MSR1 MSR1 $dev2\@9600"}
2017.12.26 10:23:36 5: Cmd: >{my $dev2=qx(cat /dev/picom1); chomp $dev2; fhem "define Dev_MSR1 MSR1 $dev2\@9600"}<
2017.12.26 10:23:36 5: Cmd: >define Dev_MSR1 MSR1 /dev/pts/27@9600<
2017.12.26 10:23:36 5: Loading ./FHEM/00_MSR1.pm
2017.12.26 10:23:36 3: Opening Dev_MSR1 device /dev/pts/27
2017.12.26 10:23:36 3: Setting Dev_MSR1 serial parameters to 9600,8,N,1
2017.12.26 10:23:36 3: Dev_MSR1 device opened
2017.12.26 10:23:37 5: End notify loop for global
Titel: Antw:dev per systemaufruf in fhem.cfg
Beitrag von: DeeSPe am 26 Dezember 2017, 11:01:12
Zitat von: Hackstall am 26 Dezember 2017, 10:51:41
jedoch wird zum Beispiel Attr ROOM Keller nicht mehr in FHEM angezeigt bzw angelegt. :( :( :( :(

Das ist auch nicht nötig wenn das Device schon existiert und mit defmod verändert wird, denn dann wurde ja schon mal der Raum zugewiesen.

Gruß
Dan
Titel: Antw:dev per systemaufruf in fhem.cfg
Beitrag von: Hackstall am 27 Dezember 2017, 11:50:56
Hallo vielen Dank für die Antworten. HAT GEKLAPPT.

Gruß ANdreas