<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://hyperdramatik.net/mediawiki/index.php?action=history&amp;feed=atom&amp;title=PubSub_3sensors_continuous_asStringList</id>
	<title>PubSub 3sensors continuous asStringList - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="http://hyperdramatik.net/mediawiki/index.php?action=history&amp;feed=atom&amp;title=PubSub_3sensors_continuous_asStringList"/>
	<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=PubSub_3sensors_continuous_asStringList&amp;action=history"/>
	<updated>2026-04-27T16:52:53Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in hyperdramatik</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>http://hyperdramatik.net/mediawiki/index.php?title=PubSub_3sensors_continuous_asStringList&amp;diff=2652&amp;oldid=prev</id>
		<title>HannahPernerWilson: Die Seite wurde neu angelegt: „This example code publishes 3 analog sensor values continuously as a String and subscribes to a String of 3 analog sensor values from another ESP, unpacks thes…“</title>
		<link rel="alternate" type="text/html" href="http://hyperdramatik.net/mediawiki/index.php?title=PubSub_3sensors_continuous_asStringList&amp;diff=2652&amp;oldid=prev"/>
		<updated>2021-11-16T04:52:39Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „This example code publishes 3 analog sensor values continuously as a String and subscribes to a String of 3 analog sensor values from another ESP, unpacks thes…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This example code publishes 3 analog sensor values continuously as a String and subscribes to a String of 3 analog sensor values from another ESP, unpacks these into integers and turn on/off LEDs depending on the integer values in comparison to a threshold you can set.&lt;br /&gt;
