…so Stück für Stück wird es - Danke!
Joachim
…so Stück für Stück wird es - Danke!
Joachim
Hallo Paresy,
unterliegt der „prefix“ in der Datei module.json eigentlich irgendwelchen Konventionen hinsichtlich Länge, Groß-/Kleinschreibung, Sonderzeichen usw?
Joachim
Wäre schön wenn das ausführen eigener Modul-Funktion gefixt wird, ohne das braucht es kein Prefix.[emoji33]
Wenn das endlich funzt und die Timer auch laufen, ist die Homematic-Erweiterung fertig von Delphi in PHP konvertiert. [emoji4]
Michael
…ich weiß nicht warum, aber ich kann keine Bilder mehr hochladen…
Wie auch immer: Grundsätzlich kann ich ja jetzt die Funktionen in dem Modul ansprechen, jedoch habe ich jetzt zwei Probleme:
Joachim
Das Problem mit dem redeclare von Funktionen habe ich auch.
Nach einen Update von einem Modul stehen die doppelt in der __generated.inc.php
Außerdem nutze ich in meinem HM-Modul die Original HM_WriteValue* Functionen.
Da kommt dann der Fehler dass die Functionen schon in __function.inc.php deklariert wurden.
Ideen ?
Update:
Auch auskommentierte public function werden in die __generated eingetragen
Update 2 zu den Funktionen:
Und nun wirklich genug gespielt heute
Michael
Bin ich auch gerade auf die Nase gefallen :
<?
function GEO_ProcessHookData($InstanceID)
{
return JSONRPC::GEO_ProcessHookData($InstanceID);
}
function IOT_Send($InstanceID, $Text)
{
return JSONRPC::IOT_Send($InstanceID, $Text);
}
function IOT_Send($InstanceID, $Text)
{
return JSONRPC::IOT_Send($InstanceID, $Text);
}
function IOT_Send($InstanceID, $Text)
{
return JSONRPC::IOT_Send($InstanceID, $Text);
}
function IOT_Send($InstanceID, $Text)
{
return JSONRPC::IOT_Send($InstanceID, $Text);
}
function IOT_Send($InstanceID, $Text)
{
return JSONRPC::IOT_Send($InstanceID, $Text);
}
function IOT_Send($InstanceID, $Text)
{
return JSONRPC::IOT_Send($InstanceID, $Text);
}
Die „function IOT_Send“ wird mehrfach angelegt, nach löschen vom Modul „symconTest“ und wieder Hinzufügen, sind die Einträge mehrfach vorhanden.
Habe alle doppelten rausgeworfen, dann geht erst mal wieder alles.
Werde mich da mal Morgen drum kümmern. Da ist definitiv noch was nicht in Ordnung.
paresy
Hallo Paresy,
hat sich bei den Modulen schon etwas getan? Haben bisher keinen Hinweis darauf gefunden - was bei mir auch mal heißen kann, dass ich etwas übersehen habe…
Joachim
Wäre schön wenn der PHP-Klebstoff funzen würde
Und dabei noch der Bug beim Datenaustausch mit dem Parent beseitigt wird.
Habe mich nur nicht mehr getraut zu nerven ähh… fragen.
Michael
Für die wichtigsten Probleme gibt es im nächsten Update fixes. Hast du noch kurz einen Schubser, was du mit dem Datenaustauschproblem meinst?
Habe einige schwierige, weniger kritische Fehler mal der Fehlerliste hinzugefügt.
- ‚Befehl testen‘-Dialog in der Console geht nicht bei Funktionen mit Parametern.
Das konnte ich leider noch nicht nachstellen.
paresy
Wenn ich es schaffe versuchte ich es heute abend genauer zu beschreiben. Bin noch beim Kunden und daheim liegt eine 40m Tanne ‚im‘ Gartenhaus
Das mit den Datenaustausch betrifft das SendToParent mit Daten ab 0x80.
Michael
Hi,
Versionen:
IPS cd64852b vom 6.5.2015,
Modules: Misc Module Symcon GmbH 1.00
wollte jetzt endlich das Geofency Modul testen und krieg es nicht hin,
sowohl auf dem RasPi, als auch auf einem Ubuntu 14.03.
So wie es aussieht fehlt bei beiden die Datei /usr/share/symcon/scripts/__ipsmodule.inc.php
Oder hab ich da ´nen Denkfehler?
mfg
BerndJ
Hi,
Fehler gefunden.
Das Geofency Modul muss aus dem Haupverzeichnis installiert werden, dann stimmt auch der erzeugte Hook.
mfg
BerndJ
So habe endlich mal etwas Zeit gefunden
PHP-Funktionen werden nicht mehr mehrfach in der __generated eingetragen.
Dafür vermehren sie sich in der Konsole unter Befehle testen; bei jeden Update eines Modules über das Modul Control.
Und Parameter werden noch immer nicht unterstützt.
Außerdem werden auch Funktionen welche sich in Kommentar-Blöcken befinden hinzugefügt.
Aber das überscheiben von vorhandenen Instanz-Funktionen funktioniert perfekt, danke dafür.
Wer schon mal etwas testen und spielen möchte (auf eigene Gefahr, ist noch in einem sehr frühen Stadium):
git://github.com/Nall-chan/IPSHomematicExtended.git
Michael
So, ich wollte nun endlich mal weiter machen…
Erstes Problem waren diverse Meldungen im Log der ScriptEngine mit Executing ScriptText und Sender RunScript.
So ca 20-30 Meldungen pro Sekunde !
Die PHP-Informationen Ansicht in der Konsole brachte dann zutage das es sich um meine Module handelt, welche Daten von einem HID-Instanz empfangen. Muss das wirklich in das Log ?! Sollte das nicht der Modul-Progger entscheiden was er loggt ?
Dabei hat dann die (aktuelle) Konsole ein ‚paar‘ Fehler geworfen.
Und der Datenaustausch mit Bytes größer 0x80 geht noch immer nicht
Parameter type of JSONData does not match…
Michael
Hallo zusammen,
ich habe auch mal mit den neuen Modulen experimentiert.
Ich habe das Geofency-Modul von paresy an Geofancy angepasst (so wie andere hier auch schon).
Des Weiteren habe ich mir ein Modul zum Steuern von LCN-Gruppen gebastelt.
Die Module liegen hier bei GitHub: https://github.com/w-andre/symcon-php
Das LCN-Gruppen-Modul hat folgende Möglichkeiten:
Ich habe aber leider auch noch ein paar Probleme bzw. Sachen „unschön“ gelöst:
Gibt es da eine bessere Lösung, um PCK-Befehle abzusetzen?
Was mache ich falsch?
Insgesamt muss ich sagen, dass ich die neuen Module super finde!
Gruß
André
int Address;
int Segment;
int Target;
String Function;
String Data;
Wobei Address (=1) sein muss, wenn du an eine Gruppe senden willst.
Falls das zu knapp beschrieben ist, müsste ich mal sehen, ob ich dir ein Beispiele machen kann :rolleyes:
Muss ich mir ansehen… Klingt aber nach einem Fehler, wenn es so passiert. Kann mir noch nicht erklären warum es so sein sollte…
Ich würde entweder drei einzelne Module machen, oder es so lassen wie es ist. Wir machen es auch in ApplyChanges.
paresy
Ich würde gerne noch mal etwas ‚Werbung‘ für die PHP-Module machen.
Es gibt m.E. noch einige Baustellen und einiges was verbessert werden kann.
Schreibt doch einfach was euch dazu einfällt auch mit in den Thread.
Was mich noch stört ist das die Funktion ‚Befehle testen‘ in der Console nicht funktioniert, sobald eine Funktion einen Parameter erwartet.
Aufgrund das PHP hier typenlose Variablen nutzt, tauchen die Parameter in der Funktionliste vom Script-Editor nur mit Variant auf und das Fenster ‚Befehle testen‘ scheint das einfach nicht zu kennen.
Außerdem unterliegen Funktionsnamen jetzt den Restriktionen der PHP Schlüsselwörter.
Vorher war diese Funktion kein Problem ELRO_Switch.
Das geht nun nicht mehr da Switch ein PHP Schlüsselwort ist.
User die später auf 4.0 Updaten müßten wieder Ihre Scripte anpassen
Alternativ würde ich vorschlagen, dass es wieder eine Art Interface gibt welches z.B. in der JSON-Datei mit definiert wird.
Dort könnten dann die Typen der Parameter und Rückgabewerte sowie der IPS- und der dazugehörige PHP-Funktionsname definiert werden. Die Namen dürfen dann auch unterschiedlich sein. So könnte ELRO_Switch auf SendSwitch verweisen und für den Nutzer ändert sich nichts.
Netter Nebeneffekt, IPS braucht dann nicht mehr alle Klassen nach public blablafunktion durchsuchen.
Edit: Jeder Datenaustausch zwischen IPS und einer Modul-Instanz wird auch im Snapshot abgebildet. Ist auch nicht so optimal. Könnte mir vorstellen, dass dadurch auch das System bzw. Webfront, App, IPSView etc… ‚leiden‘.
Michael
Das mit dem JSON File habe ich auch schon überlegt. Die aktuelle Idee basiert darauf, dass es kaum Aufwand bei der Erstellung der Modul gibt. Aber mit dem „Variant“ und dem Auswerten von PHP Code gibt so ja so einige nervige Probleme… Ebenso das Mapping, wie von dir vorgeschlagen, wäre ein nettes Feature.
Ich werde dort demnächst noch einmal mehr Zeit widmen… nächste Woche schauen wir uns erstmal die Performance Probleme unter Linux an… Das ist m.E. das vorrangige Problem.
Trotzdem sind Vorschläge Willkommen… evtl. welche, die ohne zusätzlichem JSON File auskommen?
paresy
Ich hätte einen Vorschlag, aber der wird leider nie umgesetzt werden können
Man könnte den Spieß doch umdrehen und die Hersteller von Geräten (Denon, Miele, Samsung usw.) sollen für IPS die passenden Module bereitstellen :eek:
Aber das wird leider nie passieren :mad: