Tablet AJAX/JavaScript/HTML GUI

Begonnen von fhem86, 30 Mai 2013, 14:57:15

Vorheriges Thema - Nächstes Thema

infeliz

Noch ein paar Parameter und Variablen einfügen und dann stell ich die index online.
FHEM, Homebridge auf RaspberryPi2(autom. Backup der fhem.cfg auf NAS), CC1101-USB-Lite 868MHz (CUL), 6x FS20 SU-3, 1x FS20 ST, 1x FS20 AS4-3, 3x FS20 RSU, 1x HM-CFG-LAN 1x HM-WDS-IT, 1x HMS-100-TF, 3x HM-ES-PMSw1-pl, 1x HMS-100-TF, SamsungTV

noice

BananaPI, RaspberryPi+AddonBoard,HMLAN,  miniCUL 433,nanoCUL 433,nanoCUL868,FHEMduino 433, Jeelink clone diverse Homematic, FS20, MAX, TFA und IT Komponenten.
10" Tablet mit andFhem, Daitem D14000

infeliz

Aktueller Stand Diagramm:

- Beschriftung
- Markierung höchster Wert
- Unschärfe beseitigt

Was soll alles über die viewFHEM.cfg parametrierbar sein?

Gruss Heiner
FHEM, Homebridge auf RaspberryPi2(autom. Backup der fhem.cfg auf NAS), CC1101-USB-Lite 868MHz (CUL), 6x FS20 SU-3, 1x FS20 ST, 1x FS20 AS4-3, 3x FS20 RSU, 1x HM-CFG-LAN 1x HM-WDS-IT, 1x HMS-100-TF, 3x HM-ES-PMSw1-pl, 1x HMS-100-TF, SamsungTV

infeliz

Wie kann man mit Ajax eine Filelog auslesen????
FHEM, Homebridge auf RaspberryPi2(autom. Backup der fhem.cfg auf NAS), CC1101-USB-Lite 868MHz (CUL), 6x FS20 SU-3, 1x FS20 ST, 1x FS20 AS4-3, 3x FS20 RSU, 1x HM-CFG-LAN 1x HM-WDS-IT, 1x HMS-100-TF, 3x HM-ES-PMSw1-pl, 1x HMS-100-TF, SamsungTV

SkyRaVeR

#199
spontan würde ich sagen request an http://127.0.0.1:8083/fhem/FileLog_logWrapper&dev=FileLog_mypowerrouter&type=text&file=mypowerrouter-02-2015.log (uri natürlich anpassen an das jeweilige log)
absetzen, aus dem DOM-Tree das Element "<span class="log">..." holen und dann einfach line by line iterieren.
Format ist ja meist "2015-02-17_19:11:47 mypowerrouter fromgrid: 290" sprich date<space>name<space>reading<space>val.
Sowas kann man entspannt durch split in ein array schubsen und dann einfach auslesen.
Schöner wärs allerdings wenn man einfach nur eine json/xml response erhalten würde.
Bin noch zu neu in der Materie um die Module zu überblicken... Evtl. gibt es ja etwas wie diesen FileLogWrapper, der so etwas macht.

infeliz

Gute Idee, aber ich bekomme das nicht in die richtige Form, so dass Daten ankommen. Habe auch versucht über Readings zu gehen und diese vorher über notify in einen Dummy abzulegen. Umständlich, aber es war ein Versuch wert. Funzt ebenfalls nicht. Jetzt bleibt mir nur noch über Attribute zu gehen. Das sollte funktionieren. :-(

Bin für jede Hilfe dankbar
FHEM, Homebridge auf RaspberryPi2(autom. Backup der fhem.cfg auf NAS), CC1101-USB-Lite 868MHz (CUL), 6x FS20 SU-3, 1x FS20 ST, 1x FS20 AS4-3, 3x FS20 RSU, 1x HM-CFG-LAN 1x HM-WDS-IT, 1x HMS-100-TF, 3x HM-ES-PMSw1-pl, 1x HMS-100-TF, SamsungTV

infeliz

Über den kleinen Umweg geht es nun doch! ;-)

FHEM, Homebridge auf RaspberryPi2(autom. Backup der fhem.cfg auf NAS), CC1101-USB-Lite 868MHz (CUL), 6x FS20 SU-3, 1x FS20 ST, 1x FS20 AS4-3, 3x FS20 RSU, 1x HM-CFG-LAN 1x HM-WDS-IT, 1x HMS-100-TF, 3x HM-ES-PMSw1-pl, 1x HMS-100-TF, SamsungTV

