[gelöst] Radio Kanäle toggeln

Begonnen von Ronald, 27 Februar 2017, 21:50:13

Vorheriges Thema - Nächstes Thema

Ronald

Hallo,

ich versuche mit notify kanäle durchzutoggeln, klappt aber noch nicht.
zu Fuß kann ich mit
set Onkyo internet-radio-preset 1 den Kanal 1 anwählen.
Ziel ist die 6 Kanäle 1 - 6 per notify auf Taste durchzutoggeln.
So funktioniert es leider nicht:
define number dummy
attr number setList state: 1, 2, 3, 4, 5, 6
define Button8_Onkyo_stage notify (Remote8_._Btn_08:Short.*) { fhem("set Onkyo internet-radio-preset.number;;set number (number)+1")}

Wie kann ich den Text Onkyo internet-radio-preset mit einer nummer 1 - 6 zusammensetzen?
Wie kann ich die Variable number hochzählen und nach 6 bei hochzählen wieder auf 1 setzen?
VG, Ronald

MadMax-FHEM

#1
Wozu den dummy?

Der notify triggert wie du willst!?

Rufe mit dem notify eine sub auf:


define myNotify notify RegEx {SetzeLautstaerke()}


und dort einfach:


sub SetzeLautstaerke()
{
my $NextLs=ReadingsNum("Onkyo", "internet-radio-preset", 0);
$NextLs += 1;

if($NextLs > 6)
{
$NextLs =0;
}
{fhem ("set Onkyo internet-radio-preset $NextLs")}
}


https://wiki.fhem.de/wiki/99_myUtils_anlegen

Sicher auch ohne sub direkt im notify möglich...
...aber so kann man leicht Logausgaben etc. machen und weitere Abhängigkeiten/Abfragen etc. programmieren ohne, dass es schnell unübersichtlich wird (meine Meinung)...

Namen etc. nur Beispiele und die passende Regex für den notify musst du halt übernehmen/passend definieren...

Ungetestet und mit Handytastatur zusammengeklimpert...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Ronald

Hallo Joachim,

danke für die schnelle Antwort.
Leider bin ich in punkto FHEm noch nicht so sicher.

Wenn ich deinen Code in der fhem.cfg einsetze
define Kanal notify RegEx {SetzeLautstaerke()}
sub SetzeLautstaerke() {my $NextLs=ReadingsNum("Onkyo", "internet-radio-preset", 0);$NextLs += 1;if($NextLs > 6) {$NextLs =0;}{fhem ("set Onkyo internet-radio-preset $NextLs")}}

bekomme ich nach shutdown restart folgendes Ergebnis:

  • Messages collected while initializing FHEM:
    configfile: Unknown command sub, try help.
    Unknown command $NextLs, try help.
    Unknown command if($NextLs, try help.
    Unknown command }{fhem, try help.
Muss ich die Sub definieren?
Im logfile sieht das so aus:

  • 2017.02.27 22:52:26 1: configfile: Unknown command sub, try help.
    Unknown command $NextLs, try help.
    Unknown command if($NextLs, try help.
    Unknown command }{fhem, try help.

Gruß, Ronald

kumue

wie MadMax-FHEM schon schrieb....
Das notify ruft eine Routine SetzeLautstaerke auf, welche in eine Datei ausgelagert wurde... und zwar z.B. in die 99_myUtils.pm
Dort kommt der Code von SetzeLautstaerke rein.

Schau bitte ins Wiki zu 99_myUtils.pm
Den Link hat Dir MadMax-FHEM schon gepostet..

MadMax-FHEM

#4
Den Link hast du dir mal angeschaut??

Kann nicht sein!

EDIT: Ah, da ist mir schnell jemand zur Seite gesprungen ;)

Warum hauen viele einfach unbesehen/ungelesen/ungeprüft alles einfach in die Config (und per Hand editieren sollte man GAR NICHT da es NICHT nötig ist und wenn dann erst, wenn man GANZ GENAU WEIß WAS MAN TUT)...
...oder in das WebCmd-Fenster?? ;)

Und mal in der Commandref bzgl. notify kucken kann man auch als noch nicht so sicherer fhem-Anwender mal tun...
...und nachdem du hier ja bereits ein notify präsentiert hast bin ich davon ausgegangen, dass du das bereits entsprechend passend gestaltet hast...

EDIT2: und also ungefähr weißt wie notify so funktioniert...

