FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Burny4600 am 18 Juli 2016, 14:12:51

Titel: I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: Burny4600 am 18 Juli 2016, 14:12:51
Ich habe einige Sensoren die ich in FHEM gerne nutzen möchte.
Diese habe ich soweit funktionsfähig aufgebaut und werden auch mit ihren I2C Adresse angezeigt.

Zitat:~ $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          03 -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 1e --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- 39 -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77

Nun besitze ich leider nicht die Fertigkeiten diese Sensoren in FHEM für meine Wetterstation einzubinden.
Bei den Sensoren handelt es sich um den:
1. BlitzdetektorFranklin AS3935 Adresse 03
2. Magnetometer HMC5883 Adresse 1e
3. LuftdruckTemperatur BMP180 Adresse 77
4. Helligkeitssensor TSL2561 Adresse 39

LuftdruckTemperatur BMP180 und Helligkeitssensor TSL2561 gibt es für FHEM schon.

Für den Sensor Magnetometer HMC5883 habe ich schon eine Tipp bekommen, was aber gänzlich daneben gegangen ist.

Hat zufälliger weise jemand schon einmal etwas mit diesen Sonsoren zu tun gehabt und könnte mir hierbei behilflich sein?

Der Sensor Magnetometer HMC5883 liese sich unter anderem bei Gaszählern verwenden wo es mit dem Reedkontakt nicht so wirklich gut funktioniert.
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: klausw am 18 Juli 2016, 23:25:09
Zitat von: Burny4600 am 18 Juli 2016, 14:12:51
Nun besitze ich leider nicht die Fertigkeiten diese Sensoren in FHEM für meine Wetterstation einzubinden.

Für den Sensor Magnetometer HMC5883 habe ich schon eine Tipp bekommen, was aber gänzlich daneben gegangen ist.
Für beide IC's wurde scheinbar noch nichts entwickelt.

Die Fertigkeiten lassen sich aneignen  8)

Was ist denn daneben gegangen? Wenn es Verständnisfragen sind bekommst du hier im Forum sicher Hilfe
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: Edi77 am 19 Juli 2016, 23:42:20
Hallo,

Einen AS3935 ( MOD-1016 ) habe ich hier auch noch leigen, da gab es mal ein schönes Projekt in einer c't make, das Log File könnte man wie in meinem GammaScout Projekt einfach importieren.
Rein  für Arduino gibt es ein paar schöne Sachen mit dem AS3935 ist aber für den FHEM nicht zu gebrauchen.
In der Entwicklung scheint im Bereich MySensors zu sein, das man ja auch an FHEM koppeln kann.
Ich hoffe ich konnte dir weiter helfen.
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: thymjan am 31 Juli 2016, 12:07:33
Der AS3935 meldet ja per Interrupt (GPIO17) ein anliegendes Event (Blitzsignal, Disturber, zu hoher Rauschpegel) über I2C. Lässt sich sowas sinnvoll in FHEM mit einem I2C-Modul integrieren?

Datenblatt:
http://www.is-line.de/fileadmin/user_upload/is-line/sensorik/hersteller/datasheets/ams_as3935_lightming_sensor_datasheet_en.pdf (http://www.is-line.de/fileadmin/user_upload/is-line/sensorik/hersteller/datasheets/ams_as3935_lightming_sensor_datasheet_en.pdf)

Gerade eben zog ein Gewitter durch und hat folgende Meldungen vom Python-Script generiert (Sensor per I2C am Raspberry):
pi@raspberry:/usr/local/RaspberryPi-AS3935 $ sudo ./demo.py
Waiting for lightning - or at least something that looks like it
We sensed lightning!
It was 27km away. (10:15:50 - 2016/07/31)

We sensed lightning!
It was 14km away. (11:20:33 - 2016/07/31)

Noise level too high - adjusting
We sensed lightning!
It was 10km away. (11:26:38 - 2016/07/31)

