Hauptmenü

Neueste Beiträge

#91
Neuer Thread zu CarConnectivity: https://forum.fhem.de/index.php?topic=144396

LG

pah
#92
Da CarConnectivity inzwischen auf mehr Fahrzeugtypen ausgeweitet wird, mache ich dafür einen neuen Thread auf.

Zitat von: Prof. Dr. Peter Henning am 29 November 2025, 16:48:05Nach kurzer Diskussion mit Till Steinbach hat dieser die Version 0.9.3 des Carconnectivity-connector-volkswagen freigegeben. Darin sind jetzt auch die Daten für Türen und Fenster drin, prima. Man muss nur in der Konfiguration setzen

Zitat"force_enable_access": true // To allow for door/window state

Jetzt fehlt von den kritischen Readings nur noch die Überwachung des 12V-Batterielevel.


Till Steinbach, der Maintainer von carconnectivity, sucht einen Renault/Dacia-Nutzer, um seine Software auf diese Fahrzeugfamilie auszudehnen. Siehe hier https://github.com/tillsteinbach/CarConnectivity-plugin-mqtt/issues/147#issuecomment-4106736672

Hier der erste Code dafür: https://github.com/tillsteinbach/CarConnectivity-connector-renaultdacia/

LG

pah

P.S.: Vorschlag zwar von mir, aber der Dacia meiner Tochter kommt erst in ein paar Monaten

#93
FRITZ!Box / Aw: 72_FRITZBOX.pm wird zu 72_...
Letzter Beitrag von Nobbynews - 06 April 2026, 05:16:30
Hallo Jörg,

ich bin jetzt mal alles durchgegangen.
Sinnvolle Ergbnisse kommen bei:
boxName
energy
environment
initDPM
led
log_filter_all
log_filter_fon
log_filter_sys
netDev
wGuest
wKey
wSet
wTime
wSet
wlanChannels
wlanEnvironment
wps
Ein Fehler wird ausgeworfen bei:
ringtones
Bei allen anderen erfolgt nur die Ausgabe von overview.

Norbert
#94
FHEMWEB / Aw: [Voicecontrol] Button für ...
Letzter Beitrag von schwatter - 05 April 2026, 23:17:48
So,

damit geht es nur mit 01_FHEMWEB.pm

  # Initialize internal structures
  map { addToAttrList($_, "FHEMWEB") } (
    "additionalInformIds",
    "cmdIcon",
    "devStateIcon:textField-long",
    "devStateStyle",
    "icon",
    "sortby",
    "webCmd",
    "webCmdLabel:textField-long",
    "widgetOverride"
  );

  my %h = map { $_ => 1 } devspec2array($filter);
  # --- Manuelle IDs in den Überwachungs-Hash injizieren (start)---
  my $addIds = AttrVal($FW_wname, "additionalInformIds", undef);
  if(my $addIds = AttrVal($FW_wname, "additionalInformIds", undef)) {
    map { $h{$_} = $FW_visibleDeviceHash{$_} = 1 if($defs{$_}) } split(/\s*,\s*/, $addIds);
  }
  # --- Manuelle IDs in den Überwachungs-Hash injizieren (ende)---
  $h{global} = 1 if( $me->{inform}{addglobal} );

attr WEBphone additionalInformIds Pumpe_FBH_Pwr,Kuehlschrank
Gruß schwatter
#95
FHEM Code changes / Revision 31083: 76_SolarForeca...
Letzter Beitrag von System - 05 April 2026, 22:50:10
Revision 31083: 76_SolarForecast: contrib Version 2.5.1

76_SolarForecast: contrib Version 2.5.1

Source: Revision 31083: 76_SolarForecast: contrib Version 2.5.1
#96
Sonstige Systeme / Aw: FHEM-Integration von Tapo ...
Letzter Beitrag von andre07 - 05 April 2026, 22:42:08
Motion habe ich realisiert mit hilfe des PSNR Wert verglichen in einer kleinen script, den wert habe ich so lange runtergesetzt bis es gepaßt hat bei mir 18 für diese Kamera.PSNR mißt die Unterschiede zwischen zwei bildern pixel für Pixel.
Im terminal dann testen und anpassen mit /opt/fhem/tapo/.venv/bin/python3 -u /opt/fhem/tapo_motion.py
das script sieht so aus #!/opt/fhem/tapo/.venv/bin/python3
import subprocess
import time
import requests
import os

SNAPSHOT_SCRIPT = "/opt/fhem/tapo_snapshot.sh"
SNAPSHOT_PATH = "/opt/fhem/www/images/Tapo.jpg"
PREV_PATH = "/tmp/Tapo_prev.jpg"
FHEM_IP = "192.168.0.0"
FHEM_PORT = "8083"
COOLDOWN = 60
INTERVAL = 10

last_alert = 0

def take_snapshot():
    subprocess.run(["sudo", SNAPSHOT_SCRIPT], capture_output=True)

