Autor Thema: I2C-Bus per Skript abfragen  (Gelesen 5175 mal)

Offline Puschel74

  • Hero Member
  • *****
  • Beiträge: 9839
I2C-Bus per Skript abfragen
« am: 28 März 2013, 19:54:53 »
Hallo zusammen,

ich habe nun endlich meinem DB_RPi (er macht auch das Chart-Frontend mit) seinen I2C schmackhaft gemacht.
Die ersten Sensoren werden schon erkannt und ich kann auch schon (noch in hex) die Temperaturwerte auslesen.
Auf der cmd_line ...
Vorweg noch. Ich bin ja schon froh das ich soweit gekommen bin ;-)

Nun dachte ich mir - das müsste doch auch per Skript gehen nur ... wie mache ich das mit dem Skript?

Der Befehl zum auslesen der Temperatur aus dem Sensor lautet

sudo i2cget -y 1 0x48 0x90

für Byte1 und

sudo i2cget -y 1 0x48 0x91

für Byte2, jeweils laut Anleitung des zugehörigen Temp.Sensors (LM75 auf einem myTWI) liefert mir
http://shop.myavr.de/Add-Ons%20und%20Module/myTWI%20Add-On%20Temperatursensor.htm?sp=article.sp.php&artID=71


(siehe Anhang / see attachement)


(siehe Anhang / see attachement)


wobei ich sicher irgendwo noch einen Fehler mache da ich das Byte2 zweimal ansprechen muss - siehe Screenshot.
Das ganze funktioniert auch mit 3 und 4 Sensoren, schon getestet.
Nur eben wie gesagt auf der Kommandozeile.

Ich habe nun mal eine twilesen.sh ausführbar erstellt und einfach mal die Befehle reingeschrieben und an den Anfang ein #!/bin/sh
gesetzt
#!/bin/sh
sudo i2cget -y 1 0x48 0x90
.
Nur leider heisst es Kommando nicht gefunden.

Ich bin mal wieder für jeden Tipp dankbar.

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.

Offline Puschel74

  • Hero Member
  • *****
  • Beiträge: 9839
Aw: I2C-Bus per Skript abfragen
« Antwort #1 am: 28 März 2013, 20:10:37 »
Ok.

Die Abfrage per Skript klappt zumindest für Byte1 schonmal.
Jetzt noch schauen das ich das Skript per fhem aufrufen lassen.

Aber erstmal den Rückgabewert in eine Datei oder Variable sichern.

Grüße

Edith: Jeder zweite Aufruf von i2cget liefert besagte Fehlermeldung.
hex-Wert landet schonmal in einer Datei.

Edith2: Wenn jemand ne Idee hat wie ich Datum und Uhrzeit in das File schreiben lassen kann und die Fehlermeldung bei jeder zweiten Abfrage
weg bekomme - nur her damit.
Ich lass jetzt erstmal das Skript per crontab zyklisch ausführen und die hex-Werte in eine Datei schreiben - da wäre genial wenn vorne dran Datum und Uhrzeit stehen würden.

Danke schonmal für die Tipps
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.

Offline Puschel74

  • Hero Member
  • *****
  • Beiträge: 9839
Aw: I2C-Bus per Skript abfragen
« Antwort #2 am: 30 März 2013, 14:36:56 »
Hallo,

so, mal wieder ein Update.

Zitat
sudo i2cget -y 1 0x48 0x91
war natürlich Blödsinn.

Die Abfrage muss mit

sudo i2cget -y 1 0x48 0x00 w

durchgeführt werden.
-y 1 = der I2C-Bus am RPi
0x48 = Adresse des myTWI-Moduls
0x00 = Startadresse für die Temperatur
w = Ausgelesen wird das Wort

liefert mir auch brav:

0xe012
0xe013
0x4017
0x4018

e0 = Byte2
12 = Byte1
Byte1 kann für positive Temperaturen einfach hex nach dez gewandelt werden.
Byte2 gibt die Nachkommastelle (,0 oder ,5) an.
Wenn Byte2>128 = ,5 und sonst ,0

Im moment frage ich den Sensor von FHEM aus per at alle 5 Minuten ab und speichere den Wert hart in die "twi-2013.log"
{
system("sudo /opt/fhem/twi >> /opt/fhem/log/twi-2013.log 2>&1 &");
}


Den Code habe ich in der alten Google-Group gefunden (danke an Rudi) und leicht angepasst.
Es wird damit einfach nur
date
i2cget -y 1 0x48 0x00 w

ausgeführt (geht das auch aus fhem heraus??).

Fragen:
Wie kann ich am RPi die Wandlung hex nach dez durchführen?
Wenn ich die Messung aus fhem heraus starten kann (und den Wert dann auch in fhem bekomme) kann ich diesen auch in FHEM nach dez wandeln?

Evtl. hat ja jemand eine Idee (oder einen Link) auf ein Modul/Codeschnippsel wo so eine Verarbeitung schon läuft und ich mir diese nur "abschauen" brauche - ich bastle dann schon selbst weiter ;-)

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.

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8552
Aw: I2C-Bus per Skript abfragen
« Antwort #3 am: 30 März 2013, 19:44:27 »
Ich habe ein Modul in Arbeit, das OWX direkt an den I2C-Bus anbindet - dann kann die gesamte Wandelei von den Forntendmodulen übernommen werden.

Gemeinsam mit Norbert Truchsess habe ich in den vergangenen Wochen das alte Backendmodul 00_OWX.pm aufgespalten in einen hardwareunabhängigen und mehrere hardwareabhängige Teile. Damit kann dieses I2C-Backendmodul auf einfachste Weise implementiert werden...

Motivation dafür: Nicht nur das neue 1-Wire Interface auf dem I2C-Bus des RPi, sondern auch der Wunsch, endlich das 1-Wire Interface des COC besser zu bedienen.

LG

pah

Offline Puschel74

  • Hero Member
  • *****
  • Beiträge: 9839
Aw: I2C-Bus per Skript abfragen
« Antwort #4 am: 31 März 2013, 09:02:00 »
Hallo und Guten morgen,

vielen Dank für die Nachricht pah (es liest ja doch jemand meinen Müll ;-) ).

Das klingt ja schonmal recht interessant was du/ihr vorhabt.
Da bin ich mal gespannt wie das wird.

Meinen Sensor bekomme ich hartcodiert ja schonmal abgefragt.
Auch der System-Befehl lässt sich schonmal per at triggern (keine große Sache ich weiß, aber ich steh erst am Anfang).
Nur wirft mich substr immer wieder zurück mit der Meldung das ich ausserhalb des Strings operiere.

Da muss ich mich heute nochmal tiefer einlesen.

Aber das ganze passiert noch in Perl - da ist noch kein fhem involviert.

Ich schau mal weiter was ich noch rausfinde, aber meine ersten Gehversuche mit Perl stolpern schon vor sich hin.

Grüße

Edith: Fehler behoben, war mal wieder zwischen Stuhl und Bildschirm ;-)
Edith1: I2C_TWI Temperatursensoren (LM75) lassen sich schonmal auslesen, auch in °C.
Der I2C-Bus kann gescannt werden und die LM75 werden mir angezeigt.
Aber alles erstmal nur hartcodiert :-( Aber ich bin dran den Scan und das auslesen zusammen zu bringen.
Wunsch: Einmaliger Scan (oder wenn gewünscht) und anlegen der Sensoren nach einem festgelegten Schema (bei mir erstmal Sensor_1, Sensor_2, usw. ...)
Mal schauen.
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.

 

decade-submarginal