Also das notify einfach in die WebCmd eingeben, dazu muss das RegEx halt zu deinem Trigger/Event passen.
Wenn das was du bislang geliefert hast passt dann einfach so:

define Button8_Onkyo_stage notify (Remote8_._Btn_08:Short.*) {SetzeLautstaerke()}

wobei mich die Klammern um die RegEx beim notify stören und ich glaube, dass die nicht hingehören (mag aber auch so funktionieren)...
...ich denke also eher so:

define Button8_Onkyo_stage notify Remote8_._Btn_08:Short.* {SetzeLautstaerke()}

Dann Enter und dann das rote Fragezeichen links oben klicken: save config...

Aber das passende RegEx musst du schon selber bauen, ich weiß ja nicht auf was getriggert werden soll...

Aber es ist nicht so schwer:

EventMonitor öffnen, den Filter grob auf das einstellen was man sehen will und dann schauen was kommt, wenn man das Ereignis (Knopf drücken??) ausführt.
Und dann entweder hier posten oder halt die RegEx "basteln"...

In der Sub (da dann dem Link folgen, dort ist erläutert was das alles ist und soll) evtl. zu Beginn eine Logausgabe, dann weißt du auch, dass der notify triggert und die sub aufruft...


sub SetzeLautstaerke()
{
my $NextLs=ReadingsNum("Onkyo", "internet-radio-preset", 0);
$NextLs += 1;

Log(1,"SetzeLautstaerke   nextLS: $NextLs");

if($NextLs > 6)
{
$NextLs =1;
}

{fhem ("set Onkyo internet-radio-preset $NextLs")}
}


EDIT3: $NextLs=0 geändert auf $NextLs = 1 da du ja von 1-6 (und nicht 0-6) durchtoggeln willst...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Ronald

Hallo Joachim,

danke für die ausführliche Info.
Lesenden Menschen kann geholfen werden, in dem Link ist das mit 99_myUtils.pm ja prima erklärt. :-[
Habe Deinen Code eingetragen, lediglich SetzeLautstärke durch SetzeStage ersetzt.
In meiner 99_myUtils.pm steht jetzt:

sub SetzeStage()
{
my $NextLs=ReadingsNum("Onkyo", "internet-radio-preset", 0);
$NextLs += 1;

Log(1,"SetzeStage   nextLS: $NextLs");

if($NextLs > 6)
{
$NextLs =1;
}

{fhem ("set Onkyo internet-radio-preset $NextLs")}
}


Als Webcmd habe ich eingegeben:
define Button8_Onkyo_stage notify Remote8_._Btn_08:Short.* {SetzeStage()}
Wenn ich Btn_8 auslöse sehe ich im Logfile immer zwei Zeilen:

  • 2017.02.28 23:46:39 1: SetzeStage   nextLS: 1
    2017.02.28 23:46:39 3: ONKYO_AVR set Onkyo internet-radio-preset 1
    2017.02.28 23:47:01 1: SetzeStage   nextLS: 1
    2017.02.28 23:47:01 3: ONKYO_AVR set Onkyo internet-radio-preset 1
Hier noch die Lists aus dem Eventmonitor, 2 x Btn_08 betätigt:

  • 2017-02-28 23:58:40 CUL_HM Remote8_2 CMDs_done
    2017-02-28 23:58:40 CUL_HM Remote8_2 Remote8_2_Btn_08 Short
    2017-02-28 23:58:40 CUL_HM Remote8_2_Btn_08 Short (to HMUART)
    2017-02-28 23:58:40 CUL_HM Remote8_2_Btn_08 trigDst_19A5F7: noConfig
    2017-02-28 23:58:40 CUL_HM Remote8_2_Btn_08 trigger: Short_57
    2017-02-28 23:58:40 CUL_HM Remote8_2_Btn_08 trigger_cnt: 57
    2017-02-28 23:58:41 structure Wohnzimmer undefined
    2017-02-28 23:58:41 ONKYO_AVR Onkyo screenLayerInfo:
    2017-02-28 23:58:41 ONKYO_AVR Onkyo screenLayerInfo: 2
    2017-02-28 23:58:41 ONKYO_AVR Onkyo screenListPos:
    2017-02-28 23:58:41 ONKYO_AVR Onkyo screenListPos: 0000
    2017-02-28 23:58:41 structure Wohnzimmer undefined
    2017-02-28 23:58:41 ONKYO_AVR Onkyo playStatus: stopped
    2017-02-28 23:58:41 ONKYO_AVR Onkyo stateAV: on
    2017-02-28 23:58:41 ONKYO_AVR Onkyo currentTrackPosition: --:--
    2017-02-28 23:58:42 structure Wohnzimmer undefined
    2017-02-28 23:58:42 ONKYO_AVR Onkyo currentArtist: ---
    2017-02-28 23:58:42 structure Wohnzimmer undefined
    2017-02-28 23:58:42 ONKYO_AVR Onkyo currentAlbum: ---
    2017-02-28 23:58:42 structure Wohnzimmer undefined
    2017-02-28 23:58:42 ONKYO_AVR Onkyo currentAlbum:
    2017-02-28 23:58:42 ONKYO_AVR Onkyo currentArtist:
    2017-02-28 23:58:46 CUL_HM Remote8_2 battery: ok
    2017-02-28 23:58:46 CUL_HM Remote8_2 CMDs_done
    2017-02-28 23:58:46 CUL_HM Remote8_2 Remote8_2_Btn_08 Short
    2017-02-28 23:58:46 CUL_HM Remote8_2_Btn_08 Short (to HMUART)
    2017-02-28 23:58:46 CUL_HM Remote8_2_Btn_08 trigDst_19A5F7: noConfig
    2017-02-28 23:58:46 CUL_HM Remote8_2_Btn_08 trigger: Short_58
    2017-02-28 23:58:46 CUL_HM Remote8_2_Btn_08 trigger_cnt: 58
    2017-02-28 23:58:47 structure Wohnzimmer undefined
    2017-02-28 23:58:47 ONKYO_AVR Onkyo screenLayerInfo:
    2017-02-28 23:58:47 ONKYO_AVR Onkyo screenLayerInfo: 2

Habi ich etwas verbogen? Der Zähler wirft immer 1 aus.
Der Onkyo macht dann immer ein reconnect - das Kommando funktioniert also, nur mit dem Zählen klappts noch nicht.
Gruß, Ronald

MadMax-FHEM

#6
Hi,

nö passt, also von dir...
...zumindest teilweise ;)

Dass es 2x im Log steht liegt wohl an dem notify.

So wie ich das sehe triggert es auf:

2017-02-28 23:58:40 CUL_HM Remote8_2 Remote8_2_Btn_08 Short
und
2017-02-28 23:58:40 CUL_HM Remote8_2_Btn_08 Short (to HMUART)

Was passiert bei:
define Button8_Onkyo_stage notify Remote8_._Btn_08:Short {SetzeStage()}


So nun zum immer 1.

War ein Fehler von mir.

Ich dachte ich könnte die aktuelle Einstellung auslesen:

my $NextLs=ReadingsNum("Onkyo", "internet-radio-preset", 0);

(war anhand des set Kommandos von dir "geraten")

und dann um eins Hochzählen:

$NextLs += 1;

Aber es gibt wohl das Reading 'internet-radio-preset' nicht, also wird immer der Default '0' geliefert...

Entweder musst du dir den aktuellen Wert wo merken oder rausfinden im welchem Reading der aktuelle Wert steht.

EDIT: merken evtl. in einem userreading...

Laut dem set Befehl habe ich angenommen das Gerät/Device heißt Onkyo!?

Mach doch mal ein list des Gerätes...
...außer du weißt in welchem Reading der aktuelle Wert steht, dann einfach das ReadingsNum anpassen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Ronald

Hi Joachim,
wenn ich .* weglasse triggert das Notify gar nicht.

  • 2017-03-01 00:37:45 CUL_HM Remote8_2 battery: ok
    2017-03-01 00:37:45 CUL_HM Remote8_2 CMDs_done
    2017-03-01 00:37:45 CUL_HM Remote8_2 Remote8_2_Btn_08 Short
    2017-03-01 00:37:45 CUL_HM Remote8_2_Btn_08 Short (to HMUART)
    2017-03-01 00:37:45 CUL_HM Remote8_2_Btn_08 trigDst_19A5F7: noConfig
    2017-03-01 00:37:45 CUL_HM Remote8_2_Btn_08 trigger: Short_60
    2017-03-01 00:37:45 CUL_HM Remote8_2_Btn_08 trigger_cnt: 60
    2017-03-01 00:38:19 CUL_HM Remote8_2 battery: ok
    2017-03-01 00:38:19 CUL_HM Remote8_2 CMDs_done
    2017-03-01 00:38:19 CUL_HM Remote8_2 Remote8_2_Btn_08 Short
    2017-03-01 00:38:19 CUL_HM Remote8_2_Btn_08 Short (to HMUART)
    2017-03-01 00:38:19 CUL_HM Remote8_2_Btn_08 trigDst_19A5F7: noConfig
    2017-03-01 00:38:19 CUL_HM Remote8_2_Btn_08 trigger: Short_61
    2017-03-01 00:38:19 CUL_HM Remote8_2_Btn_08 trigger_cnt: 61
