IRsend will nicht im Script - gelöst in Beitrag 4 -

  • Hallo,
    das Problem ist nur beim Sendeversuch aus einem Script heraus,
    In die Konsole eingefügt als IRsend {"Protocol":"NEC","Bits":32,"Data":"0x4FB4AB5"}
    wird dies richtig gesendet und die Rückantwort ist Done.

    Zur optischen Kontrolle Kontrolle habe ich die IR-Diode an GPIO4
    durch eine normale LED ersetzt und das Sendeinterval auf 10 hochgesetzt.
    Nur bei Direkteingabe in der Konsole blitzelt die LED.
    Aus dem Script heraus nicht.

    Viele haben wohl das gleiche Problem, ich habe aber keine Lösung gesehen.

    Tasmota Version 14.5.0 (TasmoCompiler-esp32c3)
    kompiliert mit #define USE_IR_REMOTE_FULL

    >S
    if pwr(0)==1
    then
    IRsend {"Protocol":"NEC","Bits":32,"Data":"0x4FB4AB5"}
    endif

    Ich würde mich freuen wenn mir jemand helfen kann.

    Grüße, Gerd

  • Zur hilfreichsten Antwort springen
  • Danke für die Antwort.

    Ich habe mal so ergänzt.

    Code
    >D
    ;GPIO4 auf Output
    spinm(4 1)    
    
    >S
    if pwr(0)==1
    then
    IRsend {"Protocol":"NEC","Bits":32,"Data":"0x4FB4AB5"}
    endif

    Brachte aber keinen Erfolg, bzw. keine Änderung, auch mit spinm(4 O) versucht.

    In der Konsole ist nur der Schaltbefehl
    RESULT = {"POWER":"ON"}
    RSL: POWER = ON
    und nichts von IRsend zu sehen.

    zu 1. ja, es soll Script sein, da soll noch mehr rein wie z.B.
    zu einer bestimmten Uhrzeit, aber nicht in den Monaten ..
    IRsend TV Power on, 3x Pfeil abwärts, ok, 3x Pfeil rechts, ok, 2x Pfeil rechts, ok.

    zu 2. siehe 1.

    zu 3. ist mir bekannt und nutze ich wenn ich Tasten der FB repariere.
    Die nicht IR LED ist hier für mich die bessere schnellere Wahl.

    • Hilfreichste Antwort
    • Offizieller Beitrag

    Ich kenn mich mit Script nicht aus aber feuert den Dein Trigger überhaupt?


    In den Beispielen die ich sehe werden eckige Klammern verwendet und um ein command auszuführen -> oder =>

    Bsp von Scripting-Language

    Code
    if pwr[1]==0
    then =>power1 1
    endif

    evtl ein Syntaxfehler?

    Mal so versucht?

    Code
    if pwr[1]==0
    then =>IRsend {"Protocol":"NEC","Bits":32,"Data":"0x4FB4AB5"}
    endif
  • gerdF 14. April 2025 um 15:09

    Hat einen Beitrag als hilfreichste Antwort ausgewählt.
  • Danke HoerMirAuf,

    lag wohl an then =>, runde oder eckige Klammer war egal.

    das war es und IRsend zeigt in der Konsole Erfolg.

    performs "IRsend {"Protocol":"NEC","Bits":32,"Data":"0x4FB4AB5"}"
    IRS: protocol 3
    RSL: RESULT = {"IRSend":"Done"}

    Da unter >S eingetragen wird nun jede Sekunde gesendet.
    Ich möchte jeden Befehl (mehrere unterschiedliche hinter einander)
    aber nur einmal senden, evtl. mit 1 Sekunde Abstand.
    Hättest Du da auch eine Idee zu?

    Danke, Gerd

  • gerdF 14. April 2025 um 15:24

    Hat den Titel des Themas von „IRsend will nicht im Script“ zu „IRsend will nicht im Script - gelöst in Beitrag 4 -“ geändert.
    • Offizieller Beitrag

    Moin

    Code
    >E
    Executed when a Tasmota MQTT RESULT message is received, e.g., on POWER change. Also Zigbee reports to this section.

    Das sollte es sein ... ein Power on/off erzeugt immer ein RESULT

    Code
    >E
    if pwr(0)==1
    then
    =>IRsend {"Protocol":"NEC","Bits":32,"Data":"0x4FB4AB5"}
    delay(1000)
    =>IRsend {"Protocol":"NEC","Bits":32,"Data":"0xXXXXXXX"}
    endif
  • Danke für den neuen vorstehenden Code, HoerMirAuf,
    aber der tut nicht.

    Dann habe ich mal print hallo (aus Versehen vor "then" eingefügt
    um zu sehen ob das ankommt.
    Kommt oh Wunder, aber IRsend wird nicht gesendet.

    Nun kommt es, then auskommentiert ;then
    und IRsend funktioniert wunderbar.

    Ich verstehe die Dokumentation da und an anderen Stellen nicht

    delay(x) hatte ich gelesen, aber der Hinweis "so kurz wie möglich"
    hatte mich davon abgehalten. (1000) brauche ich wohl nicht, (200)
    sollte wohl langen, da taste ich mich mal ran.

    Danke