Autor Thema: Daten von Python ISR an PERL FHEM  (Gelesen 803 mal)

Offline Klaus Heynen

  • New Member
  • *
  • Beiträge: 42
Daten von Python ISR an PERL FHEM
« am: 28 Juli 2021, 11:39:43 »
​Ich habe einen I2C-Encoder der über ein Python Script Encoder (https://github.com/Fattoresaimon/I2CEncoderV2.1)​ Werte ausliest (https://github.com/Fattoresaimon/I2CEncoderV2.1/blob/master/Python%20Raspberry%20Library/Examples/I2CEncoderV2_basic.py)​. Es wird beim Start von FHEM mit gestartet und läuft parallel zu FHEM.

Der Encoder erzeugt Interrupts auf einem GPIO, diese möchte möchte ich über FHEM auswerten und entsprechende Aktionen ausführen.

Die Hardware funktioniert einwandfrei aber ich bekomme den Ausgabewert nicht von der Python Ebene an FHEM (Perl) übergeben.
Wie könnte ich die Parameterübergabe machen?

Online Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 19528
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Daten von Python ISR an PERL FHEM
« Antwort #1 am: 28 Juli 2021, 12:27:10 »
Zu Deiner letzen Frage:
Du kannst von python (über gefühlt 20 Schnittstellen Module) - oder einfach so - per http - Befehle an FHEM senden.
https://wiki.fhem.de/wiki/CsrfToken-HowTo#Python

Ist der Satz mit der GPIO auch eine extra Frage? Wenn Du mal so suchst:
site:forum.fhem.de interrupt gpio
Gruß Otto
« Letzte Änderung: 28 Juli 2021, 12:39:33 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Online MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 11069
  • NIVEAu ist keine Creme...
Antw:Daten von Python ISR an PERL FHEM
« Antwort #2 am: 28 Juli 2021, 12:33:05 »
Eventuell ist ja auch das was: https://forum.fhem.de/index.php/topic,115230.msg1094931.html#msg1094931

Ansonsten kann ich Otto nur zustimmen, es gibt ettliche Möglichkeiten um Daten nach fhem (in einen dummy) zu bekommen...

Man kann auch bei anderen "Modulen" (nodejs etc.) abkucken...

Gruß, Joachim
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 RaspiOS (Test)

Offline frober

  • Sr. Member
  • ****
  • Beiträge: 846
  • Was man nicht kann, kann man lernen...
Antw:Daten von Python ISR an PERL FHEM
« Antwort #3 am: 28 Juli 2021, 12:48:25 »
Auf der selben Hardware, wäre telnet auch eine Lösung...
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Online MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 11069
  • NIVEAu ist keine Creme...
Antw:Daten von Python ISR an PERL FHEM
« Antwort #4 am: 28 Juli 2021, 13:01:16 »
Auf der selben Hardware, wäre telnet auch eine Lösung...

Warum nur auf derselben HW?
Telnet geht auch über Netzwerk...
...soweit mir bekannt...

Gruß, Joachim
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 RaspiOS (Test)

Offline frober

  • Sr. Member
  • ****
  • Beiträge: 846
  • Was man nicht kann, kann man lernen...
Antw:Daten von Python ISR an PERL FHEM
« Antwort #5 am: 28 Juli 2021, 14:34:20 »
Warum nur auf derselben HW?
Telnet geht auch über Netzwerk...
...soweit mir bekannt...

Gruß, Joachim

Ja, da hast du Recht.
Mein Gedanke war eher, dass ich z.B. über http nicht von "außen" die Daten pushe, wenn es direkt von "innen" geht...
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Offline Klaus Heynen

  • New Member
  • *
  • Beiträge: 42
Antw:Daten von Python ISR an PERL FHEM
« Antwort #6 am: 28 Juli 2021, 15:12:42 »
@OTTO123
Nee, keine Frage nur info.
Im Detail:
Am Encoder wird gedreht.
Das Python Programm wertet das Event aus (Increment, Decrement, Push etc.)
und löst auf einem GPIO einen Interrupt aus.
FHEM erkennt den Interrupt
FHEM muss nun irgendwie erkennen was für ein Event in Python erkannt wurde, also wie bekomme ich die Verbindung so hin das es auch nicht zu laggy wird?

Vielen Dank für eure Hilfe schon mal!

Online MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 11069
  • NIVEAu ist keine Creme...
Antw:Daten von Python ISR an PERL FHEM
« Antwort #7 am: 28 Juli 2021, 15:18:32 »
Im Detail:
Am Encoder wird gedreht.
Das Python Programm wertet das Event aus (Increment, Decrement, Push etc.)
und löst auf einem GPIO einen Interrupt aus.
FHEM erkennt den Interrupt
FHEM muss nun irgendwie erkennen was für ein Event in Python erkannt wurde, also wie bekomme ich die Verbindung so hin das es auch nicht zu laggy wird?

Vielen Dank für eure Hilfe schon mal!

Würde nicht auch folgendes gehen/reichen:

Am Encoder wird gedreht.
Das Python Programm wertet das Event aus (Increment, Decrement, Push etc.)
(und löst auf einem GPIO einen Interrupt aus.)
neu/anders: Python setzt z.B. in einem dummy-Device (oder einem bereits bestehenden Device) ein Reading mit dem entsprechenden Wert (erkannter Event)

EDIT: warum also der "Umweg" über den Interrupt? (wenn der GPIO gesetzt werden muss [oder was meinst du mit "Interrupt"?] um etwas [anderes] zu "erreichen", dann kann das ja weiterhin geschehen / und wenn ein "Zusammenhang" mit fhem sein "muss", dann kann ein notify auf eben das gesetzte Reading auch den GPIO schalten ;)  )

