Autor Thema: plots dynamisch erzeugen und Werte aus einem modul beziehen  (Gelesen 2935 mal)

Offline herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5984
Moin, Moin,

hat jemand eine Empfehlung wie ich sinnvoll vorgehen könnte um das folgende zu erreichen ?

Hintergrund: ich arbeite an einem modul das Temperaturen für einen variablen Zeitraum aufzeichnet. Das soll so laufen, ich sage "Start" dann werden die Temperaturen aufgezeichnet dann "Stopp" und dann soll das unter einem Namen abgespeichert werden den der user angibt. Dabei sollen mehrere verschiedene Datenreihen, jeweils mit individuellem Namen, abgespeichert werden können.

Soweit so gut, no prob.

Später möchte ich das der user sich das als plot wieder aufrufen kann.

Es müsste also dynamisch ein plot mit diesen Daten erzeugt und angezeigt werden. Im Modul kann ich ein get einbauen welches die Daten so liefert wie Filelog das auch würde.

Wie könnte man jetzt den dazugehörigen plot, dynamisch und idealerweise ohne großes patchen an fhemweb und co erzeugen, im besten Fall sogar auf die Detailseite des device einbinden ?

Jemand Ansatzpunkte? Ich erwarte keine fertige Lösung, Ideen oder Einstiegspunkte sind sehr willkommen !

Danke und Grüße
Jörg 
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20811
Antw:plots dynamisch erzeugen und Werte aus einem modul beziehen
« Antwort #1 am: 09 Januar 2016, 14:48:58 »
schau dir logProxy an. beispiele im wiki. auch zum plotten beliebiger dynamisch erzeugter daten.

wenn du eine noch engere integration möchtest kannst du in deinem device auch die nötigen aufrufe implementieren und auch pseudo log device spielen.

um etwas auf der detail seite anzuzeigen brauchst du eine detailFn.

gruss
   andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5984
Antw:plots dynamisch erzeugen und Werte aus einem modul beziehen
« Antwort #2 am: 09 Januar 2016, 15:52:02 »
Jo. Das mit detailfn und so ist schon klar. Ich hab gerade noch ne andere Idee gehabt. Du hast doch mal was geschrieben mit dem man events direkt an einen Javascript empfänger in fhemweb schicken kann.

Gab's da ne Doku zu ?