We sensed lightning!
It was 10km away. (11:30:22 - 2016/07/31)

We sensed lightning!
It was 10km away. (11:32:00 - 2016/07/31)

We sensed lightning!
It was 10km away. (11:33:49 - 2016/07/31)

We sensed lightning!
It was 1km away. (11:35:15 - 2016/07/31)

We sensed lightning!
It was 1km away. (11:38:58 - 2016/07/31)

We sensed lightning!
It was 1km away. (11:40:08 - 2016/07/31)

We sensed lightning!
It was 1km away. (11:44:06 - 2016/07/31)

We sensed lightning!
It was 1km away. (11:51:12 - 2016/07/31)

We sensed lightning!
It was 10km away. (11:53:10 - 2016/07/31)

We sensed lightning!
It was 10km away. (11:55:22 - 2016/07/31)

We sensed lightning!
It was 10km away. (11:56:58 - 2016/07/31)

We sensed lightning!
It was 8km away. (12:03:15 - 2016/07/31)

Link zum Python-Script: https://github.com/pcfens/RaspberryPi-AS3935.git (https://github.com/pcfens/RaspberryPi-AS3935.git)

Empfindlichkeit lässt sich einstellen (noise level). Standard I2C-Adresse ist =0x03. Indoor oder Outdoor-Benutzung (den Unterschied hab ich noch nicht verstanden).
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: klausw am 03 August 2016, 14:40:30
Zitat von: thymjan am 31 Juli 2016, 12:07:33
Der AS3935 meldet ja per Interrupt (GPIO17) ein anliegendes Event (Blitzsignal, Disturber, zu hoher Rauschpegel) über I2C. Lässt sich sowas sinnvoll in FHEM mit einem I2C-Modul integrieren?
Beim integrieren bin ich mir nicht sicher. Für den Interrupt muss ein GPIO verwendet werden, das auch Triggerfunktionalität hat. GPIOs sind wiederum Hardwareabhängig und benötigen ein spezielles Modul (z.B. Raspberry oder Firmata). Du könntest den GPIO separat anlegen und über ein notify den Auslesevorgang triggern.
Vielleicht lässt sich das notify auch in ein AS3935 integrieren, so das der GPIO nur als Attribut angegeben werden muss.

Zitat von: thymjan am 31 Juli 2016, 12:07:33
Empfindlichkeit lässt sich einstellen (noise level). Standard I2C-Adresse ist =0x03. Indoor oder Outdoor-Benutzung (den Unterschied hab ich noch nicht verstanden).
Vermutlich wird bei Indoornutzung die Empfindlichkeit hochgeschraubt, da die Hauswände eine dämpfende Wirkung haben.

Gibt es eigentlich ein Breakout Board für den AS3935?
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: thymjan am 03 August 2016, 18:32:09
Hallo Klaus!

Breakoutboards gibt es mehrere. Ich habe dieses (aus USA, dauert knappe 2 Wochen):
https://www.embeddedadventures.com/as3935_lightning_sensor_module_mod-1016.html (https://www.embeddedadventures.com/as3935_lightning_sensor_module_mod-1016.html)

Dieses Breakoutboard hat den Vorteil, das der Sensor kalibriert ist. Auf der Verpackung klebt ein Hinweis SensorTune = x. Dies muss im Script mit eingegeben werden.
In der Make: 1/2016 wird ein Bauprojekt besprochen (mit obigem python script).

Das Testen gestaltet sich dann aber langwierig, da sich Blitze eben nicht so leicht simulieren lassen.

So wie du das mit GPIO/Interrupt oben beschrieben hast hab ich mir das auch überlegt. Ich meine ich hätte irgendwo gelesen, dass der Interrupt-Grund (da gibt es verschiedene) nach 2 ms ausgelesen werden kann/muss. Könnte bei FHEM zeitkritisch werden, was meinst Du?
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: Burny4600 am 03 August 2016, 19:53:02
@klausw
ZitatDie Fertigkeiten lassen sich aneignen

