Neues Modul i2cBMP180

Begonnen von Dirk, 21 Juli 2013, 23:52:20

Vorheriges Thema - Nächstes Thema

Dirk

Zitatwas ist denn die Einheit für das Intervall? MInuten oder Sekunden? (vielleicht hab ich das irgendwo überlesen)
Das steht aber in der Moduldokumentation.

poll_interval
Set the polling interval in minutes to query the sensor for new measured values.
Default: 5, valid values: 1, 2, 5, 10, 20, 30

betateilchen

Du hast ja recht. Ich hatte mein mögliches Überlesen ja vorhin schon eingeräumt.

Für die Wunschliste:

- ein Attribut, um die Luftdruckwerte als Integer (ohne Nachkommastellen) zu erhalten.


Die Variante mit dem modifizeirten Startskript hat nun mehrere Reboots überstanden. Ich lass das jetzt erstmal so.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dirk

Ich mache dann noch folgende Änderungen am Modul:

  • Das Attribute route_i2c0_to_p5 lass ich fallen, da hier FHEM als root laufen müsste.
  • Den Hinweis auf das Setzen der Rechte von /dev/i2cX und das Ausführen von hipi-i2c im Startscript von FHEM kommt mit in die Modul-Doku
  • Umbenennen des Moduls in I2C_BMP180 wegen "intuitive Benutzung"
  • ein Attribut, um die Luftdruckwerte als Integer (ohne Nachkommastellen) zu erhalten.
  • Fehlerbehandlung falls z.B. die I2C Module nicht geladen sind usw.
Sonst noch Ideen und Wünsche?

Gruß
Dirk

betateilchen

Für heute war es das erstmal. Aber mir fällt bestimmt noch was ein.

Jetzt lass ich das mal eine Weile laufen und schau mir die Stabilität an. Dann brauch ich die Luftdruckmessung mit dem AVR-NET-IO nicht mehr.

Danke für Deine Unterstützung und das Modul :)

--------------

achja - EINEN hab ich doch noch. Die altitude sollte als optionaler Parameter bei der Definition angegeben werden können, nicht als Attribut.

Vielleicht bekommt FHEM ja irgendwann die Altitude auch als globales Attribut. Den Wunsch hatte ich ja schonmal hier geäußert. Da bräuchte ich noch Unterstützer für den "Antrag" *lach*
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dirk

Ich mach heute bestimmt auch nix mehr.
Ich danke dir für dein Testing.

Gruß
Dirk

betateilchen

hab oben noch was ergänzt ;)

und nochwas: bitte keine Komma und eine Einheiten im state

Gute Nacht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dirk

Zitatbitte keine Komma und eine Einheiten im state
Du meinst das so hier?
attr BMP180 stateFormat Temp: temperature Pressure: pressure
So kannst du dir jedes Gewünschte State-Format zusammen bauen.

betateilchen

Ich weiß, was stateFormat kann.

In den Development Guidelines steht:

(http://up.picr.de/15267582cn.png)

Man beachte den letzten Satz :)
Mir ist durchaus bewusst, dass dies noch nicht in allen Modulen durchgängig so gehandhabt wird.
Aber wenn man jetzt ein neues Modul baut, kann man das ja auch gleich berücksichtigen.

Und der Wunsch "ohne Komma" hat was mit der Definition für FileLog und Plotten zu tun, da werden die "Spalten" nur durch Leerzeichen getrennt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dirk

ZitatMan beachte den letzten Satz :)
Dann verstehe ich dich grade nicht richtig.
Die Readings haben hier keine Einheiten.

2013-07-22_00:12:32 BMP180 temperature: 42.7
2013-07-22_00:12:32 BMP180 pressure: 996.3
2013-07-22_00:12:32 BMP180 pressure-nn: 1022.2

Lediglich im Default-State stehen die drin. Und diese kann man über das StateFormat überschreiben.

betateilchen

