Unbekannten Event aus EventMonitor verwenden / ESP3D

Begonnen von Nemo0815, 08 November 2021, 08:16:22

Vorheriges Thema - Nächstes Thema

Nemo0815

Hallo zusammen,

ich habe kürzlich in meinen 3D Drucker ESP3D per ESP8266 eingebaut, um ihn auch aus der Ferne steuern zu können. Das funktioniert soweit auch sehr gut.
Jetzt möchte ich aber das ganze auch noch zu einem gewissen Teil über FHEM machen.

Dafür bietet ESP3D z.b. eine Telnet Schnittstelle, über die sich direkt Befehle senden lassen als auch der komplette aktuelle Traffic den ESP3D selbst verursacht sichtbar wird (zweiteres reicht mir im Moment schon, weil da alle Infos drin stecken die mir in FHEM wichtig sind).

Ich hab jetzt also einfach mal FHEM2FHEM misbraucht und mich damit auf den ESP3D connected. Dann kann ich die Daten die ESP3D schickt auch 1:1 im FHEM Event Montitor sehen, z.B. sowas:

2021-11-08 08:12:54 SD printing byte 959529/5456444

Das lässt jetzt tatsächlich noch mittels Notify abfangen (auf "printing" als Event) und auswerten.
Soweit so gut, nur gibts jetzt auch noch deutlich kryptischere Ausgaben (z.b. die aktuellen Temperaturen) die sich dann nicht mehr als einzelne Events behandeln lassen, weil alles in einer Zeile ohne voranstehende Namen oder ähnliches steht:

2021-11-08 08:12:54 ok T:70.18 / 200.00 B:60.01 / 60.00 @:127 B@:35 W:?

Gibts hierfür aus FHEM heraus eine elegantere Lösung? Oder muss ich mit da mit einem Script ausserhalb von FHEM behelfen?

rudolfkoenig

Wo ist genau das Problem auf diese kryptische Zeile per notify zu reagieren?

Nemo0815

#2
Zitat von: rudolfkoenig am 08 November 2021, 08:56:34
Wo ist genau das Problem auf diese kryptische Zeile per notify zu reagieren?

Oh das geht? Dann hab ich wohl ein grundsätzliches Verständnisproblem, dachte notify braucht sowas im Format Gerätename:Event um darauf reagieren zu können (zumindest suggerierte mir das das Create im Eventlog)

Du meinst also man kann auch auf die "Rohdaten" (sprich die ganze Zeile) triggern?

rudolfkoenig

Das FHEM Framework benoetigt zum Verteilen von Events ein Geraet.
FHEM2FHEM legt temporaer, fuer die Dauer der Eventverteileung, ein Geraet an, wenn keins mit diesem Namen existiert.
Das kann schiefgehen, deswegen die Frage: wo genau hakt es.

Nemo0815

#4
Im ersten Fall:
SD printing byte x/y

legt FHEM2FHEM das Device "printing" an mit dem event "byte x/y" (was ist mit dem "SD"?).

Damit kann man arbeiten. In zweitem Fall geht das nicht, zumindest sehe ich keine Kombination aus generiertem DeviceNamen/Event, z.B. geht nicht:

defmod ESP3DTempNtfy notify ok:(T\:\d+\.\d+\s/\d+\.\d+\sB\:\d+\.\d+\s/\d+\.\d+\s)


Oder wie sehe ich welches Device FHEM2FHEM anlegt?

Nochmal was im EventLog zu sehen ist:

2021-11-08 10:27:25 ok T:21.45 /0.00 B:22.05 /0.00 @:0 B@:0
2021-11-08 10:27:25 X:0.00 Y:0.00 Z:0.00 E:0.00 Count X:0 Y:0 Z:0
2021-11-08 10:27:25 Not SD printing

rudolfkoenig

Alles was du im EventMonitor siehst, sollte auch vom notify verarbeitet werden koennen.
Wenn man unsicher ist, sollte man zum notify erstellen den Knopf da verwenden.

Damit FHEM2FHEM was anlegt, muss die Zeile mindestens 3 Leerzeichen getrennte Woerter enthalten.
Das Erste wird als TYPE genommen, das Zweite als NAME, und der Rest als STATE bzw. EVENT.
Ob ein Modul dieses Typs existiert, wird nicht geprueft, eine Initialisierung findet nicht statt.
Nach dem das Event verarbeitet wurde, wird das Geraet entfernt.
Auf TYPE kann man im notify nur ueber Umwege reagieren,

Bitte nicht beschweren, FHEM2FHEM wird hier missbraucht.

Nemo0815

Zitat von: rudolfkoenig am 08 November 2021, 10:48:52
Alles was du im EventMonitor siehst, sollte auch vom notify verarbeitet werden koennen.
Wenn man unsicher ist, sollte man zum notify erstellen den Knopf da verwenden.

Hm das mit dem Knopf hab ich auch gemacht, hilft aber in diesem Fall nicht weiter (siehe unten), aber wirklich alles, oder ist es beschränkt auf diese Syntax mit den 3 Leerzeichen?

Zitat von: rudolfkoenig am 08 November 2021, 10:48:52Damit FHEM2FHEM was anlegt, muss die Zeile mindestens 3 Leerzeichen getrennte Woerter enthalten.
Das Erste wird als TYPE genommen, das Zweite als NAME, und der Rest als STATE bzw. EVENT.

Das dürfte dann mein Problem sein, der Type fehlt hier im zweiten Fall, weil ansonsten der zweite Parameter - als der Name - nicht konstant wäre (die Temperatur ändert sich ja).

Zitat von: rudolfkoenig am 08 November 2021, 10:48:52Ob ein Modul dieses Typs existiert, wird nicht geprueft, eine Initialisierung findet nicht statt.
Nach dem das Event verarbeitet wurde, wird das Geraet entfernt.
Auf TYPE kann man im notify nur ueber Umwege reagieren,

Bitte nicht beschweren, FHEM2FHEM wird hier missbraucht.

Beschwere mich ja nicht, wollte nur wissen ob das ganze auch eleganter (ohne FHEM2FHEM) gehen würde, bzw. ob man auch auf solche Events die nicht der TYPE NAME EVENT Syntax entsprechen reagieren kann

Nemo0815

Update:
Damit gehts :)

T\:\d+\.\d+:.* {

Dann kann ich zumindest über $NAME $EVENT das ursprüngliche Event wieder  zusammenbauen, Danke!