Jul-17-2023, 07:33 PM
(This post was last modified: Jul-17-2023, 07:33 PM by marciokoko.)
I got this code for posting data to thingspeak from a raspberry pi (zero):
Mars
#!/usr/local/bin/python3 from envirophat import light, motion, weather, leds import thingspeak import time from datetime import datetime # Structure of the record - semicolon separated: # UNIX timestamp;ISO date; light; rgb; motion; heading; temp (celsius); pressure (hPa) # your ThnkSpeak Channel and API Write Key channel_id="123" api_key="456" thingspeak_data = {} try: now = datetime.now() ch = thingspeak.Channel(channel_id, api_key) timestamp = round(datetime.timestamp(now)) cas = now.isoformat() leds.off() lux = light.light() print('%s;%s;%.1f' % (timestamp,cas,lux)) thingspeak_data['field1'] = cas thingspeak_data['field2'] = lux response = ch.update(thingspeak_data) leds.off() except KeyboardInterrupt: leds.off()When I run the script from the terminal using the python command it works and posts once of course. But I need it to post every few minutes, so I did this. Replaced try: with while True: and added time.sleep(1800):
#!/usr/local/bin/python3 from envirophat import light, motion, weather, leds import thingspeak import time from datetime import datetime # Structure of the record - semicolon separated: # UNIX timestamp;ISO date; light; rgb; motion; heading; temp (celsius); pressure (hPa) # your ThnkSpeak Channel and API Write Key channel_id="123" api_key="456" thingspeak_data = {} #try: while True: now = datetime.now() ch = thingspeak.Channel(channel_id, api_key) timestamp = round(datetime.timestamp(now)) cas = now.isoformat() leds.off() lux = light.light() print('%s;%s;%.1f' % (timestamp,cas,lux)) thingspeak_data['field1'] = cas thingspeak_data['field2'] = lux response = ch.update(thingspeak_data) leds.off() time.sleep(1800) #except KeyboardInterrupt: # leds.off()It works, but only runs a few times and then stops after about the 3rd time. Why?
Mars