Da stimme ich dir zu, aber das wird bei mir sicherlich noch eine Weile dauern.
Bin froh das ich soweit den Umzug von der Ezcontrol XS1 auf FHEM hinbekommen habe.
Das sogar besser als ich gedacht habe.
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: klausw am 03 August 2016, 23:16:07
Zitat von: thymjan am 03 August 2016, 18:32:09
Breakoutboards gibt es mehrere. Ich habe dieses (aus USA, dauert knappe 2 Wochen):
https://www.embeddedadventures.com/as3935_lightning_sensor_module_mod-1016.html (https://www.embeddedadventures.com/as3935_lightning_sensor_module_mod-1016.html)

Dieses Breakoutboard hat den Vorteil, das der Sensor kalibriert ist. Auf der Verpackung klebt ein Hinweis SensorTune = x. Dies muss im Script mit eingegeben werden.
In der Make: 1/2016 wird ein Bauprojekt besprochen (mit obigem python script).

nen Schnäppchen ist es nicht gerade...da muss ich mal in mich gehen ;)

Zitat von: thymjan am 03 August 2016, 18:32:09
Das Testen gestaltet sich dann aber langwierig, da sich Blitze eben nicht so leicht simulieren lassen.

bei dem super Sommer ist das simulieren ja nicht notwendig

Zitat von: thymjan am 03 August 2016, 18:32:09
So wie du das mit GPIO/Interrupt oben beschrieben hast hab ich mir das auch überlegt. Ich meine ich hätte irgendwo gelesen, dass der Interrupt-Grund (da gibt es verschiedene) nach 2 ms ausgelesen werden kann/muss. Könnte bei FHEM zeitkritisch werden, was meinst Du?
2ms ist sehr kurz.
Das macht für mich auch keinen Sinn.
Wenn es so ist dann wird das schwierig mir FHEM.
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: thymjan am 04 August 2016, 06:22:24
ZitatInterrupt Management
Whenever events happen, the AS3935 pulls the IRQ high and displays the interrupt in the REG0x03[3:0]. Figure 43 shows the interrupt register. After the signal IRQ goes high the external unit should wait 2ms before reading the interrupt register. The interrupt bus IRQ is set back to low whenever the interrupt register is read out.

Man soll 2 ms warten, bevor man liest/bevor die Daten anliegen.
Das geht ja nochmal ;)
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: Burny4600 am 04 August 2016, 09:45:43
Habe hier ein paar Infos zusammengetragen.
Vielleicht hilft es euch dabei.
https://coffeewithrobots.com/detecting-lightning-with-a-raspberry-pi/
http://myscope.net/blitzdetektor/
http://forum.arduino.cc/index.php?topic=264221.0
http://www.rs-online.com/designspark/electronics/blog/detecting-lightning-with-an-arduino
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: Stargazer am 01 Juli 2017, 19:43:10
Hallo zusammen,

ich möchte den AS3935 auch gerne via Skript am RasPi 3 betreiben.
Eine Version habe ich schon erfolgreich an einem Arduino in Betrieb.
Doch nun wäre ich an einem einbinden in FHEM auch interessiert.

Gibt es da schon etwas neues ?

Ich suche jetzt noch etwas weiter, doch die Ausbeute war bis jetzt recht mager.

Viele Grüße und besten Dank

André
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: Burny4600 am 02 Juli 2017, 21:58:50
Nein leider nicht.
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: albundy118 am 16 Januar 2018, 13:24:07
Hi,

ohne dass ich jetzt geprüft habe ob die oben erwähnten Sensorung unterstützt werden, könntet ihr es mal mit pilight versuchen. Da wird einiges mit I2C unterstützt.
Pilight läuft dann parallel zu fhem als eine Art Middleware und lässt sich dann mittels pilight_xxx module in FHEM einbinden.
Ich nutze z.B. pilight um 433 Mhz Sender/empfänger an GPIO in FHEM einzubinden und wollte demnächt einen I2C Helligkeits Sensor BH1750 damit auslesen.
Vielleicht hilft euch das ja weiter.

