Lesen eine Temp.sensor LM75 I2C

Begonnen von UliMueller, 09 April 2015, 20:44:56

Vorheriges Thema - Nächstes Thema

UliMueller

Hallo, ich bin neu hier.
Ich möchte gerne eine bestehende Hausautomatisierung durch FHEM erstzen.
Was mir jetzt noch fehlt, ist die verbauten I2C Temperatorsensoren LM 75 zyklisch einzulesen.
dazu habe ein kleines Perl sup
geschrieben und in 99_MyUtils.pm untergebracht und es funktiniert.
In fhem.cfg habe ich nun folgendes untergebracht:

define Temp readingsProxy dummy
attr Temp icon icoKLIMA
attr Temp room Heizung
attr Temp valueFn {Read_LM75_0x4F("@")}
.. das funktioniert auch, aber leider nur einmal.
dann habe ich mit at veruscht es zyklisch zu aktualisieren
leider komme ich hier nicht weiter siehe ....
define TempAt1 at +*00:00:04 set Temp ....
attr TempAt1 room Heizung

Wer gibt mir Tipps
Danke im Voraus
Uli


jsloot

Guten Morgen Uli,

ein paar mehr Infos wären nicht  schlecht. Befindet sich der Sensor auf derselben Hardware, wie FHEM? Welche Hardware ist es überhaupt?

Ich habe mehrere Sensoren (Temperatur, Luftdruck, Luftfeuchte, Helligkeit) auf einem RPi. Per Cron werden minütlich die Werte ausgelesen und über ein Bashscript per telnet an FHEM geschickt:

telnet fhem 7072 << EOF
setreading weather lightness ${LIGHTNESS}
setreading weather pressure ${PRESSURE}
setreading weather humidity ${HUMIDITY}
setreading weather temperature ${TEMPERATURE}
set weather L:$((${LIGHTNESS})) P:${PRESSURE} H:${HUMIDITY} T:${TEMPERATURE}
EOF


Das geht bestimmt auch andersherum, dass FHEM die Werte zyklisch abfragt. Aber mir ist es soherum irgendwie lieber  ;)

Gruß, der Sloot
Ein FHEM-Raspi mit HM-CFG-USB-2. 9 HM Heizthermostate, 9 HM Temperatursensoren, 22 HM Fensterkontakte, 7 Rolloaktoren, 17 HM Unterputz-Aktoren

Puschel74

Zitat von: UliMueller am 09 April 2015, 20:44:56
dann habe ich mit at veruscht es zyklisch zu aktualisieren
leider komme ich hier nicht weiter siehe ....
define TempAt1 at +*00:00:04 set Temp ....
attr TempAt1 room Heizung

Wer gibt mir Tipps
Danke im Voraus
Uli
Ich frage auch 3 LM75-Sensoren mit FHEM ab aber ich weiß nicht was hier
define TempAt1 at +*00:00:04 set Temp ....
.... bedeuten soll.

Ansatzpunkt wäre http://forum.fhem.de/index.php/topic,16311.0.html oder die Kurzform:
Poste die Codes komplett inkl. etwaiger Fehlermeldungen sonst müssen hier alle ihre Glaskugeln zum polieren geben und da meine schon recht dünne Wände hat rate ich nicht weiter.

Und nein - ich verwende dafür kein FHEM-Modul (diese gibt es mittlerweile aber ich war bisher zu faul um alles umzubauen).
Frei nach dem Motto - Never change a running system.
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.

UliMueller


Hier noch der Perl Source aus 99_MyUtils.pm
package main;
use strict;
use warnings;
use POSIX;

sub
MyUtils_Initialize($$)
{
  my ($hash) = @_;
}


sub
Read_LM75_0x4F($)
{
  my $s1="nix";
  my $i1;
  my $i2;
  my $i3;

  $s1=`i2cget -y 1 0x4f 0x0 w`;  # Hexstring aus System Befehl holen
  $i1 = hex $s1;                 # hex to int
  $i2=$i1 % 256 *10;             # Temperatur Vorkomma Wert
  $i3=($i1 >> 15)*5  ;           # Temperatur Nachkomma Wert
  $i1=($i2 + $i3)/10;            # Vor und Nachkomma zusammen fassen

  return $i1                          # Temperatur abliefern
}


1;

Da war noch der Nachtrag zur Frage nach des Systems, es ist ein Raspberry Pi 2, sonst nur I2C Geräte

@Puschel74
mit der angemerkten Zeile soll, wie weis ich halt nicht, alle 4sec. (zum Test) die Temperatur gelesen, angetriggert werden
define TempAt1 at +*00:00:04 set Temp ....
Die Punkte zeigen halt mein Nichtwissen.
Die Perlroutine  {Read_LM75_0x4F("@")}
funktioniert ja wie schon beschrieben, leider eben nur einmal 
beim Aktualisieren der fhem.cfg

Uli