infeliz

Hi!

Endlich geschafft. Wenn auch etwas umständlich, da ich keinen Weg gefunden habe logs auszulesen.
Persönlich finde ich diese Lösung gar nicht so schlecht. Man kann selber die Werte triggern.

Hier mein Code zum Triggern:

define Stecker3Tag at *23:59:30 {\
my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime(time);;\
my $Now = ReadingsVal("Stecker3Pwr", "energy",0);; \
my $Old = ReadingsVal("Stecker3LastDay", "state", "");; \
my $diffDay = int(100 * (($Now - $Old) / 1000) + 0.5) / 100;;\
fhem("set Stecker3LastDay $Now");; \
fhem("set Stecker3WattDay $diffDay");; \
fhem("attr Stecker3DiaMonat item$mday $diffDay");;\
fhem("save HM_Stecker3.cfg");;\
}

define Stecker3DiaMonat dummy
attr Stecker3DiaMonat item21 0.7
attr Stecker3DiaMonat item22 1.21
attr Stecker3DiaMonat item23 1.09
attr Stecker3DiaMonat item24 1.19
attr Stecker3DiaMonat item25 0.2

attr Stecker3DiaMonat room 98_viewFHEM

Die Werte werden in die Attribute geschrieben.

define "devicename"Dia"Zeitraum" dummy

Zur Zeit funktioniert nur Monat, aber Tag und Jahr sind in Arbeit.

Eintrag für die viewFHEM.cfg
attr viewFHEM_Energie item01 Stecker3|diagram[name:Kühlschrank][type:Monat]|3x4|1

FHEM, Homebridge auf RaspberryPi2(autom. Backup der fhem.cfg auf NAS), CC1101-USB-Lite 868MHz (CUL), 6x FS20 SU-3, 1x FS20 ST, 1x FS20 AS4-3, 3x FS20 RSU, 1x HM-CFG-LAN 1x HM-WDS-IT, 1x HMS-100-TF, 3x HM-ES-PMSw1-pl, 1x HMS-100-TF, SamsungTV

infeliz

Stündliches Tagesdiagramm.

####Verbrauch pro Stunde#####
define Stecker3LastHour dummy
attr Stecker3LastHour fm_type state
attr Stecker3LastHour group Kühlschrank
attr Stecker3LastHour room 94_Stromkosten

define Stecker3WattHour dummy
attr Stecker3WattHour fm_type state
attr Stecker3WattHour group Kühlschrank
attr Stecker3WattHour room 94_Stromkosten

define Stecker3Stunde at +*01:00 {\
my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime(time);;\
my $Now = ReadingsVal("Stecker3Pwr", "energy",0);; \
my $Old = ReadingsVal("Stecker3LastHour", "state", "");; \
my $diffHour = int(100 * ($Now - $Old) + 0.5) / 100;;\
fhem("set Stecker3LastHour $Now");; \
fhem("set Stecker3WattHour $diffHour");; \
fhem("attr Stecker3DiaTag item$hour $diffHour");;\
fhem("save HM_Stecker3.cfg");;\
}
attr Stecker3Stunde alignTime 00:00
attr Stecker3Stunde room 94_Stromkosten

define Stecker3DiaTag dummy
attr Stecker3DiaTag item12 78.1
attr Stecker3DiaTag item13 50.4
attr Stecker3DiaTag item14 73.8
attr Stecker3DiaTag item15 29.9
attr Stecker3DiaTag item16 38.7
attr Stecker3DiaTag room 98_viewFHEM


FHEM, Homebridge auf RaspberryPi2(autom. Backup der fhem.cfg auf NAS), CC1101-USB-Lite 868MHz (CUL), 6x FS20 SU-3, 1x FS20 ST, 1x FS20 AS4-3, 3x FS20 RSU, 1x HM-CFG-LAN 1x HM-WDS-IT, 1x HMS-100-TF, 3x HM-ES-PMSw1-pl, 1x HMS-100-TF, SamsungTV

infeliz

Hat jemand einen Tip, wie ich eine Funktion beim Anklicken des Diagramms steuern kann.
Onclick und Observe habe ich nicht zum Laufen bekommen?