Danke
Joerg
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20811
Antw:plots dynamisch erzeugen und Werte aus einem modul beziehen
« Antwort #3 am: 09 Januar 2016, 16:17:24 »
um direkt daten an fhemweb zu senden ohne über events zu gehen gibt es FW_directNotify. ich hab aber immer noch nicht geschafft endlich darauf umzustellen :(.

die doku ist zur zeit mehr oder weniger nur im code.

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5984
Antw:plots dynamisch erzeugen und Werte aus einem modul beziehen
« Antwort #4 am: 09 Januar 2016, 17:03:57 »
Code is ok. Wie nehm ich die in fhem web entgegen? Ist schon was working (Beispiel) dann schau ich da.

Danke vg
Joerg
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20811
Antw:plots dynamisch erzeugen und Werte aus einem modul beziehen
« Antwort #5 am: 09 Januar 2016, 17:18:09 »
markus 72_FB_CALLLIST.pm verwendet das ganze glaube ich schon. der frontend code ist in fhemweb_fbcalllist.js. die abgesendeten daten kommen über setValueFn rein.

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5984
Antw:plots dynamisch erzeugen und Werte aus einem modul beziehen
« Antwort #6 am: 12 Januar 2016, 21:09:13 »
gibt es eigentlich einen funktionellen Unterschied beim laden von js zwischen

$data{FWEXT}{NAME}{SCRIPT} =

und dem autoload (fhemweb_xxx.js)? Was ist besser ?

vg
joerg
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24397
Antw:plots dynamisch erzeugen und Werte aus einem modul beziehen
« Antwort #7 am: 12 Januar 2016, 21:43:00 »
Autoload ist "doof", weil immer geladen wird.

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20811
Antw:plots dynamisch erzeugen und Werte aus einem modul beziehen
« Antwort #8 am: 12 Januar 2016, 22:09:11 »
da fällt mir ein es gab da noch eine offene diskussion in der es darum ging die ganzen fhemwidgets nur zu laden wenn sie auf einer seite auch tatsächlich verwendet werden. steht das noch auf deiner liste?
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3665
Antw:plots dynamisch erzeugen und Werte aus einem modul beziehen
« Antwort #9 am: 12 Januar 2016, 22:30:32 »
Gibt es nicht eine Möglichkeit, modulspezifische JS-Dateien in der Initialize-Funktion anzugeben? So dass FHEMWEB dieses JS nur dann bereitstellt, wenn es eine Definition von diesem Modultyp anzeigt (Room/Detail)?
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Offline herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5984
Antw:plots dynamisch erzeugen und Werte aus einem modul beziehen
« Antwort #10 am: 13 Januar 2016, 00:33:30 »
Mach ich das so richtig ?:

Ich liefere eine div
"<div class='fhemWidget' informId='$devname' cmd='' arg='BBQPlot' dev='$devname'>";
in der js
FW_widgets['BBQPlot'] = {
  createFn:FW_BBQPlotCreate
};

function FW_BBQPlotCreate(elName, devName, vArr, currVal, set, params, cmd)
{
  console.log (elName +':'+ devName);
  if(vArr[0] == "BBQPlot")
  {
    var newEl = $('div[informid="'+devName+'"]').get(0);
    newEl.setValueFn = FW_processBBQPlot;
    return newEl;
  }
}

function FW_processBBQPlot(data)
{
  console.log ('update: '+data);
}

und so sende ich im Modul:
FW_directNotify($hash->{NAME}, $data, 1);
$data ist dann json und im js  .. process... hole ich mir das und mach den fancy stuff.

Den dritten Parameter in FW_directNotify habe ich jetzt noch nicht identifiziert. Einfach "1" und passt ?

So funktionierts, möchte nur wissen ob ich das so im Sinne des Erfinders mache.

Danke und vg
joerg
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24397
Antw:plots dynamisch erzeugen und Werte aus einem modul beziehen
« Antwort #11 am: 13 Januar 2016, 12:59:20 »
Ja, ich meine, dass es so gedacht ist.
Das 1 am Ende ist in diesem Fall nicht relevant, muss aber als Parameter vorhanden sein.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24397
Antw:plots dynamisch erzeugen und Werte aus einem modul beziehen
« Antwort #12 am: 13 Januar 2016, 14:30:15 »
Zitat
da fällt mir ein es gab da noch eine offene diskussion in der es darum ging die ganzen fhemwidgets nur zu laden wenn sie auf einer seite auch tatsächlich verwendet werden. steht das noch auf deiner liste?

Nein. Ich weiss nicht mehr, wie fhemweb.js oder 01_FHEMWEB.pm entscheiden kann, ob ein .js benoetigt wird oder nicht. Faend ich aber gut.

Offline herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5984
Antw:plots dynamisch erzeugen und Werte aus einem modul beziehen
« Antwort #13 am: 14 Januar 2016, 23:38:32 »
Zitat
und so sende ich im Modul:
FW_directNotify($hash->{NAME}, $data, 1)

for the records:
der dritte Parameter muss nicht sein. Die funktion nimmt beliebig viele Argumente und gibt sie an fhemweb weiter. edith: muss doch.

Was mir aufgefallen ist. Alles was über directNotify läuft taucht auch im event monitor auf. Abhängig davon was man schickt sieht der dann ein wenig komisch aus ;) Ich weiß nicht genau ob man das ohne patch unterbinden kann.

vg
joerg
« Letzte Änderung: 16 Januar 2016, 00:58:23 von herrmannj »
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3665
Antw:plots dynamisch erzeugen und Werte aus einem modul beziehen
« Antwort #14 am: 15 Januar 2016, 17:30:29 »
Was mir aufgefallen ist. Alles was über directNotify läuft taucht auch im event monitor auf. Abhängig davon was man schickt sieht der dann ein wenig komisch aus ;) Ich weiß nicht genau ob man das ohne patch unterbinden kann.

Anbei ein Patch, der das beseitigt. Ich weis allerdings nicht, ob damit Events in anderen Konstellationen unterbunden werden, hier sollte Rudi nochmal einen Kommentar zu abgeben. Ich benutze FW_directNotify um in FB_CALLLIST die Anrufliste zu aktualisieren, ohne dabei über Events zu gehen. In meinem Fall, werden die Events nun nicht mehr im Event-Monitor angezeigt, die Liste wird aber nachwievor aktualisiert.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

 

decade-submarginal