Da passiert dann nichts im Logfile.
Der Onky receiver hat ziemlich viele Einträge, siehe nachfolgende Liste.
Mir würde es eigentlich reichen einfach einen Zähler durchzutoggeln.
Ich mache ein Toggle mit Btn_07 short set Onky off und set Onkyo internet-radio-preset 1
Dann schaltet er ein und direkt auf Radio 1, Swiss pop, dann ist die Regierung zufrieden :-)
Der Befehl funktioniert auch noch nicht astrein, habe ich mir zusammengebastelt. Da könnte man ja den SetzeStage auch gleich mit auf 1 setzen, dann reicht mir das toggeln beginnend bei 1

  • Internals:
       CHANGED
       Clients    :ONKYO_AVR_ZONE:
       DEF        Onkyo
       DeviceName Onkyo:60128
       FD         20
       INPUT      23
       NAME       Onkyo
       NR         90
       NTFY_ORDER 50-Onkyo
       PARTIAL
       PROTOCOLVERSION 2013
       SCREENLAYER 0
       STATE      opened
       TIMEOUT    3
       TYPE       ONKYO_AVR
       ZONE       1
       Readings:
         2017-01-04 18:24:02   _SLZ            80
         2017-01-06 13:46:19   _ZPW            01
         2017-02-22 19:04:11   audin_ch
         2017-02-22 19:04:11   audin_enc
         2017-02-22 19:04:11   audin_srate
         2017-03-01 00:37:12   audin_src
         2017-03-01 00:37:12   audout_ch
         2017-03-01 00:37:12   audout_mode
         2017-01-01 15:20:50   center-temporary-level 0
         2017-02-28 23:16:32   channel         My_Favorites
         2017-01-01 15:20:48   channelList     AUPEO!_PERSONAL_RADIO,DLNA,Home_Media,Last.fm_Internet_Radio,MP3tunes,Mediafly,My_Favorites,Napster,Pandora_Internet_Radio,Rhapsody,SiriusXM_Internet_Radio,Slacker_Personal_Radio,Spotify,TuneIn,e-onkyo_music,radiko.jp,simfy,vTuner
         2017-03-01 00:13:07   currentAlbum
         2017-01-13 17:57:01   currentAlbumArtURI ./FHEM/lib/UPnP/sonos_empty.jpg
         2017-01-13 17:57:01   currentAlbumArtURL ?/ONKYO_AVR/cover/empty.jpg
         2017-03-01 00:13:07   currentArtist
         2017-03-01 00:13:07   currentTitle
         2017-01-01 15:20:48   currentTrackDuration --:--
         2017-03-01 00:17:06   currentTrackPosition --:--
         2017-03-01 00:16:06   input           tv-cd
         2017-01-01 15:20:48   inputList       am,aux1,aux2,bd,cbl,cd,dlna,dvd,dvr,fm,game,internet-radio,iradio-favorite,multi-ch,music-server,net,network,p4s,pc,phono,sat,sirius,tape,tape-1,tape2,tuner,tv,tv-cd,universal-port,usb,usb-rear,usb-toggle,vcr,video1,video2,video3,video4,video5,video6,video7,xm
         2017-01-04 18:24:03   ipod-mode-change OFF
         2017-03-01 00:13:19   listening-mode  direct
         2017-01-04 18:24:10   music-optimizer off
         2017-02-12 11:44:51   mute            off
         2017-01-03 22:55:12   network-standby on
         2017-03-01 00:17:06   playStatus      stopped
         2017-03-01 00:13:19   power           off
         2017-02-16 14:34:28   presence        present
         2017-01-04 18:24:10   preset
         2017-01-04 18:24:03   repeat          off
         2017-02-28 23:17:20   screenCurser    -
         2017-01-01 15:20:48   screenIconLeft  00
         2017-02-28 23:16:32   screenIconRight 01
         2017-02-28 22:32:27   screenItemC0000 vTuner Internet Radio
         2017-01-15 13:03:16   screenItemC0001 Last.fm Internet Radio
         2017-01-15 13:03:16   screenItemC0002 Spotify
         2017-02-27 15:38:11   screenItemC0003 AUPEO! PERSONAL RADIO
         2017-02-28 22:32:27   screenItemC0004 MP3tunes
         2017-02-28 22:32:27   screenItemC0005 My Favorites
         2017-02-28 22:32:27   screenItemC0006 DLNA
         2017-01-11 20:08:48   screenItemC0007 Home Media
         2017-01-15 13:03:21   screenItemC0008 Search Stations
         2017-01-23 23:38:08   screenItemC0009 ---
         2017-02-27 20:50:30   screenItemCnt   0000
         2017-02-27 20:50:30   screenLayer     00
         2017-03-01 00:13:06   screenLayerInfo 2
         2017-03-01 00:13:06   screenListPos   0000
         2017-01-01 15:20:48   screenStatus
         2017-02-27 20:50:30   screenTitle
         2017-02-28 23:16:32   screenType      2
         2017-01-04 18:24:03   shuffle         off
         2017-01-01 15:20:50   sleep           off
         2017-03-01 00:37:12   state           opened
         2017-03-01 00:13:19   stateAV         off
         2017-01-01 15:20:50   subwoofer-temporary-level 0
         2017-01-04 18:24:09   tone-front-bass 0
         2017-01-04 18:24:09   tone-front-treble 0
         2017-01-04 18:24:10   tunerFrequency  09920
         2017-01-01 15:20:50   video-picture-mode custom
         2017-01-03 22:55:12   vidin_cdepth
         2017-01-03 22:55:12   vidin_cspace
         2017-01-03 22:55:12   vidin_res
         2017-01-03 22:55:12   vidin_src
         2017-01-03 22:55:12   vidout_cdepth
         2017-01-03 22:55:12   vidout_cspace
         2017-02-26 23:09:32   vidout_dst
         2017-02-26 23:09:32   vidout_mode
         2017-02-26 23:09:32   vidout_res
         2017-03-01 00:09:03   volume          8
       Screen:
         0:
           List:
       Fhem:
         infix      ONKYO_AVR
       Helper:
         nextConnectionCheck 1488325273.36309
         Receiver:
           Device:
             Selectorlist:
             Zonelist:
               Zone:
                 1:
                   name       Main
                   value      1
           Input:
           Input_aliases:
           Input_names:
    Attributes:
       cmdIcon    muteT:rc_MUTE previous:rc_PREVIOUS next:rc_NEXT play:rc_PLAY pause:rc_PAUSE stop:rc_STOP shuffleT:rc_SHUFFLE repeatT:rc_REPEAT
       devStateIcon on:rc_GREEN@green:off off:rc_STOP:on absent:rc_RED playing:rc_PLAY@green:pause paused:rc_PAUSE@green:play muted:rc_MUTE@green:muteT fast-rewind:rc_REW@green:play fast-forward:rc_FF@green:play interrupted:rc_PAUSE@yellow:play
       room       Wohnzimmer
       stateFormat stateAV
       userattr   room_map structexclude
       webCmd     volume:muteT:input:previous:next

