(W)LAN Steuerung für Epson Beamer - ESCVP21net.pm

Begonnen von hapege, 30 Januar 2022, 20:58:50

Vorheriges Thema - Nächstes Thema

hapege

Update im trunk:
- port 3629 als default ("define <name> ESCVP21net <IP-address>" genügt nun)
- state wird nicht mehr überschrieben
- statusCheck Meldung in loglevel5 geschoben
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

Frank_Huber

schaut sehr gut aus!
Wenn Du jetzt noch ein "PWR toggle" einbaust ist es für mich perfekt. :-)

hapege

@Frank_Huber: Nicht ganz trivial - erst muss der aktuelle Status gelesen werden, dann will Epson eine Pause von 4 s, dann kann der Status gesetzt werden. Vorher auslesen muss sein, da z.B. der User ja den Beamer zwischenzeitlich manuell umgeschaltet haben könnte. Der Beamer pushed das nicht, er will gefragt werden.
Die Wartezeit ist nicht wirklich nutzerfreundlich - aber ich probiere mal ein bisschen rum.

Was ist denn Dein Use Case für toggle, warum nicht einfach den Status schalten den Du haben willst? Wenn der schon "an" ist, macht ein weiteres "an" ja nix kaputt...
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

Frank_Huber

Zitat von: hapege am 03 Februar 2022, 21:30:15
Was ist denn Dein Use Case für toggle, warum nicht einfach den Status schalten den Du haben willst? Wenn der schon "an" ist, macht ein weiteres "an" ja nix kaputt...
Mahlzeit.
Use Case ist ganz einfach eine "Taste" zu haben zum Beamer schalten. ist er an schalte ich ihn damit aus, ist er aus schalte ich ihn an.
ist er im Warm Up oder Cool Down wird der Tastendruck ignoriert.
Der Zustand wird vom Modul ja jetzt schon zyklisch abgefragt. der Toggle könnte diesen einfach heranziehen ohne nochmals abzufragen.

aktuell habe ich dafür einen Dummy als Taster, ein DOIF zum schalten und den Beamer selbst der geschalten wird.
mit Toggle könnte der Dummy und das DOIF weg. Produktiv habe ich noch die alte Variante laufen, dein Modul ist auf dem Test System.

defmod Beamer_OnOff DOIF ([GPIO_IN_dummy5:"^on$"] and [Beamer:PowerState] eq "off") {system "pjlink -p 192.168.12.95 power on &";;;;return undef}\
DOELSEIF ([GPIO_IN_dummy5:"^on$"] and [Beamer:PowerState] eq "on") {system "pjlink -p 192.168.12.95 power off &";;;;return undef}
attr Beamer_OnOff cmdState on|off
attr Beamer_OnOff do always
attr Beamer_OnOff webCmd on:off


defmod Beamer CustomReadings
attr Beamer event-on-change-reading .*
attr Beamer interval 15
attr Beamer readingDefinitions PowerState:qx(pjlink -p 192.168.12.95 power)
attr Beamer stateFormat PowerState


defmod GPIO_IN_dummy5 dummy

hapege

OK,
verstanden, da macht ein toggle Sinn.
Die Statusabfrage vorher ist erforderlich, weil ja zwischenzeitlich eine andere App oder der User per FB den Beamer ein/ausgeschaltet haben könnte, oder der Beamer nach timeout runtergefahren ist, oder der StatusCheck disabled ist. Da der Beamer nicht pushed ist der Status in fhem nicht verlässlich. Mit einem get vorher schon.
OK, ich bin dran, ILLUM und MUTE kann ich schon toggeln ;) 
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

Frank_Huber

Naja, selbst wenn der Status nicht ganz aktuell ist, was würde passieren?
Ein off Kommando im off Zustand oder on wenn schon on ist.
Wäre beides kein Problem. 😉
Aber ich lasse das in deinen Händen. 👍🏻
Danke!

hapege

