eigenes Modul - welches vorhandene kann ich nutzen und abschreiben???

Begonnen von Blackmore, 09 Juli 2015, 18:35:16

Vorheriges Thema - Nächstes Thema

Blackmore

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..

justme1968

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.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Blackmore

Oha - doch schwieriger als wie ich dachte... ... ...

Danke trotzdem...

Ich melde mich dann in 15 Jahren wieder, wenn ich vollkommen verrückt geworden bin...

justme1968

wie gesagt: schau dir HTTPMOD an. damit kannst du werte per http abfragen und in ein readings stecken.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Blackmore

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)

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Blackmore

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....

Blackmore

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

justme1968

in dem du mehr kontext mit angibst.

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

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Blackmore

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...

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Blackmore

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>

justme1968

schau in den internals nach was tatsächlich an xml in fhem da ist.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Blackmore

#13
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

Blackmore

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\.]+)