Zwei Fragen zu Modulprogrammierung

Begonnen von Jörg, 05 April 2017, 11:19:28

Vorheriges Thema - Nächstes Thema

Jörg

Hi,
seit geraumer Zeit versuche ich das 17_SIRD.pm Modul von diversen Fehlern zu bereinigen. Das Modul ist für Internet/DAB+ Radios, die einen SIRD Chip eingebaut haben. Diverse Discounter und auch Marken verkaufen diese OEM Geräte.
Nun habe ich zwei Probleme, bei denen ich ein wenig Hilfe brauche.

1.
Anfragen an das Radio geschehen per XML:
$ref = XMLin( $response, KeyAttr => {}, ForceArray => [] );

Nun kann es passieren, dass die Software im Radio abstürzt. Wenn dann das Modul versucht eine XML-Anfrage an das Radio zu stellen, gibt es eine Kettenreaktion. FHEM startet dann immer wieder neu. Im Log von FHEM steht dann:

Could not find fhem.xml in /usr/bin/ at /usr/share/fhem/FHEM/17_SIRD.pm line 105
2017.04.04 18:13:19 1: Including /etc/fhem.cfg
2017.04.04 18:13:19 3: telnetPort: port 7072 opened


Daher die Frage, ob und wie man die Afrage nach der fhem.xml abfangen kannn, da es keine fhem.xml gibt.


2.
Mit
readingsBeginUpdate

readingsBulkUpdate

readingsEndUpdate

bzw.
readingsSingleUpdate


kann man ja die Readings updaten. Das funktioniert auch, aber Probleme bekomme ich, wenn danoch ein Slider (Volume) mit ins Spiel kommt. Dann wird der Wert nur angezeigt, wenn ich die Seite im Browser reloade.
Daher die Frage, gibt es dabei noch etwas besonderes zu beachten?

Danke schon einmal für die Mühe !!


LG Jörg

Thorsten Pferdekaemper

Hi,
was soll denn das in Anfängerfragen?
Gruß,
   Thorsten
FUIP

Jörg

Da ich da, wo es hingehört keine Schreibrechte habe, habe ich es hier hin geschrieben.

CoolTux

Zitat von: Jörg am 05 April 2017, 11:19:28
Hi,
seit geraumer Zeit versuche ich das 17_SIRD.pm Modul von diversen Fehlern zu bereinigen. Das Modul ist für Internet/DAB+ Radios, die einen SIRD Chip eingebaut haben. Diverse Discounter und auch Marken verkaufen diese OEM Geräte.
Nun habe ich zwei Probleme, bei denen ich ein wenig Hilfe brauche.

1.
Anfragen an das Radio geschehen per XML:
$ref = XMLin( $response, KeyAttr => {}, ForceArray => [] );

Nun kann es passieren, dass die Software im Radio abstürzt. Wenn dann das Modul versucht eine XML-Anfrage an das Radio zu stellen, gibt es eine Kettenreaktion. FHEM startet dann immer wieder neu. Im Log von FHEM steht dann:

Could not find fhem.xml in /usr/bin/ at /usr/share/fhem/FHEM/17_SIRD.pm line 105
2017.04.04 18:13:19 1: Including /etc/fhem.cfg
2017.04.04 18:13:19 3: telnetPort: port 7072 opened


Daher die Frage, ob und wie man die Afrage nach der fhem.xml abfangen kannn, da es keine fhem.xml gibt.


2.
Mit
readingsBeginUpdate

readingsBulkUpdate

readingsEndUpdate

bzw.
readingsSingleUpdate


kann man ja die Readings updaten. Das funktioniert auch, aber Probleme bekomme ich, wenn danoch ein Slider (Volume) mit ins Spiel kommt. Dann wird der Wert nur angezeigt, wenn ich die Seite im Browser reloade.


Hier mal ein Beispiel um zu schauen ob eine Datei vorhanden ist und in diesem Fall ausführbar

return "please check if ssh installed" unless( -X "/usr/bin/ssh" );


Ich verstehe nicht ganz was der Slider mit einem Readingsupdate zu tun hat. Wo genau ist das Problem oder was genau passiert da?

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Jörg

Zitat von: CoolTux am 05 April 2017, 12:48:04Ich verstehe nicht ganz was der Slider mit einem Readingsupdate zu tun hat. Wo genau ist das Problem oder was genau passiert da?

Ok, ich versuche es mit Hilfe von Code zu erklären.

my $var = 20;
readingsSingleUpdate( $hash, "volume", $var, 1 );
readingsSingleUpdate( $hash, "test", $var, 1 );


Damit sollte doch im PGM2 der Readingswert von Volume und test auf 20 geändert werden.

Beim Readingswert test funktioniert das ordnungsgemäß, beim Readingswert volume nicht. Der bleibt leer, bis ich den Reloadbutton vom Browser anklicke.

Der einzige Unterschied zwischen test und volume ist, dass es für volume zusätzlich unter set Radioname noch eine Dropdownlist gibt mit dem Wert volume. Nach der Auswahl erscheint dann auch der Slider für volume (0-100%)

Aber wie gesagt, ohne Browserreload bleibt der Slider bei 0% und das Reading leer.

Besser kann ich es nicht beschreiben. :D


LG Jörg

CoolTux

Das sollte eigentlich egal sein. Das setzen des Readings sollte eigentlich ein Event auslösen.

Aber bei mehr wie einem Reading würde ich eh mit readingsBeginUpdate und readingsBulkUpdate und readingsEndUpdate arbeiten. Dann sollte das mit dem setzen auf jeden Fall gehen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Jörg

Hmm, habe beide Versionen ausprobiert, aber beide mit dem selben Ergebnis.

Zugeben muss ich noch, dass das Modul an sehr vielen Stellen nicht optimal geschrieben wurde. Habe jetzt noch ca. 79 Fehler lokalisiert, die ich noch bearbeiten muss.


Aber trotzdem noch danke für deine Mühe!!!


LG Jörg

Thorsten Pferdekaemper

Zitat von: Jörg am 05 April 2017, 12:35:22
Da ich da, wo es hingehört keine Schreibrechte habe, habe ich es hier hin geschrieben.
Wenn Du Dich ernsthaft um ein Modul kümmern willst, dann wäre es vielleicht gut, wenn Du die Schreibrechte "beantragst". Speziell für die Sache mit dem Slider müssten da vielleicht ganz andere Leute (Rudi?) draufschauen.
Ansonsten halte ich Slider zur Einstellung irgendwelcher Zahlen für eine Usability-Verirrung, in die am Anfang jeder reinfällt...
Gruß,
   Thorsten
FUIP

CoolTux

Für eine Volume Angabe halte ich Slider für völlig ok.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Jörg

Zitat von: Thorsten Pferdekaemper am 06 April 2017, 08:48:46Wenn Du Dich ernsthaft um ein Modul kümmern willst, dann wäre es vielleicht gut, wenn Du die Schreibrechte "beantragst".
Einfach per PM bei Rudi nachfragen, oder verwaltet das jemand Anderes?

Zitat von: CoolTux am 06 April 2017, 09:10:12Für eine Volume Angabe halte ich Slider für völlig ok.
Das sehe ich ehrlich gesagt aber auch so. :)


LG Jörg

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Thorsten Pferdekaemper

Zitat von: CoolTux am 06 April 2017, 09:10:12
Für eine Volume Angabe halte ich Slider für völlig ok.
Naja, meine Ohren sind anscheinend empfindlicher als mein Finger geschickt...
FUIP