#21
Naja,
wenn Beamer "off", aber in fehm noch als "on" angezeigt --> taster schaltet "off". User erwartet aber, dass er an geht ... Also nicht das, was Du willst, zweimal drücken halbiert den WAF ;)
Anyway, geht offenbar auch ohne 4s Pause - toggle-Version anbei, magst Du mal testen?
Toggeln kann man MUTE, ILLUM, BTAUDIO, und ... PWR :)
Wenns klappt (bei mir gehts) commite ich die Version.
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

Frank_Huber

Zitat von: hapege am 04 Februar 2022, 22:35:17
Naja,
wenn Beamer "off", aber in fehm noch als "on" angezeigt --> taster schaltet "off". User erwartet aber, dass er an geht ... Also nicht das, was Du willst, zweimal drücken halbiert den WAF ;)
Anyway, geht offenbar auch ohne 4s Pause - toggle-Version anbei, magst Du mal testen?
Nunja, im Regelfall sollte der refresh passiert sein bevor warmup oder cooldown rum sind.
Aber klar, mit direkter Abfrage vor dem Befehl ist es sauberer. 😉

Neue Version eingespielt und getestet, läuft perfekt. Danke!

hapege

#23
Danke fürs feedback :)
Neue Version ist im Trunk, mit toggle und erweiterten Scotty-Readings.

# version history
#    1.01.04  small bug fix, DevIo log messages moved to loglevel 5
#    1.01.05  socket log messages moved to loglevel 5
#                prevent DevIO from overwriting STATE ($hash->{devioNoSTATE} = 1)
#                set port 3629 as default
#    1.01.06  added toggle, added TW7400, extended Scotty capabililties
#    1.01.07  multiple checkStatusCmds, added GetStatus to set list
#                 set PWR to statusOfflineMsg if init fails
#                 force PWR check after CONNECTED from Dev_Io, some clean-up
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

Frank_Huber

#24
komisches Verhalten heute.
Habe mir ein Userreading "status" angelegt um für meine Handy App (NetIO) ein Symbol zu bekommen. lamp_on, lamp_off und pause.
Nachdem das Userreading angelegt war habe ich den Beamer getoggelt.
Bei dem Toogle ging er dann auf PWR offline und nichts ging mehr im Modul. Der Beamer war an und auch über Browser erreichbar.
Beamer Kaltstart half auch nicht.
Dann das Kuriose: Das Beamer Gerät gelöscht. Beim Löschen ist FHEM abgeschmiert. Nach dem Neustart ist erstmal alles wieder OK.
Werde nachher unten nochmal nen Toogle versuchen mit höherem Verbose, aber war schon eigenartig...

List im Fehlerzustand:
defmod Epson_EB2250U ESCVP21net 192.168.12.95 EB2250U
attr Epson_EB2250U DbLogExclude .*
attr Epson_EB2250U event-on-change-reading .*
attr Epson_EB2250U group Beamer
attr Epson_EB2250U room _Kino/Werkstatt
attr Epson_EB2250U stateFormat PWR # Lampenstunden: LAMP
attr Epson_EB2250U statusCheckInterval 15
attr Epson_EB2250U userReadings status:PWR.* {if(ReadingsVal($NAME,"PWR","") eq "Standby (Net on)") {return "lamp_off"}\
elsif (ReadingsVal($NAME,"PWR","") eq "tilted") {return "lamp_on"} \ ## noch anpassen an "Beamer an"
else {return "pause"}}
attr Epson_EB2250U verbose 0


Hier das Verbose 5 Log, das am Ende wiederholt sich dann bis zum FHEM Neustart. nach dem Neustart ist de Status wieder korrekt.
Hab das Modul jetzt erstmal wieder ins Testsystem umgezogen.

