Neues Modul für Hyperion Server 98_Hyperion.pm

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

Vorheriges Thema - Nächstes Thema

DeeSPe

Zitat von: Bootscreen am 02 Dezember 2016, 07:27:55
//Nachtrag:
Ich glaub ich hab grad beim stöbern das Problem gefunden warum hyperion manchmal beim starten von FHEM, FHEM aufhängt.
Und zwar in Zeile 466

    InternalTimer(gettimeofday() + $hash->{INTERVAL},"Hyperion_GetUpdate",$hash,1);

Ich glaub die letzte 1 ist das Problem. Zitat aus dem Wiki (http://www.fhemwiki.de/wiki/DevelopmentModuleAPI#InternalTimer)

Ich denke Du hast Recht!
In Zeile 122 wird der Timer auch gesetzt, dort aber richtig!
Keine Ahnung warum mir in Zeile 466 die 1 hinten dran geraten ist!? :-X

Teste das heute Abend nochmal zu Hause in Ruhe und wenn es keine anderen Probleme verursacht werde ich es einchecken.

Danke für die Fehlersuche!!!! ::)

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

Bootscreen

Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)

Esjay

Hi DeeSPe,

wäre es möglich,einen set Befehl einzubauen, welcher der Hardware (z.B seperater Raspberry) auf der Hyperion läuft nen shutdown Befehl verpasst? Ich weiß,dass dafür der Austausch der Keys ect. nötig ist, und ich denke auch drüber nach, ob es Sinn macht das in diesem Modul aufzunehmen, aber da ich gerne alles unter einem Dach habe, dachte ich, dass ich mal nachfrage.

Habt ihr eure Hyperion Hardware immer am Netz? Ich würde es gern bei Bedarf über eine Funksteckdose zuschalten. Nur wird auf dauer die SD Karte darunter leiden.

Ansonsten wahnsinn, welchen Umfang das Modul mittlerweile hat.

Grüße

DeeSPe

Zitat von: Bootscreen am 02 Dezember 2016, 15:16:11
Freut mich wenn ich helfen konnte =)

Konntest Du! Danke! 8)
Habe ein paar Aktionen damit getestet und das Verhalten hat sich m.E. positiv verändert.
Hab's eben eingecheckt, ist also ab morgen im Update.

Zitat von: Esjay am 02 Dezember 2016, 22:12:43
Hi DeeSPe,

wäre es möglich,einen set Befehl einzubauen, welcher der Hardware (z.B seperater Raspberry) auf der Hyperion läuft nen shutdown Befehl verpasst? Ich weiß,dass dafür der Austausch der Keys ect. nötig ist, und ich denke auch drüber nach, ob es Sinn macht das in diesem Modul aufzunehmen, aber da ich gerne alles unter einem Dach habe, dachte ich, dass ich mal nachfrage.

Habt ihr eure Hyperion Hardware immer am Netz? Ich würde es gern bei Bedarf über eine Funksteckdose zuschalten. Nur wird auf dauer die SD Karte darunter leiden.

Ansonsten wahnsinn, welchen Umfang das Modul mittlerweile hat.

Grüße

Also mein Hyperion RPi hängt direkt hinten am TV.
Auf diesem läuft auch mein FHEM, läuft also eh immer!
Ich persönlich schalte also meist nur zwischen den mode(s) hin und her für die normale Beleuchtung.
Von den ganzen Funktionen die das Modul mittlerweile hat nutze ich auch nur einen Bruchteil, finde es darum aber eben sehr interessant was andere damit umsetzen. :D

Um Deine Frage zu beantworten:
Klar könnte man das in das Modul einbauen da für den Konfigswitch ja eh schon passwordless SSH benötigt wird und somit vorhanden wäre.
Aber ehrlich gesagt sehe ich das nicht als Aufgabe des Hyperion Moduls an einen remote/local Host herunterzufahren. Ich denke dafür gibt es andere Lösung(en). Das Hyperion Modul sollte schon nur Dinge um Hyperion machen. :-[
Eher könnte ich mir vorstellen einen Befehl einzubauen um einen Shutdown des Hyperion Prozesses zu bewirken! Durch setzen einer Konfig Datei kann man ihn ja auch wieder starten! 8)

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

