Neues Modul für Hyperion Server 98_Hyperion.pm

Begonnen von DeeSPe, 29 Juni 2016, 18:54:18

Vorheriges Thema - Nächstes Thema

Esjay

Ich melde mich mal zum Kreis der Interessenten.Würde sich ja mit meiner Anfrage bzgl. des smoothing von vor einiger Zeit decken..
Wenn die Zeit es zulässt,werde ich aktiv testen können!
Gruß Stephan

DeeSPe

Zitat von: Esjaycc am 07 August 2016, 18:08:36
Ich melde mich mal zum Kreis der Interessenten.Würde sich ja mit meiner Anfrage bzgl. des smoothing von vor einiger Zeit decken..
Wenn die Zeit es zulässt,werde ich aktiv testen können!
Gruß Stephan

Unter anderem war Deine Anfrage dafür verantwortlich diese Idee bei mir keimen zu lassen. ;)

Ich überlege mir in den nächsten Tagen mal was zur Umsetzung.
Eine Version mit der neuen Funktion werde ich dann wieder hier zum Testen zur Verfügung stellen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

MaMi7880

Zitat von: DeeSPe am 06 August 2016, 18:53:11
Auch wirklich die Dateien für den passwortlosen Zugriff nach /opt/fhem/.ssh verschoben/kopiert? Der User fhem braucht die Dateien nämlich in seinem home Verzeichnis.

Die Steuerung des Hyperion Servers ist auch ohne SSH möglich.
SSH wird nur benötigt um die Konfig Files zu lesen bzw. aufzulisten und dann den Hyperion Server mit anderer Konfig neu zu starten. Wenn Hyperion also eh nur eine Konfig hat, dann brauchst Du SSH gar nicht.

Gruß
Dan

Super, danke... Das war das Problem. Anfänger halt ...
Danke auch an Byte09
RaspberryPi 3 mit nanoCUL & JeeLink | FHEM 6.0 mit IT, HM  - Sensoren/Aktoren & Lacrosse Temp./Humi. | Shelly | Amazon Echo | Logitech Harmony Hub | Philips HUE | andFHEM

Schlimbo

Hallo Dan,
Danke für das tolle Modul, das Einrichten hat ohne Probleme funktioniert.
Wollte es gerade mit dem "msg" Modul verknüpfen und dabei sind mir ein paar dinge aufgefallen:

Wenn ich alle LEDs in einer Farbe blinken lassen möchte, muss ich erst die Farbe setzen "set Hyperion rgb 00ff00" und dann ein "set Hyperion blink 5 1" hinterherschicken.
Habe bemerkt, dass zwischen beiden Befehlen noch eine Pause benötigt wird, da sonnst der erste Befehl ignoriert wird.
Wäre schön, wenn man bei den "blink" Befehl direkt eine Farbe mit übergeben könnte.

Mein Attribute sehen momentan so aus:
attr Hyperion userattr homebridgeMapping lightSceneParamsToSave msgCmdLight msgCmdLightHigh msgCmdLightLow
attr Hyperion msgCmdLight {fhem "set %DEVICE% rgb 00ff00";;;; fhem ("sleep 1;;set %DEVICE% blink 5 1")}
attr Hyperion msgCmdLightHigh {fhem "set %DEVICE% rgb ff0000";;;; fhem ("sleep 1;;set %DEVICE% blink 10 1")}
attr Hyperion msgCmdLightLow {fhem "set %DEVICE% rgb 0000ff";;;; fhem ("sleep 1;;set %DEVICE% blink 2 1")}

Damit funktioniert es auch erst mal.

Das zweite Problem, das ich noch habe ist dass, nach dem Blinken der vorhergegangen Status verloren gegangen ist, ich müsste mir also vor dem blinken die aktuelle Farbe zwischenspeichern und danach wieder setzten.

Dies Könnte einfach behoben werden, wenn man als Parameter die Priorität mit übergeben könnte, so könnte man das Blinken einfach mit einer niedrigeren Priorität setzen, dadurch wird der Ursprüngliche Farbwert nicht überschrieben und ist nach dem Blinken wieder vorhanden.

In der Vergangenheit habe ich das Blinken über den Effect "Strobe white" angetriggert und über den Parameter "effectArgs" die Farbe und Frequenz verändert:
system("hyperion-remote  -p 90 -e "Strobe white" --effectArgs '{"color":[255,0,0], "frequency" : 2.0}'")

Wäre super, wenn es in deinem Modul auch die Möglichkeit gäbe solche "eigene" Befehle zu senden.

