Elektroda.de
Elektroda.de
X

Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant

p.kaczmarek2 906 6
  • Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Hallo liebe Freunde
    Ich präsentiere hier meinen Tasmota-Ersatz, der von Bouffalo Lab für die BL602-Plattform entwickelt wurde, der unter anderem die Möglichkeit bietet, unser Gerät über MQTT mit Home Assistant zu koppeln. Ich zeige hier, wie man den Batch mit einem einfachen USB-zu-UART-Konverter einfach auf den BL602 hochladen kann, und ich werde auch den SDK-Kompilierungsprozess für Leute beschreiben, die diese Plattform selbst flashen möchten. Darüber hinaus präsentiere ich zwei interessante Demos vom SDK BL602.

    Wozu BL602 flashen?
    Die Motivation ist die gleiche wie bei den Plattformen, die ich zuvor besprochen habe. Mit einer eigenen Firmware kann man das IoT-Produkt von den Servern des Herstellers befreien, einen möglichen Kontrollverlust über dieses Produkt beim Ausfall dieser Server vermeiden, die Verfolgung und Erfassung von Daten durch den Hersteller vermeiden und darüber hinaus Produkte verschiedener Hersteller in einem Ökosystem kombinieren. Was ich hier erstelle, ist ein "Tasmota" für andere Plattformen.

    Verwendetes Modul mit BL602
    Module mit BL602-Schaltungen (oder verwandten Schaltungen) können zu relativ niedrigen Preisen erworben werden, aber das Hauptprinzip meiner Tätigkeit ist die "Freigabe" fertiger IoT-Produkte mit geschlossener Programmierung ihrer Hersteller, daher habe ich für dieses Thema ein solches Produkt verwendet.
    Es diente mir als Testgelände RGB-LED-Streifen mit IR-Fernbedienung und Wi-Fi – MWIR-RGB Magic Home Pro.
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant

    An Bord dieser Steuerung befinden sich BL602 und 3 per PWM gesteuerte Transistoren:
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Anschlussskizze:
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant

    Was für Firmware ist das?
    Das Firmware-Repository findet man hier:
    https://github.com/openshwprojects/OpenBK7231T_App
    Meine Firmware für BL602 ist im Grunde eine Portierung meines OpenBeken. Tatsächlich wurde OpenBeken so überarbeitet, dass es jetzt eine Multiplattform-Anwendung ist, die die Chips BK7231T, BK7231N, XR809 und BL602 unterstützt.

    Für den Benutzer – Herunterladen des kompilierten OpenBL602/OpenBeken-Batches für BL602
    Mein Github-Repository enthält ein Skript, das die Binärdateien automatisch online kompiliert, die Ausgaben sind hier verfügbar:
    https://github.com/openshwprojects/OpenBK7231T_App/releases
    Dies kann sich in Zukunft ändern und wir werden den Batch über die Registerkarte "Releases" auf der rechten Seite herunterladen.

    Für den Benutzer – Anschließen der Hardware
    Es wird ein USB-zu-UART-Konverter mit 3,3-V-Logikpegeln benötigt, ein 10 kΩ-Widerstand, möglicherweise ein 3,3-V-LDO-Regler (wenn er nicht auf unserer Platine ist) und Kabel.
    Wir verbinden:
    - RX vom Modul zum TX UART
    - TX vom Modul zum RX UART
    - BOOT vom Modul zum 10k-Widerstand zur Stromversorgung, aber wir lassen es offen (wir schließen es nur zum Flashen an)
    - Masse zu Masse
    - 3,3-V-Stromversorgung (wenn ein LDO auf der Platine vorhanden ist, können wir an seinen Eingang 5 V über USB liefern)

    Bei mir sieht es so aus:
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    HINWEIS: Wenn Ihr die 5-V-Stromversorgung von USB an den LDO-Eingang (oder Abwärtswandler) auf der BL602-Platine anschließt und dann die 12-V-Stromversorgung anschließt, beschädigt Ihr mindestens den USB-zu-UART-Adapter und möglicherweise auch den USB selbst... Während des Flashens sollte man die externe Stromversorgung trennen.

    Für den Benutzer – Hochladen des Batchs
    Um den Batch hochzuladen, müssen wir Folgendes tun:
    1. Das BOOT-Signal über einen 10k-Widerstand mit der Stromversorgung verbinden
    2. Die Stromversorgung trennen und wieder anschließen (Neustart mit BOOT-Signal in hohem Zustand zur Stromversorgung).
    3. In BLDevCube.exe die folgenden Dateien auswählen:
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    4. Sicherstellen, dass der UART-Port nicht verwendet wird (z. B. wenn wir ihn in RealTerm nicht geöffnet haben – wenn ja, schließen wir ihn).
    5. Auf "Herunterladen" klicken (was "Batch an BL602 senden" bedeutet):
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Fertig!
    Um nun den Batch auszuführen, trennen wir den BOOT (lassen ihn locker) und unterbrechen die Stromversorgung für eine Weile und stellen sie dann wieder her.
    Logdateien des Gerätes sind weiterhin mit Baud = 2000000 verfügbar (wie in SDK-Demos).


    Für den Benutzer – OpenBL602-Konfiguration
    Die Konfiguration meines Batch-Ports auf dem BL602 ist analog zu der in diesem Thema beschriebenen Konfiguration:
    Qiachip Smart Switch BK7231N/CB2S – Innenansicht, Flashen

    Nach dem Neustart des Geräts sollte ein offener Access Point mit einem Namen wie OpenBL602_1A1B2C3D4E5 edie Initiarscheinen:
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Wir verbinden uns damit und öffnen die Seite mit der Adresse 192.168.4.1. Wir konfigurieren es genau wie Tasmota (wir geben die Anweisungen für unser Wi-Fi, wir legen die Rollen der Pins fest, wir geben die Anweisungen für MQTT...
    Bei diese RGB-LED-Streifen haben die Stifte folgende Aufgaben:
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    In der aktuellen Version unterstützt meine Firmware die IR-Fernbedienung mit dieser Streifen nicht.

    Für den Benutzer – Kopplung mit Home Assistant
    Im OpenBL602-Panel gibt es die Option "Generate Home Assistant Config", diese reicht jedoch nicht immer aus. Im Fall des RGB-Controllers "weiß" diese Option nicht, dass man drei PWMs in einem Farbcontroller kombinieren muss.
    Aus diesem Grund empfehle ich, daraus nur den Gerätenamen zu übernehmen, z. B. obl42DACAB0, und ihn manuell in diese Vorlage einzufügen:
    Code: yaml
    Melde dich an, um den Code zu sehen

    Wir speichern es in der Datei "configuration.yaml". Wenn wir mehrere Lichter haben, setzen wir das Präfix light einmal mit einem Doppelpunkt.
    Nach dem Neustart von Home Assistant können wir den Streifen steuern:
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Die aktuelle Version hat einen Nachteil: Nach dem Neustart liest Home Assistant den aktuellen Helligkeits- und Farbwert nicht ab. Dies wird korrigiert, hat aber keinen Einfluss auf die Steuerung des Streifens.

    Für den Programmierer – MSys2-Installation
    Man muss die Firmware nicht selbst kompilieren, da ich fertige Binärdateien zur Verfügung stelle. Wenn wir meinen Code jedoch selbst ändern möchten, müssen wir noch das Kompilieren lernen. Zum Kompilieren der Firmware wird MSys2 benötigt. Es muss von hier heruntergeladen und installiert werden:
    https://www.msys2.org/#installation
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Windows blockiert möglicherweise MSys – man soll trotzdem fortfahren.
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Wir wählen den Ordner für die Installation:
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Nach der Installation führen wir msys2 aus. Es muss noch aktualisiert werden.
    Wir führen den Befehl aus:
    pacman -Syu
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Dann auch pacman -Su
    Dann pacman -S make
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant

    Für den Programmierer – Herunterladen von SDK und Kompilierung des Projekts
    Leider wird es hier kompliziert. Das offizielle SDK ist hier:
    https://github.com/pine64/bl_iot_sdk
    Stand heute (April 2022) lässt sich die neueste Version des SDK von Github jedoch nicht korrekt kompilieren, man sollte die ältere Version verwenden, genauer gesagt b3898a520d6e5a34a5f4de8241fcc1c1d3b071b9.
    Außer mir haben auch andere Leute Probleme mit der Kompilierung der neuesten Version:
    https://github.com/pine64/bl_iot_sdk/issues/94
    HINWEIS: Wenn Ihr das SDK herunterlädt, um es zum Erstellen meines Projekts zu verwenden, lädt bitte meine modifizierte Version hier herunter:
    https://github.com/openshwprojects/OpenBL602
    Dies liegt daran, dass die Hauptanwendung von OpenBK (oder OpenBL), App genannt, von verschiedenen SDKs verschiedener Plattformen gemeinsam genutzt wird und diese SDKs selbst die Basis für Projekte enthalten, in denen diese Haupt-Apps kompiliert werden.
    Projekte im SDK befinden sich im Ordner customer_app:
    Hier ist ihre Liste:
    
    benchmark_security_aes
    bl602_boot2
    bl602_boot2_mini
    bl602_demo_event
    bl602_demo_joylink
    bl602_demo_nano
    bl602_demo_noconnectivity
    bl602_demo_wifi
    bl602_huawei_cloud
    sdk_app_audio_udp
    sdk_app_ble_sync
    sdk_app_blog
    sdk_app_cli
    sdk_app_cronalarm
    sdk_app_dac
    sdk_app_easyflash
    sdk_app_event
    sdk_app_fdt
    sdk_app_gpio
    sdk_app_hbnram
    sdk_app_heap
    sdk_app_helloworld
    sdk_app_http_client_socket
    sdk_app_http_client_tcp
    sdk_app_i2c
    sdk_app_ir
    sdk_app_mdns
    sdk_app_pwm
    sdk_app_romfs
    sdk_app_spi_pdm
    sdk_app_spi_wave
    sdk_app_timer
    sdk_app_uart_ctl
    sdk_app_uart_echo
    


    Beim Kompilieren geht es darum, in den Ordner eines bestimmten Projekts zu gehen und ./genromap aufzurufen
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Man muss noch aufrufen:
    - export BL60X_SDK_PATH=~/your_path_to_Sdk/
    - export CONFIG_CHIP_NAME=BL602
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Aber meiner Erfahrung nach ist es normalerweise nicht nötig und das Skript findet den Pfad selbst, indem es davon ausgeht, dass das SDK zwei Ordner höher liegt als das zu erstellende Projekt. CONFIG_CHIP_NAME wiederum ist erforderlich, wenn wir den Befehl "clean" des Projekts ausführen möchten, um vom Compiler generierte Zwischendateien .o zu entfernen, die dann vom Linker verbunden werden.
    Die generierten Dateien befinden sich im Ordner build_out, zum Beispiel: customer_app\bl602_sharedApp\build_out


    Für den Programmierer – Demo sdk_app_gpio
    Nachdem wir nun selbst kompilieren können, ist es an der Zeit, die von den SDK-Entwicklern bereitgestellten Funktionsdemos zu testen.
    Eine der interessantesten Demos ist sdk_app_gpio.
    Mit der sdk_app_gpio-Demo kann man GPIO-Pins über die UART-Konsole konfigurieren. Die Befehlssyntax lautet "gpio-func <Pin-Index> <Eingangsmodus> <pullup> <pulldown>".
    Zum Beispiel der Befehl:
    gpio-func 8 0 0 0
    

    Konfiguriert GPIO-Pin 8 als Ausgang ohne Pull-Up/Down-Widerstände.
    Die Baudzahl einer Demo beträgt 2.000.000.
    So sieht die Demo nach dem Start aus:
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Nach dem Senden des Pin-Steuerbefehls:
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Dann kann man auf diesem Pin den Zustand niedrig oder hoch setzen mit:

    Im Fall der Eingangspins haben wir einen analogen UART gpio-get-Befehl:

    Für Neugierige: Die Implementierung von gpio-func sieht folgendermaßen aus:
    Code: c
    Melde dich an, um den Code zu sehen

    Wiederum den Pin setzen:
    Code: c
    Melde dich an, um den Code zu sehen

    Pinstatus abrufen:
    Code: c
    Melde dich an, um den Code zu sehen


    Für den Programmierer – Demo bl602_demo_wifi
    Eine weitere interessante Demo des SDK ist ein Programm, das die Funktionsweise von Wi-Fi zeigt. Hier steuern wir es auch über UART-Befehle. Baud wie zuvor.
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Zunächst lohnt es sich, die gesamte Befehlsliste über den ganz offensichtlichen Befehl help kennenzulernen:
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Versuchen wir es mit wifi_ap_start:
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    Tasmota-Ersatz für BL602 – Flashen, Kopplung mit Home Assistant
    wifi_scan funktioniert auch. Wir haben den gesamten Code dieser Demo, sodass wir sehen können, was und wie realisiert wird.

    Zusammenfassung
    Eine weitere Plattform befreit! Ich begann mit der Befreiung von XR809, dann habe ich mich um BK7231T und BK7231N gekümmert. Jetzt ist es gelungen BL602 zu befreien. Als nächstes kommen die Schaltungen Realtek und W600, aber wird es auch mit ihnen funktionieren? Wir werden sehen.
    In der Warteschlange zum Flashen habe ich noch eine Glühbirne mit BL602, aber ich glaube nicht, dass es damit Probleme geben wird - auf der Platine mit dem Wi-Fi-Modul werden Pads benötigt, also RX, TX und BOOT. Ich werde die Beschreibung in den Abschnitt "Geräte-Innenansicht" einfügen.
    Was die Stabilität der aktuellen Version der Firmware für BL602 angeht, habe ich sie zwei Tage lang getestet, einschließlich des absichtlichen Ausschaltens des Routers (überprüfen, ob er event disconnect abfängt und die Verbindung wiederherstellt), und ich bin auf keine Probleme gestoßen, aber natürlich werde ich weiterhin fortlaufend Tests durchführen und etwaige Probleme beheben.
    Weitere Informationen zum Projekt findet man im offiziellen Repo:
    https://github.com/openshwprojects/OpenBK7231T_App
    PS: Wenn Ihr IoT- oder ähnliche Geräte kennt, die auf BL602 oder einem verwandten Schaltungen basieren, lässt es mich wissen - ich füge der Firmware ständig Unterstützung für neue Funktionalitäten hinzu und sammle Informationen darüber, wie sie funktioniert. Soweit ich weiß, verwendet der Sonoff 40 beispielsweise wahrscheinlich den BL602.

    Cool? DIY-Rangliste
    Über den Autor
    p.kaczmarek2
    Moderator Smart Home
    Offline 
    p.kaczmarek2 hat 5777 Beiträge geschrieben mit der Bewertung 5783, und dabei 272 Mal geholfen. Er ist seit 2014 bei uns.
  • #2
    Felini
    Moderator
    BL602 UPDATE:
    Seit ein paar Monaten unterstützt der BL602 das Batch-Update über WiFi - OTA-Verfahren - es reicht einfach die Web App und dann die Registerkarte OTA zu öffnen und die entsprechende Datei (bin.xyz.ota), die vom Link unten heruntergeladen wurde, einzustellen.
    https://github.com/openshwprojects/OpenBK7231T_App/releases

    Auf YT sind Filme über BL602:
    https://www.youtube.com/watch?v=bs0ylC6xRs0
    https://www.youtube.com/watch?v=L6d42IMGhHw

    BLDevCube, eine ältere Version, die wir verwenden, ist hier verfügbar: https://github.com/openshwprojects/OpenBL602
    Der LF686 wird ebenfalls unterstützt, wir behandeln ihn einfach wie den BL602, der LF686 ist mit dem BL602 kompatibel, es ist im Wesentlichen derselbe Mikrocontroller.
  • #3
    housertelmstein
    Niveau 3  
    Ich bekomme beim flashen immer folgenden Fehler: Error 0003.

    Hier mein Log:

    [18:55:13.260] - [param]
    interface_type = "Uart"
    comport_uart = "COM5"
    speed_uart = "115200"
    speed_jlink = "1000"
    bl60x_brd = "IoTKitA"
    bl60x_xtal = "40M"
    aes_key = ""
    aes_iv = ""
    addr = "0x0"
    
    [check_box]
    partition_download = true
    boot2_download = true
    bin_download = true
    media_download = false
    use_romfs = false
    mfg_download = false
    ro_params_download = true
    ckb_erase_all = "True"
    encrypt = false
    download_single = false
    
    [input_path]
    pt_bin_input = "C:\\Users\\info\\Documents\\GitHub\\OpenBL602\\tools\\flash_tool\\bl602\\partition\\partition_cfg_2M.toml"
    boot2_bin_input = "C:\\Users\\info\\Documents\\GitHub\\OpenBL602\\tools\\flash_tool\\bl602\\builtin_imgs\\blsp_boot2.bin"
    cfg2_bin_input = "C:\\Users\\info\\Downloads\\OpenBL602_1.17.245.bin"
    meida_bin_input = ""
    romfs_dir_input = ""
    mfg_bin_input = ""
    img_bin_input = ""
    [18:55:13.272] - ========= Interface is Uart =========
    [18:55:13.279] - eflash loader bin is eflash_loader_40m.bin
    [18:55:13.282] - ========= chip flash id: ef4015 =========
    [18:55:13.285] - Update flash cfg finished
    [18:55:13.285] - create partition.bin, pt_new is True
    [18:55:13.285] - bl60x_fw_boot_head_gen xtal: 40M
    [18:55:13.301] - Create bootheader using C:\Users\info\Documents\GitHub\OpenBL602\tools\flash_tool\bl602\efuse_bootheader/efuse_bootheader_cfg.ini
    [18:55:13.301] - Updating data according to <C:\Users\info\Documents\GitHub\OpenBL602\tools\flash_tool\bl602\efuse_bootheader/efuse_bootheader_cfg.ini[BOOTHEADER_CFG]>
    [18:55:13.301] - Created file len:176
    [18:55:13.301] - Create efuse using C:\Users\info\Documents\GitHub\OpenBL602\tools\flash_tool\bl602\efuse_bootheader/efuse_bootheader_cfg.ini
    [18:55:13.301] - Updating data according to <C:\Users\info\Documents\GitHub\OpenBL602\tools\flash_tool\bl602\efuse_bootheader/efuse_bootheader_cfg.ini[EFUSE_CFG]>
    [18:55:13.316] - Created file len:128
    [18:55:13.316] - ========= sp image create =========
    [18:55:13.316] - Image hash is b'c5e2ce515a5783ac80efdd4910238a466572f882b53b3284e63c763e1da9847f'
    [18:55:13.316] - Header crc: b'52b188af'
    [18:55:13.316] - Write flash img
    [18:55:13.334] - bl60x_fw_boot_head_gen xtal: 40M
    [18:55:13.334] - Create bootheader using C:\Users\info\Documents\GitHub\OpenBL602\tools\flash_tool\bl602\efuse_bootheader/efuse_bootheader_cfg.ini
    [18:55:13.334] - Updating data according to <C:\Users\info\Documents\GitHub\OpenBL602\tools\flash_tool\bl602\efuse_bootheader/efuse_bootheader_cfg.ini[BOOTHEADER_CFG]>
    [18:55:13.334] - Created file len:176
    [18:55:13.348] - Create efuse using C:\Users\info\Documents\GitHub\OpenBL602\tools\flash_tool\bl602\efuse_bootheader/efuse_bootheader_cfg.ini
    [18:55:13.348] - Updating data according to <C:\Users\info\Documents\GitHub\OpenBL602\tools\flash_tool\bl602\efuse_bootheader/efuse_bootheader_cfg.ini[EFUSE_CFG]>
    [18:55:13.348] - Created file len:128
    [18:55:13.348] - ========= sp image create =========
    [18:55:13.364] - Image hash is b'2a76576dfe56444f0504ecd8bec5c428db9a817df39a212fb3ebf375072998ad'
    [18:55:13.364] - Header crc: b'90a6a86b'
    [18:55:13.364] - Write flash img
    [18:55:13.379] - FW Header is 176, 3920 still needed
    [18:55:13.379] - FW OTA bin header is Done. Len is 4096
    [18:55:13.662] - FW OTA bin is Done. Len is 758208
    [18:55:14.415] - FW OTA xz is Done
    [18:55:14.415] - ========= eflash loader config =========
    [18:55:14.493] - =========C:\Users\info\Documents\GitHub\OpenBL602\tools\flash_tool\bl602\device_tree/bl_factory_params_IoTKitA_40M.dts ——> bl602/device_tree/ro_params.dtb=========
    [18:55:14.745] - Version: bflb_eflash_loader_v2.0.0
    [18:55:14.745] - Program Start
    [18:55:14.745] - ========= eflash loader cmd arguments =========
    chipname : None
    chipid : False
    usage : False
    flash : True
    efuse : False
    write : True
    erase : False
    read : False
    none : False
    port : COM5
    baudrate : None
    config : None
    interface : None
    xtal : None
    start : None
    end : None
    addr : None
    mac : None
    file : None
    data : None
    mass : None
    loadstr : None
    loadfile : None
    userarea : None
    csvfile : None
    csvaddr : None
    para : None
    aeskey : None
    aesiv : None
    key : None
    ecdh : False
    echo : False
    auto : False
    version : False
    [18:55:14.792] - Config file: C:\Users\info\Documents\GitHub\OpenBL602\tools\flash_tool\bl602\eflash_loader/eflash_loader_cfg.ini
    [18:55:14.792] - serial port is COM5
    [18:55:14.792] - chiptype: bl602
    [18:55:14.792] - ========= Interface is Uart =========
    [18:55:14.792] - com speed: 115200
    [18:55:14.792] - Eflash load helper file: C:\Users\info\Documents\GitHub\OpenBL602\tools\flash_tool\bl602\eflash_loader/eflash_loader_40m.bin
    [18:55:14.792] - Eflash load helper file: C:\Users\info\Documents\GitHub\OpenBL602\tools\flash_tool\bl602\eflash_loader/eflash_loader_40m.bin
    [18:55:14.792] - ========= load eflash_loader.bin =========
    [18:55:14.792] - Load eflash_loader.bin via uart
    [18:55:14.792] - ========= image load =========
    [18:55:15.090] - tx rx and power off, press the machine!
    [18:55:15.090] - cutoff time is 0.1
    [18:55:15.200] - power on tx and rx
    [18:55:16.021] - reset cnt: 0, reset hold: 0.005, shake hand delay: 0.1
    [18:55:16.021] - clean buf
    [18:55:16.162] - send sync
    [18:55:16.399] - ack is b'4f4b'
    [18:55:16.461] - shake hand success
    [18:55:16.477] - get_boot_info
    [18:55:18.484] - ack is b''
    [18:55:18.484] - Not ack OK
    [18:55:18.484] - result:
    [18:55:18.484] - fail
    [18:55:18.484] - Img load fail
    [18:55:18.484] - Load helper bin time cost(ms): 3691.71142578125
    [18:55:18.484] - {"ErrorCode": "0003","ErrorMsg":"BFLB LOAD HELP BIN FAIL"}
    [18:55:18.484] - Burn Retry
    [18:55:18.484] - 0
    [18:55:18.484] - Burn return with retry fail
  • #4
    LordZodiac
    Niveau 2  
    Hallo @p.kaczmarek2,

    ich habe für den BL602 den IR Receiver aktiviert und bekomme von der 24 Tasten Fernbedienung die entsprechenden Codes im OpenBK Log angezeigt. Allerdings bekomme ich es nicht hin über die autoexec.bat die Kanäle zu steuern. Könnte etwas Hilfe gebrauchen?

    MfG Marco
  • #5
    p.kaczmarek2
    Moderator Smart Home
    Guten Morgen,
    kannst du etwas mehr Informationen über die Konfiguration des Geräts geben und wie du die IR-Funktion des BL602 aktiviert hast? Kannst du zeigen, wie die Codes von der Fernbedienung auf deinem BL602 angezeigt werden?
    Ich bin der Autor von OBK und soweit ich weiß, hat die BL602-Plattform im Moment keine IR-Unterstützung, da die fehlenden Timer/Unterbrechungen hinzugefügt werden müssen, damit unser IRRemote-Port auf dieser Plattform funktioniert. Man muss diese Datei vom BK7231 auf den BL602 portieren:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/src/driver/drv_ir.cpp
    Kennst du C und hast du dies erfolgreich portiert? Wenn ja, öffne einen Pull Request, damit wir die Änderungen zu Github hinzufügen können.
    Sobald die IR auf einer bestimmten Plattform gestartet ist, kann man sie wie hier skripten:
    https://www.youtube.com/watch?v=KU0tDwtjfjw
    Oder meinst du BK7231 und nicht BL602?
  • #6
    LordZodiac
    Niveau 2  
    Hallo,

    ist das gleiche Teil was oben auf den Bildern ist. Hab 2 Stück davon und das Devboard.
    Hab mir das Beispiel vom SDK angeschaut. Die Konfiguration vom IR Pin steht dann in der Datei bl_factory_params_IoTKitA_40M.dts.
    
    static void event_cb_ir_event(input_event_t *event, void *private_data)
    {
        switch (event->code) {
            case CODE_IR_RECEIVE_NEC:
            {
                printf("[IR] [EVT] RECEIVE DATA @%llums, RAW %08lx, ADDR %02x, CMD %02x\r\n", aos_now_ms(), (unsigned long)event->value,
                        bl_ir_get_addr((unsigned int)event->value),
                        bl_ir_get_cmd((unsigned int)event->value)
                );
            }
            break;
            case CODE_IR_RECEIVE_NEC_REPEAT:
            {
                printf("[NEC] Repeat @%llums\r\n", aos_now_ms());
            }
            break;
            default:
            {
                printf("[IR] [EVT] Unknown code %u, %lld\r\n", event->code, aos_now_ms());
                /*nothing*/
            }
       }
    }
    

    und

    
        loopset_ir_hook_on_looprt();
        /* ir */
        if (0 == get_dts_addr("ir", &fdt, &offset)) {
            hal_ir_init_from_dts(fdt, offset);
        }
        aos_register_event_filter(EV_IR, event_cb_ir_event, NULL);
    

    Die Ausgabe sieht dann so aus.

    
    2023-09-19 17:03:46,550 - INFO - [17:03:46.550] - [IR] [EVT] RECEIVE DATA @800256ms, RAW e21dff00, ADDR 00, CMD 1d
    2023-09-19 17:03:46,600 - INFO - [17:03:46.599] - [NEC] Repeat @800308ms
    2023-09-19 17:03:46,708 - INFO - [17:03:46.707] - [NEC] Repeat @800415ms
    2023-09-19 17:03:47,007 - INFO - [17:03:47.006] - [IR] [EVT] RECEIVE DATA @800716ms, RAW e21dff00, ADDR 00, CMD 1d
    2023-09-19 17:03:47,060 - INFO - [17:03:47.060] - [NEC] Repeat @800767ms
    2023-09-19 17:03:47,415 - INFO - [17:03:47.415] - [IR] [EVT] RECEIVE DATA @801120ms, RAW e21dff00, ADDR 00, CMD 1d
    2023-09-19 17:03:47,463 - INFO - [17:03:47.463] - [NEC] Repeat @801171ms
    2023-09-19 17:03:48,355 - INFO - [17:03:48.354] - [IR] [EVT] RECEIVE DATA @802062ms, RAW e01fff00, ADDR 00, CMD 1f
    2023-09-19 17:03:48,405 - INFO - [17:03:48.404] - [NEC] Repeat @802113ms
    2023-09-19 17:03:48,785 - INFO - [17:03:48.785] - [IR] [EVT] RECEIVE DATA @802493ms, RAW e01fff00, ADDR 00, CMD 1f
    2023-09-19 17:03:48,838 - INFO - [17:03:48.838] - [NEC] Repeat @802544ms
    2023-09-19 17:03:49,271 - INFO - [17:03:49.271] - [IR] [EVT] RECEIVE DATA @802976ms, RAW e21dff00, ADDR 00, CMD 1d
    2023-09-19 17:03:49,319 - INFO - [17:03:49.319] - [NEC] Repeat @803027ms
    2023-09-19 17:03:49,702 - INFO - [17:03:49.702] - [IR] [EVT] RECEIVE DATA @803408ms, RAW f609ff00, ADDR 00, CMD 09
    2023-09-19 17:03:49,752 - INFO - [17:03:49.752] - [NEC] Repeat @803460ms
    2023-09-19 17:03:50,343 - INFO - [17:03:50.343] - [IR] [EVT] RECEIVE DATA @804049ms, RAW e41bff00, ADDR 00, CMD 1b
    2023-09-19 17:03:50,392 - INFO - [17:03:50.392] - [NEC] Repeat @804100ms
    2023-09-19 17:03:50,560 - INFO - [17:03:50.560] - Info:MQTT:mqtt_host empty, not starting mqtt
    2023-09-19 17:03:51,375 - INFO - [17:03:51.374] - [IR] [EVT] RECEIVE DATA @805078ms, RAW e916ff00, ADDR 00, CMD 16
    2023-09-19 17:03:51,422 - INFO - [17:03:51.421] - [NEC] Repeat @805129ms
    

    C kann ich. Muß ich mal schauen, ob ich die Funktionen entsprechend portiert bekomme.
  • #7
    p.kaczmarek2
    Moderator Smart Home
    Was du hier zeigst, ist die IR-Unterstützung des SDK BL602. Sie umfasst auch die gesamte IR-Dekodierung, wie sie von Bouffalo Labs implementiert wurde.

    In OpenBeken hingegen verwenden wir einen völlig anderen Ansatz. Wir haben einen Port der IRRemote-Bibliothek für Beken:
    https://github.com/openshwprojects/OpenBK7231T_App/tree/main/src/libraries/Arduino-IRremote-mod
    Die IRRemote-Bibliothek ist hier verlinkt:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/src/driver/drv_ir.cpp
    Die wichtigste Stelle, die portiert werden muss, ist die ISR aus dieser Datei:

    
    // this is our ISR.
    // it is called every 50us, so we need to work on making it as efficient as possible.
    extern "C" void DRV_IR_ISR(UINT8 t){
        int sending = 0;
    

    Das Ausführen des IR-Treibers über das BL602 SDK kann in manchen Fällen hilfreich sein, aber ich weiß nicht, ob das eine gute Lösung ist, denn dann haben wir einen separaten IRRemote-Port in OpenBeken auf BK7231 und auf BL602 haben wir IR von BL602, und das sind zwei verschiedene Standards und ich weiß nicht einmal, ob sie die gleichen Daten ausgeben.

    Es ist sicherlich besser, BL602 IR zu haben als gar nichts, aber letztendlich sollten wir versuchen, die gleiche Lösung auf allen Plattformen zu verwenden (IRRemote mit Arduino), anstatt separate Implementierungen zu haben.