Das notify für Btn_07 sieht in der FHEM.CFG so aus:
define Onkyo_an dummy
attr Onkyo_an alias Onkyo An/Aus
attr Onkyo_an devStateIcon an:remotecontrol/black_btn_GREEN aus:remotecontrol/black_btn_RED
attr Onkyo_an room Wohnzimmer
attr Onkyo_an setList state:an,aus
attr Onkyo_an webCmd state
#attr Onkyo_an verbose 5
define OnkyoSchalter notify (Remote8_._Btn_07:Short.*) { if (Value("Onkyo_an") eq "an") {fhem("set Onkyo off;;set Onkyo_an aus")} else { fhem("set Onkyo internet-radio-preset 1;;set Onkyo_an an")}}

Könnte man bestimmt auch sauberer definieren - ich lerne halt noch (aber erst wieder Abends, in 4 1/2 Stunden klingelt der Wecker)

Gruß, Ronald

MadMax-FHEM

#8
Zu beginn: für Code, lists, etc. bitte "code-Tags" verwenden, das ist das '#' oben im "Menü"...
...so lässt es sich lechter lesen...

So, bevor hier noch mehr durcheinander geht (habe den Eindruck dass dem so ist) versuche ich mal zu verstehen/zu ordnen (was ich gedacht habe zu verstehen):