2022.02.08 17:42:50.821 5: [Epson_EB2250U]: Set: ESCVP21net_setValue called with Epson_EB2250U|GetStatus|get
2022.02.08 17:42:50.824 5: [Epson_EB2250U]: checkStatus: FD but no NEXT_OPEN, next status timer set
2022.02.08 17:42:50.879 5: [Epson_EB2250U]: Socket opened to 192.168.12.95 on port 3629
2022.02.08 17:42:50.887 5: [Epson_EB2250U]: initializate gave correct answer ESC/VP.net
2022.02.08 17:42:50.888 5: [Epson_EB2250U]: initializate gave answer ESC/VP.net, expected ESC/VP.net
2022.02.08 17:42:50.888 5: [Epson_EB2250U]: setValue: Init sequence gave init_ok
2022.02.08 17:42:50.889 5: [Epson_EB2250U]: collectStatusCmds: collected statusChk cmds: PWR
2022.02.08 17:42:50.896 3: [Epson_EB2250U]: result of PWR is Standby (Net on)
2022.02.08 17:42:50.896 5: [Epson_EB2250U]: resultstring is Epson_EB2250U|PWR|Standby (Net on)
2022.02.08 17:42:50.907 5: [Epson_EB2250U]: setValueDone says: result is: Standby (Net on), resultarray: Epson_EB2250U|PWR|Standby (Net on)
2022.02.08 17:42:50.908 5: [Epson_EB2250U]: setValueDone: resultarray loop: Epson_EB2250U|PWR|Standby (Net on)
2022.02.08 17:42:50.908 5: [Epson_EB2250U]: setValueDone: resultarray loop: PWR set to PWR: Standby (Net on)
2022.02.08 17:42:52.530 5: [Epson_EB2250U]: Set: ESCVP21net_setValue called with Epson_EB2250U|PWR|toggle
2022.02.08 17:42:52.538 5: [Epson_EB2250U]: running notify from Epson_EB2250U for Epson_EB2250U, event is PWR toggle
2022.02.08 17:42:52.579 5: [Epson_EB2250U]: Socket opened to 192.168.12.95 on port 3629
2022.02.08 17:42:52.587 5: [Epson_EB2250U]: initializate gave correct answer ESC/VP.net
2022.02.08 17:42:52.587 5: [Epson_EB2250U]: initializate gave answer ESC/VP.net, expected ESC/VP.net
2022.02.08 17:42:52.587 5: [Epson_EB2250U]: setValue: Init sequence gave init_ok
2022.02.08 17:42:52.587 5: [Epson_EB2250U]: setValue: sending raw data: PWR?
2022.02.08 17:42:52.591 5: [Epson_EB2250U]: setValue: received raw data: PWR=04 :
2022.02.08 17:42:52.591 5: [Epson_EB2250U] setValue: call Set for toggle PWR with on
2022.02.08 17:42:52.593 3: [Epson_EB2250U]: result of PWR is Standby (Net on)
2022.02.08 17:42:52.594 5: [Epson_EB2250U]: setValue: sending raw data: PWR ON
2022.02.08 17:42:52.597 5: [Epson_EB2250U]: setValue: received raw data: :
2022.02.08 17:42:58.985 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/70_ESCVP21net.pm line 1178.
2022.02.08 17:42:58.985 1: PERL WARNING: Use of uninitialized value $result in concatenation (.) or string at ./FHEM/70_ESCVP21net.pm line 1183.
2022.02.08 17:42:58.986 1: PERL WARNING: Use of uninitialized value $result in concatenation (.) or string at ./FHEM/70_ESCVP21net.pm line 1084.
2022.02.08 17:42:58.990 5: [Epson_EB2250U]: setValueDone says: result is: , resultarray: Epson_EB2250U|PWR|
2022.02.08 17:42:58.991 5: [Epson_EB2250U]: setValueDone: resultarray loop: Epson_EB2250U|PWR|
2022.02.08 17:42:58.991 5: [Epson_EB2250U]: setValueDone: resultarray loop: PWR set to PWR:
2022.02.08 17:42:58.992 5: [Epson_EB2250U]: running notify from Epson_EB2250U for Epson_EB2250U, event is PWR:  status: pause
2022.02.08 17:43:05.836 5: [Epson_EB2250U]: Set: ESCVP21net_setValue called with Epson_EB2250U|GetStatus|get
2022.02.08 17:43:05.838 5: [Epson_EB2250U]: checkStatus: FD but no NEXT_OPEN, next status timer set
2022.02.08 17:43:05.871 5: [Epson_EB2250U]: Socket opened to 192.168.12.95 on port 3629
2022.02.08 17:43:05.877 5: [Epson_EB2250U]: initializate gave correct answer ESC/VP.net
2022.02.08 17:43:05.877 5: [Epson_EB2250U]: initializate gave answer ESC/VP.net, expected ESC/VP.net
2022.02.08 17:43:05.877 5: [Epson_EB2250U]: setValue: Init sequence gave init_ok
2022.02.08 17:43:05.878 5: [Epson_EB2250U]: collectStatusCmds: collected statusChk cmds: PWR
2022.02.08 17:43:05.880 5: [Epson_EB2250U]: resultstring is
2022.02.08 17:43:07.708 5: HttpUtils url=http://192.168.12.95:3629/ NonBlocking via http
2022.02.08 17:43:07.708 4: IP: 192.168.12.95 -> 192.168.12.95
2022.02.08 17:43:07.709 5: [Epson_EB2250U]: connectionCheck: FD but no NEXT_OPEN, next connection timer set
2022.02.08 17:43:07.710 5: [Epson_EB2250U]: ReInit: DevIo ReInit done
2022.02.08 17:43:07.710 5: 192.168.12.95:3629 reappeared (Epson_EB2250U)
2022.02.08 17:43:07.711 5: [Epson_EB2250U]: running notify from Epson_EB2250U for Epson_EB2250U, event is CONNECTED
2022.02.08 17:43:07.711 5: [Epson_EB2250U]: Notify: got CONNECTED, check timer
2022.02.08 17:43:07.712 5: [Epson_EB2250U]: Notify: got CONNECTED, connection timer exists, do nothing
2022.02.08 17:43:07.712 5: [Epson_EB2250U]: Notify: got CONNECTED, status timer exists, do nothing
2022.02.08 17:43:07.712 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:43:07.716 5: [Epson_EB2250U]: running notify from Epson_EB2250U for Epson_EB2250U, event is PWR: offline
2022.02.08 17:43:17.713 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:43:17.716 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:43:17.717 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:43:20.842 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:43:20.847 5: [Epson_EB2250U]: checkStatus: FD but no NEXT_OPEN, next status timer set
2022.02.08 17:43:27.719 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:43:27.720 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:43:27.721 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:43:30.849 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|GetStatus|get, hash: HASH(0x67a7710), cmd: GetStatus, result: get
2022.02.08 17:43:30.850 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:43:30.851 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command GetStatus get
2022.02.08 17:43:35.848 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:43:35.850 5: [Epson_EB2250U]: checkStatus: FD but no NEXT_OPEN, next status timer set
2022.02.08 17:43:37.722 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:43:37.723 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:43:37.723 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:43:45.850 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|GetStatus|get, hash: HASH(0x67a7710), cmd: GetStatus, result: get
2022.02.08 17:43:45.851 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:43:45.852 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command GetStatus get
2022.02.08 17:43:47.725 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:43:47.726 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:43:47.727 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:43:50.852 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:43:50.853 5: [Epson_EB2250U]: checkStatus: FD but no NEXT_OPEN, next status timer set
2022.02.08 17:43:57.729 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:43:57.731 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:43:57.732 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:44:00.854 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|GetStatus|get, hash: HASH(0x67a7710), cmd: GetStatus, result: get
2022.02.08 17:44:00.855 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:44:00.855 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command GetStatus get
2022.02.08 17:44:03.415 5: [Epson_EB2250U]: running notify from global for Epson_EB2250U, event is SAVE
2022.02.08 17:44:05.854 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:44:05.855 5: [Epson_EB2250U]: checkStatus: FD but no NEXT_OPEN, next status timer set
2022.02.08 17:44:07.710 5: HttpUtils url=http://192.168.12.95:3629/ NonBlocking via http
2022.02.08 17:44:07.710 4: IP: 192.168.12.95 -> 192.168.12.95
2022.02.08 17:44:07.711 5: [Epson_EB2250U]: connectionCheck: FD but no NEXT_OPEN, next connection timer set
2022.02.08 17:44:07.712 5: [Epson_EB2250U]: ReInit: DevIo ReInit done
2022.02.08 17:44:07.713 5: 192.168.12.95:3629 reappeared (Epson_EB2250U)
2022.02.08 17:44:07.713 5: [Epson_EB2250U]: running notify from Epson_EB2250U for Epson_EB2250U, event is CONNECTED
2022.02.08 17:44:07.713 5: [Epson_EB2250U]: Notify: got CONNECTED, check timer
2022.02.08 17:44:07.713 5: [Epson_EB2250U]: Notify: got CONNECTED, connection timer exists, do nothing
2022.02.08 17:44:07.713 5: [Epson_EB2250U]: Notify: got CONNECTED, status timer exists, do nothing
2022.02.08 17:44:07.714 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:44:15.857 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|GetStatus|get, hash: HASH(0x67a7710), cmd: GetStatus, result: get
2022.02.08 17:44:15.859 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:44:15.860 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command GetStatus get
2022.02.08 17:44:17.743 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:44:17.745 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:44:17.745 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:44:20.884 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:44:20.885 5: [Epson_EB2250U]: checkStatus: FD but no NEXT_OPEN, next status timer set
2022.02.08 17:44:27.747 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:44:27.749 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:44:27.750 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:44:30.886 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|GetStatus|get, hash: HASH(0x67a7710), cmd: GetStatus, result: get
2022.02.08 17:44:30.887 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:44:30.887 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command GetStatus get
2022.02.08 17:44:35.970 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:44:35.970 5: [Epson_EB2250U]: checkStatus: FD but no NEXT_OPEN, next status timer set
2022.02.08 17:44:37.751 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:44:37.752 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:44:37.752 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:44:45.971 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|GetStatus|get, hash: HASH(0x67a7710), cmd: GetStatus, result: get
2022.02.08 17:44:45.972 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:44:45.972 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command GetStatus get
2022.02.08 17:44:47.753 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:44:47.754 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:44:47.754 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:44:50.979 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:44:50.980 5: [Epson_EB2250U]: checkStatus: FD but no NEXT_OPEN, next status timer set
2022.02.08 17:44:57.757 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:44:57.764 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:44:57.765 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:45:00.982 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|GetStatus|get, hash: HASH(0x67a7710), cmd: GetStatus, result: get
2022.02.08 17:45:00.984 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:45:00.985 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command GetStatus get
2022.02.08 17:45:05.985 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:45:05.987 5: [Epson_EB2250U]: checkStatus: FD but no NEXT_OPEN, next status timer set
2022.02.08 17:45:07.712 5: HttpUtils url=http://192.168.12.95:3629/ NonBlocking via http
2022.02.08 17:45:07.712 4: IP: 192.168.12.95 -> 192.168.12.95
2022.02.08 17:45:07.713 5: [Epson_EB2250U]: connectionCheck: FD but no NEXT_OPEN, next connection timer set
2022.02.08 17:45:07.715 5: [Epson_EB2250U]: ReInit: DevIo ReInit done
2022.02.08 17:45:07.715 5: 192.168.12.95:3629 reappeared (Epson_EB2250U)
2022.02.08 17:45:07.715 5: [Epson_EB2250U]: running notify from Epson_EB2250U for Epson_EB2250U, event is CONNECTED
2022.02.08 17:45:07.715 5: [Epson_EB2250U]: Notify: got CONNECTED, check timer
2022.02.08 17:45:07.716 5: [Epson_EB2250U]: Notify: got CONNECTED, connection timer exists, do nothing
2022.02.08 17:45:07.716 5: [Epson_EB2250U]: Notify: got CONNECTED, status timer exists, do nothing
2022.02.08 17:45:07.716 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:45:15.988 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|GetStatus|get, hash: HASH(0x67a7710), cmd: GetStatus, result: get
2022.02.08 17:45:15.989 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:45:15.989 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command GetStatus get
2022.02.08 17:45:17.717 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:45:17.720 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:45:17.721 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:45:20.988 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:45:20.988 5: [Epson_EB2250U]: checkStatus: FD but no NEXT_OPEN, next status timer set
2022.02.08 17:45:27.721 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:45:27.722 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:45:27.722 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:45:30.989 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|GetStatus|get, hash: HASH(0x67a7710), cmd: GetStatus, result: get
2022.02.08 17:45:30.991 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:45:30.992 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command GetStatus get
2022.02.08 17:45:35.991 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:45:35.992 5: [Epson_EB2250U]: checkStatus: FD but no NEXT_OPEN, next status timer set
2022.02.08 17:45:37.723 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:45:37.724 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:45:37.724 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:45:45.993 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|GetStatus|get, hash: HASH(0x67a7710), cmd: GetStatus, result: get
2022.02.08 17:45:45.995 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:45:45.996 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command GetStatus get
2022.02.08 17:45:47.726 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:45:47.728 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:45:47.729 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:45:50.994 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:45:50.995 5: [Epson_EB2250U]: checkStatus: FD but no NEXT_OPEN, next status timer set
2022.02.08 17:45:57.729 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|PWR|get, hash: HASH(0x67a7710), cmd: PWR, result: get
2022.02.08 17:45:57.730 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:45:57.731 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command PWR get
2022.02.08 17:46:00.996 5: [Epson_EB2250U]: rescheduleSet: got arg: Epson_EB2250U|GetStatus|get, hash: HASH(0x67a7710), cmd: GetStatus, result: get
2022.02.08 17:46:00.999 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:46:00.999 5: [Epson_EB2250U]: rescheduleSet: send rescheduled command GetStatus get
2022.02.08 17:46:05.996 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10
2022.02.08 17:46:05.997 5: [Epson_EB2250U]: checkStatus: FD but no NEXT_OPEN, next status timer set
2022.02.08 17:46:07.714 5: HttpUtils url=http://192.168.12.95:3629/ NonBlocking via http
2022.02.08 17:46:07.715 4: IP: 192.168.12.95 -> 192.168.12.95
2022.02.08 17:46:07.715 5: [Epson_EB2250U]: connectionCheck: FD but no NEXT_OPEN, next connection timer set
2022.02.08 17:46:07.717 5: [Epson_EB2250U]: ReInit: DevIo ReInit done
2022.02.08 17:46:07.717 5: 192.168.12.95:3629 reappeared (Epson_EB2250U)
2022.02.08 17:46:07.718 5: [Epson_EB2250U]: running notify from Epson_EB2250U for Epson_EB2250U, event is CONNECTED
2022.02.08 17:46:07.718 5: [Epson_EB2250U]: Notify: got CONNECTED, check timer
2022.02.08 17:46:07.718 5: [Epson_EB2250U]: Notify: got CONNECTED, connection timer exists, do nothing
2022.02.08 17:46:07.718 5: [Epson_EB2250U]: Notify: got CONNECTED, status timer exists, do nothing
2022.02.08 17:46:07.718 3: [Epson_EB2250U] Set: Blocking Call running, reschedule for 10

