neues modul fakeRoku um einzelne tasten von einer harmony an fhem zu senden

Begonnen von justme1968, 31 März 2016, 14:17:58

Vorheriges Thema - Nächstes Thema

olwaldi

Aber leider habe ich ein neues Problem mit fakeroku, Denon AVR 3808 & Logitech Harmony:

Nach einmaliger Benutzung funktionieren die Lautstärketasten nicht mehr. Genauer: wenn ich auf der Harmony 950 Fernbedienung die Vol+ oder Vol- gedrückt halte, so daß die Lautstärke kontinuierlich geändert werden soll, springt die Lautstärke wie zufällig rauf oder runter.

Wie schon oben beschrieben nutze ich das DENON_AVR Modul (die ganz neue Version), um die Lautstärke zu setzen. Das funktioniert auch prima, z. B.
set Denon volumeStraight - 30.0
aber danach funktioniert die normale Lautstärkeregelung nicht mehr.

Ist das ein Problem in fakeRoku oder DENON_AVR? Ideen? Ich werde noch versuchen, die Tastenwiederholung in Harmony anzupassen, aber die Tasten haben VOR Aktivierung von fhem problemlos funktioniert.

Nachtrag: Ist wohl ein fakeRoku Problem. Wenn ich im fhem Dashboard die Lautstärke über set Denon.. ändere, also ohne fakeRoku notify, funktionieren die Lautstärketasten problemlos. Sobald eine fakeRoku Taste benutzt wird, klappt die Lautstärkeregelung nicht mehr zuverlässig. Auch ein Anpassen der Tastenwiederholung von 100ms auf 200ms hat keinen Effekt.

Was tun?

MadMax-FHEM

#376
Im Eventmonitor schauen was für Events von fakeroku-Modul kommen, also was überhaupt per Harmony in fhem "ankommt"...

Die Auszüge posten und ebenso das Notify was darauf reagiert...

Und dann hab ich nicht verstanden was du nun wie wo(rüber) steuerst...

Also die Lautstärke willst du nur noch über fakeroku?
(warum!?)

Dann musst du ja in jeder Activity die Lautstärketasten von AVR (also Harmony-Standard: welches Gerät steuert die Lautstärke -> AVR, also auch davon dann die Lautstärkebefehle) auf fakeroku umstellen...

Oder hab ich irgendwas überlesen/nicht verstanden?

EDIT:ich hab's jetzt noch mal auf dem PC gelesen (vorher nur Handy) aber ich bin immer noch nicht "im Bilde". Also mit welchen Tasten auf der Harmony steuerst du unter welchen Bedingungen (Activity/Gerät/...) was? Wie geschrieben ohne die Beschreibung und v.a. ohne Ausgabe Eventmonitor und dazugehörigem Notify wird es schwer zu helfen...

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)

olwaldi

Danke für die Rückmeldung:

Was ist mein Ziel? Der AVR Denon 3808 hat keinen IR-Befehl, um die Lautstärke auf einen bestimmten Wert zu setzen. Das möchte ich aber gern tun. Außerdem will ich die Lautstärke in größeren Schritten als nur 0.5dB ändern können. Und erreichen kann man all das durch das fhem Modul DENON_AVR (Setzen der Lautstärke) und fakeRoku (Harmony-Befehle an fhem schicken).
Unabhängig davon soll natürlich die normale Lautstärke-Regelung weiterhin funktionieren.
Hier ein Beispiel notify (funktioniert perfekt), um die Lautstärke um 5dB zu erniedrigen:
define VolDown notify HarmonyController:keypress.*Down set Denon volumeStraight {(fhem("get Denon volumeStraight") - 5.0)}

Im Eventlogger kommen alle Events wie gewünscht an (das tat zuerst nicht, da fhem gestartet wurde, bevor eine IP-Adresse vergeben war - jetzt gelöst siehe Posting weiter oben). Und die Events werden erfolgreich in Lautstärke-Kommandos umgesetzt.
Auch Overflow/Underflow scheint kein Problem zu sein - ich könnte ja durch ständiges Abziehen unter -80.0dB geraten.

Was ist mein Problem? Sobald ein einziges Mal ein fakeRoku-Event aufgetreten ist, spielt die normale Lautstärke-Regelung "verrückt". Einzel-Tastendrücke auf der Harmony950 zur Lautstärke-Änderung funktionieren weiterhin, aber beim Festhalten der Lautstärketaste springt die Lautstärke zufällig hin und her. Änderung der Wiederholungsfrequenz in Harmony von 100ms auf 200ms hat keine Wirkung. Bevor ein fakeRoku-Event (nach dem Einschalten des AVR) erzeugt wird, funktioniert die Lautstärkeregelung via Harmony950 problemlos.