1. also du kannst mit:


set Onkyo internet-radio-preset 1
set Onkyo internet-radio-preset 2
set Onkyo internet-radio-preset 3
set Onkyo internet-radio-preset 4
set Onkyo internet-radio-preset 5
set Onkyo internet-radio-preset 6


wenn du es oben im WebCmd eingibst die Kanäle schalten!?

2. Wofür hast du den Dummy 'Onkyo_an'?

3. du willst auf 'Remote8_2_Btn_08 Short' triggern zum Weiterschalten? Und hast bei 1x drücken 2 Einträge im Log!? Wobei die geposteten Einträge eine "Pause" von mehr als 20Sec haben, die beiden Events aber gleich hintereinander kommen:


2017.02.28 23:46:39 1: SetzeStage   nextLS: 1
2017.02.28 23:46:39 3: ONKYO_AVR set Onkyo internet-radio-preset 1
2017.02.28 23:47:01 1: SetzeStage   nextLS: 1
2017.02.28 23:47:01 3: ONKYO_AVR set Onkyo internet-radio-preset 1



2017-02-28 23:58:40 CUL_HM Remote8_2 Remote8_2_Btn_08 Short
2017-02-28 23:58:40 CUL_HM Remote8_2_Btn_08 Short (to HMUART)


EDIT2: Falls du dich "nur" wunderst, dass 2 Einträge kommen: der mit '1:' vorne dran ist der aus der Funktion und der mit '3:' vorne dran ist der Schaltbefehl an den Onkyo, der kommt vom Onkyo-Modul (oder IODev falls es da so etwas gibt), kommt also "vom System"... (Die Nummer gibt den "verbosity-Level" an. Du kannst durch setzen entweder beim Modul oder global den Level hoch (5: viele Ausgaben) und runter (1 oder 0: wenige gar keine Ausgaben) setzen (also 2,3,4 geht nat. auch ;)  ). Die 1 im Log-Aufruf Log(1,"HIER DIE AUSGABE") ist ebenfalls der Level. Da ich diese Ausgaben für Debug-Zwecke einbaue ist der Level auf 1, also sollte die Ausgabe "immer" kommen (außer wenn alle Ausgaben mittels 0 abgeschaltet wurden). Das aber nur so nebenbei... Du lernst ja noch ;)

EDIT3: nach der "Entwicklungsphase" lasse ich natürlich nur noch Ausgaben drin, die ich will und brauche. Entweder dann auskommentieren '#' davor oder halt den verbose-Level auf 4 oder 5 setzen: Log(4,"..."). So lässt sich die Ausgabe durch setzen des erwähnten Attributs 'verbose' steuern (ohne im Code wieder einkommentieren zu müssen)...

4. es gibt kein Reading 'internet-radio-preset' in dem die gesetzte Nummer steht. Gut nicht schilmm. Ich habe gesehen, dass im Reading 'Channel' wohl der aktuelle zu finden wäre ;)  Du hast aber mehr als 6 Kanäle, oder? (ChannelList) Oder bringe ich da was durcheinandr? Wobei es nicht wirklich wichtig ist.


5. Den zuletzt gesetzten Wert musst du wo speichern (wenn man ihn tatsächlich nirgends auslesen kann und dazu kenne ich das Onkyo-Modul zu wenig/gar nicht). Entweder in einem 'userreading' beim Onkyo-Device ODER nachdem der dummy schon mal da ist einfach dort (vorausgesetzt der dummy ist tatsächlich notwendig)

D.h. die Funktion müsste dann so sein:


sub SetzeStage()
{
# hier wird der aktuelle Kanal ausgelesen
my $NextLs=ReadingsNum("Onkyo_an", "actChannel", 0);

# dann Kanal eins hoch ;)
$NextLs += 1;

# mal ausgeben wo wir sind
Log(1,"SetzeStage   nextLS: $NextLs");

# prüfen ob schon Kanal 6 vorbei, dann wieder 1
if($NextLs > 6)
{
$NextLs =1;
}

# setze den Kanal beim Onkyo (vorasugesetzt das funktioniert siehe 1.)
{fhem ("set Onkyo internet-radio-preset $NextLs")}

# speichere die Kanalnummer im dummy (vorausgesetzt der dummy wird gebraucht siehe 5. / ansonsten halt userReading beim Onkyo)
{fhem ("setreading Onkyo_an actChannel $NextLs")}
}