Gruß
Florian
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: hankyzoolander am 06 Juli 2019, 13:29:29
Hallo,
habe mir für meine Wetterstation einen Blitzsensor zugelegt. Nach langem hin und her hat er endlich auch die Adresse 0x03  :)
Da bei uns im Moment kein Gewitter auch nur in der nähe ist, heißt es abwarten :(


Script:
Wenn ich das richtig sehe, schreibt das script bei einem erfassten Blitz in die Console oder?

Idee:
# Die ausgabe in der Console abschalten.
# Python script als service laufen lassen
# Fhem im python script einbinden
# erkannte Blitze aus dem script heraus in einen fhem dummy schreiben

Habe das so in der art mit meinem Windmesser gelöst. Das funktioniert auch wunderbar.
Ich setzte mich mal dran und schaue mal, ob ich da was brauchbares zusammen bekomme.

Wo ich noch nicht ganz durchblicke, ist mit der justierung des Sensors.
Wurde bis jetzt aus den Internet Beispielen noch nicht erleuchtet :o ::)
Also wenn da jemand ein paar Tips hätte wär das toll.
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: thymjan am 06 Juli 2019, 13:59:10
Gute Idee!  ;)
Ich habe das in etwa so am Laufen.

blitz-fhem.py:

from RPi_AS3935 import RPi_AS3935

import RPi.GPIO as GPIO
import time
import os
from datetime import datetime

GPIO.setmode(GPIO.BCM)

# Initialisierung
Indoors = False
NoiseFloor = 0
TuningCap = 0x05
DispLco = False

sensor = RPi_AS3935(address=0x03, bus=1)
sensor.reset()

sensor.set_indoors(False)
os.system('perl /opt/fhem/fhem.pl 7072 "setreading AS3935 indoors '+str(Indoors)+'"')
sensor.set_noise_floor(0)
os.system('perl /opt/fhem/fhem.pl 7072 "setreading AS3935 level '+str(NoiseFloor)+'"')
sensor.calibrate(tun_cap=0x05)
time.sleep(1.0)
os.system('perl /opt/fhem/fhem.pl 7072 "setreading AS3935 tun_cap '+str(TuningCap)+'"')
sensor.set_disp_lco(DispLco)
os.system('perl /opt/fhem/fhem.pl 7072 "setreading AS3935 disp_lco '+str(DispLco)+'"')
minStrikes = sensor.get_min_strikes()
os.system('perl /opt/fhem/fhem.pl 7072 "setreading AS3935 min_strikes '+str(minStrikes)+'"')

# Interruptbehandlung
def handle_interrupt(channel):
now = datetime.now().strftime('%H:%M:%S - %Y/%m/%d')
time.sleep(0.004)
global sensor
reason = sensor.get_interrupt()
if reason == 0x01:
  noise = sensor.raise_noise_floor()
  os.system('perl /opt/fhem/fhem.pl 7072 "setreading AS3935 level '+str(noise)+'"')
elif reason == 0x04:
  os.system('perl /opt/fhem/fhem.pl 7072 "setreading AS3935 disturb 1"')
  sensor.set_mask_disturber(True)
elif reason == 0x08:
  distance = sensor.get_distance()
  os.system('perl /opt/fhem/fhem.pl 7072 "setreading AS3935 distance '+str(distance)+'"')
  energy = sensor.get_energy()
  os.system('perl /opt/fhem/fhem.pl 7072 "setreading AS3935 energy '+str(energy)+'"')

pin = 17
GPIO.setup(pin, GPIO.IN)
GPIO.add_event_detect(pin, GPIO.RISING, callback=handle_interrupt)

# heartbeat-Schleife
while True:
os.system('perl /opt/fhem/fhem.pl 7072 "setreading AS3935 heartbeat present"')
time.sleep(60.0)


