<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://revspace.nl/wiki/index.php?action=history&amp;feed=atom&amp;title=ESP-Now</id>
	<title>ESP-Now - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://revspace.nl/wiki/index.php?action=history&amp;feed=atom&amp;title=ESP-Now"/>
	<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=ESP-Now&amp;action=history"/>
	<updated>2026-04-29T19:05:58Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://revspace.nl/wiki/index.php?title=ESP-Now&amp;diff=30551&amp;oldid=prev</id>
		<title>Kartoffel: Nieuwe esp-now bridge</title>
		<link rel="alternate" type="text/html" href="https://revspace.nl/wiki/index.php?title=ESP-Now&amp;diff=30551&amp;oldid=prev"/>
		<updated>2022-12-03T13:27:00Z</updated>

		<summary type="html">&lt;p&gt;Nieuwe esp-now bridge&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;blockquote style=&amp;quot;padding-left: 10px; padding-top: 3px; padding-bottom: 3px; border-left: solid thick grey;&amp;quot;&amp;gt;&lt;br /&gt;
In the beginning, revspace was strung together using a mix of genuine and cloned nRF42 modules. This has made a lot of people very angry and been widely regarded as a bad move.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
{{Project&lt;br /&gt;
 |Name=ESP-Now&lt;br /&gt;
 |Picture=ESP-WROOM-32.jpeg&lt;br /&gt;
 |Omschrijving=ESP-Now netwerk op de space&lt;br /&gt;
 |Status=Completed&lt;br /&gt;
 |Contact=Kartoffel,bertrik&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Tegenwoordig zijn de meeste sensors en frutsels zelf via WiFi direct met MQTT verbonden. Het is in sommige gevallen fijn om een simpeler, meer low-power radioprotocol te hebben waarmee we berichtjes naar MQTT kunnen slingeren.&lt;br /&gt;
&lt;br /&gt;
Dit is per december 2022 vervangen door een simpeler &amp;#039;&amp;#039;broadcast&amp;#039;&amp;#039; esp-now systeem op kanaal 9. Hiermee is geen pairing via het revspace-espnow SSID meer nodig.&lt;br /&gt;
&lt;br /&gt;
== Werking ==&lt;br /&gt;
&lt;br /&gt;
Aan de ledspace Raspberry Pi hangt een ESP32 die alle espnow broadcasts op WiFi kanaal 9 opvangt. Als de berichten met &amp;lt;code&amp;gt;#R&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;#U&amp;lt;/code&amp;gt; beginnen worden ze naar de seriële poort doorgestuurd en door [https://github.com/Kartoffel/pyserial-mqtt pyserial-mqtt] op MQTT gepubliceerd.&lt;br /&gt;
&lt;br /&gt;
De verzendende ESP8266 en ESP32&amp;#039;s sturen een esp-now bericht naar het broadcast adres (&amp;lt;code&amp;gt;0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF&amp;lt;/code&amp;gt;) op kanaal 9, met data:&lt;br /&gt;
* &amp;lt;code&amp;gt;#R&amp;#039;&amp;#039;topic&amp;#039;&amp;#039; &amp;#039;&amp;#039;payload&amp;#039;&amp;#039;&amp;lt;/code&amp;gt; voor een retained MQTT topic&lt;br /&gt;
* &amp;lt;code&amp;gt;#U&amp;#039;&amp;#039;topic&amp;#039;&amp;#039; &amp;#039;&amp;#039;payload&amp;#039;&amp;#039;&amp;lt;/code&amp;gt; voor een unretained MQTT topic&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s it!&lt;br /&gt;
&lt;br /&gt;
== Projecten ==&lt;br /&gt;
* [[Skipknop]]&lt;br /&gt;
* Nomzknop keuken&lt;br /&gt;
&lt;br /&gt;
== Voorbeeldcode ==&lt;br /&gt;
&lt;br /&gt;
Dit zou portable moeten zijn voor zowel ESP8266 als ESP32 modules binnen de Arduino omgeving. De esp8266 heeft wat extra trickery nodig om daadwerkelijk op kanaal 9 uit te zenden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;quot;Arduino.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#if defined(ESP8266)&lt;br /&gt;
  #include &amp;lt;espnow.h&amp;gt;&lt;br /&gt;
  #include &amp;quot;ESP8266WiFi.h&amp;quot;&lt;br /&gt;
#else&lt;br /&gt;
  #include &amp;lt;esp_now.h&amp;gt;&lt;br /&gt;
  #include &amp;lt;esp_wifi.h&amp;gt;&lt;br /&gt;
  #include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
// Custom protocol for MQTT over ESP-NOW&lt;br /&gt;
// Always start with #, then R for retained or U for unretained&lt;br /&gt;
#define MQTT_TOPIC  &amp;quot;#Urevspace/button/test&amp;quot;&lt;br /&gt;
#define MQTT_MSG    &amp;quot;hallo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define ESP_NOW_CHANNEL 9&lt;br /&gt;
#if defined(ESP32)&lt;br /&gt;
  esp_now_peer_info_t peerInfo;&lt;br /&gt;
#endif&lt;br /&gt;
uint8_t broadcastAddress[] = {0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF};&lt;br /&gt;
&lt;br /&gt;
void setup(void) {&lt;br /&gt;
  // Welcome&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  Serial.printf(&amp;quot;\nStart\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
#if defined(ESP32)&lt;br /&gt;
  WiFi.mode(WIFI_STA);&lt;br /&gt;
  ESP_ERROR_CHECK(esp_wifi_start());&lt;br /&gt;
  ESP_ERROR_CHECK(esp_wifi_set_promiscuous(true));&lt;br /&gt;
&lt;br /&gt;
  if (esp_wifi_set_channel(ESP_NOW_CHANNEL, WIFI_SECOND_CHAN_NONE) != ESP_OK) {&lt;br /&gt;
    Serial.println(&amp;quot;Failed to set WiFi channel!&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (esp_now_init() != ESP_OK) {&lt;br /&gt;
    Serial.println(&amp;quot;Error initializing ESP-NOW&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
    &lt;br /&gt;
  // register peer&lt;br /&gt;
  memcpy(peerInfo.peer_addr, broadcastAddress, 6);&lt;br /&gt;
  peerInfo.channel = ESP_NOW_CHANNEL;  &lt;br /&gt;
  peerInfo.encrypt = false;&lt;br /&gt;
          &lt;br /&gt;
  if (esp_now_add_peer(&amp;amp;peerInfo) != ESP_OK){&lt;br /&gt;
    Serial.println(&amp;quot;Failed to add peer&amp;quot;);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
#else&lt;br /&gt;
  WiFi.forceSleepWake();&lt;br /&gt;
  WiFi.persistent(false);&lt;br /&gt;
  WiFi.mode(WIFI_STA);&lt;br /&gt;
  WiFi.begin(&amp;quot;aapnoot&amp;quot;, &amp;quot;miesmies&amp;quot;, ESP_NOW_CHANNEL, NULL, false);&lt;br /&gt;
  WiFi.disconnect();&lt;br /&gt;
  wifi_set_channel(ESP_NOW_CHANNEL);&lt;br /&gt;
&lt;br /&gt;
  if (esp_now_init() != 0) {&lt;br /&gt;
    Serial.println(&amp;quot;Error initializing ESP-NOW&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  esp_now_set_self_role(ESP_NOW_ROLE_CONTROLLER);&lt;br /&gt;
  esp_now_add_peer(broadcastAddress, ESP_NOW_ROLE_SLAVE, ESP_NOW_CHANNEL, NULL, 0);&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
bool send_topic_text(const char *topic, const char *text) {&lt;br /&gt;
  uint8_t *mac = broadcastAddress;&lt;br /&gt;
  char buf[250];&lt;br /&gt;
  int n = snprintf(buf, sizeof(buf), &amp;quot;%s %s&amp;quot;, topic, text);&lt;br /&gt;
  return esp_now_send(mac, (uint8_t *)buf, n) == 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop(void) {&lt;br /&gt;
&lt;br /&gt;
  send_topic_text(MQTT_TOPIC, MQTT_MSG);&lt;br /&gt;
&lt;br /&gt;
  delay(10);&lt;br /&gt;
&lt;br /&gt;
  // Sleep forever&lt;br /&gt;
#if defined(ESP32)&lt;br /&gt;
  esp_deep_sleep_start();&lt;br /&gt;
#else&lt;br /&gt;
  ESP.deepSleep(0);&lt;br /&gt;
#endif&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kartoffel</name></author>
	</entry>
</feed>