hapege

#25
Hi,
tut mir leid dass Du Probleme mit dem Modul hast!

Welche Version hast Du verwendest, die zu diesem Zeitpunkt aktuelle Version aus dem Trunk?
Was in Deinen logs merkwürdig ist: Dein fhem scheint 6s Pause zu machen:
Zitat
2022.02.08 17:42:52.597 5: [Epson_EB2250U]: setValue: received raw data: :
2022.02.08 17:42:58.985 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/70_ESCVP21net.pm line 1178.
Den "uninitialized value" habe ich in der beigefügten aktualisierten Version abgefangen. Dadurch sollte auch der "Hänger" abgefangen sein - die blockingfn PID wurde wohl nicht gelöscht, deshalb ging kein weiterer Befehl mehr durch.
Probleme beim Löschen konnte ich nicht nachvollziehen, auch nach einigen Dutzend Löschungen in meinem Test- und Produktivsystem. Das Modul tut hier nur das was andere auch tun (basierend auf copy & paste ;) ), also Timer löschen, Dev_Io schließen, die blockingFn löschen. Hm...
Beim PWR on/off toggle braucht der Epson wohl wirklich eine Pause bzw reagiert nicht zuverlässig - der Status unmittelbar nach dem Einschalten ist deshalb u.U. nicht korrekt auslesbar. Ist aber nur ein Schönheitsfehler, funktioniert korrekt.
Bei mir läufts in Test und Produktiv stabil, mit toggle. Dein user reading sollte keinen Einfluss haben...
Probiere doch mal die Version anbei, Änderungen sind nur die genannten checks.