Bootscreen

@esjay du könntest dir das auch mit cmdalias selbst bauen.
define <devname> cmdalias set <hyperion device> shutdown as system(<shell command>)
attr <hyperion device> eventMap shutdown:shutdown

Der Code ist ungelesen da ich schon im Bett liege ^^ sollte er nicht gehn bzw du noch hilfe brauchen muss ich morgen nochmal genauer schauen

Gesendet von meinem Nexus 10 mit Tapatalk

Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)

Esjay

Zitat von: Bootscreen am 02 Dezember 2016, 23:23:21
@esjay du könntest dir das auch mit cmdalias selbst bauen.
define <devname> cmdalias set <hyperion device> shutdown as system(<shell command>)
attr <hyperion device> eventMap shutdown:shutdown

Der Code ist ungelesen da ich schon im Bett liege ^^ sollte er nicht gehn bzw du noch hilfe brauchen muss ich morgen nochmal genauer schauen

Gesendet von meinem Nexus 10 mit Tapatalk

Danke für den Tipp.. Werde es bei Gelegenheit ausprobieren!

Schlimbo

Hallo Dan,
bin gerade wieder etwas am um konfigurieren von meinem Hyperion System, um eine LED Leiste und die Phillips HUE Lampen gleichzeitig ans Ambilight zu koppeln, habe ich jetzt zwei Instanzen von Hyperion auf dem selben Raspberry laufen.
Die erste Instanz gibt die Grabber Werte an die zweite Instanz weiter.
Geänderte Konfig der erste Instanz:
// JSON/PROTO FORWARD CONFIG
"forwarder" :
{
"json" : ["127.0.0.1:19446"],
"proto" : ["127.0.0.1:19447"]
}

https://hyperion-project.org/wiki/Controlling-Multiple-Devices

In FHEM habe ich ein zweites Hyperion Device angelegt. Die zweite Hyperion Instanz starte ich momentan noch manuel auf dem remote Raspberry, wenn ich die HUE Lampen am Ambilight haben möchte.
Zitat von: DeeSPe am 02 Dezember 2016, 22:52:49
Eher könnte ich mir vorstellen einen Befehl einzubauen um einen Shutdown des Hyperion Prozesses zu bewirken! Durch setzen einer Konfig Datei kann man ihn ja auch wieder starten! 8)
Den Befehl zum beenden des Hyperion Prozesses würde ich in diesem Zusammenhang auch sehr begrüßen :)

Sind beide Instanzen gestartet kann ich sie über FHEM steuern. Was aber nicht geht ist die Konfigurationsdateien über das Modul zu änderen, da bei der Umschaltung immer beide Instanzen "gekillt" werden. Ist es möglich hier noch etwas ein zu bauen, damit das Modul auch mit mehreren Instanzen zurechtkommt?

Gruß
Schlimbo

P.S. Danke noch mal für das Attribut "hyperionCustomEffects" und die "effectArgs", das hat einiges wirklich sehr viel einfacher und komfortabler gemacht. 8)

DeeSPe

Zitat von: Schlimbo am 10 Dezember 2016, 16:40:10
Hallo Dan,
bin gerade wieder etwas am um konfigurieren von meinem Hyperion System, um eine LED Leiste und die Phillips HUE Lampen gleichzeitig ans Ambilight zu koppeln, habe ich jetzt zwei Instanzen von Hyperion auf dem selben Raspberry laufen.
Die erste Instanz gibt die Grabber Werte an die zweite Instanz weiter.
Geänderte Konfig der erste Instanz:
// JSON/PROTO FORWARD CONFIG
"forwarder" :
{
"json" : ["127.0.0.1:19446"],
"proto" : ["127.0.0.1:19447"]
}

https://hyperion-project.org/wiki/Controlling-Multiple-Devices

In FHEM habe ich ein zweites Hyperion Device angelegt. Die zweite Hyperion Instanz starte ich momentan noch manuel auf dem remote Raspberry, wenn ich die HUE Lampen am Ambilight haben möchte.Den Befehl zum beenden des Hyperion Prozesses würde ich in diesem Zusammenhang auch sehr begrüßen :)

