FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Blackmore am 09 Juli 2015, 18:35:16

Titel: eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: Blackmore am 09 Juli 2015, 18:35:16
Ich hab hier ein Programm, welches ich per URL auslesen kann...

Als Ergebniss bekomme ich entweder eine JSON.List oder eine XML.List - entweder groß, mit vielen Informationen, oder klein mit wenig Informationen....

Ich würde gerne die Infos auslesen...

Jetzt suche ich ein vorhandenes Modul, welches ich als Vorlage nutzen kann, um mein Modul auf zu bauen...

Welches - möglichst einfache - Modul könnte ich als Vorlage nehmen???

Danke Blacky

::EDIT::
Falls die Anfrage hier falsch ist, bitte eine kurze PM an mich und verschieben... danke..
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: justme1968 am 09 Juli 2015, 19:30:16
schau dir mal HTTPMOD an. damit geht out of the box schon einiges.

ansonsten gibt es in diesem thread ein beispiel für etwas ähnliches: http://forum.fhem.de/index.php/topic,38463.msg306731.html#msg306731 (http://forum.fhem.de/index.php/topic,38463.msg306731.html#msg306731).

gruss
  andre
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: Blackmore am 09 Juli 2015, 19:47:16
Oha - doch schwieriger als wie ich dachte... ... ...

Danke trotzdem...

Ich melde mich dann in 15 Jahren wieder, wenn ich vollkommen verrückt geworden bin...
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: justme1968 am 09 Juli 2015, 19:50:10
wie gesagt: schau dir HTTPMOD an. damit kannst du werte per http abfragen und in ein readings stecken.

gruss
  andre
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: Blackmore am 09 Juli 2015, 20:41:37
Jup - hab ich gerade getan...

sieht bei mir gerade so aus:


define testseite HTTPMOD http://192.168.178.20:8090/api?mode=queue&start=START&limit=LIMIT&output=xml&apikey=08154711 60
attr testseite readingsName_speed speed
attr testseite userReadings readingsName_speed
attr testseite readingsRegex_speed <speed>([\d\.]+)
attr testseite readingsName_sizeleft sizeleft
attr testseite userReadings readingsName_sizeleft
attr testseite readingsRegex_sizeleft <sizeleft>([\d\.]+)


jetzt hab ich nur das Problem, das "speed" sowohl <4.1 M> als auch <7 K> sein kann...
wie kann ich das auf einen Nenner bringen - also NUR K oder nur M - ergo einen Faktor 1024 mit einbringen??? (K wär mir am liebsten)
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: justme1968 am 09 Juli 2015, 20:53:24
kann es sein das du die alte methode verwendest?

aktuell geht es glaube ich eigentlich so:attr testseite reading01Name speed_orig
attr testseite reading01Regex  <speed>([\d\.]+)
attr testseite reading02Name sizeleft_orig
attr testseite reading02Regex  <sizeleft>([\d\.]+)


zwei mal userReadings geht nicht (beide müssen auf ein mal gesetzt werden) und in deinem fall macht es auch garnichts da der ausdruck zum berechnen fehlt.

um die werte umzurechnen gibt es dann readingXXExpr.

gruss
  andre
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: Blackmore am 09 Juli 2015, 20:59:16
Also - irgendwie scheint es trotzdem zu gehen...

hab jetzt auch ein eading gefunden, da ist schon umgerechnet in kbpersec...

das ist im Moment eh nur ein Test....
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: Blackmore am 10 Juli 2015, 10:56:55
ich hab gerade gesehen, das es zwar grundsätzlich geht, aber immer noch ein Problem hat...

ich hab in der XML-Datei eine Struktur: (unnötiges gelöscht)


<queue>
  <slots>
    <slot>
      <mbleft>zahl</mbleft>
    </slot>
    <slot>
      <mbleft>zahl</mbleft>
    </slot>
    <slot>
      <mbleft>zahl</mbleft>
    </slot>
  </slots>
<mbleft>__meine_gewünschte_Zahl__</mbleft>
</queue>


mein:

attr testseite readingsRegex_mbleft <mbleft>([\d\.]+)

bringt mir aber immer nur die erste Zahl bei mbleft... und nicht die letzte Zahl...

die Anzahl der Slots ist leider nicht bekannt - es kann 0 sein, aber es kann auch mehrere Hundert sein...

Wie bekomme ich jetzt die unterste, gewünschte Zahl heraus???

Danke für Eure Hilfe

Gruss Blacky
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: justme1968 am 10 Juli 2015, 11:01:18
in dem du mehr kontext mit angibst.

etwas in der art:attr testseite readingsRegex_mbleft <mbleft>([\d\.]+)</mbleft>.</queue>

gruss
  andre
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: Blackmore am 10 Juli 2015, 11:27:57
ok... eingetragen...
Versuch 1:

attr testseite readingsRegex_mbleft <mbleft>([\d\.]+)</mbleft>.<diskspace2>

Versuch 2:

attr testseite readingsRegex_mbleft <mbleft>([\d\.]+)</mbleft>.*<diskspace2>


die XML-Datei wäre in dem Bereich:

<mbleft>521612.24</mbleft> <diskspace2>172.15</diskspace2>


jetzt aktuallisiert wer aber gar nicht mehr diese Zahl...
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: justme1968 am 10 Juli 2015, 11:31:08
du musst die \ noch maskieren. also z.b. so:attr testseite readingsRegex_mbleft <mbleft>([\d\.]+)<\/mbleft>.<diskspace2>

oder du nimmst an dieser stelle auch einen .

gruss
  andre
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: Blackmore am 10 Juli 2015, 11:45:30
habs jetzt so:


attr testseite readingsRegex_mbleft cache_size>.<mbleft>([\d\.]+)<\/mbleft>.<diskspace2


aber er aktualisiert immer noch nicht...

die Datei sieht da so aus:

<cache_size>0 B</cache_size> <mbleft>521612.24</mbleft> <diskspace2>172.15</diskspace2>
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: justme1968 am 10 Juli 2015, 11:48:45
schau in den internals nach was tatsächlich an xml in fhem da ist.

gruss
  andre
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: Blackmore am 10 Juli 2015, 11:52:12
da hab ich das Beispiel ja rauskopiert... grins

Code (internals) Auswählen

<cache_size>0 B</cache_size> <mbleft>521612.24</mbleft> <diskspace2>172.15</diskspace2>


Code (browser) Auswählen

<cache_size>0 B</cache_size><mbleft>521612.24</mbleft><diskspace2>172.15</diskspace2>


Code (der Teil, den ich NICHT will) Auswählen

<cat>*</cat><mbleft>384637.07</mbleft><timeleft>16873:14:16</timeleft>


und selbst ohne die Leerzeichen/. gehts nicht

und es kann nicht dran liegen, das die nicht gewünschten Zahlen genauso aufgebaut sind
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: Blackmore am 12 Juli 2015, 16:59:39
hab herausgefunden, das es noch eine Art History gibt, in der meine gewünschten Werte alle drin sind...

jetzt hab ich aber das Problem, das in den
Code (aus HTTPMOD) Auswählen

<day_size>56.5 G</day_size>


entweder 350 M oder 700 M oder 35 G drin steht...
im Reading steht dann 350, 700 oder 35
in einem Plot sieht das dann natürlich doof aus, wenn ich da bei 700 nen grossen Ausschlag hab, und bei 35 nen kleinen, obwohl das eine MegaByte sind, und das andere GigaByte...

wie kann ich das im Reading kompensieren... (mehr als 1.5 T dürfte da selten drin stehen...)
Code (aus fhem.cfg) Auswählen

attr testseite_history readingsRegex_daysize <day_size>([\d\.]+)
Titel: Antw:eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???
Beitrag von: justme1968 am 12 Juli 2015, 17:07:59
wie oben schon vorgeschlagen:
Zitatum die werte umzurechnen gibt es dann readingXXExpr.

du musst aber die einheit mit auslesen. und dann entsprechend umrechnen.

gruss
  andre