Update: Noch mal ein paar Fehlerfall-Checks eingebaut, in verschiedenen Konfigurationen getestet, im Trunk eingechecked.
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

laserrichi

jetzt habe ich meine wlan adapter mit espeasy fertig, und hab jetzt die Serielle im Lan. Der Beamer reagiert auch auf die Befehle.
Nur dein Modul macht ja diese vp  inizialisierung. Wie kriege ich das raus das der nur die Befehle einfach schickt ?
Mit Modbus modul mach ich das ja auch so.

Ich verstehe nicht was zum geier dieses vp.net ist, sind das Beamer bei denen ein wlan schon eingebaut ist? Denn Seriell haben die doch alle.

RaspberryPi 4 Bullseye,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+,ulanzi tc001 mit awtrix light

hapege

Hi,

also ganz grundlegend:
- VP.net ist das Protokoll, das der Beamer über (W)LAN "spricht" (die Experten mögen mir verzeihen für das vereinfachte Bild ;) ). Also sowas wie "http" oder "ftp"
- VP21 ist die Sammlung von Befehlen, die der Beamer "versteht"
- diese Befehle kannst Du seriell schicken (über die RS232 Buchse) - das macht wohl Dein espeasy
- oder per (W)LAN - dazu muss die Verbindung erst initialisiert werden!
- Dein espeasy "spricht" dagegen nun mal http, nicht VP.net! (Und ich habe keine Ahnung ob er irgendetwas "antwortet"...)
- Richtung Beamer "spricht" Dein espeasy dann (vermutlich) VP21 - deshalb kann der den Beamer steuern.
- Das Modul will also mit dem Beamer sprechen, aber der espeasy klemmt dazwischen, und da er nicht einfach transparent durchleitet kann das nicht funktionieren.
- das liegt nicht am Modul, sondern daran dass Du den espeasy zwischenschaltests ;) 
Fazit: "einfach die Befehle schicken" kann nicht klappen, weil ja gar nicht klar ist welche Befehle der espeasy überhaupt empfangen will/kann. Das Modul schickt direkt "Beamer-Befehle".

