[Modul] HMInventory

Hallo zusammen,

ich habe das bereits bestehende HM_Inventory Skript zur leichteren Installation in ein Modul gepackt und dabei noch um ein paar Funktionen erweitert.

Das Modul holt sich nun über die XML-RPC Schnittstellen die Daten aller HM-Geräte (‚listDevices‘) und ergänzt sie um die RSSI Werte (‚rssiInfo‘ bzw. ‚getParamset‘). Die sortierten Daten werden dann als html-Datei aufbereitet.

ausgewiesene Daten

[ul]
[li]++: laufende Nummer
[/li][li]IPS ID: Objekt ID in Symcon
[/li][li]HM address: Homematic Geräte Adresse
[/li][li]HM device type: Homematic Typbezeichnung
[/li][li]Fw.: Firmware Version
[/li][li]HM channel type: Kanaltyp
[/li][li]Dir.: Sender (TX) oder Empfänger (RX)
[/li][li]AES: Verschlüsselung ein-/ausgeschaltet (+/-)
[/li][li]Roaming: Roaming ein-/ausgeschaltet (+/-)
[/li][li]tx/rx (dbµV): Sende-/Empfangsstärke je Interface
[/li][/ul]

Was wird benötigt

[ul]
[li]Homematic Gateway (z.B. CCU)
[/li][li]IP-Symcon 5.0
[/li][/ul]

Installation

https://github.com/bumaas/HMInventory.git

Alles weitere findet ihr in der ReadMe.

Meinen Dank an dieser Stelle an alle, die mich beim Testen kräftig unterstützt haben!

Viele Grüße

Burkhard

Hallo,

habe gerade das HM_inventory Modul von bumaas (Danke!!) geladen. Es wird in der neuen Console (chrome) nicht angezeigt. In der alten ist es vorhanden.

Grüße, Gerhard

Tatsächlich, es verschwindet :eek:

GUID nicht geändert oder Doppelt?
Wäre so mein erster Tip.
Steht was im Logfile?
Michael

Im Logfile ist alles in Ordnung. Man kann auch eine Instanz anlegen und sie funktioniert dann auch.

Auffällig ist lediglich, dass das Modul in der Legacy Konsole als fehlerhaft angezeigt wird (missing Module.json).

Der Lib - Ordner muss libs heißen.
Außerdem wäre es gut, wenn phpxmlrpc-4.3.0 ebenfalls auf GitHub liegt, es als Submodul einzubinden und nicht selber als Kopie.

Ein paar Anmerkungen von meiner Seite:

Die Instanz zu finden ist schwer… weder unter Hersteller Homematic noch fängt die Instanz mit Homematic an, sondern mit HM
Dann funktioniert das ganze bei mir auch nicht, sofern die Namen abgefragt werden (default ist an):
Fatal error: Maximum execution time of 30 seconds exceeded in C:\IP-Symcon\modules\HMInventory\HM_Inventory\module.php on line

Sonstiges:

[ul]
[li] Per default ein Output-File einzutragen ist dreist… das muss ich jetzt erst auf dem entfernten Server löschen… NoGo.[/li][li] Ich will das HTML im WebFront haben… aber ich darf aus dem Webfront nicht per …/ ausbrechen. Also ist das Outputfile nicht ab Werk zu nutzen bis ich den Pfad anpasse.[/li][li] Schöner wäre eine String-Variable mit HTMLBox-Profil. Oder Bereitstellung der HTML-Datei als Webhook.[/li][li] Das Debug ist leer… keine Ahnung ob überhaupt irgendwas passiert.[/li][li] Dein filter_var für die Eigenschaft Host funktioniert nicht… ist bei mir immer ‚gültig‘ auch bei Quark.[/li][li] Die Einstellung der CCU-Adresse ist aber eh unnötig, dazu die Instanz hinter den HM-Socket hängen und dessen Einstellung auslesen.[/li][li] Deutsche Übersetzung fehlt komplett.[/li][li] Anstatt Teile vom HMExtended Modul zu duplizieren, hätte man die HM Remote-Script Instanz als Eigenschaft in der Form angeben können. Wobei in IPS die IPS-Name ja wohl wichtiger sind als die Namen auf der CCU ;)[/li][li] Es ist möglich einen Negativen Timer zu erzeugen, wenn ein negativer Intervall eingetragen wird -> wird nicht geprüft oder abgefangen bzw. der Timer auf 0 gesetzt. [/li][li] In der Doku ist Kapitel 4. Funktionsreferenz leer… stattdessen taucht ein Befehl im Anhang auf.[/li][li] Im engeren Sinne ist dies kein Modul. Es ist ein Timergesteuertes Script mit ein paar Einstellmöglichkeiten welches eine Datei erzeugt… von 780 Zeilen Code sind 580 das ‚Auslese-Skript‘. [/li][li] Wie kann ich das Design der Tabelle anpassen, dass es z.B. zum LightSkin passt ?[/li][li] listBidcosInterfaces, listDevices sowie rssiInfo stehen auch über den Datenaustausch mit Homematic-Socket zur Verfügung. Somit ist phpxmlrpc-4.3.0 unnötig.[/li][/ul]