-> http(s), telnet, mqtt (um noch was ins Rennen zu werfen ;)  ), ...

Gruß, Joachim
« Letzte Änderung: 28 Juli 2021, 15:23:42 von MadMax-FHEM »
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 RaspiOS (Test)

Online Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 19528
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Daten von Python ISR an PERL FHEM
« Antwort #8 am: 28 Juli 2021, 15:29:13 »
Mein Gedanke war eher, dass ich z.B. über http nicht von "außen" die Daten pushe, wenn es direkt von "innen" geht...
http und telnet ist mMn beides drinnen wie draußen :) http ist per default da, telnet muss extra ...

@Klaus warum sollte das "laggy" werden?
Ich sehe die Notwendigkeit des Interrupts und dessen Erkennung gar nicht. Wenn das python Teil direkt nach FHEM schreibt ist es "drin" - in dem Moment. FHEM wirft einen Event, auf den kann man in gewohnter Weise reagieren.
Also aus dem Interrupt wird der Event ohne ihn gefragt zu haben :)
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266
Zustimmung Zustimmung x 1 Liste anzeigen

Online MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 11069
  • NIVEAu ist keine Creme...
Antw:Daten von Python ISR an PERL FHEM
« Antwort #9 am: 28 Juli 2021, 15:39:54 »
@Klaus warum sollte das "laggy" werden?
Ich sehe die Notwendigkeit des Interrupts und dessen Erkennung gar nicht. Wenn das python Teil direkt nach FHEM schreibt ist es "drin" - in dem Moment. FHEM wirft einen Event, auf den kann man in gewohnter Weise reagieren.
Also aus dem Interrupt wird der Event ohne ihn gefragt zu haben :)

Genauso habe ich das gemeint ;)

neu/anders: Python setzt z.B. in einem dummy-Device (oder einem bereits bestehenden Device) ein Reading mit dem entsprechenden Wert (erkannter Event)

2 "Fhemler" ein Gedanke  ::)

Gruß, Joachim
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 RaspiOS (Test)
Zustimmung Zustimmung x 1 Liste anzeigen

Offline frober

  • Sr. Member
  • ****
  • Beiträge: 846
  • Was man nicht kann, kann man lernen...
Antw:Daten von Python ISR an PERL FHEM
« Antwort #10 am: 28 Juli 2021, 16:25:51 »
http und telnet ist mMn beides drinnen wie draußen :) http ist per default da, telnet muss extra ...

localhost:Port/fhem funktioniert?
Das wusste ich nicht, bzw. damit habe ich mich noch nicht beschäftigt. ;)
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Offline Steinardo

  • New Member
  • *
  • Beiträge: 3
Antw:Daten von Python ISR an PERL FHEM
« Antwort #11 am: 28 Juli 2021, 17:23:38 »
neu/anders: Python setzt z.B. in einem dummy-Device (oder einem bereits bestehenden Device) ein Reading mit dem entsprechenden Wert (erkannter Event)
Dieser Ansatz hat mich neugierig gemacht da das Thema "Werte von python an FHEM senden" auf meiner ToDo liste war. Ich bin über https://pypi.org/project/fhem/ gestolpert. Die Library kann über pip installiert werden und mit nur 4 Zeilen Code kann man ganz einfach auf FHEM zugreifen.


Hier mal ein Beispiel das den Wert 44 in das dummy device "dummy_python" schreibt.
import fhem
import logging


fh = fhem.Fhem("server_address", protocol="http", port=8083)
fh.send_cmd("setreading dummy_python TestValue 44")


Offline Klaus Heynen

  • New Member
  • *
  • Beiträge: 42
Antw:Daten von Python ISR an PERL FHEM
« Antwort #12 am: 28 Juli 2021, 20:02:35 »
Danke an euch, besonders für den Code-Schnipsel, ich bin Hardware-freak und kann mit ASM und Registern und so umgehen.
Aber heutige Hochsprachen sind oft zu hoch für mich!
Werde es heute Nacht mal testen.  :)

Offline Klaus Heynen

  • New Member
  • *
  • Beiträge: 42
Antw:Daten von Python ISR an PERL FHEM
« Antwort #13 am: 28 Juli 2021, 21:04:46 »
 :) :) :)
Es funktioniert wie von Steinardo beschrieben - einwandfrei.
Man muss die Library mit "sudo pip install -U fhem" installieren
Vielen Dank!!!

 

decade-submarginal