Was steht im Logfile bei verbose 5? Sehr viel, vor Allem viele DLNA-Pakete, da in meinem Netzwerk sehr viele DLNA-Server vorhanden sind. Es gab auch einen DLNA-Request an fakeRoku, der nicht beantwortet werden konnte (keine Details mehr, da Logfile mittlerweile gelöscht).

Was hat geholfen? Ich habe versuchsweise reusePort auf 0 gesetzt, ohne zu wissen, was das bewirkt. Aber danach funktioniert die Lautstäkeregelung via Harmony950 deutlich zuverlässiger -  genauer: fast immer.

D.h. für mich funktioniert jetzt Alles - aber ich bin mir nicht sicher, wie nachhaltig reusePort 0 ist.

MadMax-FHEM

#378
Schön, dass du alle gewünschten Infos NICHT geliefert hast. ;)

Was menst du mit "Lautstärke normal regeln"!?

Also wie sind nun die Tasten belegt!?

Weil du kannst ja über die Lautstärketasten der Harmony-FB entweder die normale Lautstärke nutzen, also IR-Befehl an den Verstärker ODER eben etwas an fakeroku schicken und dann per Notify und Netzwerksteuerung an den AVR...

Einziges: kurzes Drücken/langes Drücken (was du verm. machst!?)

Aber trotzdem noch mal: was kommt denn im Eventmonitor, wenn du genau das drückst was "spinnt"!?

Und ohne dass du es hier postest kann (und will) ich nicht helfen (wie auch)...

Es kann ja doch sein, dass zuerst ein kurzes drücken kommt, Lautstärke springt per Notify "wohin" und wird dann durch lange Tastendrücke per IR an den Verstärker wieder "anders" bedient...
Evtl. kommt sogar noch mal ein Signal an fakeroku usw.

Das war die Idee meiner Frage aber wie geschrieben: so kann ich nicht weiterhelfen...

Bzgl. reusePort kann ich nichts sagen...

EDIT: ich mache so Steuerungen eigentlich (fast) immer, indem ich das in eine myUtils auslagere, ja auch bei so "kleinen Routinen". Vorteil: ich mache eigene Logausgaben. Dann sehe ich im Log WANN die Sub "gerufen" wurde und WAS die Sub genau geschalten hat... Ich bin auch nicht sicher, ob ein Mischen von fhem und Perl im Notify so gut ist... Aber klar, wenn es wohl funktioniert... Ich würde es halt nicht tun...

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)

olwaldi

Zitat von: MadMax-FHEM am 26 Dezember 2019, 10:53:51
Schön, dass du alle gewünschten Infos NICHT geliefert hast. ;)

Was menst du mit "Lautstärke normal regeln"!?

Also wie sind nun die Tasten belegt!?

Weil du kannst ja über die Lautstärketasten der Harmony-FB entweder die normale Lautstärke nutzen, also IR-Befehl an den Verstärker ODER eben etwas an fakeroku schicken und dann per Notify und Netzwerksteuerung an den AVR...

Einziges: kurzes Drücken/langes Drücken (was du verm. machst!?)

Aber trotzdem noch mal: was kommt denn im Eventmonitor, wenn du genau das drückst was "spinnt"!?

Und ohne dass du es hier postest kann (und will) ich nicht helfen (wie auch)...

Es kann ja doch sein, dass zuerst ein kurzes drücken kommt, Lautstärke springt per Notify "wohin" und wird dann durch lange Tastendrücke per IR an den Verstärker wieder "anders" bedient...
Evtl. kommt sogar noch mal ein Signal an fakeroku usw.

Das war die Idee meiner Frage aber wie geschrieben: so kann ich nicht weiterhelfen...

Gruß, Joachim

Irgendwie reden wir aneinander vorbei. Im Eventlog ist genau das drin, was zu erwarten ist, wenn ich die in Harmony mit fakeRoku verbundene Taste drücke
2019-12-26 17:53:06 fakeRoku HarmonyController keypress: Down
2019-12-26 17:53:06 DENON_AVR Denon volumeStraight: -45
2019-12-26 17:53:06 DENON_AVR Denon volume: 35
2019-12-26 17:53:06 DENON_AVR Denon volumeMax: 92