&lt;br /&gt;
Upload this code to two ESPs. The light sensors on one ESP with control the LEDs on the other.&lt;br /&gt;
&lt;br /&gt;
==The Circuit:==&lt;br /&gt;
Each ESP has 3 LEDs wired to: int outputPins[] = {25, 26, 27};&amp;lt;br&amp;gt;&lt;br /&gt;
Each ESP has 3 light sensors wired to: int inputPins[] = {36, 39, 34};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ARDUINO CODE for ESP32s==&lt;br /&gt;
Change the following lines to be different for each ESP:&lt;br /&gt;
&lt;br /&gt;
===ESP1:===&lt;br /&gt;
&lt;br /&gt;
const char* myName = &amp;quot;esp_dome1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
String myPubTopic = &amp;quot;dome1/sensors/&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
String mySubTopic = &amp;quot;dome2/sensors/&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
===ESP2:===&lt;br /&gt;
&lt;br /&gt;
const char* myName = &amp;quot;esp_dome2&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
String myPubTopic = &amp;quot;dome2/sensors/&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
String mySubTopic = &amp;quot;dome1/sensors/&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;js&amp;quot; line start=&amp;quot;2&amp;quot; highlight=&amp;quot;4-6&amp;quot;&amp;gt;&lt;br /&gt;
// publishes 3 analog sensor values continuously as a String &lt;br /&gt;
// subscribes to 3 analog sensor values and unpacks the string into integers&lt;br /&gt;
// turns on/off LEDs depending on incoming sensor values&lt;br /&gt;
// using Shiftr Desktop Broker: https://www.shiftr.io/desktop&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;WiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MQTT.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WiFiClient net;&lt;br /&gt;
MQTTClient client;&lt;br /&gt;
&lt;br /&gt;
const char* myName = &amp;quot;esp_dome1&amp;quot;;&lt;br /&gt;
String myPubTopic = &amp;quot;dome2/sensors&amp;quot;;&lt;br /&gt;
String mySubTopic = &amp;quot;dome1/sensors&amp;quot;;&lt;br /&gt;
int threshold = 2500;&lt;br /&gt;
int publishFrequency = 33; //publish every x miliseconds&lt;br /&gt;
unsigned long lastMillis = 0;&lt;br /&gt;
&lt;br /&gt;
int inputPin1 = 36;&lt;br /&gt;
int inputPin2 = 39;&lt;br /&gt;
int inputPin3 = 34;&lt;br /&gt;
int outputPin1 = 25;&lt;br /&gt;
int outputPin2 = 26;&lt;br /&gt;
int outputPin3 = 27;&lt;br /&gt;
int incomingSensorValues[3];&lt;br /&gt;
&lt;br /&gt;
const char ssid[] = &amp;quot;topofthepops&amp;quot;;&lt;br /&gt;
const char pass[] = &amp;quot;abarakadabarabistaklassahabara&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//const char ssid[] = &amp;quot;puppe1119&amp;quot;;&lt;br /&gt;
//const char pass[] = &amp;quot;puppe2010&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  //declare INPUTS:&lt;br /&gt;
  pinMode(inputPin1, INPUT);&lt;br /&gt;
  pinMode(inputPin2, INPUT);&lt;br /&gt;
  pinMode(inputPin3, INPUT);&lt;br /&gt;
  //declare OUTPUTS:&lt;br /&gt;
  pinMode(outputPin1, OUTPUT);&lt;br /&gt;
  pinMode(outputPin2, OUTPUT);&lt;br /&gt;
  pinMode(outputPin3, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
  Serial.begin(9600); //begin serial communication&lt;br /&gt;
&lt;br /&gt;
  // start wifi and mqtt:&lt;br /&gt;
  WiFi.begin(ssid, pass);&lt;br /&gt;
  client.begin(&amp;quot;192.168.0.9&amp;quot;, net);&lt;br /&gt;
  client.onMessage(messageReceived);&lt;br /&gt;
  connect();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void connect() {&lt;br /&gt;
  Serial.print(&amp;quot;checking wifi...&amp;quot;);&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.print(&amp;quot;\nconnecting...&amp;quot;);&lt;br /&gt;
  //client.connect(&amp;quot;client ID&amp;quot;, &amp;quot;name of your instance&amp;quot;, &amp;quot;token secret&amp;quot;)&lt;br /&gt;
  //when connecting to local broker leave name and token empty:&lt;br /&gt;
&lt;br /&gt;
  while (!client.connect(myName, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;)) {&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;\nconnected!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  client.subscribe(mySubTopic);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void messageReceived(String &amp;amp;topic, String &amp;amp;payload) {&lt;br /&gt;
  Serial.println(&amp;quot;mySubTopic: &amp;quot; + topic + &amp;quot; / &amp;quot; + payload);&lt;br /&gt;
&lt;br /&gt;
  //call function that converts the incoming payload String to an array of Integers:&lt;br /&gt;
  convertStringToInttegers(payload);&lt;br /&gt;
&lt;br /&gt;
  if (incomingSensorValues[0] &amp;lt; threshold) digitalWrite(outputPin1, HIGH);&lt;br /&gt;
  else digitalWrite(outputPin1, LOW);&lt;br /&gt;
  &lt;br /&gt;
  if (incomingSensorValues[1] &amp;lt; threshold) digitalWrite(outputPin2, HIGH);&lt;br /&gt;
  else digitalWrite(outputPin2, LOW);&lt;br /&gt;
  &lt;br /&gt;
  if (incomingSensorValues[2] &amp;lt; threshold) digitalWrite(outputPin3, HIGH);&lt;br /&gt;
  else digitalWrite(outputPin3, LOW);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  client.loop();  // perform important MQTT things!&lt;br /&gt;
  // check if connected&lt;br /&gt;
  if (!client.connected()) {&lt;br /&gt;
    connect();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // publish a message every x miliseconds.&lt;br /&gt;
  if (millis() - lastMillis &amp;gt; publishFrequency) {&lt;br /&gt;
    lastMillis = millis();&lt;br /&gt;
    String myMessage = String(analogRead(inputPin1)) + &amp;quot; &amp;quot; + String(analogRead(inputPin2)) + &amp;quot; &amp;quot; + String(analogRead(inputPin3));&lt;br /&gt;
    client.publish(myPubTopic, myMessage);&lt;br /&gt;
    Serial.println(&amp;quot;myPubTopic: &amp;quot; + myPubTopic + &amp;quot; / &amp;quot; + myMessage);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void convertStringToInttegers (String stringToConvert) {&lt;br /&gt;
  char myCharArray[15];&lt;br /&gt;
  int i = 0;&lt;br /&gt;
&lt;br /&gt;
  stringToConvert.toCharArray(myCharArray, 15);&lt;br /&gt;
  char *ptr;&lt;br /&gt;
  ptr = strtok(myCharArray, &amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  while (ptr != NULL) {&lt;br /&gt;
    incomingSensorValues[i] = String(ptr).toInt();&lt;br /&gt;
    ptr = strtok(NULL, &amp;quot; &amp;quot;);&lt;br /&gt;
    i++;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>HannahPernerWilson</name></author>
	</entry>
</feed>