Das Script läuft als Service, für den Empfang der Daten in FHEM habe ich den telnet-port aktiviert.

Hier ist meine dummy-Definition:

defmod AS3935 dummy
attr AS3935 icon weather_thunderstorm
attr AS3935 readingList level disturb distance energy
attr AS3935 room AS3935
attr AS3935 stateFormat D: [$name:distance] km, P: [$name:energy] um [$name:energy:t]\
<br>Noisefloor: [$name:level], Störer maskiert: [$name:disturb:t]\
<br>Display LC oscillator on interrupt pin: [$name:disp_lco]\
<br>Indoors: [$name:indoors], Min. Strikes: [$name:min_strikes]\
<br>internal tuning capacitors: [$name:tun_cap] x 8pF\
<br>Heartbeat: [$name:heartbeat:t]

setstate AS3935 D: 1 km, P: 0 um 2019-07-05 13:31:29\
<br>Noisefloor: 1, Störer maskiert: 2019-07-03 21:38:19\
<br>Display LC oscillator on interrupt pin: False\
<br>Indoors: False, Min. Strikes: 1\
<br>internal tuning capacitors: 5 x 8pF\
<br>Heartbeat: 2019-07-06 13:54:44
setstate AS3935 2019-07-03 21:38:15 disp_lco False
setstate AS3935 2019-07-05 13:31:29 distance 1
setstate AS3935 2019-07-03 21:38:19 disturb 1
setstate AS3935 2019-07-05 13:31:29 energy 0
setstate AS3935 2019-07-06 13:54:44 heartbeat present
setstate AS3935 2019-07-03 21:38:13 indoors False
setstate AS3935 2019-07-04 20:26:33 level 1
setstate AS3935 2019-07-03 21:38:16 min_strikes 1
setstate AS3935 2019-07-03 21:38:15 tun_cap 5


Im Anhang noch ein paar Screenshots dazu. Ich warte momentan auf das nächste Gewitter.
Bis vor kurzem hatte ich noch ziemlich zugemüllte Diagramme in denen ein Gewitter nicht direkt aufgefallen ist.
Bin mir auch nicht sicher ob der Sensor gelegentlich aussteigt und sich nur durch einen Kaltstart reaktivieren lässt.
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: thymjan am 06 Juli 2019, 14:18:58
Zitat von: hankyzoolander am 06 Juli 2019, 13:29:29
Wo ich noch nicht ganz durchblicke, ist mit der justierung des Sensors.
Wurde bis jetzt aus den Internet Beispielen noch nicht erleuchtet :o ::)
Also wenn da jemand ein paar Tips hätte wär das toll.

Such mal nach "AS3935 demoboard pdf". Bei dieser Lektüre sind mir die Parameter etwas klarer geworden.
Und schau direkt bei GitHub in den python Quelltext der Bibliothek. Da hats gute Erklärungen.
https://github.com/pcfens/RaspberryPi-AS3935/blob/master/RPi_AS3935/RPi_AS3935.py (https://github.com/pcfens/RaspberryPi-AS3935/blob/master/RPi_AS3935/RPi_AS3935.py)

Das sind die Entscheidungen (so wie ich sie verstanden habe...):

Ich habe einen Sensor, der vom Werk her vermessen und gelabelt ist (0x05).
Der Schwingkreis für die Antenne muss eine Frequenz von 500kHz erreichen.
Man kann die Frequenz auf den Interrupt pin legen (set_disp_lco), vermutlich mit einem Oszi messen und dann die Anzahl (0-15) der Kondensatoren (tun_cap) erhöhen oder erniedrigen bis die 500kHz am besten erreicht sind.
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: hankyzoolander am 06 Juli 2019, 14:42:41
Hallo, danke für die schnelle Antwort. Super.
Ok mit deinen Tips bin ich jetzt schon mal etwas weiter.  ;)