Mein Problem ist nun, daß ab jetzt ein longpress auf die Lautstärketasten der Harmony950 zu erratischem Springen der Lautstärke führt. Und jetzt hast Du Recht mit Deinem Bestehen darauf, in den Eventlogger zu gucken. Es gibt nämlich unerwartete Events für fakeRoku, ohne daß ich eine der roku-Tasten gedrückt hätte
2019-12-26 17:57:46 DENON_AVR Denon volumeMax: 92
2019-12-26 17:57:46 fakeRoku HarmonyController keypress: Down
2019-12-26 17:57:46 DENON_AVR Denon volumeStraight: -63
2019-12-26 17:57:46 DENON_AVR Denon volume: 17
2019-12-26 17:57:46 DENON_AVR Denon volumeMax: 92
2019-12-26 17:57:47 DENON_AVR Denon volumeStraight: -59
2019-12-26 17:57:47 DENON_AVR Denon volume: 21
2019-12-26 17:57:47 DENON_AVR Denon volumeMax: 92
2019-12-26 17:57:47 DENON_AVR Denon volumeStraight: -55
2019-12-26 17:57:47 DENON_AVR Denon volume: 25
2019-12-26 17:57:47 DENON_AVR Denon volumeMax: 92
2019-12-26 17:57:47 fakeRoku HarmonyController keypress: Down

Und damit hast Du mein Problem wohl entdeckt. Obwohl ich nur die VolumeDown Taste drücke, wird ein Down-Event ausgelöst. Leider ist jetzt meine Harmony-App komplett verwirrt und läßt sich nicht starten. Dann boote ich mal den Hub....

Bleibt die Frage, warum beide Tasten zum Down-Event führen. Vermutlich ist die in Harmony per default vorbelegt.


Tschuldigung, daß ich nicht gleich den Log mitgeschickt habe, war zu überzeugt davon, daß Alles richtig täte.


Danke, Michael

olwaldi

Nach Reboot meines Tablets funktioniert die Harmony-App wieder. Leider ist die Vol+ bzw. Vol- Taste nur mit den entsprechenden Tasten für IR-Signale verknüpft. Warum beide Tasten beim longpress fakeRoku-Events erzeugen, verstehe ich nicht. Komischerweise passiert das erst dann, wenn ich mindestens 1x eine fakeRoku-Taste gedrückt hatte. Ohne das gibts keine fakeRoku Events bei longpress Vol+/Vol-

Könnte das ein Bug in fakeRoku sein?

justme1968

schau im log mit verbose 5 was die harmony sendet. das modul macht daraus nur events für fhem.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

olwaldi

Hier mal ein Beispiel mit Event-Log und Logfile. Ich habe nur longpress Vol- auf der Harmony950 gemacht, aber einige Events von fakeRoku Down gesehen:
2019-12-26 20:43:38 DENON_AVR Denon volumeStraight: -64.5
2019-12-26 20:43:38 DENON_AVR Denon volume: 15.5
2019-12-26 20:43:38 DENON_AVR Denon volumeMax: 92
2019-12-26 20:43:38 fakeRoku HarmonyController keypress: Down
2019-12-26 20:43:39 DENON_AVR Denon volumeStraight: -69.5
2019-12-26 20:43:39 DENON_AVR Denon volume: 10.5
2019-12-26 20:43:39 DENON_AVR Denon volumeMax: 92
2019-12-26 20:43:39 DENON_AVR Denon volumeStraight: -73.5
2019-12-26 20:43:39 DENON_AVR Denon volume: 6.5
2019-12-26 20:43:39 DENON_AVR Denon volumeMax: 92
2019-12-26 20:43:39 fakeRoku HarmonyController keypress: Down
2019-12-26 20:43:39 DENON_AVR Denon volumeStraight: 19
2019-12-26 20:43:39 DENON_AVR Denon volume: 99
2019-12-26 20:43:39 DENON_AVR Denon volumeMax: 92
2019-12-26 20:43:39 fakeRoku HarmonyController keypress: Down
2019-12-26 20:43:39 DENON_AVR Denon volumeStraight: 12
2019-12-26 20:43:39 DENON_AVR Denon volume: 92
2019-12-26 20:43:39 DENON_AVR Denon volumeMax: 92
2019-12-26 20:43:39 DENON_AVR Denon volumeStraight: 11
2019-12-26 20:43:39 DENON_AVR Denon volume: 91
2019-12-26 20:43:39 DENON_AVR Denon volumeMax: 92
2019-12-26 20:43:39 DENON_AVR Denon volumeStraight: 10
2019-12-26 20:43:39 DENON_AVR Denon volume: 90
2019-12-26 20:43:39 DENON_AVR Denon volumeMax: 92