Michael

Mensch Michael,

da wirst Du aber Deinem Untertitel „handzahmer Drache“ nicht ganz gerecht. :slight_smile:

Der arme Bumaas muss da ganz schön nacharbeiten. Aber trotzdem super, dass Du ein Modul entwickelst. Und durch das Feedback kann man sich ja gut weiterentwickeln.

Gruß
Christian

Bei ‚Modulen‘ bin ich immer gemein :stuck_out_tongue: :rolleyes:

Nein, ganz ehrlich. Es ist toll wenn User Module schreiben.
Finde es immer nur Schade, dass einfach Scripte (wie hier das HMInventory) in Modulform gepresst werden ohne einen Mehrwert zu generieren.

Mehrwert wäre also ich kann alles inkl. Design oder Skin der HTML-Ausgabe komfortabel in der Console einstellen.
Oder, was bei Scripten ja nicht funktionierte, ich hänge mich per Datenaustausch an den Homematic-Socket und frage die Werte darüber ab; löse mich also von der phpxmlrpc-Lib.
‚zur leichteren Installation in ein Modul gepackt‘ ist auf jeden Fall kein Mehrwert der es rechtfertigt das ein Modul zu nennen.

Und somit sehe ich aktuell den Mehrwert nicht (zum Script).

Michael

Oh je, so ein kleines Modul und gleich so große Kritik?

Mich hatte paresys engagierter Vortrag auf dem Preview Event überzeugt, mehr in Module zu investieren. Nachdem ich in dem Skript die rpc Probeme gelöst und noch ein paar Erweiterungen eingebaut hatte, möchte ich sie allen zur Verfügung stellen. Und da bieten Module schon deutlich bessere Möglichkeiten bezogen auf die Verteilung, die Installation und auch die gemeinsame Entwicklung.
Dabei war es nicht mein Anliegen, das Skript komplett neuzuschreiben. - Hatte nicht gedacht, dass die Hürde doch so groß ist.

Nun aber zu den einzelnen Punkten:

Das ist dann wohl der Auslöser für die Fehlermeldung gewesen? Seltsamerweise wird im Logfile beim Laden nicht auf die Situation hingewiesen. Auch in der Entwicklungsumgebung, wo das Modul lokal installiert ist, wird es als korrekt angezeigt.:confused:

Keine Ahnung wie das geht. Die Hürde war mir (noch) zu hoch. Bin mir auch nicht sicher, ob das etwas bringt, da ja die Version im Pfad ist.

Das steht deutlich in der Doku :slight_smile:

Das muss ich mir mal anschauen. Vermutlich ist dein System ‚etwas größer‘. Kannst du mir noch die Zeilennummer nennen?

Das verstehe ich jetzt nicht. Es ist doch nur ein Default, der einem das Tippen des Pfadnamens erleichtern soll.

Der Pfad ist beliebig setzbar.

Es war nicht mein Ansatz, das Skript grundlegend zu überarbeiten. Bin aber an Vorschlägen - am besten über PullRequests :smiley: - immer interessiert.

Die Punkte schaue ich mir an. Sehen nicht korrekt aus.

Klingt interessant. Hast du ein Beispiel?

Was meinst du damit? Sollte ich es als Modul zurückziehen? Es wird ja sicherlich mal eine Modulbibliothek geben, die auch über Aufnahmekriterien verfügt. Wenn es soweit ist, muss man sich das Ding halt nochmal ansehen.

Danke für den moralischen Rückhalt :slight_smile:
Die Nacharbeit ist bei näherer Betrachtung gar nicht so groß. Wie gesagt, ich wollte das Rad nicht neu erfinden, sondern das bestehende Skript lediglich in überarbeiteter Form in einer leicht installierbaren und wartbaren Weise anderen zur Verfügung stellen. Nun - als Modul - steht ja jedem die Mitarbeit offen, die ich auch sehr schätzen würde.

Ich hoffe ich habe nichts übersehen und mache mich dann mal an die Arbeit …:slight_smile:

Gruß

Burkhard

Ich habe eine neue Version abgestellt:

neu:

  • debug Ausgabe hinzugefügt

korrigiert:

  • Name des lib Verzeichnisses angepasst
  • ‚status‘ Bereich fehlte in Form
  • ReadMe aktualisiert

Nun funktioniert auch die Anzeige in der Webbasierten Konsole wieder.

Gruß

Burkhard