Die Idee: mit klicken zwischen Jahr-, Monat- und Tag-Ansicht umschalten.
FHEM, Homebridge auf RaspberryPi2(autom. Backup der fhem.cfg auf NAS), CC1101-USB-Lite 868MHz (CUL), 6x FS20 SU-3, 1x FS20 ST, 1x FS20 AS4-3, 3x FS20 RSU, 1x HM-CFG-LAN 1x HM-WDS-IT, 1x HMS-100-TF, 3x HM-ES-PMSw1-pl, 1x HMS-100-TF, SamsungTV

noice

BananaPI, RaspberryPi+AddonBoard,HMLAN,  miniCUL 433,nanoCUL 433,nanoCUL868,FHEMduino 433, Jeelink clone diverse Homematic, FS20, MAX, TFA und IT Komponenten.
10" Tablet mit andFhem, Daitem D14000

hotwebnet

ich werde mich einmal einarbeiten....sieht super aus

Reinhart

@SkyRaVeR

Habe deine Version getestet, es gibt da einige Hardcoded Path in den JS. Du hast 2 verschiedene Verzeichnisse angegeben. Vermutlich hast du auf deiner Testumgebung 2 Webverzeichnisse, dann fällt dir das nicht auf.


new Ajax.Request('/fhem/skyTrek1/config.xml'

manchmal so


new Ajax.Request('/fhem/skyTrekW/config.xml'

und manchmal so

Ich habe die jetzt auf den richtigen Pfad "skyTrek1" geändert und hier nochmals angehängt falls das noch jemand testen will. Die Idee mit der XML finde ich gut, weil die index,html sonst sehr unübersichtlich wird.

Das Verzeichnis darf auch nicht nach Lcarsfhem sondern das ganze muss am Beispiel Raspi hier hin: /opt/fhem/www/skyTrek1
Der Aufruf erfolgt dann mit : http://IP-Raspi:8083/fhem/skyTrek1/index.html

Tolle Sache die ihr hier macht, Danke!

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

SkyRaVeR

Huhu,

hier mal eine aktualisierte Version.
@Reinhart Danke für den Tip. Blödes Hardcoding... Da ist man einmal Faul und schon fällt es einem auf den Fuß :(
Hatte deswegen selber ein paar Probleme und hab den Fehler nicht gefunden da ich natürlich immer im falschen Verzeichnis editiert habe -.-
Habe jetzt alle hardcoded paths entfernt.

Neu in diesem .zip:
- zusätzliche Art der Gruppendarstellung (siehe Screenshot)
- weniger Bugs (leider sind noch ein paar "known" bugs da)
- hardcoded paths entfernt
- Möglichkeit Einheiten für ein Reading zu definieren in config.xml erstellt
(z.B <device hwid="mypowerrouter" reading="power_from_sun" unit=" Wh" updateInterval="60" displayname="Solarertrag" style="tablerow" />)

Todos:
Wenn ich die Tage etwas Zeit finde werde ich noch weiter aufräumen und das Grundlayout weiter konsolidieren (bei einigen Auflösungen spinnt es leider).
Danach müsste ich mal ein finetuneing der einzelnen "Module" machen damit die auch hübsch aussehen...
Das Modul "togglebutton" ist aktuell bei mir für meine Rolläden im Einsatz - besser abstrahieren und nicht "auf/zu sondern an/aus" oder so hinschreiben

Naja, ist noch einiges an Arbeit aber solange der Garten noch nicht ruft findet sich ja ab und an etwas Zeit :)

Viel Spaß beim Testen

infeliz

Vielleicht können wir unsere Kräfte vereinen? ;-)

Hab da ne Vision!
Ein Frontend, dass nur über das Frostend selbst gestaltet, verändert und eingerichtet wird.
Unser Intranetauftritt ist modular aufgebaut. Man kann Module hinzufügen, entfernen oder abändern.
Ob das möglich ist?
FHEM, Homebridge auf RaspberryPi2(autom. Backup der fhem.cfg auf NAS), CC1101-USB-Lite 868MHz (CUL), 6x FS20 SU-3, 1x FS20 ST, 1x FS20 AS4-3, 3x FS20 RSU, 1x HM-CFG-LAN 1x HM-WDS-IT, 1x HMS-100-TF, 3x HM-ES-PMSw1-pl, 1x HMS-100-TF, SamsungTV