Output in ein Reading schreiben / Magenta Stick "POWER OFF" [gelöst]

Begonnen von pcjogi, 12 Oktober 2023, 16:21:56

Vorheriges Thema - Nächstes Thema

pcjogi

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
Zentral-Fhem , Mehrere Sub-Fhem (433Mhz und 833Mhz; Alexa-Steuerung; Heizungssteuerung; Sicherheitsfunktionen; Energiesteuerung); IoBroker zur Darstellung (alles als Container auf Proxmox), untereinander verbunden über einen MQTT Broker, insgesamt über 200 Sensoren/Aktoren.

Otto123

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 ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

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

Otto123

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  :))
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

pcjogi

#4
Zitat von: Otto123 am 12 Oktober 2023, 19:54:30
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  :))


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

Zentral-Fhem , Mehrere Sub-Fhem (433Mhz und 833Mhz; Alexa-Steuerung; Heizungssteuerung; Sicherheitsfunktionen; Energiesteuerung); IoBroker zur Darstellung (alles als Container auf Proxmox), untereinander verbunden über einen MQTT Broker, insgesamt über 200 Sensoren/Aktoren.

pcjogi

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
Zentral-Fhem , Mehrere Sub-Fhem (433Mhz und 833Mhz; Alexa-Steuerung; Heizungssteuerung; Sicherheitsfunktionen; Energiesteuerung); IoBroker zur Darstellung (alles als Container auf Proxmox), untereinander verbunden über einen MQTT Broker, insgesamt über 200 Sensoren/Aktoren.

Otto123

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 2Eventuell 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?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

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

pcjogi

Zitat von: Otto123 am 14 Oktober 2023, 00:34:00
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 2Eventuell 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

Zentral-Fhem , Mehrere Sub-Fhem (433Mhz und 833Mhz; Alexa-Steuerung; Heizungssteuerung; Sicherheitsfunktionen; Energiesteuerung); IoBroker zur Darstellung (alles als Container auf Proxmox), untereinander verbunden über einen MQTT Broker, insgesamt über 200 Sensoren/Aktoren.

Otto123

#9
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 -pSowas 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 :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

pcjogi

VIELEN DANK, funktioniert!

Und ich probiere Stunden mit ADB rum. Wieder was gelernt

Danke
Zentral-Fhem , Mehrere Sub-Fhem (433Mhz und 833Mhz; Alexa-Steuerung; Heizungssteuerung; Sicherheitsfunktionen; Energiesteuerung); IoBroker zur Darstellung (alles als Container auf Proxmox), untereinander verbunden über einen MQTT Broker, insgesamt über 200 Sensoren/Aktoren.