dev per systemaufruf in fhem.cfg

Begonnen von Hackstall, 25 Dezember 2017, 11:59:51

Vorheriges Thema - Nächstes Thema

Hackstall

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

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Hackstall

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

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DeeSPe

#4
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.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Hackstall

Halöo vielen Dank. Ja Du hast Recht es wir der komplette Pfad geliefert.
Och werde es heute ausprobieren

Hackstall

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

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Hackstall

Hallo vielen Dank für die Antworten. HAT GEKLAPPT.

Gruß ANdreas