Sind beide Instanzen gestartet kann ich sie über FHEM steuern. Was aber nicht geht ist die Konfigurationsdateien über das Modul zu änderen, da bei der Umschaltung immer beide Instanzen "gekillt" werden. Ist es möglich hier noch etwas ein zu bauen, damit das Modul auch mit mehreren Instanzen zurechtkommt?

Dieser Missstand ist mir auch schon mal aufgefallen!
Bisher gab es scheinbar nur niemanden der mehr als eine Instanz in Zusammenhang mit dem Modul benutzt! ;)

Sollte eigentlich kein großes Ding sein, muss nur sehen wie ich an die Prozess-ID komme.
Schaue ich mir in den nächsten Tagen mal an, bin gerade leider krank und habe keine Nerven dafür.  :(

Zitat von: Schlimbo am 10 Dezember 2016, 16:40:10
P.S. Danke noch mal für das Attribut "hyperionCustomEffects" und die "effectArgs", das hat einiges wirklich sehr viel einfacher und komfortabler gemacht. 8)

Das freut mich dass es gut angenommen wird.
Ist etwas kryptisch das ganze, aber ich denke das macht man eh nur wenn man weiß was und wie man es tut...
Dazu hilft es doch auch ganz gut, mMn., einen bestehenden Effekt mit neuem Namen kopieren zu können...

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 fällt gerade auf dass die Problematik eigentlich eine Andere ist...

Du müsstest die Instanz die von FHEM kontrolliert werden soll unter einem anderen User starten (vorzugsweise fhem).
Das Modul könnte per Attribut auf diesen User umgestellt werden und würde dann eben nur den Hyperion Prozess dieses Users killen!.
Ich denke das ist der nötige Ansatz, denn wenn alle Instanzen unter dem selben User laufen bekomme ich ja nicht heraus welcher von FHEM kontrolliert werden soll, solange der Prozess nicht von FHEM selbst gestartet wurde. Also z.B. nach Reboot des System und Autostart der Hyperion Instanzen.

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,
danke für den Hinweis, ich habe es gerade mit unterschiedlichen Usern umgesetzt, bin gerade noch am testen, aber es scheint zu Funktionieren. 8)
Es muss bei beiden FHEM Devices das Attribut "hyperionNoSudo" gesetzt werden, da sonst trotzdem beide Instanzen gekillt werden.

"get <name> configFiles" funktioniert momentan nur wenn der Hyperion Prozess läuft, wenn nicht erscheint "Not connected", da das Auslesen der Konfig Dateien aber über SSH geschied sollte dies doch auch ohne laufenden Hyperion Prozess funktionieren, oder?

Das Kommando "set <name> configFile" wird in der set-Liste ausgeblendet wenn nur eine Konfigdatei vorhanden ist, wenn der Prozess nicht läuft und ich Hyperion über das Modul starten möchte wäre es aber gut, wenn er auch bei nur einer Konfigdatei vorhanden wäre.
Oder ist bei dem shutdown Befehl des Hyperion Prozesses auch ein Start Befehl geplant (der Hyperion mit der Letzten aktiven Konfigdatei startet), dann ware dies ja auch hinfällig.
Da ich die Konfigdatei momentan noch oft verändere und der Prozess bei jeder Änderung neu gestartet werden muss, fände ich ein "reload" Befehl auch sehr praktisch.

Gute Besserung und beste Grüße
Schlimbo


DeeSPe

Zitat von: Schlimbo am 11 Dezember 2016, 17:23:01
Hallo Dan,
danke für den Hinweis, ich habe es gerade mit unterschiedlichen Usern umgesetzt, bin gerade noch am testen, aber es scheint zu Funktionieren. 8)
Es muss bei beiden FHEM Devices das Attribut "hyperionNoSudo" gesetzt werden, da sonst trotzdem beide Instanzen gekillt werden.

Schööön.... 8) 8) 8)

Zitat von: Schlimbo am 11 Dezember 2016, 17:23:01
"get <name> configFiles" funktioniert momentan nur wenn der Hyperion Prozess läuft, wenn nicht erscheint "Not connected", da das Auslesen der Konfig Dateien aber über SSH geschied sollte dies doch auch ohne laufenden Hyperion Prozess funktionieren, oder?

Das war auch mal anders gedacht, sollte aber kein Problem sein das zu ändern.
Schaue ich mir mit an wenn ich das killall umbaue auf Prozess-ID.

Zitat von: Schlimbo am 11 Dezember 2016, 17:23:01
Das Kommando "set <name> configFile" wird in der set-Liste ausgeblendet wenn nur eine Konfigdatei vorhanden ist, wenn der Prozess nicht läuft und ich Hyperion über das Modul starten möchte wäre es aber gut, wenn er auch bei nur einer Konfigdatei vorhanden wäre.

Das ist richtig!

Zitat von: Schlimbo am 11 Dezember 2016, 17:23:01
Oder ist bei dem shutdown Befehl des Hyperion Prozesses auch ein Start Befehl geplant (der Hyperion mit der Letzten aktiven Konfigdatei startet), dann ware dies ja auch hinfällig.
Da ich die Konfigdatei momentan noch oft verändere und der Prozess bei jeder Änderung neu gestartet werden muss, fände ich ein "reload" Befehl auch sehr praktisch.

Die Idee gefällt mir gut.
Statt configFile wieder einzublenden wenn nur eine Datei da ist würde es mir denke ich besser gefallen Optionen einzubauen für shutdown und restart.

Ich mache mich in den nächsten Tagen mal ran.

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

BooStar

Hallo DeeSPe,
ich bin neu bei fhem, betreibe aber schon länger ein hyperion-light.. da gefällt es mir natütlich sehr gut, das sich hyperion auch sehr charmant mit fhem kontrollieren lässt... viele Dank dafür!




DeeSPe

Zitat von: BooStar am 15 Dezember 2016, 22:43:44
Hallo DeeSPe,
ich bin neu bei fhem, betreibe aber schon länger ein hyperion-light.. da gefällt es mir natütlich sehr gut, das sich hyperion auch sehr charmant mit fhem kontrollieren lässt... viele Dank dafür!

Gerne! 8)

Ich habe auch mit Hyperion angefangen und dann FHEM kennen gelernt.
Deswegen war es mir ein Bedürfnis ein gescheites Modul dafür zu haben.
Ich freue mich sehr über dieses Lob, denn für viele Andere ist es eine Selbstverständlichkeit dass sich jemand dran setzt und ein Modul schreibt! Zumal dieses Modul das erste war was ich je in Perl entwickelt habe!  ;)

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

denny84blau

Hallo,

erst mal Vielen Dank für das tolle Modul.
Meine Frage: Wie ist es möglich einen Befehl so auszuführen das danach wieder der zuletzt verwendete Zustand eintritt?

Beleuchtung an set hyperionCustomEffects (funktioniert) jetzt aber wieder der alte Zustand?

Vielen Dank schonmal.

DeeSPe

Zitat von: denny84blau am 07 Januar 2017, 13:20:57
Meine Frage: Wie ist es möglich einen Befehl so auszuführen das danach wieder der zuletzt verwendete Zustand eintritt?

Beleuchtung an set hyperionCustomEffects (funktioniert) jetzt aber wieder der alte Zustand?

Verstehe die Frage nicht wirklich!

Man kann effect/rgb über die optionale Angabe der Dauer (duration) in Sekunden einschalten. Danach kehrt Hyperion wieder zum Ausgangsstatus zurück.

Zitateffect <effect> [Dauer] [Priorität] [effectargs]
Stellt gewählten Effekt ein (ersetzte Leerzeichen mit Unterstrichen) mit optionaler Dauer in Sekunden und optionaler Priorität
effectargs können ebenfalls übermittelt werden - muss ein JSON String ohne Leerzeichen sein
Zitatrgb <RRGGBB> [Dauer] [Priorität]
Setzt Farbe im RGB Hex Format mit optionaler Dauer in Sekunden und optionaler Priorität

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