ESPHome Lora Empfänger

Hallo. Da die Legacy BlynkServer zum 01.01.2023 offline gehen, versuche ich jetzt mein Projekt anderweitig zu realisieren.

Zur Verfügung steht ein Raspberry Pi mit Home Assistant, Ein Wemos D1 mini mit einem Entfernungsmesser und einem Lora Sender SX1278, sowie ein Wemos D1 mini mit dem SX1278 als Empfänger.

Der Sender prüft jede Minute, ob sich ein Objekt innerhalb von 1,2m befindet und sendet das Wort "belegt", andernfalls "frei".

Der Empfänger empfängt das Signal, prüft welches "Wort" gesendet wurde und schreibt entweder "1" oder "0" in einen virtuellen Pin.

Jetzt möchte ich genau das in Home Assistant mit ESPHome integrieren. Da ich damit noch nicht wirklich zu tun hatte, wollte ich fragen, ob diese Umsetzung überhaupt möglich ist. Für jede Hilfe bin ich dankbar!

Hast du dir das durchgelesen?
Notfalls in Chrome öffnen und übersetzen lassen :wink:

Ich kann doch dann nur darauf zugreifen, wenn ich mich im Netzwerk befinde, oder sehe ich das falsch?

Benutze das nicht, war nur aus Neugier womit man so was Frist :wink:

Ich habe dieses Programm in der Arduino IDE.
Das ist das vereinfachte ohne Blynk.
Wie kann ich das jetzt mit ESPHome in Verbindung bringen, sodass mir in Home Assistant anzeigt werden kann, ob der Parkplatz belegt oder frei ist?

/*
   3V3 - 3V3
   GND - GND
   D8 - NSS
   D7 - MOSI
   D6 - MISO
   D5 - SCK
   D2 - DIO0
   D1 - RST
*/

#include <SPI.h>
#include <LoRa.h>
#include <ESP8266WiFi.h>
#include <Wire.h>

#define ss D8
#define rst D1
#define dio0 D2


char A[] = "belegt";
char B[] = "frei";
char C[] = "start";
int D = 1;
//String LoRaData;




void setup()
{
  //Serial.begin(9600);
  pinMode(D0, OUTPUT);
  LoRa.setPins(ss, rst, dio0);
  delay(2000);


  //Serial.println("LoRa Receiver");

  if (!LoRa.begin(433E6)) {
    //Serial.println("Starting LoRa failed!");
    while (1);
  }
}

void loop()
{
  
  int packetSize = LoRa.parsePacket();

  if (packetSize) {
    //Serial.print("Received packet '");
    digitalWrite(LED_BUILTIN, LOW);
    String LoRaData = LoRa.readString();
    //Serial.print(LoRaData);
    //Serial.print("' with RSSI ");
    //Serial.println(LoRa.packetRssi());

    if (LoRaData == A) {

      //Serial.println("belegt");
      digitalWrite(D0, HIGH);

    }
    if (LoRaData == B) {
      digitalWrite(D0, LOW);
   
      //Serial.println("frei");

    }    
  }
}