Zitat von: Dirk schrieb am Mo, 22 Juli 2013 22:23Oder Das Umrouten des I2C-Busses vor dem Starten von FHEM seperat auszuführen.
Hat jemand noch eine andere Idee?

jepp, hab ich :)

Ich werde das heute abend mit einer udev Regel testen. Die sind ja genau dafür geschaffen, solche Probleme mit Benutzerrechten zu umgehen. Damit sollte zumindest das "sudo" im fhem-Startskript nicht mehr nötig sein.


SUBSYSTEM=="i2c-dev", MODE="0666"


Und wenn das nicht funktioniert, ist der nächste Versuch: Das Device /dev/i2c-0 statisch anlegen und mit entsprechenden Zugriffsrechten ausstatten.

achja - moin :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dirk

#25
Guten Morgen.

udev währ noch eine Idee. Zumindest für die Rechte von /dev/i2c-x.
hipi-i2c brauchts im Startscript dann trotzdem wenn man den P5 nutzen möchte

ZitatDamit sollte zumindest das "sudo" im fhem-Startskript nicht mehr nötig sein.
Das Startscript wird in der Regel doch selber mit sudo bzw. als root ausgeführt. daher sollte sodo hier überflüssig sein.

Zwischenzeitlich gibt's ne neue Version.

    <li> Das Modul heisst nun "I2C_BMP180"<li> Das Attribute route_i2c0_to_p5 ist entfallen. "hipi-i2c e 0 1" muss bei bedarf vor dem Start von FHEM z.B. im Startscript ausgeführt werden.<li> Das Attribute "altitute" ist sei vorhin als global Attribute verfügbar, daher wird dieses genutzt. Bitte ggf. die FHEM-Version aus dem SVN auschecken. Morgen sollte die Änderung aber auch per Update verteilt werden<li> es gibt zwei neue Attribute roundPressureDecimal und roundTemperatureDecimal. Damit kann die Genauigkeit der Temperatur- und Luftdruckreadings eingestellt werden.

Gruß
Dirk

Edit: altes Modul entfernt.
Das Modul ist mittlerweile Bestandteil von FHEM (51_I2C_BMP180.pm)

betateilchen

Zitat von: Dirk schrieb am Di, 23 Juli 2013 09:30udev wär noch eine Idee. Zumindest für die Rechte von /dev/i2c-x.
hipi-i2c brauchts im Startscript dann trotzdem wenn man den P5 nutzen möchte
[...]
Das Startscript wird in der Regel doch selber mit sudo bzw. als root ausgeführt. daher sollte sodo hier überflüssig sein.

Hat bei mir gestern nicht ohne sudo funktioniert, darum hatte ich es ja im zweiten Versuch extra eingebaut.

Aber man kann das vermutlich auch über einen Eintrag in /etc/sudoers abfangen:

fhem ALL=NOPASSWD: hipi*

Eventuell lässt sich damit sogar das /dev/mem Problem abfangen, wenn man genau weiß, das da aufgerufen wird.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Aktion 1: udev-Regel anlegen = funktioniert


/etc/udev/rules.d/98_i2c.rules enthält:

SUBSYSTEM=="i2c-dev", MODE="0666"


Um das sudo beim Umschalten des I2C Bus im Startskript kommt man allerdings nicht rum.


Ich habe noch eine Idee fürs Modul - ich habe allerdings die neue Version noch nicht installiert: Nach einem fhem-Neustart macht das Modul keinen Poll direkt nach dem Geladenwerden, sondern erst, wenn das Poll-Intervall einmal rum ist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dirk

Na Prima.
Ich teste das die Tage auch mal und nehme das mit in die Moduldoku auf.

Nach einem fhem-Neustart macht das Modul keinen Poll direkt nach dem Geladenwerden, sondern erst, wenn das Poll-Intervall einmal rum ist.Das ist mir auch schon negativ aufgefallen :)
Das werde ich wohl noch umdrehen.

Gruß
Dirk

betateilchen

Deine neue Version habe ich noch gar nicht getestet...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!