Was mir noch nicht klar ist, ist bzgl. dem Trigger für's notify, ob das nun klappt oder nicht, siehe 3.

Viel Erfolg, Joachim


EDIT:

nur um mit dem Trigger und Event richtig zu liegen kannst du auch mal folgendes tun (mache ich während der Entwicklung eigentlich immer so).
Im notify beim Aufruf der Funktion das Event mit übergeben:


define Button8_Onkyo_stage notify Remote8_._Btn_08:Short.* {SetzeStage($EVENT)}


und die Funktion so anpassen:


sub SetzeStage($)
{
my ($Event) = @_;
my $NextChan = ReadingsNum("Onkyo_an", "actChannel", 0);

$NextChan += 1;

# mal ausgeben wo wir sind
Log(1,"SetzeStage   Event: $Event      NextChan: $NextChan");

# prüfen ob schon Kanal 6 vorbei, dann wieder 1
if($NextChan > 6)
{
  $NextChan = 1;
}

# setze den Kanal beim Onkyo (vorasugesetzt das funktioniert siehe 1.)
{fhem ("set Onkyo internet-radio-preset $NextChan")}

# speichere die Kanalnummer im dummy (vorausgesetzt der dummy wird gebraucht siehe 5. / ansonsten halt userReading beim Onkyo)
{fhem ("setreading Onkyo_an actChannel $NextChan")}
}


Ich habe noch NextLs in NextChan geändert weil es ja um Kanäle und nicht um Lautstärke geht ;)
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Ronald

Hallo Joachim,

1. also du kannst mit:

set Onkyo internet-radio-preset 1
set Onkyo internet-radio-preset 2
set Onkyo internet-radio-preset 3
set Onkyo internet-radio-preset 4
set Onkyo internet-radio-preset 5
set Onkyo internet-radio-preset 6


wenn du es oben im WebCmd eingibst die Kanäle schalten!?
Jepp, das klappt problemlos :-)
Wenn der Onkyo aus ist schaltet er sich damit auch ein und geht direkt auf die gewählte Quelle.

2. Wofür hast du den Dummy 'Onkyo_an'?
Ziel ist mit mit Taste 7 den Onkyo zu toggeln zwischen aus und "an + Quelle internet radio preset 1
define OnkyoSchalter notify (Remote8_._Btn_07:Short.*) { if (Value("Onkyo_an") eq "an") {fhem("set Onkyo off;;set Onkyo_an aus")} else { fhem("set Onkyo internet-radio-preset 1;;set Onkyo_an an")}}
Das kann man bestimmt einfacher lösen, ich schaue mit if auf den status des dummys und schalten dann dazu den Onkyo an / aus und den dummy um.

3. du willst auf 'Remote8_2_Btn_08 Short' triggern zum Weiterschalten? Und hast bei 1x drücken 2 Einträge im Log!? Wobei die geposteten Einträge eine "Pause" von mehr als 20Sec haben, die beiden Events aber gleich hintereinander kommen:

Ich habe das wohl falsch beschrieben, ich habe machmal Probleme mit der HomeMatic Fernbedienung, weil die von FHEM kein ACK bekommt. Deshalb funktioniert wohl auch das short nicht sondern nur short.*
In meinem Post hatte ich 2 x gedrückt, es kam jeweils die gleiche Kanal Nummer.
Zu Edit 2:
Danke für die Tipps zum verbose und den Aufbau wie das zu lesen ist.

4. es gibt kein Reading 'internet-radio-preset' in dem die gesetzte Nummer steht. Gut nicht schilmm. Ich habe gesehen, dass im Reading 'Channel' wohl der aktuelle zu finden wäre ;)  Du hast aber mehr als 6 Kanäle, oder? (ChannelList) Oder bringe ich da was durcheinandr? Wobei es nicht wirklich wichtig ist.

Ja, ich kann da bis zu 40 Kanäle anlegen. Es gibt auch eine "klassische Fernbedienung zu dem Onkyo, funktioniert aber nicht, da das Teil im Schrank ist und der IR nicht durch kommt.
Wenn ich mehr will, z.B. den Fernsehton via Onkyo wiedergeben, Bluray Kanal wählen, ... nehme ich die Onkyo App auf dem Handy.
Meistens reicht es aber ein paar Lieblingskanäle zu schalten (Btn8 short), Volume regeln (Btn 7,8 long) oder ein aus (Btn 7 short).
An der Eingangstür habe ich noch eine 6er HM Tastatur. Da werden über Btn 1,3,4,5,6 Schalter und Dimmer getoggelt. Mit Btn 2 schalte ich alle Lampen und den Onky aus.
Mit der Logik kommt meine Frau auch top zurecht - so soll es sein.

