Autor Thema: Neues Python FHEM API-Modul auf PyPI  (Gelesen 40045 mal)

Offline Forstling

  • Jr. Member
  • **
  • Beiträge: 81
Antw:Neues Python FHEM API-Modul auf PyPI
« Antwort #60 am: 02 Februar 2020, 21:13:30 »
pi@raspberrypi:~ $ ls -la /opt/fhem/FHEM/Python
insgesamt 52
drwxr-xr-x 2 pi   pi       4096 Feb  2 19:15 .
drwxrwxrwx 7 fhem dialout 36864 Feb  2 19:10 ..
-rwxr-xr-x 1 pi   pi       2147 Feb  2 19:58 fhem-dht.py
-rwxrwxrwx 1 pi   pi       1914 Feb  2 20:49 MAX31865.py
pi@raspberrypi:~ $
?

fhem-dht.py funktioniert
« Letzte Änderung: 02 Februar 2020, 21:15:18 von Forstling »

Offline amenomade

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7449
Antw:Neues Python FHEM API-Modul auf PyPI
« Antwort #61 am: 02 Februar 2020, 22:17:48 »

fhem-dht.py funktioniert
Ja, aber der User fhem darf es nicht ausführen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Offline Forstling

  • Jr. Member
  • **
  • Beiträge: 81
Antw:Neues Python FHEM API-Modul auf PyPI
« Antwort #62 am: 02 Februar 2020, 22:42:08 »
Jetzt funktioniert es

es Lag daran das FHEM nicht auf den SPI Bus zugreifen durfte.



Offline Gear

  • Full Member
  • ***
  • Beiträge: 494
  • Wissen ist Macht, nichts wissen macht auch nichts.
Antw:Neues Python FHEM API-Modul auf PyPI
« Antwort #63 am: 20 September 2020, 08:32:36 »
Guten Morgen Zusammen!

Ich habe das Problem, dass manchmal beim Auslesen nur ein "{}" ausgelesen wird.
Mein Script funktioniert ohne Probleme, die Verbindung wird als "true" zurückgegeben.

Hat jemand eine Idee?

Edit:
Ich habe nun mal zum Testen ein TimeOut von 1s auch beim Einlesen gemacht, bis jetzt scheinbar kein Problem mehr...
« Letzte Änderung: 20 September 2020, 09:35:33 von Gear »
ODroid H3, Fritz!Box 7590, Fritz!Repeater 6000, MQTT, HomeMatic, Zigbee, ESP32, ESP8266

Offline Gear

  • Full Member
  • ***
  • Beiträge: 494
  • Wissen ist Macht, nichts wissen macht auch nichts.
Antw:Neues Python FHEM API-Modul auf PyPI
« Antwort #64 am: 29 September 2020, 18:56:31 »
So, muss mich mal zurückmelden, wegen dem im vorherigen Problem.
Leider gibt es immer mal wieder Probleme beim Auslesen.

Es wird einfach ein {} zurückgegeben, obwohl das Device einen Wert drin hat.

Es scheint, als würde hier FHEM irgendwie blockiert sein?!
Ich hoffe, dass mir jemand helfen kann.
ODroid H3, Fritz!Box 7590, Fritz!Repeater 6000, MQTT, HomeMatic, Zigbee, ESP32, ESP8266

Offline andies

  • Tester
  • Hero Member
  • ****
  • Beiträge: 3452
Antw:Neues Python FHEM API-Modul auf PyPI
« Antwort #65 am: 22 Oktober 2022, 11:28:08 »
Vielen Dank für das Modul - ich melde mich wegen eines Problems, das oben auch schon angesprochen wurde. Auch bei mir kommt es manchmal vor, dass beim Auslesen eines Readings {} zurückgegeben wird (ich bekomme dann einen KeyError). Der Fehler tritt unsystematisch auf, so dass ich einen Programmierfehler ausschließe.

Ich kann den Fehler abfangen bzw erhöhe dann die Readingwerte in FHEM. Dennoch würde mich interessieren, wie man dem Problem auf dem Grund gehen kann? Innerhalb von FHEM gelingt mir das nicht.

Hier mein gesamter Code, nur "gas" ist wichtig:
#!/usr/bin/env python3
import time
import sys
import spidev
import RPi.GPIO as GPIO
import fhem


fh = fhem.Fhem("raspfhem.fritz.box")

spi = spidev.SpiDev()
spi.open(0, 0)
spi.max_speed_hz = 40000
numdata = 100

# RPi.GPIO Layout verwenden (wie Pin-Nummern)
GPIO.setmode(GPIO.BCM)
# Pin 17 auf Input setzen, dort ist der keyence angeschlossen
GPIO.setup(17, GPIO.IN)

def GetADC():
        Msum = 0
        s = 0
        while s < numdata:
            adc = spi.xfer2([0, 0])
            hi = (adc[0] & 0x1F);
            low = (adc[1] & 0xFE);  # FE for B, FC for C chip (MCP3201-B/C) Danil
            data = (hi << 8) | low;
            Msum += int(data)
            s += 1
        return int(Msum/(4*numdata))

def Gaszaehler():
   try:
      ## Die Fassung hat das Risiko, dass mir zu viel KeyError-Fehler auftauchen, daher wird *in* FHEM erhöht#####
      #gas = fh.get_device_reading("Heizungskeller", "gas")    <=== ausgeblendete Version, weil problematisch
      #i = int(gas["Value"])
      #fh.send_cmd("setreading Heizungskeller gas " + str(i+1))

      fh.send_cmd("setreading Heizungskeller gas {(ReadingsVal(\"Heizungskeller\", \"gas\", 0)+1)}") <== so mache ich das jetzt
     
   except IOError as err:
      fh.send_cmd("setreading Heizungskeller Fehler I/O error: {0} " + str(format(err)))
   #except KeyError:
   #  fh.send_cmd("setreading Heizungskeller Fehler KeyError: Reading gas unlesbar " + str(gas))  <== dieser Fehler taucht nur selten, aber zu oft auf
   except:
      fh.send_cmd("setreading Heizungskeller Fehler Unbekannter Fehler: " + str(sys.exc_info()[0]))
      fh.send_cmd("set TelegramBot message ‼️ Heizungskeller Unbekannter Fehler: " + str(sys.exc_info()[0]))
      raise
   return

zaehlerwasser = 0
WasHigh = False

try:
    while True:
        time.sleep(0.07)
        zaehlerwasser += 1
        if (zaehlerwasser == 4500):
            wasser = GetADC()
            wasser = 25*(wasser // 25)
            fh.send_cmd("setreading Heizungskeller wasser " + str(wasser))
FHEM 6.1 auf RaspPi3 (Raspbian:  5.15.32-v7+); Perl: v5.28.1
SIGNALduino (433 MHz) und HM-UART (868 MHz)
wenige Brennenstuhl-IT, Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Offline domschl

  • Jr. Member
  • **
  • Beiträge: 57
Antw:Neues Python FHEM API-Modul auf PyPI
« Antwort #66 am: 22 Oktober 2022, 17:10:04 »
Ich würde zunächst vorschlagen, logging zu aktivieren, s. Beispiel:

https://github.com/domschl/python-fhem#set-and-get-transactions


Also:

import logging
import fhem

logging.basicConfig(level=logging.DEBUG)