Plugin

Hallo Zusammen,

ich plane ein kleines PanasonicTV Modul zu bauen. Leider kann man den TV nicht nach seinem Zustand fragen.
Statt dessen muss man ein SUBSCRIBE für eine URL (Webhook) hinterlegen. Dann sendet der Fernseher automatisch ein Event bei Änderung des TVs.

Dafür habe ich aktuell manuell ein WebHook auf ein Script gelegt. Jetzt würde ich aber gerne Plugin draus machen. Kann ich auch ein Webhook aus einem Modul heraus erstellen lassen? Und wenn ja wie.

Je nachdem ab welcher Version das PHP Modul laufen soll must Du entweder eine oder zwei Funktionen nutzten. Ab 4.1 sind keine externen Skripte notwendig, die Funktion ist dann private.
Siehe z.B. hier da kannst Du sehen wie so was aussieht, ansonsten fragen.

Entgegen genommen werden die Daten dann von ProcessHookData.

Schau mal hier:
SymconTest/module.php at master · symcon/SymconTest · GitHub

RegisterHook um ihn zu erstellen.
Und ProcessHookData um die ankommenden Daten auszuwerten (protected nicht privat!).

Was noch fehlt ist UnregisterHook wenn Destroy beim Löschen der Instanz aufgerufen wird.
Das kannst du z.B. hier klauen.
IPSSqueezeBox/SqueezeBoxTraits.php at 4.3Beta · Nall-chan/IPSSqueezeBox · GitHub

Das hört sich sehr nach DLNA an; ich hatte mal ein Modul für Samsung angefangen.
Gleiche Idee, ein Subscribe senden und Ziel ist der Webhook.
Leider sendete mein TV keine Events, es ging nur pollen :frowning:
Michael

Korrekt das ist UPnP/DLNA. Anders bekomme ich einfach nicht den Status vom TV. Und die RC Befehle sind halt immer Toggle.

So meine Plugin ist soweit fertig.

[Beta] PanasonicTV

Danke für den Support

Hi

mir ist gerade aufgefallen, dass ich in meinem PanasonicTV die IP-Adresse statisch codiert habe :banghead:.
Jetzt wollte ich das gerade korrigieren, aber wie komme ich an die aktuelle IP-Adresse oder an eine Liste (ähnlich wie bei den Homematic I/O)

Sys_GetNetworkInfo — IP-Symcon :: Automatisierungssoftware
Ist meine ich ab 4.4 auch für alle OS verfügbar.
Michael

Unter Linux, mit aktueller IPS v5, liefert mir „Sys_GetNetworkInfo“ keine Ausgabe. Bzw. nur ein leeres Array…

Ich gehe zum Ermitteln der IP unter Linux über diesen Weg (eth0 anpassen auf sein Interface … oder die Abfrage „allgemeiner“ gestalten):

$IP = trim(shell_exec("ifconfig eth0 | grep \"inet \" | awk -F'[: ]+' '{ print $4 }'"));

Grüße,
Chris

Danke für die Info. Ist für mich erstmal keine Lösung, da ich ja eine Variante brauche die bei jedem geht.
Daher hoffe ich das der Fehler noch behoben wird.

Unabhängig davon solltest du nicht mehr ifconfig nutzen, einige System installieren ifconfig nicht mehr, da es seit Jahre eigentlich deprecated ist.

Nutze ip für solche Abfragen, z.B.

ip addr show dev enp2s0 | grep "inet " | awk -F'[: ]+' '{ print $3 }'

Sys_GetNetworkInfo liefert bei mir auf 4.4 ebenfalls keine Daten.