Bleibt nur noch die Frage mit der kalibration des Sensors.
###deinen Schwingkreis (mit Spule) kalibrieren, bzw. den spezifischen Board-Wert eingeben (calibrate)###
Also auf dem Board steht GAR nix. werde mich mal durch die tiefen des Internets durchsuchen ob da jemand den selben Sensor wie ich hat.
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: thymjan am 06 Juli 2019, 14:45:59
Zitat von: hankyzoolander am 06 Juli 2019, 14:42:41
Bleibt nur noch die Frage mit der kalibration des Sensors.
###deinen Schwingkreis (mit Spule) kalibrieren, bzw. den spezifischen Board-Wert eingeben (calibrate)###
Also auf dem Board steht GAR nix. werde mich mal durch die tiefen des Internets durchsuchen ob da jemand den selben Sensor wie ich hat.

Die Crux ist, dass jedes Board anders ist. Die Jungs von
https://www.embeddedadventures.com/as3935_lightning_sensor_module_mod-1016.html (https://www.embeddedadventures.com/as3935_lightning_sensor_module_mod-1016.html)
haben den Job für mich erledigt. Da klebt auch auf jedem Sensor ein anderer Wert.
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: thymjan am 06 Juli 2019, 15:02:14
Wobei, wenn ich mir das genau überlege:
Um die Frequenz von einem Digitalen Signal zu messen, muss man nur gut zählen können.
Also wie oft meldet sich der Interrupt-Pin pro Sekunde. 1 Hz bedeutet 1x pro Sekunde, 500 kHz demnach 500.000 x pro Sekunde.
Wieviel Takte benötigt man zum Zählen, welcher Mikroprozessor macht das vernünftig mit?

http://laagewitt.de/nano-scope-oszilloskop-mit-arduino-und-lcd-display/ (http://laagewitt.de/nano-scope-oszilloskop-mit-arduino-und-lcd-display/)
Mit einem Arduino Nano ist bei 200Hz wohl Schluss... (für analoge Signale)

Edit:
vielleicht geht's mit dem raspi:
https://forum-raspberrypi.de/forum/thread/39413-frequenzmessung-mit-dem-raspberry-pi/?postID=337826#post337826 (https://forum-raspberrypi.de/forum/thread/39413-frequenzmessung-mit-dem-raspberry-pi/?postID=337826#post337826)

Hier eine Lösung mit einem Kernel-Modul:
https://www.kampis-elektroecke.de/2018/08/frequenzmessung-auf-dem-raspberry-pi/ (https://www.kampis-elektroecke.de/2018/08/frequenzmessung-auf-dem-raspberry-pi/)
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: hankyzoolander am 11 Juli 2019, 14:50:52
hallo,
ich hatte ganz übersehen das thymjan sein Script gepostet hat ???

Genau so hatte ich es vor. Anstatt mit import os halt import fhem.
Habe das Script auch fertig, aber lese damit nur die Entfernung aus.
War aber mal so frei und habe dein Script übernommen ;)
Gute Sache. Läuft jetzt seit einigen Tagen auch durch. Habe mir nur das StateFormat etwas angepasst und es auf entfernung und energy reduziert.
Sehr gutes Script.Tolle Arbeit
#Daumen Hoch#

Habe auch schon 3 "Blitze" geortet.
31km
27km
17km

Hab mal im Datenblatt des Sensors nach der errechneten Energie nachgelesen. Ist dort angegeben als einheit ohne Wert(Bezeichnung)
hmm... hab es einfach unter energie abgelegt ;D

Mit der Kalibration des Sensors teste ich mich einfach mal durch.
Hab ihn jetzt auf 0x05 stehen. Laut wetterbericht sollen wir hier die nächsten beiden Tagen Gewitter bekommen.
Ich warte mal ab und behalte das im Auge.

Noch ne kleine Frage:
rückst du mit Leerzeichen ein?
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: thymjan am 11 Juli 2019, 21:36:51
Zitat von: hankyzoolander am 11 Juli 2019, 14:50:52
Noch ne kleine Frage:
rückst du mit Leerzeichen ein?

