From 4c6b4fb33f9c688c19fe8b8efa6453d07f736621 Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Tue, 7 May 2019 18:52:35 +0200 Subject: [PATCH] =?UTF-8?q?v0.1=20=F0=9F=99=86=E2=80=8D=E2=99=80=EF=B8=8F?= =?UTF-8?q?=20Chewie,=20we're=20home?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- boot.py | 29 +++++++++++++++++++++++++++++ elasticLog.py | 16 ++++++++++++++++ main.py | 15 +++++++++++++++ watercontent.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 102 insertions(+) create mode 100644 boot.py create mode 100644 elasticLog.py create mode 100644 main.py create mode 100644 watercontent.py diff --git a/boot.py b/boot.py new file mode 100644 index 0000000..39c88dc --- /dev/null +++ b/boot.py @@ -0,0 +1,29 @@ +# This file is executed on every boot (including wake-boot from deepsleep) +#import esp +#esp.osdebug(None) +import uos, machine +#uos.dupterm(None, 1) # disable REPL on UART(0) +import gc +#import webrepl +#webrepl.start() +gc.collect() + +# - - - NETWORKING - - - +import network +sta_if = network.WLAN(network.STA_IF) + +def connectWifi(): + sta_if.active(True) + + # PSID and password for wifi + sta_if.connect('', '') + return sta_if +def disconnectWifi(): + sta_if.active(False) + +if not sta_if.isconnected(): + print('connecting to network...') + connectWifi() + while not sta_if.isconnected(): + pass +print('network config:', sta_if.ifconfig()) \ No newline at end of file diff --git a/elasticLog.py b/elasticLog.py new file mode 100644 index 0000000..6f78d7a --- /dev/null +++ b/elasticLog.py @@ -0,0 +1,16 @@ +import json +import urequests + +headers = { 'Content-Type': 'application/json' } +url = 'http://localhost.com:9200' +index = 'botany' + +def logger(msg, data=None): + uri = '/'.join([url, index, '_doc']) + r = urequests.post(uri, data=json.dumps(data), headers=headers) + + print(r.status_code) + text = r.text + r.close() + + return text diff --git a/main.py b/main.py new file mode 100644 index 0000000..8dd1417 --- /dev/null +++ b/main.py @@ -0,0 +1,15 @@ +from watercontent import watercontent +from elasticLog import logger + +def main(): + print('main loaded') + try: + watercontent() + except Exception as e: + print(e) + logger('Error thrown', {'message': 'Error thrown', 'error': e}) + print('starting again') + watercontent() + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/watercontent.py b/watercontent.py new file mode 100644 index 0000000..bab6409 --- /dev/null +++ b/watercontent.py @@ -0,0 +1,42 @@ +import ntptime +from time import sleep +from machine import ADC, deepsleep, DEEPSLEEP, RTC, Timer +from boot import connectWifi, disconnectWifi +from elasticLog import logger + +signalPin = ADC(0) +NTP_OFFSET = 946684800 +DEEPSLEEP_TIME=30 # in seconds + +def logMoisture(reading): + try: + time = ntptime.time() + time = time + NTP_OFFSET + + data = { + '@timestamp': int(time*1000), + 'moisture': reading, + 'message': 'Moisture reading', + 'plant_id': 2, + 'plant_name': 'Gulrorbambus' + } + return logger('Moisture reading', data=data) + except OSError as e: + logger('Error', data={'message': 'Error fetching ntp time', 'error': e}) + + +def watercontent(): + moistureReading = signalPin.read() + + print(logMoisture(moistureReading)) + # A little extra time alive for file transfere + print('3 second upload window before deepsleep') + sleepTriggerTimer = Timer(-1) + sleepTriggerTimer.init(period=3000, mode=Timer.ONE_SHOT, callback=_sleep) + +def _sleep(_): + print('deepsleep starting for {} seconds'.format(DEEPSLEEP_TIME)) + rtc = RTC() + rtc.irq(trigger=rtc.ALARM0, wake=DEEPSLEEP) + rtc.alarm(rtc.ALARM0, DEEPSLEEP_TIME * 1000) + deepsleep() \ No newline at end of file