Keine Ahnung in welcher Rubrik ich die Frage stellen sollte darum hier.
Hi,
spiele mit dem Gedanken einen BH1750 (vlt. später wenn ich ein Skript gefunden habe einen MAX4409) via I2C an meinem FHEM-RasPi anzuschliessen.
Wie hier (https://www.laub-home.de/wiki/Raspberry_Pi_BH1750_Helligkeitssensor#Auslesen_der_Daten_des_Sensors) beschrieben klappt das auf dem Test-FHEM (Pi0z) super einfach per MQTT, man muss nur paho-mqtt installieren, das Skript anlegen, cronjob eintragen und gut ist.
Frage mich aber ob es MQTT auf der gleichen Pi sein muss, bekomm ich den Wert ggf. genauso simple auf einem anderen Weg nach FHEM ?
Gruß
Thomas
Zitat von: TomLee am 14 April 2022, 13:38:28
spiele mit dem Gedanken einen (bla bla) via I2C an meinem FHEM-RasPi anzuschliessen.
Für I2C gibt es doch fertige Module, um Daten solcher Geräte in FHEM bereitzustellen?
Und, Du hast narürlich auch schon gesucht, da ja Python und Fhem ganz neu ist - Ironie Ende.
https://forum.fhem.de/index.php?topic=56793.0
...und ich habe bei sowas immer den Impuls nachzufragen, warum man unbedingt PI-GPIO's nutzen will ::) ...
Klemme einen Microcontroller dazwischen und "gut ist" (auch, wenn du mal die Plattform gegen "was gscheids" austauschen willst)...
PI-GPIO sind hochgradig "blockade-verdächtig", und wenn man mal raus hat, wie man z.B. einen Arduino programmiert, ist das viel flexibler.
Für reines lesen ist "keyValueProtocol" das Stichwort.
@Betateilchen und JoWiemann
ehrlich gesagt bisher gekonnt ignoriert und einfach die Frage mal gestellt nachdem ich die Tage mit der I2C Schnittstelle (iVm. der Pi) nach erste Berührungen hatte. Ich les mich ein.
@Beta-User
Eigentlich wollt ich die Antwort schon vorschreiben, weil ich die Antwort erwartet habe.
Wegen der (baulichen) Gegebenheiten und der wenigen Arbeit die es macht. Der PI läuft sowieso, 30 cm weiter an der Wand sitzt eine Abzweigdose, hinter der Abzweigdose ist nach draussen gebohrt direkt in eine Alarm-Sirene. Ich hab vor einen Sensor oben in die rote Kuppel zu bauen und zu testen ob das tauglich ist. Das wär dann "vorübergehend" für den Sommer, wenn das klappt, der Ersatz für das MySensors-Gateway und der Node welche ich mal gebastelt hatte, weil ich da den LiFePO4 zu tief hab entladen lassen und ich keine Lust hab einen neuen zu kaufen der bei mir 100 % bis nächtes Jahr wieder das zeitliche segnen würde.
Zitat von: TomLee am 14 April 2022, 14:18:38
Wegen der (baulichen) Gegebenheiten und der wenigen Arbeit die es macht.
Na ja, wenn sowieso ein Arduino (samt Code) vorhanden ist, kannst du das doch direkt machen; die baulichen Gegebenheiten würden ja nicht ausschließen, dass der Arduino (mit einem hübschen weißen USB-Kabel verbunden) in die Abzweigdose wandert...
Achso, und zur Arduino-Lösung, ja gefällt mir, krieg ch auch Ruckzuck gebacken, bloß hab ich keinen USB-Anschluss mehr frei und gerade keinen USB-Hub, ob ich den Sensor später am Mikrokontroller anschliesse oder an den GPIOs ist auch erstmal egal, mich interessierts ab ich brauchbare Werte hinter dem roten Plexigkas bekomme.
Und dann sind seit rd. zwei Wochen restlos alle meine Mikrokontroller, die seit Jahren nur in der Schublade liegen beschäftigt 8) ::), selbst bei meinen totgeglaubten Wemos D1 Mini hab ich den ESP12 abgelötet und direkt zum laufen bekommen.
ZitatFür I2C gibt es doch fertige Module, um Daten solcher Geräte in FHEM bereitzustellen?
Jetzt bin ich an dem Punkt angelangt und dabei die Voraussetzungen für RPII2C zu schaffen.
Reicht es aus nur i2c-dev und i2c-bcm2708 in /etc/modules oder muss noch was speziell für den BH1750 angegeben werden ?
In der commandref :P steht was von device_tree_param=i2c0=on,i2c1=on, ist device_tree_param nur "veraltet" und meine Einträge dtparam=i2c_arm=on und dtparam=i2c_vc=on ausreichend oder muss ich das wirklich noch so ergänzen ?
Ich kenn mich damit nicht aus und mach um so Geschichten immer einen großen Bogen, trag ich das in /etc/rc.local:
sudo chown fhem /dev/i2c-*
sudo chgrp dialout /dev/i2c-*
sudo chmod +t /dev/i2c-*
sudo chmod 660 /dev/i2c-*
unter Buster wirklich so ein ?
Je mehr ich lese, desto größer wird der Gedanke es mit MQTT umzusetzen, paho-mqtt zu installieren schadet vermutlich nicht, eher reizte es mich jetzt damit auch mal zu befassen und das ist alles auch noch in 5-10 Minuten eingerichtet inkl. automatischer Definition vom FHEM-Device/FileLog und dem anlegen eines cronjobs für das Pythonskript.
Ich hab jetzt einfach wiringpi installiert und durch ausprobieren haben sich alle Fragen beantwortet, bis auf wie ich die Rechte von /dev/i2c-0 wieder richtig setze nach einem Neustart.
Wie gesagt kenn ich mich damit zu wenig mit aus, kann ich einfach sudo chmod 0666 /dev/i2c-0 in der fhem.service ergänzen, muss es dann an einer ganz bestimmten Stelle stehen ?
Du kannst es so machen, besser währe es aber per udev zu machen.
ABER .. brauchst DU wirklich 666? Besser währe, über die Gruppe zu gehen, d.h. dem Zugreifenden User zusätzlich in die Passende Gruppe zu packen.
ZitatABER .. brauchst DU wirklich 666?
Keine Ahnung kenn ich mich nicht aus. Vor dem
sudo chmod 0666 /dev/i2c-0 sahs so aus:
crw-rw---- 1 root i2c 89, 0 Apr 20 17:24 i2c-0
der user fhem war schon in der Gruppe i2c
i2c:x:998:pi,fhem
und beim definieren des RPII2C IO wurde gemeckert.
Erst nachdem ich die Rechte angepasst hatte
crw-rw-rw- 1 root i2c 89, 0 Apr 20 17:24 i2c-0
hats auch mit dem definieren des IO-Device geklappt.
Es bleibt immer noch die Frage obs egal ist wo genau der chmod-Befehl in der fhem-service steht ?
Zu udev muss ich mich erst noch einlesen.
Hattest Du nach ändern der Gruppe fhem restartet? Es sollte die Gruppenzugehörigkeit reichen ...
Weiß ich nicht mehr.
Wenn ich jetzt die Rechte wieder so herstelle wie sie waren bekomme ich in dem Device vom Type I2C_BH1750 direkt ein I2C Error in state und im Log steht dann :
2022.04.21 16:31:29 3: Lichtsensor_Sirene I2C_BH1750_i2Rec bad sendstat: error
2022.04.21 16:31:29 3: Lichtsensor_Sirene: i2cwrite on IO_I2C failed
2022.04.21 16:31:29 3: Lichtsensor_Sirene: i2cwrite on IO_I2C failed
2022.04.21 16:31:30 3: IO_I2C: HWaccess sysopen failure: Permission denied
2022.04.21 16:31:30 3: Lichtsensor_Sirene I2C_BH1750_i2Rec bad sendstat: error
2022.04.21 16:31:30 3: IO_I2C: HWaccess sysopen failure: Permission denied
2022.04.21 16:31:30 3: Lichtsensor_Sirene I2C_BH1750_i2Rec bad sendstat: error
2022.04.21 16:31:30 3: Lichtsensor_Sirene: i2cwrite on IO_I2C failed
2022.04.21 16:31:30 3: Lichtsensor_Sirene: i2cread on IO_I2C failed
Daran ändert ein Neustart von FHEM und auch ein reboot des Pi nix.
Und jetzt ?
Du bist sicher, das FHEM in der Gruppe i2c ist?
2022.04.21 16:31:30 3: IO_I2C: HWaccess sysopen failure: Permission denied
was sagt "id fhem"?
pi@FHEMPIOS:~ $ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:pi
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:pi
fax:x:21:
voice:x:22:
cdrom:x:24:pi
floppy:x:25:
tape:x:26:
sudo:x:27:pi
audio:x:29:pi
dip:x:30:
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:pi
sasl:x:45:
plugdev:x:46:pi
staff:x:50:
games:x:60:pi
users:x:100:pi
nogroup:x:65534:
systemd-journal:x:101:
systemd-timesync:x:102:
systemd-network:x:103:
systemd-resolve:x:104:
input:x:105:pi
kvm:x:106:
render:x:107:
crontab:x:108:
netdev:x:109:pi
pi:x:1000:
messagebus:x:110:
ssh:x:111:
bluetooth:x:112:
avahi:x:113:
spi:x:999:pi
i2c:x:998:pi,fhem
gpio:x:997:pi
systemd-coredump:x:996:
ssl-cert:x:114:
lpadmin:x:115:pi
scanner:x:116:saned
saned:x:117:
colord:x:118:
rdma:x:119:
sambashare:x:120:
pi@FHEMPIOS:~ $ id fhem
uid=999(fhem) gid=20(dialout) Gruppen=20(dialout),998(i2c)
Hey, sry, ich hab 0600 gemacht statt 0660, es klappt so wie du dir das vorgestellt hast nur mit dem user fhem in der i2c-Gruppe.
Also muss auch nix in die fhem.service oder eine udev-Regel angelegt werden wie ichs jetzt verstehe.
Danke für die Hilfe.
O.K. ... dann passt es ja. Danke für die Rückmeldung
Ich mach mal hier weiter, Sensorwerte vergleichen hab ich jetzt vor.
Einfach mal jetzt einen TSL2561,Max44009 und VEML6070 dazuklemmen klappt auf Anhieb nicht, dann gibts gleich einen Error in dem BH1750-Device und im Log steht:
2022.04.23 17:24:07 3: Lichtsensor_Sirene: i2cwrite on IO_I2C failed
2022.04.23 17:24:07 3: IO_I2C: HWaccess blockweise nach 0x23 schreiben, Reg: 0x07 Inh: , laenge: 1| -> syswrite failure: Remote I/O error
Wenn ich nur den TSL2561 dazunehme gibts erstmal keinen Error.
Man muss für den TSL2561 HiPi installieren, wenn ich den Befehl wie in der commandref verwende:
wget http://raspberry.znix.com/hipifiles/hipi-install perl hipi-install
passiert das:
pi@FHEMPIOS:~ $ wget http://raspberry.znix.com/hipifiles/hipi-install perl hipi-install
--2022-04-23 17:45:07-- http://raspberry.znix.com/hipifiles/hipi-install
Auflösen des Hostnamens raspberry.znix.com (raspberry.znix.com)... 142.250.184.243, 2a00:1450:4001:80f::2013
Verbindungsaufbau zu raspberry.znix.com (raspberry.znix.com)|142.250.184.243|:80 ... verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet ... 301 Moved Permanently
Platz: https://raspberry.znix.com/hipifiles/hipi-install [folgend]
--2022-04-23 17:45:08-- https://raspberry.znix.com/hipifiles/hipi-install
Verbindungsaufbau zu raspberry.znix.com (raspberry.znix.com)|142.250.184.243|:443 ... verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet ... 302 Moved Temporarily
Platz: https://raspberrypi.znix.com/hipifiles/hipi-install [folgend]
--2022-04-23 17:45:08-- https://raspberrypi.znix.com/hipifiles/hipi-install
Auflösen des Hostnamens raspberrypi.znix.com (raspberrypi.znix.com)... 213.138.97.123
Verbindungsaufbau zu raspberrypi.znix.com (raspberrypi.znix.com)|213.138.97.123|:443 ... fehlgeschlagen: Die Wartezeit für die Verbindung ist abgelaufen.
Erneuter Versuch.
--2022-04-23 17:47:20-- (Versuch: 2) https://raspberrypi.znix.com/hipifiles/hipi-install
Verbindungsaufbau zu raspberrypi.znix.com (raspberrypi.znix.com)|213.138.97.123|:443 ... fehlgeschlagen: Die Wartezeit für die Verbindung ist abgelaufen.
Erneuter Versuch.
--2022-04-23 17:49:34-- (Versuch: 3) https://raspberrypi.znix.com/hipifiles/hipi-install
Verbindungsaufbau zu raspberrypi.znix.com (raspberrypi.znix.com)|213.138.97.123|:443 ... fehlgeschlagen: Die Wartezeit für die Verbindung ist abgelaufen.
Erneuter Versuch.
--2022-04-23 17:51:48-- (Versuch: 4) https://raspberrypi.znix.com/hipifiles/hipi-install
Verbindungsaufbau zu raspberrypi.znix.com (raspberrypi.znix.com)|213.138.97.123|:443 ... fehlgeschlagen: Die Wartezeit für die Verbindung ist abgelaufen.
Erneuter Versuch.
--2022-04-23 17:54:02-- (Versuch: 5) https://raspberrypi.znix.com/hipifiles/hipi-install
Verbindungsaufbau zu raspberrypi.znix.com (raspberrypi.znix.com)|213.138.97.123|:443 ... fehlgeschlagen: Die Wartezeit für die Verbindung ist abgelaufen.
Erneuter Versuch.
usw.
Zur Sicherheit frag ich lieber nach, kann ich es so installieren wie http://hipi.znix.com/install.htmlhier (http://hipi.znix.com/install.htmlhier) unter 32-bit armhf package beschrieben ?
edit:
root@FHEMPIOS:/home/pi# dpkg --install libhipi-perl_0.86-1_armhf.deb
(Lese Datenbank ... 60017 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von libhipi-perl_0.86-1_armhf.deb ...
Entpacken von libhipi-perl (0.86-1) über (0.86-1) ...
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von libhipi-perl:
libhipi-perl hängt ab von libfile-copy-recursive-perl; aber:
Paket libfile-copy-recursive-perl ist nicht installiert.
libhipi-perl hängt ab von libfile-slurp-perl; aber:
Paket libfile-slurp-perl ist nicht installiert.
libhipi-perl hängt ab von libuniversal-require-perl; aber:
Paket libuniversal-require-perl ist nicht installiert.
libhipi-perl hängt ab von libio-epoll-perl; aber:
Paket libio-epoll-perl ist nicht installiert.
libhipi-perl hängt ab von libimage-imlib2-perl; aber:
Paket libimage-imlib2-perl ist nicht installiert.
libhipi-perl hängt ab von libbit-vector-perl; aber:
Paket libbit-vector-perl ist nicht installiert.
libhipi-perl hängt ab von libxml-libxml-perl; aber:
Paket libxml-libxml-perl ist nicht installiert.
libhipi-perl hängt ab von libperl-dev; aber:
Paket libperl-dev ist nicht installiert.
dpkg: Fehler beim Bearbeiten des Paketes libhipi-perl (--install):
Abhängigkeitsprobleme - verbleibt unkonfiguriert
Trigger für man-db (2.8.5-2) werden verarbeitet ...
Fehler traten auf beim Bearbeiten von:
libhipi-perl
Diese hipi-Bibliothek wird nur gebraucht wenn man beim Define den I2C-Bus mit angibt:
define TSL2561 I2C_TSL2561 /dev/i2c-0 0x39
$name error: HiPi library not installed
Lässt man den weg wird das Device ganz normal angelegt und auch die Werte kommen rein:
defmod Lichtsensor_TSL2561_Sirene I2C_TSL2561 0x39
attr Lichtsensor_TSL2561_Sirene event-on-change-reading luminosity
attr Lichtsensor_TSL2561_Sirene floatArithmetics 1
attr Lichtsensor_TSL2561_Sirene poll_interval 10
attr Lichtsensor_TSL2561_Sirene room I2C
attr Lichtsensor_TSL2561_Sirene stateFormat luminosity
attr Lichtsensor_TSL2561_Sirene timestamp-on-change-reading luminosity
attr Lichtsensor_TSL2561_Sirene userReadings illuminance:luminosity.* {ReadingsNum($name,'luminosity',0)}
setstate Lichtsensor_TSL2561_Sirene 584
setstate Lichtsensor_TSL2561_Sirene 2022-04-24 10:43:47 IODev IO_I2C
setstate Lichtsensor_TSL2561_Sirene 2022-04-24 11:19:13 broadband 302
setstate Lichtsensor_TSL2561_Sirene 2022-04-24 11:19:13 gain 1
setstate Lichtsensor_TSL2561_Sirene 2022-04-24 11:19:13 illuminance 584
setstate Lichtsensor_TSL2561_Sirene 2022-04-24 11:19:13 integrationTime 0.0137
setstate Lichtsensor_TSL2561_Sirene 2022-04-24 11:19:13 ir 178
setstate Lichtsensor_TSL2561_Sirene 2022-04-24 11:19:13 luminosity 584
setstate Lichtsensor_TSL2561_Sirene 2022-04-24 10:43:57 state Initialized
Wie kommt man jetzt am einfachsten an die Werte des Max44009 und VEML6070, ein I2C_MAX44009/I2C_VEML6070-Modul gibts ja nicht ?