Schaltbefehl über Webhook senden- warum funktioniert das immer nur einmal?

Reinhard_33

New member
Hallo,

ich kann mir das einfach nicht erklären, wenn ich mit diesen Mikropythonprogramm einen Befehl sende funktioniert es
einwandfrei ohne Fehlermeldungen, egal ob "on" oder "off2 gesendet wird:
Python:
import time
import urequests
import network
import machine

# WLAN-Verbindung
ssid = "FRITZT"
password = "561500xxxxxx"

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
    print("Verbinde mit WLAN...")
    wlan.connect(ssid, password)
    while not wlan.isconnected():
        time.sleep(1)
        print("Verbinde...")
print("Verbunden! IP-Adresse:", wlan.ifconfig()[0])

# Home Assistant URL und Token
home_assistant_url = "http://192.168.178.71:8123/api/webhook/TestD1Mini"
headers = {'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6WjvPTHxCYp4oAdx6VgRGSQI'}

# Variablen
led_status = 'off'  # Startstatus der LED

# Sende den Status an Home Assistant
payload = {'command': led_status}  # Daten als 'command' übergeben
response = urequests.post(home_assistant_url, json=payload, headers=headers, timeout=10)
print(f'Daten gesendet: {led_status}')
if response.status_code == 200:
    print('Antwort von Home Assistant: ', response.text)
    print(f"HTTP-Statuscode: {response.status_code}")
else:
    print(f'Fehlerhafte Antwort von Home Assistant: {response.status_code}, {response.text}')

Möchte ich jetzt das Gerät An- und Ausschalten:
Python:
import time
import urequests
import network
import machine

# WLAN-Verbindung
ssid = "FRITZT"
password = "5615001747xxxxxx"

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
    print("Verbinde mit WLAN...")
    wlan.connect(ssid, password)
    while not wlan.isconnected():
        time.sleep(1)
        print("Verbinde...")
print("Verbunden! IP-Adresse:", wlan.ifconfig()[0])

# Home Assistant URL und Token
home_assistant_url = "http://192.168.178.71:8123/api/webhook/TestD1Mini"
headers = {'Authorization': 'Bearer iMiwiZXhwIjoyMDQ5NjQ2MzMyfQ.S4hFvtQ8iQNaZMKMtBHMWjvPTHxCYp4oAdx6VgRGSQI'}

# Variablen
led_status = 'off'  # Startstatus der LED
# Sende den Status an Home Assistant
payload = {'command': led_status}  # Daten als 'command' übergeben
response = urequests.post(home_assistant_url, json=payload, headers=headers, timeout=10)
print(f'Daten gesendet: {led_status}')
if response.status_code == 200:
    print('Antwort von Home Assistant: ', response.text)
    print(f"HTTP-Statuscode: {response.status_code}")
response.close()  # Verbindung schließen
time.sleep(10)   
# Variablen

led_status = 'on'  # Startstatus der LED
# Sende den Status an Home Assistant
payload = {'command': led_status}  # Daten als 'command' übergeben
response = urequests.post(home_assistant_url, json=payload, headers=headers, timeout=10)
print(f'Daten gesendet: {led_status}')
if response.status_code == 200:
    print('Antwort von Home Assistant: ', response.text)
    print(f"HTTP-Statuscode: {response.status_code}")
response.close()  # Verbindung schließen

Kommt diese Meldung, unabhängig davon ob on oder off gesendet wird, der zweite Aufruf generiert einen Fehler:
Code:
%Run -c $EDITOR_CONTENT
Verbunden! IP-Adresse: 192.168.178.21
Daten gesendet: off
Antwort von Home Assistant: 
HTTP-Statuscode: 200
Traceback (most recent call last):
  File "<stdin>", line 40, in <module>
  File "requests/__init__.py", line 205, in post
  File "requests/__init__.py", line 146, in request
OSError: [Errno 110] ETIMEDOUT

Das ist der Inhalt der configurations.yaml:
Code:
id: 'led_steuerung_webhook'
  alias: LED Steuerung über Webhook
  description: 'Schaltet die LED basierend auf Webhook-Nachrichten'
  trigger:
    - platform: webhook
      webhook_id: TestD1Mini 
  condition: []
  action:
    - choose:
        - conditions:
            - condition: template
              value_template: "{{ trigger.json.command == 'on' }}"
          sequence:
            - service: switch.turn_on
              target:
                entity_id: switch.led_schalter
            - service: notify.notify
              data:
                message: LED eingeschaltet
        - conditions:
            - condition: template
              value_template: "{{ trigger.json.command == 'off' }}"
          sequence:
            - service: switch.turn_off
              target:
                entity_id: switch.led_schalter
            - service: notify.notify
              data:
                message: LED ausgeschaltet
      default: []
  mode: single

Kann mir da Jemand helfen, ich habe keine Erklärung?

Gruß Reinhard
 
Habe unglaublich viel Zeit mit dem Problem verbracht, jetzt funktioniert es.
Hatte erst einen ESP32 verwendet, da lief es und da war noch eine ältere Firmware drauf.
Habe jetzt auf den D1 Mini die Version 1.19.1 geflasht und jetzt läuft es,
mit der Aktuellen nicht.
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
5.913
Beiträge
57.743
Mitglieder
5.871
Neuestes Mitglied
tschaefer
Zurück
Oben