Hallo zusammen,
mir fehlen ein paar Kenntnisse in Perl und FHEN um ein Reading zu erstellen:
Dieser Befehl auf der Eingabebox von FHEM
myTV shell "dumpsys power | grep 'Display Power'"
liefert mir
Display Power: state=ON
auf der FHEM Console.
Wie bekomme ich das ON in ein Reading.
DANKE
Da Deine Zeile kompliziert aussieht, mach ich mal kompliziert weiter :)
Als Versuch "Dreizeiler" in der FHEM Kommandozeile (ungetestet):
{my $string=fhem("myTV shell \"dumpsys power | grep 'Display Power'\"");;my $DSP=(split '=', $string)[1];;fhem("setreading meinDevice meinReading $DSP")}
Da ist dann viel Potential zum vereinfachen ;)
Zitat von: Otto123 am 12 Oktober 2023, 17:11:28Da ist dann viel Potential zum vereinfachen
bestimmt... aber:
ZitatDieser Befehl auf der Eingabebox von FHEM
ich verstehe schon den Befehl "myTV ..." nicht.
Zitat von: betateilchen am 12 Oktober 2023, 17:48:50ich verstehe schon den Befehl "myTV ..." nicht.
ich auch nicht, aber wenn es so sein soll :))
Zitat von: Otto123 am 12 Oktober 2023, 19:54:30Zitat von: betateilchen am 12 Oktober 2023, 17:48:50ich verstehe schon den Befehl "myTV ..." nicht.
ich auch nicht, aber wenn es so sein soll :))
Sorry da ist ein
set beim kopieren verloren gegangen
Es sollte
set myTV shell "dumpsys power | grep 'Display Power'"
heißen
Und vielen Dank der Code funktioniert
Ich habe noch eine Frage, auch wenn der Code funktioniert. Er schreibt mir leider den Log voll.
Ich habe leider keine Doku gefunden die mir das erklärt hätte.
Der Sinn des Ganzen ist mir aus dem Magenta Stick einen Power Status zu liefern, damit ich den Stick definiert ein und ausschalten kann. Einen direkten Befehl dazu habe ich leider nicht gefunden. Lediglich ein Toggle. Mit diesem Status würde ich mir dann noch ein DOIF bauen mit dem ich den Stick definiert ein und ausschalten kann.
Eingebaut habe ich das ganze in ein DOIF mit folgendem List
CFGFN
DEF ([+00:00:10]) {my $string=fhem("set WOZI.MAGENTA.CONTROL shell \"dumpsys power | grep 'Display Power'\"");;my $DSP=(split '=', $string);;fhem("setreading WOZI.MAGENTA.CONTROL power $DSP")}
FUUID 6529ae18-f33f-9e84-3e6b-2a8fc869e78c66a5
MODEL FHEM
NAME WOZI.MAGENTA.CONTROL.doif
NOTIFYDEV global
NR 141
NTFY_ORDER 50-WOZI.MAGENTA.doif
STATE cmd_1
TYPE DOIF
VERSION 27740 2023-07-10 09:31:11
eventCount 402
READINGS:
2023-10-13 23:57:53 cmd 1
2023-10-13 23:57:53 cmd_event timer_1
2023-10-13 23:57:53 cmd_nr 1
2023-10-13 23:57:43 mode enabled
2023-10-13 23:57:53 state cmd_1
2023-10-13 23:57:53 timer_01_c01 13.10.2023 23:58:03
Regex:
accu:
bar:
barAvg:
collect:
attr:
cmdState:
waitdel:
condition:
0 ::DOIF_time_once($hash,0,$wday)
days:
do:
0:
0 {my $string=fhem("set WOZI.MAGENTA.CONTROL shell \"dumpsys power | grep 'Display Power'\"");;my $DSP=(split '=', $string);;fhem("setreading WOZI.MAGENTA.CONTROL power $DSP")}
1:
helper:
NOTIFYDEV global
event timer_1
globalinit 1
last_timer 1
sleeptimer -1
timerdev
timerevent timer_1
triggerDev
DOIF_eventa:
cmd_nr: 1
cmd: 1
cmd_event: timer_1
cmd_1
DOIF_eventas:
cmd_nr: 1
cmd: 1
cmd_event: timer_1
state: cmd_1
timerevents:
timer_1
timereventsState:
timer_1
triggerEvents:
timer_1
triggerEventsState:
timer_1
hmccu:
interval:
intervalfunc:
localtime:
0 1697234283
realtime:
0 23:58:03
time:
0 +00:00:10
timeCond:
0 0
timer:
0 0
timers:
0 0
triggertime:
1697234283:
localtime 1697234283
hash:
uiState:
uiTable:
Attributes:
do always
room -Wohnzimmer,Multimedia
verbose 0
Das Log sieht auszugsweise so aus
2023.10.13 23:55:03.158 3: set WOZI.MAGENTA.CONTROL shell "dumpsys power | grep 'Display Power'" : Display Power: state=ON
2023.10.13 23:55:13.172 3: set WOZI.MAGENTA.CONTROL shell "dumpsys power | grep 'Display Power'" : Display Power: state=ON
2023.10.13 23:55:23.227 3: set WOZI.MAGENTA.CONTROL shell "dumpsys power | grep 'Display Power'" : Display Power: state=ON
Danke
Zitat von: pcjogi am 14 Oktober 2023, 00:02:28Ich habe leider keine Doku gefunden die mir das erklärt hätte.
set Befehle werden mit verbose 3 geloggt. verbose 3 ist Standard.
Du kannst als eine Lösung dieses Device auf verbose 2 stellen. Dein ursprüngliches Device hieß myTV, deswegen als Beispiel.
attr myTV verbose 2
Eventuell gibt es aber eine andere Lösung als den shell Befehl so alle 10 sec abzusetzen.
Kannst Du mal ein list von WOZI.MAGENTA.CONTROL zeigen?
Zitat von: Otto123 am 14 Oktober 2023, 00:34:00set Befehle werden mit verbose 3 geloggt. verbose 3 ist Standard.
Du kannst als eine Lösung dieses Device auf verbose 2 stellen. Dein ursprüngliches Device hieß myTV,
Eventuell kommen die Logeinträge aber auch aus dem Aufruf von fhem(), wenn man keinen Parameter für quiet mitgibt.
In diesem Fall würde dann
fhem("myTV shell \"dumpsys power | grep 'Display Power'\"",1)
Abhilfe schaffen.
Zitat von: Otto123 am 14 Oktober 2023, 00:34:00Zitat von: pcjogi am 14 Oktober 2023, 00:02:28Ich habe leider keine Doku gefunden die mir das erklärt hätte.
set Befehle werden mit verbose 3 geloggt. verbose 3 ist Standard.
Du kannst als eine Lösung dieses Device auf verbose 2 stellen. Dein ursprüngliches Device hieß myTV, deswegen als Beispiel.
attr myTV verbose 2
Eventuell gibt es aber eine andere Lösung als den shell Befehl so alle 10 sec abzusetzen.
Kannst Du mal ein list von WOZI.MAGENTA.CONTROL zeigen?
Hier das LIST von WOZI.MAGENTA.CONTROL. Das ist ein Magenta Stick den ich mit AndroidDB steuere. Eigentlich möchte ich ihn nur definiert ein und ausschalten. Der aktuelle Status interessiert eigentlich nicht.
Internals:
ADBDevice 192.168.5.84:5555
DEF 192.168.5.84
FUUID 6529ab85-f33f-9e84-fdab-6398f6ff76eab103
FVERSION 89_AndroidDB.pm:v0.9.0-s25897/2022-03-30
IODev myADBServer
NAME WOZI.MAGENTA.CONTROL
NR 109
STATE STATE (ON
)
TYPE AndroidDB
eventCount 444
READINGS:
2023-10-14 09:11:42 power ON
2023-10-14 16:25:26 state connected
adb:
macro:
preset:
AndroidTV:
APPS KEYCODE_ALL_APPS
BACK KEYCODE_BACK
BLUE KEYCODE_PROG_BLUE
DOWN KEYCODE_DPAD_DOWN
EPG KEYCODE_GUIDE
GREEN KEYCODE_PROG_GREEN
HOME KEYCODE_HOME
INFO KEYCODE_INFO
LEFT KEYCODE_DPAD_LEFT
MUTE KEYCODE_VOLUME_MUTE
OK KEYCODE_DPAD_CENTER
PLAYPAUSE KEYCODE_MEDIA_PLAY_PAUSE
POWER KEYCODE_POWER
PROG+ KEYCODE_CHANNEL_UP
PROG- KEYCODE_CHANNEL_DOWN
RECORD KEYCODE_MEDIA_RECORD
RED KEYCODE_PROG_RED
RIGHT KEYCODE_DPAD_RIGHT
SEARCH KEYCODE_SEARCH
UP KEYCODE_DPAD_UP
VOL+ KEYCODE_VOLUME_UP
VOL- KEYCODE_VOLUME_DOWN
YELLOW KEYCODE_PROG_YELLOW
MagentaOne:
APPS KEYCODE_ALL_APPS
ASSISTANT KEYCODE_ASSIST
BACK KEYCODE_BACK
DOWN KEYCODE_DPAD_DOWN
EPG KEYCODE_TV_INPUT_HDMI_2
HOME KEYCODE_HOME
INFO KEYCODE_INFO
LEFT KEYCODE_DPAD_LEFT
MEGATHEK KEYCODE_TV_INPUT_HDMI_3
MUTE KEYCODE_VOLUME_MUTE
OK KEYCODE_DPAD_CENTER
PLAYPAUSE KEYCODE_MEDIA_PLAY_PAUSE
POWER KEYCODE_POWER
PROG+ KEYCODE_CHANNEL_UP
PROG- KEYCODE_CHANNEL_DOWN
RECORD KEYCODE_MEDIA_RECORD
RIGHT KEYCODE_DPAD_RIGHT
SEARCH KEYCODE_TV_INPUT_HDMI_1
STREAMINFO --longpress,KEYCODE_INFO
TV KEYCODE_TV_INPUT_HDMI_4
UP KEYCODE_DPAD_UP
VOL+ KEYCODE_VOLUME_UP
VOL- KEYCODE_VOLUME_DOWN
MagentaTVStick:
APPS KEYCODE_ALL_APPS
ASSISTANT KEYCODE_ASSIST
BACK KEYCODE_BACK
DOWN KEYCODE_DPAD_DOWN
EPG KEYCODE_TV_INPUT_HDMI_2
HOME KEYCODE_HOME
INFO KEYCODE_INFO
LEFT KEYCODE_DPAD_LEFT
MEGATHEK KEYCODE_TV_INPUT_HDMI_3
MUTE KEYCODE_VOLUME_MUTE
OK KEYCODE_DPAD_CENTER
PLAYPAUSE KEYCODE_MEDIA_PLAY_PAUSE
POWER KEYCODE_POWER
PROG+ KEYCODE_CHANNEL_UP
PROG- KEYCODE_CHANNEL_DOWN
RECORD KEYCODE_MEDIA_RECORD
RIGHT KEYCODE_DPAD_RIGHT
SEARCH KEYCODE_TV_INPUT_HDMI_1
STREAMINFO --longpress,KEYCODE_INFO
TV KEYCODE_TV_INPUT_HDMI_4
UP KEYCODE_DPAD_UP
VOL+ KEYCODE_VOLUME_UP
VOL- KEYCODE_VOLUME_DOWN
Attributes:
group WOZI.MAGENTA.CONTROL
preset MagentaTVStick
room Multimedia
stateFormat STATE (power)
verbose 0
webCmd remoteControl
Und noch das aktuelle WOZI.MAGENTA.CONTROL.doif
define WOZI.MAGENTA.CONTROL.doif DOIF ([+00:00:10]) {my $string=fhem("set WOZI.MAGENTA.CONTROL shell \"dumpsys power | grep 'Display Power'\"",1);;;;my $DSP=(split '=', $string)[1];;;;fhem("setreading WOZI.MAGENTA.CONTROL power $DSP");;;;fhem("setreading WOZI.MAGENTA.CONTROL.doif power $DSP")}
attr WOZI.MAGENTA.CONTROL.doif do always
attr WOZI.MAGENTA.CONTROL.doif room -Wohnzimmer,Multimedia
attr WOZI.MAGENTA.CONTROL.doif verbose 0
# DEF ([+00:00:10]) {my $string=fhem("set WOZI.MAGENTA.CONTROL shell \"dumpsys power | grep 'Display Power'\"",1);;my $DSP=(split '=', $string)[1];;fhem("setreading WOZI.MAGENTA.CONTROL power $DSP");;fhem("setreading WOZI.MAGENTA.CONTROL.doif power $DSP")}
# FUUID 6529ae18-f33f-9e84-3e6b-2a8fc869e78c66a5
# FVERSION 98_DOIF.pm:0.277400/2023-07-10
# MODEL FHEM
# NAME WOZI.MAGENTA.CONTROL.doif
# NOTIFYDEV global
# NR 110
# NTFY_ORDER 50-WOZI.MAGENTA.CONTROL.doif
# STATE cmd_1
# TYPE DOIF
# VERSION 27740 2023-07-10 09:31:11
# eventCount 118
# READINGS:
# 2023-10-14 16:35:35 cmd 1
# 2023-10-14 16:35:35 cmd_event timer_1
# 2023-10-14 16:35:35 cmd_nr 1
# 2023-10-14 16:30:15 mode enabled
# 2023-10-14 16:35:35 power ON
#
# 2023-10-14 16:35:35 state cmd_1
# 2023-10-14 16:35:35 timer_01_c01 14.10.2023 16:35:45
# Regex:
# accu:
# bar:
# barAvg:
# collect:
# attr:
# cmdState:
# waitdel:
# condition:
# 0 ::DOIF_time_once($hash,0,$wday)
# days:
# do:
# 0:
# 0 {my $string=fhem("set WOZI.MAGENTA.CONTROL shell \"dumpsys power | grep 'Display Power'\"",1);;my $DSP=(split '=', $string)[1];;fhem("setreading WOZI.MAGENTA.CONTROL power $DSP");;fhem("setreading WOZI.MAGENTA.CONTROL.doif power $DSP")}
# 1:
# helper:
# NOTIFYDEV global
# event timer_1
# globalinit 1
# last_timer 1
# sleeptimer -1
# timerdev
# timerevent timer_1
# triggerDev
# DOIF_eventa:
# cmd_nr: 1
# cmd: 1
# cmd_event: timer_1
# cmd_1
# DOIF_eventas:
# cmd_nr: 1
# cmd: 1
# cmd_event: timer_1
# state: cmd_1
# timerevents:
# timer_1
# timereventsState:
# timer_1
# triggerEvents:
# timer_1
# triggerEventsState:
# timer_1
# hmccu:
# interval:
# intervalfunc:
# localtime:
# 0 1697294145
# realtime:
# 0 16:35:45
# time:
# 0 +00:00:10
# timeCond:
# 0 0
# timer:
# 0 0
# timers:
# 0 0
# triggertime:
# 1697294145:
# localtime 1697294145
# hash:
# uiState:
# uiTable:
#
setstate WOZI.MAGENTA.CONTROL.doif cmd_1
setstate WOZI.MAGENTA.CONTROL.doif 2023-10-14 16:35:35 cmd 1
setstate WOZI.MAGENTA.CONTROL.doif 2023-10-14 16:35:35 cmd_event timer_1
setstate WOZI.MAGENTA.CONTROL.doif 2023-10-14 16:35:35 cmd_nr 1
setstate WOZI.MAGENTA.CONTROL.doif 2023-10-14 16:30:15 mode enabled
setstate WOZI.MAGENTA.CONTROL.doif 2023-10-14 16:35:35 power ON\
setstate WOZI.MAGENTA.CONTROL.doif 2023-10-14 16:35:35 state cmd_1
setstate WOZI.MAGENTA.CONTROL.doif 2023-10-14 16:35:35 timer_01_c01 14.10.2023 16:35:45
Zitat von: pcjogi am 14 Oktober 2023, 16:37:42Eigentlich möchte ich ihn nur definiert ein und ausschalten.
richtig ausschalten geht allgemein so, das adb muss Du bei Dir weglassen. Aber danach ist das Gerät weg. Einschalten geht dann per adb nicht mehr.
adb shell reboot -p
Sowas geht mit schlafen und aufwachen:
Zitatsleep:(adb shell) input keyevent KEYCODE_SLEEP
wakeup:(adb shell) input keyevent KEYCODE_WAKEUP
toggle:(adb shell) input keyevent KEYCODE_POWER
Ich habe den Magenta Stick nicht, habe das mit einem Smartphone probiert. Bei laufender Kamera kann ich ihn damit dunkel und wieder hell machen :)
VIELEN DANK, funktioniert!
Und ich probiere Stunden mit ADB rum. Wieder was gelernt
Danke