UniPi - The Universal Raspberry Pi add-on board

Begonnen von betateilchen, 10 November 2014, 19:01:15

Vorheriges Thema - Nächstes Thema

klausw

Zitat von: betateilchen am 27 November 2014, 15:37:36
Die Lösung über OWX und RPII2C wäre natürlich genial. Aber um da mitzuhelfen, hab ich zu wenig Ahnung von I2C.
Von I2C musst du keine große Ahnung haben, das macht das Modul RPII2C. Es müssen nur noch die Register richtig befüllt werden  ::)
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

betateilchen

Im Moment finde ich die Lösung per owfs sogar sehr praktisch, weil ich damit den 1wire-Sensor auf dem UniPi einfach per Netzwerkverbindung in meinem Produktiv-fhem nutzen kann. Die Lösung per RPII2C würde - nach meinem Verständnis - ja voraussetzen, dass fhem auf dem gleichen Raspi läuft, an dem auch das Unipi angeschlossen ist.


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

klausw

Zitat von: betateilchen am 27 November 2014, 16:05:32
Im Moment finde ich die Lösung per owfs sogar sehr praktisch, weil ich damit den 1wire-Sensor auf dem UniPi einfach per Netzwerkverbindung in meinem Produktiv-fhem nutzen kann. Die Lösung per RPII2C würde - nach meinem Verständnis - ja voraussetzen, dass fhem auf dem gleichen Raspi läuft, an dem auch das Unipi angeschlossen ist.
Gute Frage. Müsste das nicht auch mit FHEM2FHEM funktionieren? Damit habe ich mich noch nicht befasst. Evtl. muss in das RPII2C Modul nochwas eingebaut werden. Aber FHEM muss auf jeden fall laufen, da hast du Recht.

Wenn ich es schaffe, dann checke ich heute Abend das I2C_EEPROM Modul ein. Es funktioniert soweit fehlerfrei.

Hast du dir inzwischen mal den A/D Converter angeschaut?
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

betateilchen

FHEM2FHEM ist gruslig, das setze ich schon lange nicht mehr ein. Davon abgesehen ist f2f ja - soweit ich mich erinnere - unidirektional, ich kann also keine get und set dorthin schicken.

Die Lösung mit dem owfs finde ich inzwischen ziemlich prima.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

klausw

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

betateilchen

Super :)

Wegen A/D Wandler: da bin ich noch nicht weitergekommen, und in den nächsten Tagen habe ich da auch wenig Zeit zum Experimentieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: klausw am 27 November 2014, 23:13:54
Modul 52_I2C_EEPROM.pm ist im SVN.

Spontan sind mir folgende Dinge aufgefallen:


  • set und get buttons im Frontend nicht verfügbar
  • nach einem set wird die Detailansicht verlassen und zur Raumübersicht gewechselt.
  • man kann zwar mit set sowohl Dezimal- als auch Hex-Werte setzen, bei einem Wert kommt aber immer Hex zurück, was bei einem Rückgabewert von "80" nicht eindeutig erkennbar ist. Man sollte Hexwerte mit 0x80 darstellen und bei der Bitabfrage ggf. auch eine Kennzeichnung vorsehen.

Wird es eine Möglichkeit geben, ein get direkt auf dem Device auszuführen und nicht nur aus dem Reading?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

klausw

Zitat von: betateilchen am 28 November 2014, 10:40:05
set und get buttons im Frontend nicht verfügbar
nach einem set wird die Detailansicht verlassen und zur Raumübersicht gewechselt.
Das ist sicher ein und dasselbe...
set und get gibts nur bei dropdown Menü, richtig?
Ich könnte sowas in der Art machen:
(set|get) (byte|bit|word|dword|qword) [0...7] <adresse> [hex|dec|bin]
(byte|bit|word|dword|qword) ist dann das Dropdown Menü und bei Bit erscheint ein Zweites.
Die Frage ist ob sich der Aufwand lohnt und das jemand nutzt  8)
Zitat von: betateilchen am 28 November 2014, 10:40:05
man kann zwar mit set sowohl Dezimal- als auch Hex-Werte setzen, bei einem Wert kommt aber immer Hex zurück, was bei einem Rückgabewert von "80" nicht eindeutig erkennbar ist. Man sollte Hexwerte mit 0x80 darstellen und bei der Bitabfrage ggf. auch eine Kennzeichnung vorsehen.
stimmt, 0x baue ich noch ein, werde auch noch die option zum dezimalen abfragen einbauen. Bei Bitabfragen macht es keinen Sinn 1 ist 1 in Binär, Dezimal oder Hex.
Zitat von: betateilchen am 28 November 2014, 10:40:05
Wird es eine Möglichkeit geben, ein get direkt auf dem Device auszuführen und nicht nur aus dem Reading?
Hatte ich drüber nachgedacht. Das Problem bei den 2 level Ansätzen ist der asynchrone Ansatz. Das get wird im Prinzip nur angestoßen und das entsprechende Reading nach Rückmeldung vom physikal. Modul aktualisiert. Wenn man auch die Rückmeldung wartet dann ist in dieser Zeit das System blockiert.
Ist aber auch nicht notwendig, wenn der EEPROM nur aus FHEM angesprochen wird bildet das Reading immer den EEPROM Inhalt dar.
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