Dein setup ist nun mal ganz anders als wenn man mit dem Beamer direkt spricht.
Du müsstest den espeasy so programmieren, dass er VP.net versteht, und die Befehle durchleitet - oder Du schickst http an den espeasy. Obs da Rückmeldungen gibt weiß ich nicht...

Das Modul ist gebaut für Beamer, die direkt (W)LAN können.

Klarer?

Hermann


Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

laserrichi

espeasy leitet das einfach durch. Mit USR-VCOM z.b. kannst du das direkt wie eine serielle dann im windows z.b. einbinden. Putty drauf und schon sprichst du einfach so.
Das ist einfach serial auf ip und dann gehts wieder auf seriell.
Es gibt auch für Linux diese möglichkeit.
Und dann ist das einfach genauso wie wenn du die Serielle im Betriebsystem als COM bzw. TTY hast.

Und mit modbusmodul gehts wohl mit dev.io einfach.
Da muss nichts initialisiert werden.
RaspberryPi 4 Bullseye,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+,ulanzi tc001 mit awtrix light

hapege

Also,
das LAN Modul im Beamer kommuniziert über einen dedizierten Socket und braucht den init string nachdem der socket offen ist. Genau das macht das modul: socket öfffnen, init schicken, acknowledge auswerten, Befehl schicken, Antwort auswerten, socket schließen. Genauso wie Epson das spezifiziert. modbus braucht es dafür nicht.
Das Modul baut keine ssh Verbindung auf (also kein "putty"), das läuft auf einem anderen port.
Aber wenn Du das als tty einbindest, dann kannst Du doch das serielle Modul nutzen?
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.