So nun zu den Änderungsvorschlägen:
define Button8_Onkyo_stage notify Remote8_._Btn_08:Short.* {SetzeStage($EVENT)}
habe ich eingetragen.
in der 99_myUtils.pm Deinen unten genannten  Code eingetragen.
sub SetzeStage($)
{
my ($Event) = @_;
my $NextChan = ReadingsNum("Onkyo_an", "actChannel", 0);

$NextChan += 1;

# mal ausgeben wo wir sind
Log(1,"SetzeStage   Event: $Event      NextChan: $NextChan");

# prüfen ob schon Kanal 6 vorbei, dann wieder 1
if($NextChan > 6)
{
  $NextChan = 1;
}

# setze den Kanal beim Onkyo (vorasugesetzt das funktioniert siehe 1.)
{fhem ("set Onkyo internet-radio-preset $NextChan")}

# speichere die Kanalnummer im dummy (vorausgesetzt der dummy wird gebraucht siehe 5. / ansonsten halt userReading beim Onkyo)
{fhem ("setreading Onkyo_an actChannel $NextChan")}
}


Das funzt prima und macht genau, was es soll.
Bin bestens zufrieden, danke für den ausführlichen Support.

Wenn ich mal wieder etwas Ruhe habe schaue ich mir die off / preset 1 Geschichte für Btn 7 an, das müsste doch auch genauso mit einer Sub gehen.
Jetzt bin ich erst Mal Top zufrieden  :)
Gruß, Ronald



MadMax-FHEM

#10
Hallo Ronald,

freut mich!
Schön zu hören, dass es jetzt endlich klappt...
...noch besser, dass/wenn du was gelernt hast...

EDIT: evtl. noch die Logausgaben überarbeiten, nicht dass dein Log unnötig voll läuft...

EDIT2: bzgl. des roten Blinken evtl. mal hier: https://wiki.fhem.de/wiki/HomeMatic#Peeren  und hier: https://wiki.fhem.de/wiki/Virtueller_Controller_VCCU (eine anzulegen schadet nicht und hat Vorteile / Forumssuche sagt bestimmt mehr dazu) schauen...

Viel Spaß noch!

Aber Achtung: es findet sich immer was zu tun... ;)

Gruß, Joachim

P.S.: evtl. noch als gelöst "kennzeichnen", z.B. durch umbenennen in "[gelöst] Radio Kanäle toggeln"
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Ronald

Hallo Joachim,

eine Frage zum Umbenennen:
Einen Button zum Umbenennen habe ich nicht gefunden, nur verschieben.
Da kann ich zwar auch ein Häkchen bei umbenennen setzen, dann steht bei verschieben "verschieben nach Forum".
Wie klappt das sauber mit dem umbenennen?

Zum Thema habe ich noch ein paar Änderungen vorgenommen:
Wenn der Onkyo direkt über Toggeln Kanäle eingeschaltet wird habe ich in der 99_myUtils.pm noch ergänzt:
{fhem ("set Onkyo_an an")}

Dadurch wird der Dummy auch umgeschaltet, wenn man über Toggeln Kanäle auch direkt den Onkyo einschaltet.
Gleiches habe ich auch für Btn_2 - All Off ergänzt.
Da wurde vorher nur der Onkyo ausgeschaltet, jetzt wird auch der Dummy mit umgeschaltet:
{ fhem("set Wohnraum off;set Onkyo off;set Onkyo_an aus")}
Insofern alles gut - jetzt muss ich das Thema nur noch als [gelöst] markieren.
Gruß, Ronald

MadMax-FHEM

#12
Hmm ich hab's schon lange nicht mehr gemacht...
Aber wenn du auf ändern gehst kannst du dann den Namen nicht editieren??

Ansonsten: is nicht wichtig/schlimm würde nr zeigen, dass das Problem gelöst ist...

Viel Spaß noch, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Ronald

So, hat anscheinend mit dem umbenennen ohne verschieben geklappt, bis demnächst  ;)