Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cannot connect to aws iot using umqtt.simple #915

Open
Saranya-karan opened this issue Aug 26, 2024 · 2 comments
Open

cannot connect to aws iot using umqtt.simple #915

Saranya-karan opened this issue Aug 26, 2024 · 2 comments

Comments

@Saranya-karan
Copy link

Saranya-karan commented Aug 26, 2024

My code

import time
import machine
import network
import ujson
from simple1 import MQTTClient

SSID = b'Exxxye'
PASS = b'8xxx766'
CLIENT_ID = b'ixxxxxxxxxxxx6eb63'
AWS_ENDPOINT = b'xxxxx-1.amazonaws.com'

PUB_TOPIC = b'temperature'
SUB_TOPIC = b'temperature'
with open('/pri.der', 'rb') as f:
    DEV_KEY = f.read()

with open('/cert.der', 'rb') as f:
    DEV_CRT = f.read()

light = machine.Pin("LED", machine.Pin.OUT)
light.off()


def wifi_connect():
    print('Connecting to wifi...')
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.connect(SSID, PASS)
    while wlan.isconnected() == False:
        light.on()
        print('Waiting for connection...')
        time.sleep(0.5)
        light.off()
        time.sleep(0.5)
    print('Connection details: %s' % str(wlan.ifconfig()))

def mqtt_subscribe_callback(topic, msg):
    print("Received topic: %s message: %s" % (topic, msg))
    if topic == SUB_TOPIC:
        mesg = ujson.loads(msg)
        if 'state' in mesg.keys():
            if mesg['state'] == 'on' or mesg['state'] == 'ON' or mesg['state'] == 'On':
                light.on()
                print('Light is ON')
            else:
                light.off()
                print('Light is OFF')

def get_rpi_temperature():
    sensor = machine.ADC(4)
    voltage = sensor.read_u16() * (3.3 / 65535)
    temperature = 27 - (voltage - 0.706) / 0.001721
    return temperature


wifi_connect()


mqtt = MQTTClient(
    client_id=CLIENT_ID,
    server=AWS_ENDPOINT,
    port=8883,
    keepalive=120,
    ssl=True,
    ssl_params={'key':DEV_KEY, 'cert':DEV_CRT, 'server_side':False})

mqtt.connect()

mqtt.set_callback(mqtt_subscribe_callback)


mqtt.subscribe(SUB_TOPIC)

while True:
message = b'{"temperature":%s, "temperature_unit":"Degrees Celsius"}' % get_rpi_temperature()
    print('Publishing topic %s message %s' % (PUB_TOPIC, message))

    mqtt.publish(topic=PUB_TOPIC, msg=message, qos=1)

    # Check subscriptions for message
    mqtt.check_msg()
    time.sleep(5)

My error code:

Connecting to wifi...
Connection details: ('192.168.x.xx', '255.255.255.0', '192.168.xx.xx', '192.168.xx.xx')
dbug-msg: 0x9 b'04:4d:51:54:54:04:02:00:78'
dbug-resp: b''
Traceback (most recent call last):
File "", line 81, in
File "simple1.py", line 92, in connect
IndexError: bytes index out of range

please someone help me on this..i tried everything

@micropython micropython deleted a comment Aug 26, 2024
@micropython micropython deleted a comment Aug 26, 2024
@kllsamui
Copy link

kllsamui commented Sep 23, 2024

try first time MicroPython
MQTT TLS ( ssl=True)
and can not connect

env: MicroPython v1.23.0 on 2024-06-02; Raspberry Pi Pico W with RP2040
also test: MicroPython v1.24.0-preview.335.gb08ddbba5 on 2024-09-20; Raspberry Pi Pico W with RP2040

from umqtt.simple import MQTTClient # Metadata-Version: 2.1 Name: umqtt.simple Version: 1.4.0

error:
Traceback (most recent call last):
File "", line 47, in
File "/lib/umqtt/simple.py", line 68, in connect
AttributeError: 'bool' object has no attribute 'wrap_socket'

do i need a other /lib/ ?

@kllsamui
Copy link

no, a better code did it:
Screenshot 2024-09-23 214645

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants