Script in Fhem einfügen/auslesen

Begonnen von The-Holgi, 15 November 2013, 18:51:15

Vorheriges Thema - Nächstes Thema

The-Holgi

Hallo,
ich habe hier ein kleines script mit dem ich meinen Stromzähler auslesen und eine textdatei erstelle in der der aktuelle und durchschnittliche stromverbrauch angezeigt wird.
Nun möchte ich das in Fehm als room einfügen bzw mir die Daten anzeigen lassen. Wie kann ich das am besten umsetzten. Die komplette Website des Stromzählers ist zu groß und unübersichtlich. Es sollen nur die Daten angezeigt werden. Hier das script:
#!/bin/sh


aktuell=$(wget -q -O - http://192.168.178.35/index.html | grep " W" | sed -e 's/<[^<>]*>//g; /^[ ]*$/d' | sed 'N;s/\n/#/g' | cut -d"#" -f1)
durch=$(wget -q -O - http://192.168.178.35/index.html | grep " W" | sed -e 's/<[^<>]*>//g; /^[ ]*$/d' | sed 'N;s/\n/#/g' | cut -d"#" -f2)


#aktuell=$(cat ./index.html | grep " W" | sed -e 's/<[^<>]*>//g; /^[ ]*$/d' | sed 'N;s/\n/#/g' | cut -d"#" -f1)
#durch=$(cat ./index.html | grep " W" | sed -e 's/<[^<>]*>//g; /^[ ]*$/d' | sed 'N;s/\n/#/g' | cut -d"#" -f2)

echo "Durchschnittliche Leistung  - $durch"  >/home/pi/strom.txt
echo "Aktuelle Leistung  - $aktuell"  >>/home/pi/strom.txt

exit 0
Raspberry Pi 5

justme1968

du kannst z.b. mit

fhem.pl <server> "set <dummy_name> <wert>"

von aussen den wert eines dummy setzen.

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

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

The-Holgi

Hm, kannst du das vielleicht genauer erklären ?

Gruß Holgi
Raspberry Pi 5

justme1968

#3
du legst in fhem einen dummy an:

define Leistung dummy

in deinem shell script rufst du dann z.b. das auf:fhem.pl localhost "set Leistung $aktuell".

dann hat dein dummy in fhem immer den aktuellen wert. du kannst sogar ein log file dran hängen und das ganze plotten wenn du willst und dir das loggen im script sparen.

gruss
  andre

edit: ich sehe gerade das du in deinem script auch nur ein wget aufrufst. je nach dem wie viele daten da zurück kommen kannst du das komplett innerhalb von fhem machen:sub
getVerbrauch()
{
  my $html = GetHttpFile("192.168.178.35", "/index.html");

  #my @lines = split( "\r\n", $html );
  #my @niederschlaege = grep /(\d+,\d+) l.m/, @lines;

  my $aktuell = 0.0;
  #if( $niederschlaege[4] =~ m/(\d+),(\d+) l.m/s ) {
    #$niederschlag = $1 + $2/10.0;
  #}

  return $aktuell;
}


die auskommentierten zeilen musst du an deine web seite anpassen. ich hole damit niederschlagswerte aus einer webweite.

und dann mit einem notify regelmässig abfragen:{
  my $verbrauch = getVerbrauch();

  return if( $verbrauch < 0 );

  my $hash =  $defs{Leistung};
  readingsSingleUpdate($hash,"Leistung", $niederschlag, 1) if( defined($hash) );
}
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

The-Holgi

Hm, mal der Reihe nach. Ich lege das script von dir mit den geänderten Werten von meinem in den contrip Ordner und nenne es z.b. Leistung.pl.
Dann lege ich einen dummy den ich Leistung nenne an, soweit richtig ?
In notify muß ich mich wohl auch noch einlesen.

Schonmal besten Dank für deine Hilfe
Raspberry Pi 5

justme1968

für die erste variante legst du  nur den dummy an und rufst in deinem script die eine zusätzliche fhem zeile auf. sonst ist nichts zu ändern.

für die zweite version kommt der code in eine myUtils Datei. schau mal im wiki. da steht etwas darüber.

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

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

The-Holgi

Denke die 2. Variante ist die bessere. Dazu muß ich aber wohl noch ein bißchen lesen. Fhem und pearl ist für mich absolutes Neuland.
Bin für jeden Tipp dankbar.
Raspberry Pi 5

Puschel74

Hallo,

Bei
Zitatpearl
kann man Dinge bestellen.

Du meinst sicher Perl  8)
Damit sollte sich jeder etwas beschäftigen der ein kleines bischen mehr aus seiner FHEM-Installation herausholen möchte  ;)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

The-Holgi

 ;D Ok ich meinte natürlich nicht den online Händler.
Zumindest weiß ich jetzt wie man perl schreibt.  :)
Raspberry Pi 5

The-Holgi

#9
Hallo,
könnte man nicht auch mittels: define Strom weblink iframe http://192.168.178.35/index.htm
die website einfügen und dann über attr nur den Teil von der site Anzeigen lassen, in dem die Temperaturen dargestellt werden.

Edit: Dann kann ich die Daten aber vermutlich nicht verwenden um einen plot zu erstellen, oder ?

Gruß Holgi
Raspberry Pi 5