Hallo Burkhard,
vielen Dank für das Modul. Ich bekomme folgende Meldung angezeigt:

HM Inventory.PNG

Hallo Stefan,

aber gerne.

Die Meldung kannst du ignorieren. Siehe hier.

Gruß

Burkhard

Hallo Burkhard,

habe Dein Modul installiert. Folgendes ist mir aufgefallen:

Wenn ich den Punkt „Save Device List in Variable“ aktiviere, kriege ich auch eine Variable angelegt mit dem Format String. Aber darin sind keine Instanzen gelistet sondern nur das Wort False. Die HM_Inventory.html ist aber vorhanden und auch mit Instanzen gefüllt. :confused:

Was ich noch nett finden würde, wenn Dein Modul die HM_Inventory.html als Variable anlegen würde (String -> ~HTMLBox). Kann aber auch sein, dass er das eigentlich macht und bei mir nur „FALSE“ reinschreibt. :o

Im Meldungsfenster kommt kein Hinweis, das etwas nicht geklappt hat.

Anbei noch der Debug-Verlauf:

HM_Inventory_Dump.zip (63.6 KB)

Viele Grüße,

Burkhard

Hallo Burkhard,

dein Problem kann ich leider bei mir noch nicht nachvollziehen. Es sieht so aus, als ob json_encode ein Problem hat:confused:

Könntest du in Zeile 460 einmal die Kommentarzeichen entfernen und kontrollieren, ob da ein Array ausgegeben wird? Das hilft eventuell weiter.

print_r($HM_array);

Gruß

Burkhard

Hallo Burkhard,

eine Liste mit Arrays wird aufgebaut. Sind über 300 und wie folgt aufgebaut:

Viele Grüße,

Burkhard

Lösung gefunden:

Wenn beim Ausführen von „create Report“ zwar die Instanzen abgefragt und in die HM_inventory.html geschrieben werden, aber bei aktiviertem „Save Device List in Variable“ nur ein „False“ erscheint, liegt der Fehler evtl. an der UTF-Codierung.

Gemerkt habe ich es beim Ansehen der Instanzenliste der HM_inventory.html im Browser. Dort waren noch einige Altlasten zu sehen, wo die Instanzen anstelle von Umlauten nur Fragezeichen aufwiesen.

Um dies zu bereinigen geht man in der Konsole auf Kern Instanzen -> Utils -> Alle Fehler beheben. Danach im HM Inventory Report Creator erneut auf „create Report“ klicken und dann sollte die Variable korrekt gefüllt werden. Hat bei mir jedenfalls funktioniert.

Dank an Burkhard (bumaas) für den perfekten Support. ;):smiley:

Viele Grüße,

Burkhard

Hallo Burkhard,

nun zu deiner zweiten Frage :slight_smile:

zwei Gründe, die für mich momentan dagegen sprechen:

[ul]
[li]Die HTML Datei, die erzeugt wird, ist nicht mehr ‚state-of-the-art‘. Sie beinhaltet eine ganze Reihe von ‚deprecated html tags‘ und müsste mal umgeschrieben werden.
[/li][li] Wenn man die Ausgabe in seinem Webfront ausgeben möchte, wäre es natürlich auch schön, wenn der eingestellte Skin berücksichtigt würde.
[/li][/ul]

So eine unfertige Seite möchte ich nur ungerne für das Webfront anbieten. Leider kann ich aber kein html und bräuchte dafür Unterstützung…

Aber wenn du mit den Einschränkungen leben kannst , kannst du dir leicht selber helfen. Leg einfach eine eigene String-Variable mit dem Profil ~html an und übernehme den Inhalt der Datei in die Variable :loveips::

$id_HM_ReportGenerator = 10064 /* anzupassen */;
$id_HTML_Variable = 13012 /* anzupassen */;

$filename = IPS_GetProperty($id_HM_ReportGenerator, 'OutputFile');
$str = file_get_contents($filename);

SetValue($id_HTML_Variable, $str);

Gruß

Burkhard

Hallo Burkhard,

ich kann manchmal den Report Creator nicht öffnen (Text und Ausrufezeichen rot), bekomme statt dessen die Fehlermeldung: ‚InstanceInterface not available‘. Im Log sehe ich keine Fehlermeldungen, die ich da zuordnen könnte.
Woran kann es liegen? Die zugehörige pivccu ist verbunden und zeigt keine Fehler.

Grüße, Gerhard

Da bin ich momentan ratlos. Kannst du genauer sagen, wann es auftritt und wie du die Meldung wieder weg bekommst?
Wie oft kommt die Meldung (täglich, wöchentlich)?

Hallo Burghard,

ich muss den Creator neu anlegen. Kam bisher 3 - 4 mal vor, Abständen gefühlt eher unregelmäßig.

Grüße, Gerhard