Elektroda.de
Elektroda.de
X

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

p.kaczmarek2 37512 326
This content has been translated flag-pl » flag-de View the original version here.
  • Tasmota-Ersatz für BL602 – Programmierung, 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 programmieren möchten. Darüber hinaus präsentiere ich zwei interessante Demos vom SDK BL602.

    Wozu BL602 programmieren?
    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 – Programmierung, Kopplung mit Home Assistant
    Die Details habe ich im Abschnitt "Geräte-Innenansicht" beschrieben:
    https://www.elektroda.pl/rtvforum/topic3881416.html
    An Bord dieser Steuerung befinden sich BL602 und 3 per PWM gesteuerte Transistoren:
    Tasmota-Ersatz für BL602 – Programmierung, Kopplung mit Home Assistant
    Anschlussskizze:
    Tasmota-Ersatz für BL602 – Programmierung, 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.
    Die Initiative wurde zu folgenden Themen ins Leben gerufen:
    WB2S/BK7231 Anleitung – wir erstellen unsere eigene Firmware – UDP/TCP/HTTP/MQTT
    [BK7231T] Mein HTTP-Server, Konfigurator, MQTT-Unterstützung mit Home Assistant

    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 Programmieren 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)
    Details hier:
    https://www.elektroda.pl/rtvforum/topic3881416.html
    Bei mir sieht es so aus:
    Tasmota-Ersatz für BL602 – Programmierung, 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 der Programmierung 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 – Programmierung, 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 – Programmierung, 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 diesen Themen beschriebenen Konfiguration:
    - Qiachip Smart Switch BK7231N/CB2S – Innenansicht, Programmierung
    - Garten-Doppelrelais Tuya CCWFIO232PK - BK7231T - Programmierung
    Es lohnt sich auch, das Thema zu lesen:
    Tutorial Home Assistant – Konfiguration, WLAN, MQTT, Zigbee, Tasmota
    Nach dem Neustart des Geräts sollte ein offener Access Point mit einem Namen wie OpenBL602_1A1B2C3D4E5 erscheinen:
    Tasmota-Ersatz für BL602 – Programmierung, 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 – Programmierung, 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 – Programmierung, Kopplung mit Home Assistant Tasmota-Ersatz für BL602 – Programmierung, Kopplung mit Home Assistant Tasmota-Ersatz für BL602 – Programmierung, Kopplung mit Home Assistant Tasmota-Ersatz für BL602 – Programmierung, 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 – Programmierung, Kopplung mit Home Assistant
    Windows blockiert möglicherweise MSys – man soll trotzdem fortfahren.
    Tasmota-Ersatz für BL602 – Programmierung, Kopplung mit Home Assistant
    Wir wählen den Ordner für die Installation:
    Tasmota-Ersatz für BL602 – Programmierung, 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 – Programmierung, Kopplung mit Home Assistant
    Dann auch pacman -Su
    Dann pacman -S make
    Tasmota-Ersatz für BL602 – Programmierung, 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 – Programmierung, 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 – Programmierung, 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 – Programmierung, Kopplung mit Home Assistant
    Nach dem Senden des Pin-Steuerbefehls:
    Tasmota-Ersatz für BL602 – Programmierung, 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 – Programmierung, Kopplung mit Home Assistant
    Zunächst lohnt es sich, die gesamte Befehlsliste über den ganz offensichtlichen Befehl help kennenzulernen:
    Tasmota-Ersatz für BL602 – Programmierung, Kopplung mit Home Assistant
    Tasmota-Ersatz für BL602 – Programmierung, Kopplung mit Home Assistant
    Versuchen wir es mit wifi_ap_start:
    Tasmota-Ersatz für BL602 – Programmierung, Kopplung mit Home Assistant
    Tasmota-Ersatz für BL602 – Programmierung, 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 Befreiung 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 Programmieren 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.
    [F]

    Cool? DIY-Rangliste
    Über den Autor
    p.kaczmarek2
    Moderator Smart Home
    Offline 
    p.kaczmarek2 hat 4845 Beiträge geschrieben mit der Bewertung 5178 geschrieben, und dabei 235 Mal geholfen. Er ist seit 2014 bei uns.