def images_differ():
    if not os.path.exists(PREV_PATH):
        return False
    subprocess.run(["convert", SNAPSHOT_PATH, "-resize", "320x180!", "/tmp/curr.jpg"], capture_output=True)
    subprocess.run(["convert", PREV_PATH, "-resize", "320x180!", "/tmp/prev.jpg"], capture_output=True)
    result = subprocess.run([
        "compare", "-metric", "PSNR",
        "/tmp/curr.jpg", "/tmp/prev.jpg",
        "/dev/null"
    ], capture_output=True, text=True)
    raw = result.stderr.strip()
    try:
        psnr = float(raw.split()[0])
        print(f"PSNR: {psnr}", flush=True)
        return psnr < 18
    except:
        print(f"Parse Fehler: '{raw}'", flush=True)
        return False

def send_alert():
    requests.get(
        f"http://{FHEM_IP}:{FHEM_PORT}/fhem",
        params={"cmd": "set telegram_andre sendImage /opt/fhem/www/images/Tapo.jpg Bewegung Tapo C210", "XHR": "1"}
    )

print("Starte Motionerkennung...", flush=True)

# Erstes Bild als Referenzwert
take_snapshot()
time.sleep(2)
subprocess.run(["cp", SNAPSHOT_PATH, PREV_PATH])
print("Referenzbild gespeichert", flush=True)

while True:
    try:
        # dann neues bild holen
        take_snapshot()
        time.sleep(2)

        # Vergleichen mit vorherigem Bild
        now = time.time()
        if images_differ() and (now - last_alert > COOLDOWN):
            last_alert = now
            print(f"Bewegung erkannt! {time.strftime('%H:%M:%S')}", flush=True)
            send_alert()

        # Aktuelles Bild als neues Referenzbild speichern
        subprocess.run(["cp", SNAPSHOT_PATH, PREV_PATH])

    except Exception as e:
        print(f"Fehler: {e}", flush=True)

    time.sleep(INTERVAL)
snapshot.sh ist das hier vorgestellte.
Fehlt mir nur noch wie ich auf der Steuerung der Kamera zugreifen kann die Anleitung hier funktioniert bei mir leider nicht.

Andre
#97
ESP Familie / Aw: Eigenbau Fleischtemperatur...
Letzter Beitrag von Papa Romeo - 05 April 2026, 22:36:00
Zitat von: JudgeDredd am 04 April 2026, 18:37:51Ich dachte nur, ich klöppele was aus den Teilen, die ich sowieso noch hier rumliegen habe was zusammen.

https://wolles-elektronikkiste.de/funk-grillthermometer-433-mhz

LG
Papa Romeo
#98
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von DS_Starter - 05 April 2026, 22:24:29
@Parallix,
wahrscheinlich konnte ich den von dir festgestellten Bug beseitigen.
Im contrib liegt die V2.5.1 zum Test bereit.

ZitatPS: Etwas seltsam finde ich auch, dass der Verbraucher immer für 4h eingeplant wird, obgleich  mintime=180. Ich hätte erwartet, dass er ihn wenigstens für 3h einplant plus den Stunden, in denen genügend PV-Überschuss da ist. Am aktuellen Tag wären es dann 4h und am morgigen Tag 8h
In deinen bereitgestellten Daten ist aber erkennbar, dass der Consumer genau mit 3 Stunden (mintime=180) eingeplant wurde, also so wie du es vorgegeben hast:

     2026-04-05 09:47:51   consumer03      name='Wallbox' state='off' mode='can' planningstate='planned'
     2026-04-05 09:47:51   consumer03_currentPower 0 W
     2026-04-05 09:47:51   consumer03_planned_start 05.04.2026 12:00:00
     2026-04-05 09:47:51   consumer03_planned_stop 05.04.2026 15:00:00

mintime heißt auch nicht "minimale Zeit", sondern "Einplanungszeit in Minuten". Das ist eine Vorgabe wenn man von dem Typ-default abweichen will.
Wenn du über den Tag PV-Überschüsse ausnutzen willst, lässt du mit "SunPath[:<Offset_Sunrise>:<Offset_Sunset>] " einplanen und setzt den Consumer interruptable.
#99
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von DS_Starter - 05 April 2026, 22:13:36
ZitatDa mein Watchdog-Prozess ausgelöst hat, frage ich mich, ob die Kontaktaufnahme zu o.g. Server möglicherweise blockierend ist.
Eher nicht. Bei der Meldung "SF - Open-Meteo API server response:..." hat HttpUtils bereits die Antwort zurück geliefert. Wenn etwas blockiert, müsste es in der Verarbeitung danach sein. Da sehe ich aber nichts was das sein könnte. Mal darüber schlafen.

ZitatErsetzt der Consumer-Typ bev den Consumer-Typ charger oder sind bei Bedarf x Consumer von Typ charger und y Consumer vom Typ bev zu definieren?
Der Typ Charger gibt es weiterhin. Die Idee dahinter war aber simpler als es scheint. Gedacht ist dieser Typ zum Beispiel für einen Plug an dem ein Tablet oder Mobiltel zum Aufladen gehängt ist. Also einfache Ladegeräte.

Für EV gibt es nun diesen speziellen Consumer.
#100
Anfängerfragen / Aw: Tapo Kamera einbinden mit ...
Letzter Beitrag von andre07 - 05 April 2026, 22:09:54
ok dann werde ich das mal machen und mit mehr Satzzeichen damit das jeder versteht