Modulentwicklung: Feld Beschreibung füllen

Hi,

ich hatte Hoffnung dass es möglich sein sollte beim Anlegen eines neuen Modules das Feld „Beschreibung“ mit Text zu füllen.

Da dieser Text also bereits beim ersten Erstellen der Instanz erscheinen soll und nicht erst später gehört er normalerweise rein in die Datei module.json.

Hoffte ich, aber es will nicht glücken:
„moduleinfo“: „Beschreibungstextbeispiel“,
„ModuleInfo“: „Beschreibungstextbeispiel“,
und viele weitere Varianten getestet, er mag mich nicht.

IPS_SetInfo klappt zwar im Nachhinein, es sollte aber vorher erscheinen.

neueInstanz.png

Hat jemand einen Tip?

Schön wäre es für jede einzelne Instanz eine URL hinterlegen zu können um so gezielt zu den richtigen Informationen zu gelangen.
In der Datei library.json ist es ja vorgesehen, nur diese URL gilt ja global für alle.

mfg

BerndJ

So mal langsam… ich verstehe irgendwie nicht was du möchtest :smiley:

Ja… mach das doch. Die Methode in der du das machen könntest wäre Create oder u.U. ApplyChanges.

Was hat denn die Beschreibung des PHP-Moduls mit dem nachher in IPS erzeugten ‚IPS-Objekt‘ zu schaffen ?
Ok. IPS-Instanzen sind auch IPS-Objekte. Aber die IPS-Objekt Eigenschaften und die Eigenschaften von der IPS-Instanz haben doch erstmal nichts miteinander zu tun. Lediglich den Namen des neuen Objektes leitet IPS, aus dem ersten Alias oder dem Namen des PHP-Moduls, ab.

Wie vorher ? Create wird beim erzeugen einer IPS-Instanz aus deinem PHP-Modul aufgerufen. Da sollte das schon gehen (ungetestet). Sonst spätestens im ApplyChanges, weil da muss das IPS-Objekt schon existieren.

Was für Informationen :confused:
Ich glaube aktuell wird die URL aus der Library noch gar nicht weiter in IPS angezeigt / verwendet.
Selbst der Modul-Loader nutzt die glaube ich nicht.

Michael

Hi Michael,

also in der Datei module.php, richtig?

ich hab das Problem dass meine Leiterplatten i.d.R. als eierlegende Wollmilchsäue generiert werden. Da sitz ein Prozessor drauf, es gibt mehrere Bestückungsvarianten und dann noch die Vielfalt an einsetzbarer, natürlich gravierend unterschiedlicher Firmware.

Es kommt noch schlimmer: die erste Leiterplatte steuert dann weitere an, die eine ebenso grosse Vielfalt an Varianten bieten.

Also war die Idee:
wenn denn schon die neuen IPS-Module nutzen,
dann sollte dort eindeutig klar erkennbar sein,
wie, womit, Firmware und alles weitere sollte sauber erkennbar sein…
… und da bot sich das Feld Beschreibung an.

mfg

BerndJ

PS: könntest Du dir vorstellen zum Thema IPS Modulentwicklung einen Samstagnachmittag Workshop abzuhalten?
Habe Hoffnung dass wir im Hamburger Bereich 10 Interessenten aus unseren Reihen zusammen bekommen könnten.

Yes… und dann wie du ja schon sagtest mit SetInfo.

Mhhh ja. Da kannst du natürlich zig Ideen entwickeln und zig Wege versuchen zu gehen.
Je nachdem wie groß die Unterschiede sind; gerade auch in Bezug auf die eigentliche ‚Funktion‘.

[ul]
[li]Im Einstellungsdialog z.B. die Firmware auswählbar machen
[/li][li]Versuchen bei der Methode ApplyChanges die CPU/Firmware/Funktion auszulesen
[/li][li]Verschiedene Module bauen, welche aber alle von einer eigenen Basis-Klasse abgeleitet werden wo alle Grundfunktionen aller Platten enthalten sind
[/li][li]usw
[/li][/ul]

Hier ist dann auch die Frage der ‚Schnittstellen‘ bzw. wie Diese untereinander kommunizieren.
Du kannst das ‚Ganze‘ ja in IPS mit z.B. einen Splitter für die einzenen Platten umsetzen und dahinter wieder Instanzen für die weiteren Platten. Zumindest theoretisch, kommt auch sehr auf die Nutzdaten bzw, dein Protokoll an.

Du kannst das Feld ja auch dynamisch beschreiben.
Also ich stelle z.B. in der Instanz ein:

  • Firmware 1.0x
  • Hardware 2.0
    Dann setzt dein Modul in der Methode ApplyChanges die Beschreibung auf dieses Modul und liefert auch gleich den Link mit :smiley:

Öhhh… nun schmeichelst du mir :smiley:
Ich bin auch nur Generaldilettant der einfach viel ausprobiert und dafür seine Freizeit opfert.
Aber wenn Interesse besteht, würde ich es machen.
‚Ihr‘ könnt ja auch mal nach Lübeck kommen und wir stürmen das HQ :stuck_out_tongue:

Michael

Na, da würde ich auch kommen.

Das wäre ja mal interessant.

Ein Workshop für Modulentwicklung, genial.

Gruß Helmut

Hi,

dann sind wir schon 3.

HQ, Idee ist gut, aber die Räumlichkeiten geben das nicht her.

@ MST oder Paresy:
oder was kostet bei euch im Hause (unten hat doch der Vermieter einige) so ein Raum?, Samstagrabatt??

Sinnigerweise wäre ein Tagungsraum mit entsprechender Technik hilfreich.

mfg

BerndJ

Mir würde es ja schon reichen wenn wir Paresy & Pio die Doku zum SDK entreißen könnten :smiley: :wink:

Michael

Wäre das weiter in der Mitte von Deutschland (Raum Frankfurt :D), hätte ich daran auch Interesse :slight_smile: Nur bis hoch in den Norden ist es leider doch etwas weit :frowning:

Edit: Nall chan könnte ja eine Deutschland-Workshop-Tour machen :smiley: :cool:

Grüße,
Chris

Scherzbold,

hab hier mal was zu los gelassen. Die existiert in Form chemischer Verbindungen in den Gehirnzellen von Michael!

Aber lass ihn lieber weiter proggen, mit Deiner Unterstützung kriegen wir das Puzzle ja auch entknotet.

mfg

Bernd

War ja schon ‚etwas‘ ernst gemeint. :wink:

Immerhin hat er es ja zugesagt (Neue Funktion: Module).
Und die Konfig-Dateien sind ja auch schon dokumentiert.
Konfigurationsformulare — IP-Symcon :: Automatisierungssoftware

Es fehlt aber auch einfach noch zu viel in den Modulen bzw. es sind noch ein paar nervige Bugs enthalten.
Bevor da nicht endlich Ruhe eingekehrt ist, wird wohl auch wenig in Richtung Doku passieren.

Aber wirklich… diesen ganzen Michales hier sind echt eine Plage… Einer verknotet was und der andere soll es richten :D:D

Nun wird es aber doch zu sehr OT…

Bin dann auch mal ‚verknoten‘… in den Untiefen meines aktuellen Projekts.

einer der unzähligen Michael’s

Hi Michael,

irgend wie steh ich immer noch auf Kriegsfüssen mit der objekt orientierten Programmierung.

Bei folgenden Zeilen läuft 3 und 4.

                        IPS_SetInfo($this->GetIDForIdent("InstanceID"), "ModulBeschreibungsmustertext");
                        // auch IPS_SetInfo($this->GetIDForIdent("ModulID"), "ModulBeschreibungsmustertext");
                        $this->RegisterVariableBoolean("Relais1", "Relais 1", "~Switch", 1);
                        IPS_SetInfo($this->GetIDForIdent("Relais1"), "Beschreibungsmustertext");

Zeile 1 mag mich nicht, deshalb kurz die Frage, auch wenn Sie dämlich sein mag, … soo viel Bäume vor den Augen:

wie sprech ich die erzeugte ID des Modules an?

mfg

BerndJ

Ja das kenne ich mit OO… ist auch nicht immer so mein Fall :slight_smile:


IPS_SetInfo($this->InstanceID, "ModulBeschreibungsmustertext"); 

Die Eigenschaft InstanceID enthält immer die zu dieser Instanz gehörigen IPS-ID.
Somit braucht es um auf sich selbst zu zeigen auch keine GetIDForIdent- Methode.

Michael (so nun Sofa, genug die arme Maus gedrückt :smiley: )

Wer ist gestorben … :eek:

Ja… es war wohl etwas spät [emoji4]
Habe es mal verbessert.
Michael

Hi Michael,

hab´s letzte Nacht nicht mehr zum Laufen bekommen.

Heute morgen dann die Erkenntnis (per Zufall):

Einmal IPS beenden und neu starten, dann isses drin.

@Paresy: ist das ein Bug?

mfg

BerndJ


 IPS_SetInfo(0, "abcd");

Habe das mal getestet und bei mir setzt er das Info Feld sofort.

paresy

Hi,

bei mir steht der obige Aufruf in der module.php.

Egal ob im create oder applychanges Bereich, das Referenzieren auf InstanceID klappt erst nach einem Neustart.

mfg

BerndJ

Also im Create geht es nicht.
Weil erst erstellt IPS ja die Instanz und füllt dann das Objekt mit den Werten aus dem, Eingabefeld, welches dir beim anlegen angezeigt wurde. Es wird also sofort überschrieben.

Im Applychanges geht es bei mir aber auch sofort (nachdem ich die Einstellungen einmal übernommen habe, da sonst diese Methode ja nicht aufgerufen wird.

Die Idee ist echt praktisch, in den einen oder anderen Modul werde ich das auch einbauen :slight_smile:
Nur überschreibt es dabei natürlich die Eingaben von dem User… immer.

@Paresy
Was mich noch mal an das SetSummary erinnert… diese Funktion fehlt den Modulen noch.

Michael