• Skip to main content
  • Skip to primary sidebar

RNTLab.com

The Ultimate Shortcut to Learn Electronics and Programming with Open Source Hardware and Software

  • Courses
  • Forum
    • Forum
    • Ask Question
  • Shop
  • Account
  • Blog
  • Login

How to ad an extra led In the python esp32 course – chapter Node_RED ?

Q&A Forum › Category: ESP8266 › How to ad an extra led In the python esp32 course – chapter Node_RED ?
0 Vote Up Vote Down
gj.linthorst asked 6 years ago

In the boot.py file i added:

led1 = machine.Pin(0, machine.Pin.OUT, value=0)

Last line

In the main.py  file I added at -def sub_cb(topic, msg):

if msg == b'on':
  led.value(1)
elif msg == b'off':
  led.value(0)
elif msg == b'1on':
  led1.value(1)
elif msg == b'1off':
  led1.value(0)

On the node Red Dash board I made a new Led1 switch and a output node and deployed it.

The new switch on webpage 192.168.2.192:1880/ui iI can switch but nothing happens.

9 Answers
0 Vote Up Vote Down
Rui Santos Staff answered 6 years ago

Hello, I think you have two things missing. I need to know your exact MQTT topic name for the second LED… I’ll assume it’s called output1.
In the boot.py, you need to subscribe to that MQTT topic that Node-RED is publishing message:

topic_sub1 = b'output1'

In main.py, you need to subscribe to that topic. Add the following to your def connect_and_subscribe() function:

(...)
client.subscribe(topic_sub) client.subscribe(topic_sub1)
(...)

If you subscribe to the second topic, it should work for you! Let me know your results (double-check that you’ve entered the right topic name and values 1on/1off in Node-RED).

0 Vote Up Vote Down
Gayland Monken answered 6 years ago

Good question!  I’m trying to add a second (or more) temperature sensors (DS18B20) to the node-red chart.  Has anyone done this?  Seems like it would be similar to adding an LED but a little more involved.

0 Vote Up Vote Down
Rui Santos Staff answered 6 years ago

Hi, can you please create a new question since it’s a different topic? This thread is to subscribe to an MQTT topic, but feel free to post your question here: https://rntlab.com/ask-question/
Thanks for your understanding!

0 Vote Up Vote Down
Gayland Monken answered 6 years ago

Sorry,  I’ll start a new thread.

0 Vote Up Vote Down
Rui Santos Staff answered 6 years ago

No problem! Just trying keep every thread about one topic to make it easier to follow 🙂

(Note: this is the new thread “Python esp32 course chapter Node-Red, How does one add an additional temp sensor (DS18B20)?“)

0 Vote Up Vote Down
gj.linthorst answered 6 years ago

hello
It still does not work . In the node_red I changed the “on” and “off” string to  “1on”  “1off”.

This is my boot file and main file

Start your code here
# Complete project details at https://RandomNerdTutorials.com

import time
import onewire
import ds18x20
from umqttsimple import MQTTClient
import ubinascii
import machine
import micropython
import network
import esp
esp.osdebug(None)
import gc
gc.collect()

ssid = 'H368N1BC062'
password = '222222222'
mqtt_server = '192.168.2.192'
#EXAMPLE IP ADDRESS
#mqtt_server = '192.168.1.144'
client_id = ubinascii.hexlify(machine.unique_id())
topic_sub = b'output'
topic_sub1 = b'output1'
topic_pub = b'temp'

last_sensor_reading = 0
readings_interval = 5

station = network.WLAN(network.STA_IF)

station.active(True)
station.connect(ssid, password)

while station.isconnected() == False:
  pass

print('Connection successful')
print(station.ifconfig())

ds_pin = machine.Pin(14)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))

led = machine.Pin(2, machine.Pin.OUT, value=0)
led1 = machine.Pin(0, machine.Pin.OUT, value=0)

main.py file
Start your code here
# Complete project details at https://RandomNerdTutorials.com

def read_ds_sensor():
  roms = ds_sensor.scan()
  print('Found DS devices: ', roms)
  print('Temperatures: ')
  ds_sensor.convert_temp()
  time.sleep(1)
  for rom in roms:
    temp = ds_sensor.read_temp(rom)
    if isinstance(temp, float):
      # uncomment for Fahrenheit
      #temp = temp * (9/5) + 32.0
      msg = (b'{0:3.1f}'.format(temp))
      print(temp, end=' ')
      print('Valid temperature')
      return msg
  return b'0.0'

def sub_cb(topic, msg):
  print((topic, msg))
  if msg == b'on':
    led.value(1)
  elif msg == b'off':
    led.value(0)
  elif msg == b'on':
    led1.value(1)
  elif msg == b'off':
    led1.value(0)

def connect_and_subscribe():
  global client_id, mqtt_server, topic_sub
  client = MQTTClient(client_id, mqtt_server)
  client.set_callback(sub_cb)
  client.connect()
  client.subscribe(topic_sub)
  client.subscribe(topic_sub1)
  print('Connected to %s MQTT broker, subscribed to %s topic' % (mqtt_server, topic_sub))
  return client

def restart_and_reconnect():
  print('Failed to connect to MQTT broker. Reconnecting...')
  time.sleep(10)
  machine.reset()

try:
  client = connect_and_subscribe()
except OSError as e:
  restart_and_reconnect()

while True:
  try:
    client.check_msg()
    if (time.time() - last_sensor_reading) > readings_interval:
      msg = read_ds_sensor()
      client.publish(topic_pub, msg)
      last_sensor_reading = time.time()
  except onewire.OneWireError:
    print('Failed to read/publish sensor readings.')
    time.sleep(1)
  except OSError as e:
    restart_and_reconnect()

if I change on off  to 1on and 1off in below no result
 elif msg == b'1on':
 led1.value(1) 
 elif msg == b'1off':
 led1.value(0)
no result
0 Vote Up Vote Down
Rui Santos Staff answered 6 years ago

Hows the Node-RED MQTT in node configured? Do you have a Node subscribe to output1?

0 Vote Up Vote Down
gj.linthorst answered 6 years ago

On the Node-RED MQtt I have had configured output1 as topic
When I change the following in the main.py. I can switch the 2 leds on ……../ui 
 

Start your code here
def sub_cb(topic, msg):
  print((topic, msg))
  if msg == b'on':
    led.value(1)
  elif msg == b'off':
    led.value(0)
  elif msg == b'1on':
    led1.value(1)
  elif msg == b'1off':
    led1.value(0)
 
0 Vote Up Vote Down
Rui Santos Staff answered 6 years ago

So, is it working now?

Primary Sidebar

Login to Ask or Answer Questions

This Forum is private and it’s only available for members enrolled in our Courses.

Login »

Latest Course Updates

  • [New Edition] Build ESP32-CAM Projects eBook – 2nd Edition April 16, 2025
  • [eBook Updated] Learn ESP32 with Arduino IDE eBook – Version 3.2 April 16, 2025

You must be logged in to view this content.

Contact Support - Refunds - Privacy - Terms - MakerAdvisor.com - Member Login

Copyright © 2013-2025 · RandomNerdTutorials.com · All Rights Reserved

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.