Gruß Schlimbo

DeeSPe

Zitat von: Schlimbo am 08 August 2016, 11:48:06
Hallo Dan,
Danke für das tolle Modul, das Einrichten hat ohne Probleme funktioniert.
Wollte es gerade mit dem "msg" Modul verknüpfen und dabei sind mir ein paar dinge aufgefallen:

Wenn ich alle LEDs in einer Farbe blinken lassen möchte, muss ich erst die Farbe setzen "set Hyperion rgb 00ff00" und dann ein "set Hyperion blink 5 1" hinterherschicken.
Habe bemerkt, dass zwischen beiden Befehlen noch eine Pause benötigt wird, da sonnst der erste Befehl ignoriert wird.
Wäre schön, wenn man bei den "blink" Befehl direkt eine Farbe mit übergeben könnte.

Mein Attribute sehen momentan so aus:
attr Hyperion userattr homebridgeMapping lightSceneParamsToSave msgCmdLight msgCmdLightHigh msgCmdLightLow
attr Hyperion msgCmdLight {fhem "set %DEVICE% rgb 00ff00";;;; fhem ("sleep 1;;set %DEVICE% blink 5 1")}
attr Hyperion msgCmdLightHigh {fhem "set %DEVICE% rgb ff0000";;;; fhem ("sleep 1;;set %DEVICE% blink 10 1")}
attr Hyperion msgCmdLightLow {fhem "set %DEVICE% rgb 0000ff";;;; fhem ("sleep 1;;set %DEVICE% blink 2 1")}

Damit funktioniert es auch erst mal.

Das zweite Problem, das ich noch habe ist dass, nach dem Blinken der vorhergegangen Status verloren gegangen ist, ich müsste mir also vor dem blinken die aktuelle Farbe zwischenspeichern und danach wieder setzten.

Dies Könnte einfach behoben werden, wenn man als Parameter die Priorität mit übergeben könnte, so könnte man das Blinken einfach mit einer niedrigeren Priorität setzen, dadurch wird der Ursprüngliche Farbwert nicht überschrieben und ist nach dem Blinken wieder vorhanden.

In der Vergangenheit habe ich das Blinken über den Effect "Strobe white" angetriggert und über den Parameter "effectArgs" die Farbe und Frequenz verändert:
system("hyperion-remote  -p 90 -e "Strobe white" --effectArgs '{"color":[255,0,0], "frequency" : 2.0}'")

Wäre super, wenn es in deinem Modul auch die Möglichkeit gäbe solche "eigene" Befehle zu senden.

Gruß Schlimbo

Hallo Schlimbo,

danke für Dein Interesse an dem Modul.

Der Befehl "blink" ist ein FHEM Standardbefehl und nicht von mir programmiert, sondern nur per SetExtension eingebunden. Somit habe ich auch keinen Einfluss auf diesen Befehl.
Das was Du Dir vorstellst müsste separat in das Modul implementiert werden und das set einen entsprechend anderen Namen bekommen.

Bei Deinen Attributen ist mir aufgefallen dass Du diese auch verkürzen kannst, z.B. so:
attr Hyperion msgCmdLight {fhem("set %DEVICE% rgb 00ff00;;sleep 1;;set %DEVICE% blink 5 1")}
Das zweite fhem("") ist also nicht nötig.

Zu den effectArgs:
Den Effekt zu setzen und dabei die Args selber zu übergeben funktioniert? Habe ich noch nie gemacht/probiert.
Das wäre möglich zu implementieren, zumindest so dass man in dem "set %NAME effect [duration] [priority]" als letzten optionalen Parameter effectArgs mit aufnimmt. Etwa so "set %NAME effect [duration] [priority] [effectArgs]". Die effectArgs müssten aber manuell in raw (JSON) definiert werden.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Schlimbo

Hallo Dan,

Zitat von: DeeSPe am 08 August 2016, 13:15:02
Bei Deinen Attributen ist mir aufgefallen dass Du diese auch verkürzen kannst, z.B. so:
attr Hyperion msgCmdLight {fhem("set %DEVICE% rgb 00ff00;;sleep 1;;set %DEVICE% blink 5 1")}
Das zweite fhem("") ist also nicht nötig.
Danke, das stimmt natürlich. War noch ein Überbleibsel vom Testen.

Zitat von: DeeSPe am 08 August 2016, 13:15:02
Zu den effectArgs:
Den Effekt zu setzen und dabei die Args selber zu übergeben funktioniert?
Ja, das funktioniert ganz gut so.

