RPII2C Werte lesen vom Adruino Uno

Begonnen von Meikel1972, 21 November 2015, 15:12:27

Vorheriges Thema - Nächstes Thema

Meikel1972

Hallo,

ich habe meinen Raspberry mit einem Adruino Uno über I2C verbunden. Der
Adruino hängt am I2C Bus 1 und hat die Adresse 0x04 und liefert mir folgende
Zustandswerte von meinem Garagentor:

0  -> Tor öffnet oder schließt gerade
1  -> Tor geschlossen
2  -> Tor geöffnet
3  -> Illegaler Zustand

Ich frage den Zustand aller 30 Sekunden mit folgenden Kommando ab:

define Tor_check at +*00:00:30 get I2C_BUS_01 read 4

Die Übertragung klappt. Im log befinden sich folgende Einträge:

2015.11.21 14:26:34 3: Tor_check: received : 1  |  transmission: Ok
2015.11.21 14:27:04 3: Tor_check: received : 2  |  transmission: Ok
2015.11.21 14:27:34 3: Tor_check: received : 0  |  transmission: Ok
2015.11.21 14:28:04 3: Tor_check: received : 3  |  transmission: Ok

In "Tor_check:STATE"  ist der nächste Zeitpunkt wann "get I2C_BUS_01 read 4"
wird der nächste Zeitpunkt z.B. 14:28:34 zurückgeben. Ich möchte aber das
der zurückgegebene Wert der "get I2C_BUS_01 read 4"  Funktion
in "Tor_check:STATE" gespeichert wird.

Bin um jede Hilfe dankbar! Kann mir jemand helfen?
   

klausw

anstelle vonget I2C_BUS_01 read 4
das im DEF deines at einfügen:
{
my $new = fhem("get I2C_BUS_01 read 4"); #Wert auslesen
if ($new =~ /Ok$/ ) { #ueberpruefen of Uebertragung fehlerfrei
$new =~ s/[^\d]//g; #wenn ja, dann die Zahl extrahieren
} else { #wenn nein, Variable auf error setzen
$new = "error";
}
fhem("setreading Tor_check state $new"); #Reading aktualisieren
}


sollte gehen

oder wenn du Klartext haben willst:
{
my %stats = (
'0' => 'Tor öffnet oder schließt gerade',
'1' => 'Tor geschlossen',
'2' => 'Tor geöffnet',
'3' => 'Illegaler Zustand',
'4' => 'error'
);

my $new = fhem("get I2C_BUS_01 read 4"); #Wert auslesen
if ($new =~ /Ok$/ ) { #ueberpruefen of Uebertragung fehlerfrei
$new =~ s/[^\d]//g; #wenn ja, dann die Zahl extrahieren
} else { #wenn nein, Variable auf error setzen
$new = 4;
}
fhem("setreading Tor_check state $stats{$new}"); #Reading aktualisieren
}
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280