2019.12.26 20:43:39 4: HarmonyController:listener:51301: disconnected
2019.12.26 20:43:39 5: HarmonyController:listener:51302: keepalive
2019.12.26 20:43:39 5: HarmonyController: POST /keypress/Down HTTP/1.1
connection: keep-alive
content-length: 0
accept-language: en-us
user-agent: LuaSocket 2.0.2
accept: /*
te: trailers
accept-encoding: gzip, deflate
host: 192.168.178.44


2019.12.26 20:43:39 3: get Denon volumeStraight : -73.5
2019.12.26 20:43:39 5: HarmonyController:listener:51302: add header: HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 0

2019.12.26 20:43:39 4: HarmonyController:listener:51302: disconnected
2019.12.26 20:43:39 5: HarmonyController:listener:51303: keepalive
2019.12.26 20:43:39 5: HarmonyController: POST /keypress/Down HTTP/1.1
connection: keep-alive
content-length: 0
accept-language: en-us
user-agent: LuaSocket 2.0.2
accept: /*
te: trailers
accept-encoding: gzip, deflate
host: 192.168.178.44


2019.12.26 20:43:39 3: get Denon volumeStraight : 19
2019.12.26 20:43:39 5: HarmonyController:listener:51303: add header: HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 0

2019.12.26 20:43:39 4: HarmonyController:listener:51303: disconnected


Das Problem tritt nicht immer auf - mit reusePort 0 seltener. Und es muß am Zusammenspiel der Module DENON_AVR mit fakeRoku liegen. DENON_AVR funktioniert prima mit longpress Vol-/Vol+, solange ich keinen fakeRoku-Event erzeuge. Nach dem ersten (absichtlichen) fakeRoku-Event gibt es immer wieder zufällige fakeRoku Down Events ohne mir ersichtliche Ursache. DENON_AVR selber könnte natürlich auch Ursache des Problems sein. Andererseits wird der Volume-Regler im fhem-Dashboard synchron zur fehlerhaften Lautstärke-Änderung hin- und herbewegt - hat somit wohl kein Performance-Problem mit zuvielen Events.

olwaldi

Ich hoffe, es stört nicht, wenn ich meine aktuellen Erkenntisse bei meinem Problem hier poste ....

1. Ich habe meine notifys robuster gegen Überlauf gemacht (modulo zugefügt, um defekten Wert 99 als 0 zu interpretieren):
define VolUp notify HarmonyController:keypress.*Up set Denon volume {(min(fhem("get Denon volume") % 99 + 5.0, ReadingsVal("Denon", "volumeMax", "")))}
define VolDown notify HarmonyController:keypress.*Down set Denon volume {(max(fhem("get Denon volume") % 99 - 5.0, 0))}


2. Ich glaube, daß DENON_AVR einen Volume-Bug hat. Wenn ich die minimale absolute Lautstärke von 0 erreicht habe, springt die Lautstärke durch Drücken von Vol- der Harmony950 auf +99, sollte aber bei 0 bleiben. Werde ich dort mal nachfragen ...
set Denon volume 0 - jetzt Vol- Taste, und get Denon volume liefert 99 statt erwarteter 0.

Trotzdem sehe ich immer unerwartete roku-Down oder roku-Up Events bei longpress Vol- bzw. Vol+, nie aber roku-Left oder roku-Right. Aber wie sollte fakeRoku derartige Events "selber" erzeugen?!?

justme1968

das modul erfindet keine events. du solltest zu jedem event auch einen passenden log eintrag über den empfang von hub finden.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

olwaldi

Genau das hätte ich auch erwartet. Aber was erzeugt dann roku-Down Events, wenn ich auf der Harmony950 longpress Vol- mache? Vol- als Taste ist überhaupt nicht mit Roku3 in Harmony gemappet, sondern mit dem IR-Kommando Vol- für den Denon3808.

Aktuell vermute ich einen Bug in DENON_AVR, da man dort die Lautstärke unter 0 setzen kann, was zu 99 führt. [Mein notify habe ich gerade im vorigen Post nacheditiert, so daß über die Modulo 99 Funktion dieser (falsche) Wert als 0 interpretiert wird.]

olwaldi

Nachdem die Lautstärkeregelung wie gewünscht funktioniert, stolpere ich jetzt über ein Harmony-Problem (an Logitech gemeldet). Vielleicht hat ja einer von euch eine Lösungsidee:

Ich möchte das Roku3 Gerät von fakeRoku natürlich auch zusammen mit anderen Disc-Playern nutzen. Das klappt prima für einen Denon DVD Player, nicht aber für den Sony BDP 6700. Wenn ich im Hub den Sony BDP mit Roku3 in eine Aktion packe, muß man zwangsweise die Roku-Tastenbelegung nutzen. D. h. aber leider auch, daß die Harmony950 Fernbedienung eine leere Roku-Favouritenliste anzeigt anstelle der Nummerntastatur. Speziell letzteres ist sehr störend, keine Nummerntasten.

Klar, das kann nur Logitech verbessern, aber vielleicht hat jemand eine andere Idee? Ich habe auch versucht, die neue Aktion bei deaktiviertem fhem anzulegen mit gleichem Problem.

erikp152

Zitat von: olwaldi am 25 Dezember 2019, 16:03:40
Ich glaube, jetzt doch eine Lösung gefunden zu haben. Trotz network-online.target wird fhem gestartet, bevor dhcpd eine gültige IP-Adresse erhalten hat. Ich habe lange im Internet gesucht, was man da in Raspbian wo einstellen kann/soll, habe aber keine funktionierende Lösung gefunden.

Daher greife ich jetzt zu einem "brutalen" Workaround. Bevor fhem gestartet wird, wartet eine Endlos-Schleife solange, bis ich google.com anpingen kann. Hier mein Skript WaitOnIP:
#! /bin/bash

PING_CMD="ping -c 1 google.com > /dev/null 2>&1"

while true;
do
  eval $PING_CMD
  if [[ $? -eq 0 ]]; then
    break
  fi
  sleep 0.5
done

Das wird gestartet aus /etc/systemd/system/fhem.service über
ExecStartPre=/opt/fhem/WaitOnIP

Nach einem ersten Versuch hat fakeRoku ein reboot erfolgreich "überlebt".

Nachtrag vom 26.12.: Auch nach einem nächtlichen automatische rebbot meines Raspberry funktioniert fakeroku.

Bei mir funktioniert dein Script als Workaround nicht. FHEM fährt nach der Änderung + Neustart gar nicht mehr hoch - also endlos ;-)
Ist möglicherweise die Stelle in der fhem.service entscheidend, an der "ExecStartPre" eingefügt wird?

olwaldi

Prüf' am Besten zuerst, ob das Skript manuell ausgeführt funktioniert. Wichtig, damit das Skript tut, müssen die richtigen Permissions gesetzt sein:
sudo chmod 755 /opt/fhem/WaitOnIP
sudo chown fhem.dialout /opt/fhem/WaitOnIP

Du kannst das Skript dann bei laufendem Raspberry direkt aufrufen durch /opt/fhem/WaitOnIP, und es sollte sofort ohne Fehler fertig werden. Das Skript setzt auch voraus, daß die DNS-Namensauflösung funktioniert. Ggf. kannst Du anstelle von google.com direkt die IP Deines Routers eintragen, das sollte auch tun. Das ExecStartPre muß vor der Startzeile von fhem eingetragen sein.

Letztendlich ist das Ganze eh' "nur" ein Workaround, weil irgendwo das Netzwerkstarten in Raspbian nicht richtig funktioniert, ich habe einige Zeit in systemd rumgesucht, ohne die Ursache zu finden. Es kann auch sein, daß bei mir noch das "richtigere" Warten in fhem. service
Wants=network-online.target
After=network-online.target

eingetragen ist. Im Original wird auf network.target gewartet, und das ist erreicht, wenn die Netzwerkkarte konfiguriert wird, aber dann ist das Netzwerk selber noch nicht "online".

MadMax-FHEM

Habt ihr die Option in raspi-config aktiviert!?
Dort gibt es auch eine Option auf Netzwerk warten.

Ansonsten habe ich in der dhcpcd.conf eine fixe IP eingetragen (die selbe wie bei meinem DHCP-Server für den PI) und er hängt am Kabel...

Ich konnte das Verhalten (noch) nicht beobachten...

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)