Zitat von: DeeSPe am 08 August 2016, 13:15:02
Das wäre möglich zu implementieren, zumindest so dass man in dem "set %NAME effect [duration] [priority]" als letzten optionalen Parameter effectArgs mit aufnimmt. Etwa so "set %NAME effect [duration] [priority] [effectArgs]". Die effectArgs müssten aber manuell in raw (JSON) definiert werden.
Das hört sich super an.

Könntest du dann den "Priority" Parameter auch als Option bei den "rgb" Befehl mit aufnehmen? "set %NAME rgb ffffff [priority]"

Gruß
Schlimbo


DeeSPe

Zitat von: Schlimbo am 08 August 2016, 14:13:21
Könntest du dann den "Priority" Parameter auch als Option bei den "rgb" Befehl mit aufnehmen? "set %NAME rgb ffffff [priority]"

Genau das gibt es doch schon. Zumindest habe ich das so dokumentiert und damit sollte es auch funktionieren:
set %DEVICE rgb <RRGGBB> [duration] [priority]

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Schlimbo

Oh sorry, das habe ich komplett übersehen.
Hatte nur hier im Thread nach "priority" gesucht und nichts gefunden. :-X

DeeSPe

#98
Kein Ding, ist in der commandref dokumentiert. ;)

Gruß
Dan

EDIT: Hier im Thread sind nur die wichtigsten Features aufgeführt. Zum Nachlesen aller Möglichkeiten mit dem Modul wird die commandref immer aktuell gehalten.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

#99
Habe soeben ein kleines Update eingecheckt:

Changelog:

  • Neues Attribut hyperionNoSudo hinzugefügt, damit ist es nun möglich auch als nicht-root Benutzer die Befehle ohne sudo auszuführen (falls man dem Benutzer auf anderem Wege die Berechtigung dazu erteilt hat)
  • Zurückgenommene Änderung: Autoreload nach "get configFiles", werde es in einem zukünftigen Update wieder mit einer besseren Lösung implementieren

Das Speichern der Konfig Dateien ist hier noch nicht dabei, ich arbeite noch dran.

Ab morgen im Update.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

Mir ist heute Abend noch ein mittelschwerer Bug im Modul aufgefallen, gut dass ihn bisher noch keiner festgestellt bzw. berichtet hat. Sollte ich der Einzige sein dem es aufgefallen ist??? Na gut egal, ich arbeite an einer Lösung und werde so bald es geht ein Update einchecken (KEIN SICHERHEITS- ODER PERFORMANCEPROBLEM, ein Anfängerfehler...).  >:(

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

Ich denke ich konnte meinen Anfangsfehler beheben!
Es war allerdings mehr Aufwand als gedacht.
Werde die Änderungen heute Abend nochmal ausführlich testen und wenn alles wie vorher läuft, dann checke ich heute Abend die fehlerbereinigte Version ein.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

MaMi7880

Hallo,

ich muss jetzt doch noch mal nachfragen. Für was genau ist der Parameter "priority"?
So richtig konnte ich das aus der commandref nicht ersehen oder habe ich es überlesen?

Gruß
Manu
RaspberryPi 3 mit nanoCUL & JeeLink | FHEM 6.0 mit IT, HM  - Sensoren/Aktoren & Lacrosse Temp./Humi. | Shelly | Amazon Echo | Logitech Harmony Hub | Philips HUE | andFHEM

DeeSPe

Das ist in der commandref nicht weiter erklärt weil es nichts Modul Spezifisches ist.
Auf der Hyperion Webseite kannst Du nachlesen was es mit der Priorität auf sich hat.
Kurz, damit priorisiert man Schaltaufträge wenn Du mehrere Sachen zeitlich hintereinander setzen willst.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

MaMi7880

Zitat von: DeeSPe am 10 August 2016, 21:57:45
Das ist in der commandref nicht weiter erklärt weil es nichts Modul Spezifisches ist.
Auf der Hyperion Webseite kannst Du nachlesen was es mit der Priorität auf sich hat.
Kurz, damit priorisiert man Schaltaufträge wenn Du mehrere Sachen zeitlich hintereinander setzen willst.

Gruß
Dan

Vielen Dank...
RaspberryPi 3 mit nanoCUL & JeeLink | FHEM 6.0 mit IT, HM  - Sensoren/Aktoren & Lacrosse Temp./Humi. | Shelly | Amazon Echo | Logitech Harmony Hub | Philips HUE | andFHEM