UniPi - The Universal Raspberry Pi add-on board

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

Vorheriges Thema - Nächstes Thema

Chris UniPi

Hallo,
Bin neu hier im Forum, auch relativ neu im Bereich raspberry und unipi. Möchte mit dem System meine komplette Hausautomation umsetzen. Hab alle Schritte bis define i2c durchgeführt, kann aber relais mcp23008 nicht definieren. Ich glaube es hakt noch irgendwo bei i2c. Dazu meine frage, werden die available i2c Devices normalerweise automatisch angezeigt?

Danke schon mal und viele grüße.

Chris

klausw

Hi Chris,

Du musst jedes I2C Device einzeln anlegen. Adressen findest du in der UniPi Beschreibung. Module sind in der Commandref beschrieben.
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: Chris UniPi am 26 März 2015, 08:29:59
Hab alle Schritte bis define i2c durchgeführt, kann aber relais mcp23008 nicht definieren.

Schau mal in den ersten Beitrag dieses Threads, da ist eigentlich alles beschrieben.

Wie ist der Status des definierte I2C Bus in fhem?
Was liefert i2cdetect - wie im Beitrag zu sehen - ? Werden dort alle Komponenten angezeigt?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Chris UniPi

Hallo,
i2c detect und Status in Fhem sieht bei mir momentan so aus:

carlos3

Hi everybody!