betateilchen

Zitat von: klausw am 28 November 2014, 22:58:49
Das ist sicher ein und dasselbe...
set und get gibts nur bei dropdown Menü, richtig?

hm, ich hab grade verstanden, was Du meinst.

Eigentlich würde mir sowas reichen:

(http://up.picr.de/20255611sq.png)

Hierfür reichen zwei Zeilen:


sub I2C_EEPROM_Set($@) {
my ($hash, @a) = @_;
my $name =$a[0];
my $cmd = $a[1];
    my $val = $a[2];
my $msg = undef;

my $setList = " ";
return "Unknown argument, choose one of $setList" if(defined($a[1]) && $a[1] eq '?');


(analog auch in _Get)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

klausw

naja, schön isses meiner Meinung nach nicht
Aber ich habs erstmal eingebaut, bis mir was besseres einfällt.
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

betateilchen

#40
Schön isses nicht. Es ist vom dummy-Modul abgeschrieben und sorgt zumindest dafür, dass überhaupt ein Eingabefeld kommt.

Man könnte die setList per Attribut definierbar machen, dann kann man in der Dropdownliste tatsächlich die Adressen auswählen, wenn man das möchte. Fest ins Modul einbauen würde ich das jedenfalls nicht wollen.

(http://up.picr.de/20260983fd.png)


my $setList = AttrVal($name, "setList", " ");
return "Unknown argument, choose one of $setList" if(defined($a[1]) && $a[1] eq '?');


(http://up.picr.de/20261009dw.png)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

klausw

Das wäre ne Option. Bei dem 2K EEPROM würde die Liste auch bisschen lang werden.
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

betateilchen

Den beiden ADC konnte ich irgendwie noch nix entlocken. Aber vermutlich bin ich nur zu doof, den MCP3422 richtig anzusprechen.

Die analogen Ausgänge und die digitalen Eingänge stehen auch noch auf der ToDo-Liste. Aber ich denke, das sind "einfache" I/O ports (von denen ich aber auch nicht so viel Ahnung habe)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

klausw

Die digitalen Eingänge sind einfach auf die GPIOs gelegt. Da kannste das RPI_GPIO Modul nutzen.
Der analoge Ausgang, ist leider nur SW PWM vom GPIO18 oder so. Da habe ich noch nix implementiert. Ein PWM I2C IC währe da die bessere Lösung gewesen...

Ok dann sind wir beide zu doof den MCP3422 anzusprechen  8)
Ich bekomme nur nullen raus. Oder das Datenblatt ist falsch.

Meinst du es macht Sinn ein UniPi Modul zu bauen, das per Autocreate alle notwendigen defines macht? Oder ist das übertrieben?
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

betateilchen

Zitat von: klausw am 02 Dezember 2014, 17:10:30
Ok dann sind wir beide zu doof den MCP3422 anzusprechen  8)
Ich bekomme nur nullen raus. Oder das Datenblatt ist falsch.

Dann müssen wir vielleicht mal in die offizielle Api von UniPi schauen...

Zitat von: klausw am 02 Dezember 2014, 17:10:30
Meinst du es macht Sinn ein UniPi Modul zu bauen, das per Autocreate alle notwendigen defines macht? Oder ist das übertrieben?

Ich glaube, so ein Modul braucht man nicht wirklich, das wäre ja nur ein Wrapper für bereits bestehende Module. Und nicht jeder User braucht tatsächlich alles, was das UniPi bietet.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!