Ja, ich rücke mit Leerzeichen ein.

Ganz optimal ist das Script noch nicht.
Bei der Interrupt-Behandlung im Blitz-Fall habe ich folgende Änderung vorgenommen:

    elif reason == 0x08:
        distance = sensor.get_distance()
        energy = sensor.get_energy()
        os.system('perl /opt/fhem/fhem.pl 7072 "setreading AS3935 distance '+str(distance)+';setreading AS3935 energy '+str(energy)+'"')

Gelegentlich hatte ich hier Readings mit energy=0, da vermutlich bei der Abfrage des Sensor zu viel Zeit verstrichen ist.

Und ich habe noch eine Fehler-Behandlung eingebaut, da ich gelegentlich einen IOError habe und der heartbeat trotzdem weiter läuft:

while True:
    try:
        if counter > 30:
            counter = 0
            os.system('perl /opt/fhem/fhem.pl 7072 "setreading AS3935 heartbeat present;setreading AS3935 error absent"')
        counter = counter + 1
        time.sleep(2.0)

    except Exception as ex:
        os.system('perl /opt/fhem/fhem.pl 7072 "setreading AS3935 error %s present;setreading AS3935 heartbeat absent"' % (ex-message))
        GPIO.cleanup()

Aber ich kenn' mich da nicht wirklich aus...
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: chris8868 am 24 April 2020, 16:12:19
Hallo Zusammen

Hab nun auch den Blitz Sensor angeschlossen.
Kann mir jemand helfen, wie und wo ich das Script als Service installieren muss?

Vielen Dank und Grüsse
Chris
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: uwirt am 28 Juni 2020, 10:45:18
Ich möchte von der zentralen FHEM Instanz aus die Werte des Blitzsensors der sich an in einem RPI im Estrich befindet abfragen.

Weiss jemand wie?
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: uwirt am 29 Juni 2020, 14:03:33
Ich habe das jetzt damit hingegkriegt, indem ich das fhem Python modul auf dem Estrich-RPI benutze.

noch eine Frage:



Zitat von: thymjan am 11 Juli 2019, 21:36:51

    except Exception as ex:
        os.system('perl /opt/fhem/fhem.pl 7072 "setreading AS3935 error %s present;setreading AS3935 heartbeat absent"' % (ex-message))
        GPIO.cleanup()

Das sieht bei mir jetzt so aus:


except Exception as ex:
  fh.send_cmd("setreading " + Device + "error %s present " , "setreading " + Device + "heartbeat absent " % (ex-Message))
  GPIO.cleanup()


Nur leider kriege ich da einen Fehler:

Traceback (most recent call last):
  File "lightning.py", line 72, in <module>
    if counter > 30:
NameError: name 'counter' is not defined

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "lightning.py", line 78, in <module>
    fh.send_cmd("setreading " + Device + "error %s present " , "setreading " + Device + "heartbeat absent " % (ex-Message))
TypeError: unsupported operand type(s) for -: 'NameError' and 'str'
Titel: Antw:I2C Sensoren erfassen in FHEM. Aber wie?
Beitrag von: thymjan am 01 Juli 2020, 22:38:45
Hallo Urs,

anbei meine aktuelle Version. Hab nun schon länger nichts mehr daran gemacht.
Ich vermute dass meine Fehlerbehandlung am Schluß etwas Schmuh ist, ich hab' das nicht wirklich kapiert als ich das vor einem Jahr zusammengeschustert habe.
Vielleicht kann uns da ein Profi noch Tips geben?
Mein Sensor liefert auch nur enttäuschende Werte, hab ihn aussen am Fenster montiert, aber unser Dach ist mit Kupfer abgedeckt. Das schirmt vermutlich ziemlich viel ab, bzw. Signale aus der Wohnung etc. werden reflektiert und falsch interpretiert.

Grüße,
Stefan