First of all, I like the concept of fhem and I'm gonna build my new home electric installation on it.
But I have a little problem with german language as I don't understand it at all :-O
I need to setup my raspberry with 2x unipi boards to get 16 relays and 24 inputs (wall switches), however I haven't found any info about digital inputs. How can I read them? Does it support interrupts like RPI GPIO inputs?
Thank you very much for answer in english language ;-) (or czech as I'm from Czech republic)
Regards!

klausw

The UniPi use Raspberrys GPIO Pins directly. So you will have 12 Inputs, no matter how much UniPis you connect.
And every Input will have interrupt functionality.
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

Chris UniPi

Hallo,
Hab die Relais jetzt zum laufen bekommen. Schon mal ein Teilerfolg. :D Hab aber jetzt ein neues Problem, habe mir direkt von der UniPi Seite einen Temperatursensor bestellt, ist ein DS18S20. Bin nach der Anleitung vorgegangen, hat so weit auch alles geklappt. Nur liefert er mir total schwankende Werte, von 9 bis 90 Grad ca. Hat jemand eine Ahnung, wo der Fehler liegen könnte? Ein Screenshot ist im Anhang.

Danke schon mal und viele Grüße

Chris

mixman

#67
Zitat von: PEPITO82 am 23 Dezember 2014, 19:19:18
# echo mcp7941x 0x6f > /sys/bus/i2c/devices/i2c-1/new_device
# hwclock -r


Das hat nun geklappt, nachdem ich mich als root angemeldet habe.  "sudo" war scheinbar nicht ausreichend...

Der OWServer läuft und mein 1-wire Temperaturfühler zeigt die Temperatur an.

Was mich noch besonders interessiert ist der analoge Ausgang 0-10V.
Wie kann dieser angesprochen werden?

How to control UniPi's PWM 0-10V via Fhem

-pre-condition1: WiringPi libraries with gpio binary installed
-pre-condition2: following has to be set before fhem starts (you can use rc.local)

# set the 18 (BCM style numbering) GPIO pin to mode pwm
gpio -g mode 18 pwm
# set PWM mode to mark:space ratio (traditional)
gpio pwm-ms
# set PWM freq to 400Hz
gpio pwmc 48
# set PWM range to 0-1000
gpio pwmr 1000

then you are ready for the Fhem part

-add following lines to the .cfg

define PWM dummy
attr PWM setList state:slider,0,1,10
attr PWM webCmd state

define n_pwm notify PWM { system("gpio -g pwm 18 ".(10-%)*100) }

-control dummy device using slider in the FHEMWEB instance

IMPORTANT NOTE: this part of the definition "...(10-%)*100..." is valid only for boards Unipi 1.0, where the PWM output values via GPIO are not inverted yet - when we need 10V, we need to put value 0 to the pin 18, to have 0V we need to put value 1000. In the v1.1 of the Unipi there is no need to do (10-%) anymore.

mv

Hallo zusammen
Habe eine "Raspberry Pi Relay Board v1.0"
http://www.seeedstudio.com/wiki/Raspberry_Pi_Relay_Board_v1.0#Hardware_Installation
mit "i2cdetect -y 1" sehe ich das Board
pi@pi-garage ~ $ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

mit "define i2c RPII2C 1" habe ich das IO Device angelegt.
mit set i2c writeBlock 0x20 0x6 0xFD
und set i2c writeBlock 0x20 0x6 0xFF kann ich Relais schalten.
Den Block kann ich mit "get i2c readBlock 0x20 0x6" lesen.

Habe mal das Relais auf gut Glück angelegt.
define relais I2C_MCP23008 32
attr relais IODev i2c
attr relais OutputPorts A0,A1,A2,A3,A4,A5,A6,A7

Kann aber über das Device die Relais nicht ansteuern.

Kann mir jemand einen Tipp geben wo ich ansetzen muss.
Danke schon mal für eure Hilfe

PEPITO82

#69
Zitat von: mixman am 15 April 2015, 12:45:53

define n_pwm notify PWM { system("gpio -g pwm 18 ".(10-%)*100) }

IMPORTANT NOTE: ... In the v1.1 of the Unipi there is no need to do (10-%) anymore.

Ich habe mir ein Unipi Board 1.1 gekauft und versuche gerade den analogen Ausgang in Betrieb zu nehmen.
Leider kann ich an der Klemme "AO" leider keine Spannung messen, obwohl bei "AOV" 12V anliegen und der Schieber des Dummys auf 10 steht.
Das Notify geht auf die Bretter. Ich habe verschiedene Varianten ausprobiert, aber alle Varianten produzierten Fehler im Log:

2015.06.24 17:40:04 3: n_pwm return value: -1
2015.06.24 17:44:49 1: PERL WARNING: Can't exec "gpio": No such file or directory at (eval 1123) line 1.
2015.06.24 17:44:49 3: eval: {system("gpio -g pwm 18".(6)*100)}

2015.06.24 17:44:49 3: n_pwm return value: -1
2015.06.24 18:01:20 3: n_pwm return value: Unknown command {, try help.
2015.06.24 18:02:17 3: n_pwm return value: Unknown command {, try help.
2015.06.24 18:02:21 3: n_pwm return value: Unknown command {, try help.
2015.06.24 18:04:51 3: n_pwm return value: Unknown command {, try help.
2015.06.24 18:06:33 3: n_pwm return value: Unknown command {, try help.


Aktuell sieht das define des Notify so aus:
PWM {system("gpio -g pwm 18 (%*100)")}


Im Log steht immer "n_pwm return value: -1". Was bedeutet das?
Wie muss das Notify aussehen?

Ergänzung: Die in Raspian festgelegte Spannung wird mittlerweile einwandfrei auf dem Unipi Board gesetzt, nachdem ich die rc.local korrigiert habe.
Nun hapert es nur noch am Notify.


klausw

Hallo,
Zitat von: mv am 06 Juni 2015, 23:34:38
Hallo zusammen
Habe eine "Raspberry Pi Relay Board v1.0"
http://www.seeedstudio.com/wiki/Raspberry_Pi_Relay_Board_v1.0#Hardware_Installation
mit "i2cdetect -y 1" sehe ich das Board
pi@pi-garage ~ $ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

mit "define i2c RPII2C 1" habe ich das IO Device angelegt.
mit set i2c writeBlock 0x20 0x6 0xFD
und set i2c writeBlock 0x20 0x6 0xFF kann ich Relais schalten.
Den Block kann ich mit "get i2c readBlock 0x20 0x6" lesen.

Habe mal das Relais auf gut Glück angelegt.
define relais I2C_MCP23008 32
attr relais IODev i2c
attr relais OutputPorts A0,A1,A2,A3,A4,A5,A6,A7

Kann aber über das Device die Relais nicht ansteuern.

Kann mir jemand einen Tipp geben wo ich ansetzen muss.
Danke schon mal für eure Hilfe
habe es leider erst jetzt gelesen.

Die Definition ist korrekt.
Hast du die aktuelle FHEM Version drauf?
Was steht im Logfile?
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

klausw

Zitat von: PEPITO82 am 24 Juni 2015, 18:11:19
Ich habe mir ein Unipi Board 1.1 gekauft und versuche gerade den analogen Ausgang in Betrieb zu nehmen.
Leider kann ich an der Klemme "AO" leider keine Spannung messen, obwohl bei "AOV" 12V anliegen und der Schieber des Dummys auf 10 steht.
Das Notify geht auf die Bretter. Ich habe verschiedene Varianten ausprobiert, aber alle Varianten produzierten Fehler im Log:

2015.06.24 17:40:04 3: n_pwm return value: -1
2015.06.24 17:44:49 1: PERL WARNING: Can't exec "gpio": No such file or directory at (eval 1123) line 1.
2015.06.24 17:44:49 3: eval: {system("gpio -g pwm 18".(6)*100)}

2015.06.24 17:44:49 3: n_pwm return value: -1
2015.06.24 18:01:20 3: n_pwm return value: Unknown command {, try help.
2015.06.24 18:02:17 3: n_pwm return value: Unknown command {, try help.
2015.06.24 18:02:21 3: n_pwm return value: Unknown command {, try help.
2015.06.24 18:04:51 3: n_pwm return value: Unknown command {, try help.
2015.06.24 18:06:33 3: n_pwm return value: Unknown command {, try help.


Aktuell sieht das define des Notify so aus:
PWM {system("gpio -g pwm 18 (%*100)")}


Im Log steht immer "n_pwm return value: -1". Was bedeutet das?
Wie muss das Notify aussehen?

Ergänzung: Die in Raspian festgelegte Spannung wird mittlerweile einwandfrei auf dem Unipi Board gesetzt, nachdem ich die rc.local korrigiert habe.
Nun hapert es nur noch am Notify.
Funktioniert es denn, wenn du
{system("gpio -g pwm 18 1023")} oben in der Eingabezeile von FHEM eingibst?
Ich vermute du musst im notify erstmal den Wert berechnen.
Das % Zeichen wird zwar von Value ersetzt, aber an dieser Stelle wird nichts ausgerechnet.
Ausserdem würde ich %EVENT anstelle von % nehmen. % wir irgendwann nicht mehr funktionieren.
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

PEPITO82

Wenn ich das in die Kommandozeile eingebe, erhalte ich auch ein "-1" zurück.

Der User fhem ist der Gruppe gpio zugeordnet:


gpio:x:1003:pi,fhem
i2c:x:110:pi,fhem


In Raspbian selbst ist mir nun aufgefallen, dass ich dort die Spannung auch nicht setzen kann, obwohl in der rc.local das Coding lt. mixman aufgenommen habe.

Nachdem ich die Zeilen händisch eingebe, kann ich die 10V Spannung am analogen Ausgang des unipi boards messen:

pi@raspberrypi ~ $ gpio -g mode 18 pwm
pi@raspberrypi ~ $ gpio pwm-ms
pi@raspberrypi ~ $ gpio pwmc 48
pi@raspberrypi ~ $ gpio pwmr 1000
pi@raspberrypi ~ $ gpio -g pwm 18 1000


Die rc.local scheint beim Booten nicht ausgeführt zu werden.
Lt. file Kommando ist die datei ausführbar:


# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Steuerung analoger Ausgang Unipi Board
# set the 18 (BCM style numbering) GPIO pin to mode pwm
gpio -g mode 18 pwm
# set PWM mode to mark:space ratio (traditional)
gpio pwm-ms
# set PWM freq to 400Hz
gpio pwmc 48
# set PWM range to 0-1000
gpio pwmr 1000

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

exit 0




klausw

Zitat von: PEPITO82 am 25 Juni 2015, 09:25:50
Wenn ich das in die Kommandozeile eingebe, erhalte ich auch ein "-1" zurück.

{system("...")} gibt meines Wissens immer -1 zurück
Beispiel:
{system("ls -l /opt/fhem")} gibt -1 zurück

{`ls -l /opt/fhem`} gibt den Verzeichnisinhalt zurück

das -1 bedeutet also nicht, das der Befehl fehlerhaft war

Zitat von: PEPITO82 am 25 Juni 2015, 09:25:50
In Raspbian selbst ist mir nun aufgefallen, dass ich dort die Spannung auch nicht setzen kann, obwohl in der rc.local das Coding lt. mixman aufgenommen habe.

Nachdem ich die Zeilen händisch eingebe, kann ich die 10V Spannung am analogen Ausgang des unipi boards messen:

pi@raspberrypi ~ $ gpio -g mode 18 pwm
pi@raspberrypi ~ $ gpio pwm-ms
pi@raspberrypi ~ $ gpio pwmc 48
pi@raspberrypi ~ $ gpio pwmr 1000
pi@raspberrypi ~ $ gpio -g pwm 18 1000


jetzt bist du an einem Punkt, wo du mit
pi@raspberrypi ~ $ gpio -g pwm 18 1000
pi@raspberrypi ~ $ gpio -g pwm 18 0


Den Ausgang auf 10V bzw. 0 schalten kannst.
Probiere jetzt mal
{system("gpio -g pwm 18 1000")}
{system("gpio -g pwm 18 0")}
oder
{`gpio -g pwm 18 1000`}
...
in Fhem

Zitat von: PEPITO82 am 25 Juni 2015, 09:25:50
Die rc.local scheint beim Booten nicht ausgeführt zu werden.
Lt. file Kommando ist die datei ausführbar:

versuche es mal mit der kompletten Pfadangabe für gpio
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

PEPITO82

Ich habe wieder alle in Raspbian vorbereitet und konnte dort schalten.
In FHEM erhalte ich aber leider folgende Log-Einträge:

2015.06.25 14:51:58 1: PERL WARNING: Can't exec "gpio": No such file or directory at (eval 40764) line 1.
2015.06.25 14:51:58 3: eval: {system("gpio -g pwm 18 0")}
2015.06.25 14:53:49 1: PERL WARNING: Can't exec "gpio": No such file or directory at (eval 40992) line 1.
2015.06.25 14:53:49 3: eval: {`gpio -g pwm 18 0`}
2015.06.25 14:56:52 1: PERL WARNING: Can't exec "gpio": No such file or directory at (eval 41367) line 1.
2015.06.25 14:56:52 3: eval: {system("gpio -g pwm 18 1000")}
2015.06.25 14:57:58 1: PERL WARNING: Can't exec "gpio": No such file or directory at (eval 41501) line 1.
2015.06.25 14:57:58 3: eval: {`gpio -g pwm 18 1000`}
2015.06.25 14:58:09 1: PERL WARNING: Can't exec "gpio": No such file or directory at (eval 41524) line 1.
2015.06.25 14:58:09 3: eval: {`gpio -g pwm 18 1000`}


Bei der Version mit den Anführungszeichen oben erhielt ich jeweils den Return Value -1.