Jadon Lim
Published

Smart Sourdough Starter

Our group members are Armando, Damien, Jadon, and Jian Hao. Our project aims to allow easy maintenance of the sourdough for the user.

BeginnerWork in progress20 hours353
Smart Sourdough Starter

Things used in this project

Story

Read more

Schematics

M5Stack Connections

This is a picture from our storyboard of the connections of our M5Stack

Block Diagram

This is a block diagram of how we connected the M5Stack and its sensors

Code

M5Stack 1 (pH sensor)

Python
Code for M5Stack 1 which is connected to the pH sensor.

It reads the input from the pH sensor then sends the data to M5Stack 2 via ESP-Now
from m5stack import *
from m5ui import *
from uiflow import *
import espnow
import wifiCfg
import time
from easyIO import *


setScreenColor(0x222222)


gradient = None
counter = None
data = None
current_month = None
current_day = None
first_day = None
first_month = None
my_4pH_voltage = None
my_7pH_Voltage = None
pH = None
yIntercept = None
voltsReading = None

wifiCfg.wlan_ap.active(True)
wifiCfg.wlan_sta.active(True)
espnow.init()

rectangle0 = M5Rect(0, 0, 320, 45, 0xFFFFFF, 0xFFFFFF)
label0 = M5TextBox(106, 12, "Data Read", lcd.FONT_DejaVu18, 0x000000, rotate=0)
label7 = M5TextBox(68, 70, "pH Value:", lcd.FONT_DejaVu18, 0xFFFFFF, rotate=0)
label5 = M5TextBox(142, 210, "Done", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label8 = M5TextBox(184, 70, "Text", lcd.FONT_DejaVu18, 0xFFFFFF, rotate=0)
label6 = M5TextBox(20, 134, "Text", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label2 = M5TextBox(61, 224, "^", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label3 = M5TextBox(244, 224, "^", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label1 = M5TextBox(50, 197, "Text", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label4 = M5TextBox(233, 197, "Text", lcd.FONT_Default, 0xFFFFFF, rotate=0)




espnow.add_peer('98:f4:ab:6b:9f:7d', id=1)
current_month = 1
current_day = 1
first_day = 1
first_month = 1
while not (btnB.isPressed()):
  if btnA.isPressed():
    first_day = first_day + 1
    if first_day > 31:
      first_day = 1
    label1.setText(str(first_day))
    wait(1)
  elif btnC.isPressed():
    first_month = first_month + 1
    if first_month >= 5:
      first_month = 1
    label4.setText(str(first_month))
    wait(1)
  label6.setText(str((str('First Date of recording') + str(((str(first_day) + str(((str('/') + str(first_month))))))))))
wait(1)
espnow.send(id=1, data=str(({'first_day':first_day,'first_month':first_month})))
my_4pH_voltage = 0.715
my_7pH_Voltage = 0.536
pH = 0
gradient = (4 - 7) / (my_4pH_voltage - my_7pH_Voltage)
yIntercept = 7 - gradient * my_7pH_Voltage
while True:
  while not (btnB.isPressed()):
    if btnA.isPressed():
      current_day = current_day + 1
      if current_day >= 32 or current_day < first_day and current_month <= current_month:
        current_day = first_day
      label1.setText(str(current_day))
      wait(1)
    elif btnC.isPressed():
      current_month = current_month + 1
      if current_month >= 4 or current_day < first_day and current_month <= current_month:
        current_month = current_month
      label4.setText(str(current_month))
      wait(1)
    label6.setText(str((str('Current date of recording') + str(((str(current_day) + str(((str('/') + str(current_month))))))))))
  voltsReading = 0
  for count in range(6):
    voltsReading = (analogRead(36)) / 1000 + voltsReading
  voltsReading = voltsReading / 6
  pH = gradient * voltsReading + yIntercept
  data = {'pH':pH,'current_month':current_month,'current_day':current_day}
  label8.setText(str(pH))
  espnow.send(id=1, data=str(data))
  wait(3)
  wait_ms(2)

M5Stack 2 (Reciever)

Python
M5Stack 3 is not connected to any sensors.

It recieves readings and data from M5Stack 2 and displays the data for the user
import math

from m5stack import *
from m5ui import *
from uiflow import *
import espnow
import wifiCfg
import unit
import json
BACKGROUND_COLOR = 0x59b2de
setScreenColor(BACKGROUND_COLOR)

wifiCfg.wlan_ap.active(True)
wifiCfg.wlan_sta.active(True)
espnow.init()

tempLabel = M5TextBox(6, 68, "Daily Temperature:", lcd.FONT_DejaVu18, 0xFFFFFF, rotate=0)
tempValLabel = M5TextBox(210, 68, "0", lcd.FONT_UNICODE, 0xFFFFFF, rotate=0)

phLabel = M5TextBox(14, 180, "Daily pH Value:", lcd.FONT_DejaVu18, 0xFFFFFF, rotate=0)
phValLabel = M5TextBox(176, 180, "0", lcd.FONT_DejaVu18, 0xFFFFFF, rotate=0)

humidityLabel = M5TextBox(14, 103, "Daily Humidity:", lcd.FONT_DejaVu18, 0xFFFFFF, rotate=0)
humidityValLabel = M5TextBox(187, 103, "0", lcd.FONT_DejaVu18, 0xFFFFFF, rotate=0)

moistureLabel = M5TextBox(14, 140, "Daily Moisture:", lcd.FONT_DejaVu18, 0xFFFFFF, rotate=0)
moistureValLabel = M5TextBox(176, 140, "0", lcd.FONT_DejaVu18, 0xFFFFFF, rotate=0)


titleBorder = M5Rect(0, 0, 320, 45, 0xFFFFFF, 0xffffff)
title = M5TextBox(56, 9, "Daily Conditions", lcd.FONT_DejaVu24, 0xff0000, rotate=0)

dailyMsgLabel = M5TextBox(24, 119, "text", lcd.FONT_DejaVu18, 0x000000, rotate=0)
buttonB_label = M5TextBox(129, 224, "Message", lcd.FONT_Default, 0xFFFFFF, rotate=0)
buttonA_label = M5TextBox(50, 224, "Daily", lcd.FONT_Default, 0xFFFFFF, rotate=0)

huge_box = M5Rect(0, 0, 320, 250, BACKGROUND_COLOR, BACKGROUND_COLOR)

menu_list = {
    "HOME": [
        titleBorder,
        title,

        tempLabel,
        tempValLabel,

        phLabel,
        phValLabel,

        humidityLabel,
        humidityValLabel,

        moistureLabel,
        moistureValLabel,

        buttonA_label,
        buttonB_label,
    ],

    "MESSAGE": [
        dailyMsgLabel,
        buttonA_label,
        buttonB_label,
    ]
}

TOTAL_TEMP = 0
TOTAL_HUMID = 0
TOTAL_PH = 0
TOTAL_MOIST = 0
TOTAL_DAY = 1
bad = False

DATA_RECEIVED = None
def show_menu(menuName: str):
    global CURRENT_MENU, TOTAL_PH, TOTAL_TEMP, TOTAL_MOIST, TOTAL_HUMID

    if CURRENT_MENU == menuName:
        return

    huge_box.hide()

    for menuItem in menu_list[menuName]:
        menuItem.show()
    if type(DATA_RECEIVED)==type({}):
        if menuName == "HOME":
            updateValLabels("AVERAGE")
        elif menuName == "MESSAGE":
            if bad:
                dailyMsgLabel.setText("Something's wrong! Check Data!")
            else:
                dailyMsgLabel.setText("Everything is doing fine")

    CURRENT_MENU = menuName

CURRENT_MENU = ""
show_menu("HOME")

def updateValLabels(updateWith: str):
    def ave(val):
        return round(val/TOTAL_DAY, 2)

    if updateWith == "AVERAGE":
        phValLabel.setText(str(ave(TOTAL_PH)))
        moistureValLabel.setText(str(ave(TOTAL_MOIST)))
        humidityValLabel.setText(str(ave(TOTAL_HUMID)) + "%")
        tempValLabel.setText(str(ave(TOTAL_TEMP)) + "C")
valThresholds = [ #ph
                 (60, 80),
                (-1, 1000),
                    (3.5, 6),#humid
                (21.1, 30), #temp
                ] #hmoist

def recv_cb(_):

    global mac, DATA_RECEIVED, TOTAL_DAY, TOTAL_PH, TOTAL_TEMP, TOTAL_HUMID, TOTAL_MOIST, bad
    mac, _, DATA_RECEIVED = espnow.recv_data(encoder='str')
    DATA_RECEIVED = DATA_RECEIVED.replace("'", '"')
    DATA_RECEIVED = json.loads(DATA_RECEIVED)

    counter = 0
    bad = False
    for key in DATA_RECEIVED:
        if key == "total time":
            continue
        if not (DATA_RECEIVED[key] > valThresholds[counter][0] and DATA_RECEIVED[key] < valThresholds[counter][1]):
            bad = True
            break
        counter += 1

    if bad==False:
        rgb.setColorAll(0x00FF00)
    else:
        rgb.setColorAll(0xFF0000)

    TOTAL_TEMP += DATA_RECEIVED["temp"]
    TOTAL_PH += DATA_RECEIVED["pH"]
    TOTAL_HUMID += DATA_RECEIVED["humid"]
    TOTAL_MOIST += DATA_RECEIVED["moist"]
    TOTAL_DAY = DATA_RECEIVED["total time"]

    if CURRENT_MENU == "HOME":
        updateValLabels("AVERAGE")

def showHome():
  show_menu("HOME")

def showMessage():
  show_menu("MESSAGE")

espnow.recv_cb(recv_cb)
btnA.wasPressed(showHome)
btnB.wasPressed(showMessage)

M5Stack 3 (Earth&ENV sensor)

Python
Code for M5Stack 2 which is connected to the Earth and pH sensor.

It reads the input from the Earth and Env sensors as well as recieves data from M5Stack 1 and sends the data to M5Stack 3 via ESP-Now
from m5stack import *
from m5ui import *
from uiflow import *
import espnow
import wifiCfg
import json

import unit


setScreenColor(0x222222)
env3_0 = unit.get(unit.ENV3, unit.PORTA)
earth_0 = unit.get(unit.EARTH, unit.PORTB)


mac = None
Data_send = None
total_days = None
current_month = None
current_day = None
first_day = None
months = None
first_month = None

wifiCfg.wlan_ap.active(True)
wifiCfg.wlan_sta.active(True)
espnow.init()

rectangle0 = M5Rect(0, 0, 320, 45, 0xFFFFFF, 0xFFFFFF)
label5 = M5TextBox(16, 224, "Text", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label1 = M5TextBox(16, 59, "Mac Address:", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label2 = M5TextBox(16, 88, "Text", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label3 = M5TextBox(12, 134, "Data Sent:", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label4 = M5TextBox(12, 167, "Text", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label0 = M5TextBox(126, 14, "Data Sent", lcd.FONT_Default, 0x000000, rotate=0)




def recv_cb(_):
  global mac,Data_send,total_days,current_month,current_day,first_day,months,first_month
  mac, _, Data_send = espnow.recv_data(encoder='str')
  total_days = 0
  Data_send = Data_send.replace("'", '"')
  Data_send = json.loads(Data_send)
  if len(Data_send) <= 2:
    first_day = Data_send['first_day']
    first_month = Data_send['first_month']
  else:
    current_day = Data_send['current_day']
    current_month = Data_send['current_month']
  label5.setText(str(Data_send))
  if current_day != 0:
    if first_month != current_month:
      while not first_month == current_month:
        current_month = current_month - 1
        total_days = (months[current_month]) + total_days
      total_days = current_day + total_days
    elif first_month == current_month:
      total_days = current_day
    total_days = total_days - first_day
    Data_send = {'pH':(Data_send['pH']),'humid':(env3_0.humidity),'temp':(env3_0.temperature),'moist':(earth_0.analogValue),'total time':total_days}
    espnow.send(id=1, data=str(Data_send))
    label4.setText(str(Data_send))

  pass
espnow.recv_cb(recv_cb)



espnow.add_peer('f0:08:d1:c7:31:59', id=1)
label2.setText(str(espnow.get_mac_addr()))
current_month = 0
current_day = 0
months = {1:31,2:28,3:31,0:0}

M5Stack 1 Blocky Code (pH sensor)

Python
Blocky code version
{"components":[{"id":"____screen","createTime":1675817385628,"name":"screen","x":0,"y":0,"width":320,"height":240,"backgroundColor":"#222222","backgroundImage":"","type":"screen"},{"id":"____buttonA","createTime":1675817385628,"name":"ButtonA","buttonIndex":0,"x":35,"y":216,"width":64,"height":24,"text":"ButtonA","visibility":false,"type":"button"},{"id":"____buttonB","createTime":1675817385628,"name":"ButtonB","buttonIndex":1,"x":125,"y":216,"width":64,"height":24,"text":"ButtonB","visibility":false,"type":"button"},{"id":"____buttonC","createTime":1675817385628,"name":"ButtonC","buttonIndex":2,"x":215,"y":216,"width":64,"height":24,"text":"ButtonC","visibility":false,"type":"button"},{"id":"W*iwM+fcy44$Ofc*","createTime":1675817406127,"name":"rectangle0","x":0,"y":0,"width":320,"height":45,"borderColor":"#FFFFFF","backgroundColor":"#FFFFFF","type":"rectangle","layer":4},{"id":"zM!bjiX5n#QuOz!Y","createTime":1675817426303,"isCoreTwo":false,"isPaper":false,"name":"label0","x":106,"y":12,"color":"#000000","text":"Data Read","font":"lcd.FONT_DejaVu18","rotation":0,"type":"label","layer":5},{"id":"5bM&uY+D*u5WFvvr","createTime":1675817480404,"isCoreTwo":false,"isPaper":false,"name":"label7","x":68,"y":70,"color":"#FFFFFF","text":"pH Value:","font":"lcd.FONT_DejaVu18","rotation":0,"type":"label","layer":12},{"id":"jHvK_uhBb#UO5qaH","createTime":1675817480404,"isCoreTwo":false,"isPaper":false,"name":"label8","x":184,"y":70,"color":"#FFFFFF","text":"Text","font":"lcd.FONT_DejaVu18","rotation":0,"type":"label","layer":13},{"id":"-2piaTspPefi$uw#","createTime":1675866304604,"isCoreTwo":false,"isPaper":false,"name":"label1","x":50,"y":197,"color":"#FFFFFF","text":"Text","font":"lcd.FONT_Default","rotation":0,"type":"label","layer":26},{"id":"Z`z+sb20uH4MDO3k","createTime":1675867768832,"isCoreTwo":false,"isPaper":false,"name":"label4","x":233,"y":197,"color":"#FFFFFF","text":"Text","font":"lcd.FONT_Default","rotation":0,"type":"label","layer":29},{"id":"mr!JKBXEF+w%b`mx","createTime":1675885624809,"isCoreTwo":false,"isPaper":false,"name":"label5","x":142,"y":210,"color":"#FFFFFF","text":"Done","font":"lcd.FONT_Default","rotation":0,"type":"label","layer":12},{"id":"#dF$QN4azBi+5wqc","createTime":1675885675620,"isCoreTwo":false,"isPaper":false,"name":"label6","x":20,"y":134,"color":"#FFFFFF","text":"Text","font":"lcd.FONT_Default","rotation":0,"type":"label","layer":13},{"id":"A+kA2bIoxmK00ngC","createTime":1675886979384,"isCoreTwo":false,"isPaper":false,"name":"label2","x":61,"y":224,"color":"#FFFFFF","text":"^","font":"lcd.FONT_Default","rotation":0,"type":"label","layer":18},{"id":"1RGlDr0Iv=Xkg0*=","createTime":1675886992001,"isCoreTwo":false,"isPaper":false,"name":"label3","x":244,"y":224,"color":"#FFFFFF","text":"^","font":"lcd.FONT_Default","rotation":0,"type":"label","layer":19}],"type":"fire","versions":"Beta","units":[],"hats":[],"blockly":"<variables><variable id=\"m]5dUxJ+Y{F:F*vd=(0,\">gradient</variable><variable id=\"?s0aU/_AF,:wPZJ^-59b\">counter</variable><variable id=\"CXCfadItPvi1[]:/FDN3\">data</variable><variable id=\"_HeRH{o(:Dr]U7XX%`OD\">current_month</variable><variable id=\"6GUZobtL8U;Vf4r(XMKt\">current_day</variable><variable id=\"reut22T~Zmli@+XBPzH.\">first_day</variable><variable id=\"=U|l_o(Ls6dvKY}1M4n[\">first_month</variable><variable id=\"D[LVOSyFVO!F3w0p%wD:\">4pH_voltage</variable><variable id=\"a6t+hA/0+tk}-H0D|PUd\">7pH_Voltage</variable><variable id=\"jnXn[.Dhm?*Qa[Cl/SeZ\">pH</variable><variable id=\"Ta[L5!0/5i@G9T3[SLmk\">yIntercept</variable><variable id=\"LGGq^8)J-FF69@]s4iLH\">voltsReading</variable></variables><block type=\"basic_on_setup\" id=\"setup_block\" deletable=\"false\" x=\"351\" y=\"360\"><next><block type=\"espnow_add_peer\" id=\",Zf?2]+~!bW8e3UCza^`\"><field name=\"MAC\">98:f4:ab:6b:9f:7d</field><field name=\"ID\">1</field><next><block type=\"variables_set\" id=\"UT#M2/43#HZxxO%!xgsd\"><field name=\"VAR\" id=\"_HeRH{o(:Dr]U7XX%`OD\">current_month</field><value name=\"VALUE\"><block type=\"math_number\" id=\"l(O;p~j/1UzW3Kr)k3--\"><field name=\"NUM\">1</field></block></value><next><block type=\"variables_set\" id=\"Wtn0nyA~Dps`J?XkY1RG\"><field name=\"VAR\" id=\"6GUZobtL8U;Vf4r(XMKt\">current_day</field><value name=\"VALUE\"><block type=\"math_number\" id=\"AU7qx9R|2bWas*K12,47\"><field name=\"NUM\">1</field></block></value><next><block type=\"variables_set\" id=\"2N*$~Wz`R|3/,;@MOa)Y\"><field name=\"VAR\" id=\"reut22T~Zmli@+XBPzH.\">first_day</field><value name=\"VALUE\"><block type=\"math_number\" id=\"Q*(SwILh6Q8LmlNfeSL@\"><field name=\"NUM\">1</field></block></value><next><block type=\"variables_set\" id=\"ntAb:Io(MflIXMtpgk]U\"><field name=\"VAR\" id=\"=U|l_o(Ls6dvKY}1M4n[\">first_month</field><value name=\"VALUE\"><block type=\"math_number\" id=\"@d]/|9;V_FJWCDM1ZR(A\"><field name=\"NUM\">1</field></block></value><next><block type=\"controls_whileUntil\" id=\"W-LCP:QQ;^0PQZ?L#a:[\"><field name=\"MODE\">UNTIL</field><value name=\"BOOL\"><block type=\"button_ispressed\" id=\"@Yk,Y0sq|#1~P.69zm`R\"><field name=\"BUTTON\">B</field><field name=\"EVENT\">isPressed</field></block></value><statement name=\"DO\"><block type=\"controls_if\" id=\"kYdMd]~Q}[Uv08bo,;zz\"><mutation elseif=\"1\"></mutation><value name=\"IF0\"><block type=\"button_ispressed\" id=\"+I4vr+$krC}31qXl@5c)\"><field name=\"BUTTON\">A</field><field name=\"EVENT\">isPressed</field></block></value><statement name=\"DO0\"><block type=\"variables_set\" id=\"V0ZRJQ2A#ui|;Xffz-G.\"><field name=\"VAR\" id=\"reut22T~Zmli@+XBPzH.\">first_day</field><value name=\"VALUE\"><block type=\"math_arithmetic\" id=\"wd=pGWAp;svRpbiGO(KN\"><field name=\"OP\">ADD</field><value name=\"A\"><block type=\"variables_get\" id=\"0FEw3Q+?+oM,zltZ3sW-\"><field name=\"VAR\" id=\"reut22T~Zmli@+XBPzH.\">first_day</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"|~Rpi:ik4V_Z?fRx|pSh\"><field name=\"NUM\">1</field></block></value></block></value><next><block type=\"controls_if\" id=\"j|r5F4v)SaY,L]a]31;*\"><value name=\"IF0\"><block type=\"logic_compare\" id=\"]Jw]ZCg{gj,e/[;VMwnc\"><field name=\"OP\">GT</field><value name=\"A\"><block type=\"variables_get\" id=\"DT:NM=![s85NU4w6j_HD\"><field name=\"VAR\" id=\"reut22T~Zmli@+XBPzH.\">first_day</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"_6k2RIlNjw.G28r[OzV=\"><field name=\"NUM\">31</field></block></value></block></value><statement name=\"DO0\"><block type=\"variables_set\" id=\"xhm$KIL${WB_fzxE1p)B\"><field name=\"VAR\" id=\"reut22T~Zmli@+XBPzH.\">first_day</field><value name=\"VALUE\"><block type=\"math_number\" id=\"5aS2,0ySXuK10fM61q;4\"><field name=\"NUM\">1</field></block></value></block></statement><next><block type=\"label_set_text\" id=\"2jRbJ.,L.yo,qy*;EDN#\"><field name=\"COMPONENT\">label1</field><value name=\"TEXT\"><shadow type=\"text\" id=\"7*J;=Rf-X8bN[qFu:|~P\"><field name=\"TEXT\">Hello M5</field></shadow><block type=\"variables_get\" id=\"GY94-X3+-q_U4{^6;7*y\"><field name=\"VAR\" id=\"reut22T~Zmli@+XBPzH.\">first_day</field></block></value><next><block type=\"timer_delay\" id=\"WKKB.*6UdU]wRHVzPp/-\"><value name=\"DELAY\"><shadow type=\"math_number\" id=\"([h$t280O}BU.239N;0)\"><field name=\"NUM\">1</field></shadow></value></block></next></block></next></block></next></block></statement><value name=\"IF1\"><block type=\"button_ispressed\" id=\"(svPes}M8Be^xby-Y9eF\"><field name=\"BUTTON\">C</field><field name=\"EVENT\">isPressed</field></block></value><statement name=\"DO1\"><block type=\"variables_set\" id=\"*[dzho-4l^(Mun$q!LdJ\"><field name=\"VAR\" id=\"=U|l_o(Ls6dvKY}1M4n[\">first_month</field><value name=\"VALUE\"><block type=\"math_arithmetic\" id=\"]]5yM$deoFsVforj!Hij\"><field name=\"OP\">ADD</field><value name=\"A\"><block type=\"variables_get\" id=\"|,^Oh#O;VTsiO]y5W,ma\"><field name=\"VAR\" id=\"=U|l_o(Ls6dvKY}1M4n[\">first_month</field></block></value><value name=\"B\"><block type=\"math_number\" id=\";;,z,2wC8Nau5Z?-vb:$\"><field name=\"NUM\">1</field></block></value></block></value><next><block type=\"controls_if\" id=\"Mfgpqy^zPZrj)vUjJF#u\"><value name=\"IF0\"><block type=\"logic_compare\" id=\":/I}cIFl{GasqKH#B6H{\"><field name=\"OP\">GTE</field><value name=\"A\"><block type=\"variables_get\" id=\"UY;^1/=(bIq9SNv1NVaB\"><field name=\"VAR\" id=\"=U|l_o(Ls6dvKY}1M4n[\">first_month</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"2G[)/ZoOB`EELaU6o$D5\"><field name=\"NUM\">5</field></block></value></block></value><statement name=\"DO0\"><block type=\"variables_set\" id=\"`Sm2BRIW1P`2uvSC5F_$\"><field name=\"VAR\" id=\"=U|l_o(Ls6dvKY}1M4n[\">first_month</field><value name=\"VALUE\"><block type=\"math_number\" id=\"EWI6NLUEna@Bkc3~Z/|T\"><field name=\"NUM\">1</field></block></value></block></statement><next><block type=\"label_set_text\" id=\"mceg]NE3nJ3xes:PEs[!\"><field name=\"COMPONENT\">label4</field><value name=\"TEXT\"><shadow type=\"text\" id=\".^XKL*7GkPoJbTV+o33_\"><field name=\"TEXT\">Hello M5</field></shadow><block type=\"variables_get\" id=\"Dj$MDoq*V1tLRm{B]j_H\"><field name=\"VAR\" id=\"=U|l_o(Ls6dvKY}1M4n[\">first_month</field></block></value><next><block type=\"timer_delay\" id=\"Q(4!Zgg7BT`0j)dx45+:\"><value name=\"DELAY\"><shadow type=\"math_number\" id=\"*;EF2#q2;,.cH{9;_T.f\"><field name=\"NUM\">1</field></shadow></value></block></next></block></next></block></next></block></statement><next><block type=\"label_set_text\" id=\"VQy|;Z!r8.#P:r[U[8NK\"><field name=\"COMPONENT\">label6</field><value name=\"TEXT\"><shadow type=\"text\" id=\";.p=CO5ogSdr[j*$x_a-\"><field name=\"TEXT\">Hello M5</field></shadow><block type=\"text_add\" id=\"wLkE:CT66]@mv/CXYmlu\"><value name=\"arg0\"><shadow type=\"text\" id=\"D_w]cBgmuHsT-5CSsV*M\"><field name=\"TEXT\">First Date of recording</field></shadow></value><value name=\"arg1\"><block type=\"text_add\" id=\"S?;MVX`*h)E4])mUIo`t\"><value name=\"arg0\"><shadow type=\"text\" id=\"lRqSbL;8(80_vw4t$m$i\"><field name=\"TEXT\"></field></shadow><block type=\"variables_get\" id=\"?:zbNync@}x!$2DNWW[e\"><field name=\"VAR\" id=\"reut22T~Zmli@+XBPzH.\">first_day</field></block></value><value name=\"arg1\"><block type=\"text_add\" id=\"!1^u|J~19TYp?d2%n$W[\"><value name=\"arg0\"><shadow type=\"text\" id=\"cF9A-)10B7uQPkw`hNeF\"><field name=\"TEXT\">/</field></shadow></value><value name=\"arg1\"><block type=\"variables_get\" id=\"t#g5e2-MNqTC_lgX%ThA\"><field name=\"VAR\" id=\"=U|l_o(Ls6dvKY}1M4n[\">first_month</field></block></value></block></value></block></value></block></value></block></next></block></statement><next><block type=\"timer_delay\" id=\"pRVFqaBBpsM{6gb]Y6^@\"><value name=\"DELAY\"><shadow type=\"math_number\" id=\"UYofkW.o$h}$h.qTyuti\"><field name=\"NUM\">1</field></shadow></value><next><block type=\"espnow_send\" id=\"$t8[-Qwe/@c`?6de])Zs\"><field name=\"ID\">1</field><value name=\"DATA\"><shadow type=\"text\" id=\",pk;$2Unw[Q{P?1@BBG3\"><field name=\"TEXT\"></field></shadow><block type=\"map_on_loop\" id=\"fnuIs)`4;.XwDM3,[rmD\"><statement name=\"LOOP\"><block type=\"create_map_key\" id=\"5cnF5K25DNmE}7Nu!@p(\"><value name=\"key\"><block type=\"text\" id=\"GF9+gxeaKvQf[#[$On9F\"><field name=\"TEXT\">first_day</field></block></value><value name=\"value\"><block type=\"variables_get\" id=\"RLiuCtzq8S~}*=tM34tD\"><field name=\"VAR\" id=\"reut22T~Zmli@+XBPzH.\">first_day</field></block></value><next><block type=\"create_map_key\" id=\"BAa??nBxtCjT@hu?-L}$\"><value name=\"key\"><block type=\"text\" id=\"I?epAnhF]5xv$;6M7:hS\"><field name=\"TEXT\">first_month</field></block></value><value name=\"value\"><block type=\"variables_get\" id=\"Gu1L{!G$CJ8id;*wN:;X\"><field name=\"VAR\" id=\"=U|l_o(Ls6dvKY}1M4n[\">first_month</field></block></value></block></next></block></statement></block></value><next><block type=\"variables_set\" id=\"L)a2-l7vt3lfv7|Jpyj-\"><field name=\"VAR\" id=\"D[LVOSyFVO!F3w0p%wD:\">4pH_voltage</field><value name=\"VALUE\"><block type=\"math_number\" id=\":5({QGTM%K1)zJB,L*NJ\"><field name=\"NUM\">0.715</field></block></value><next><block type=\"variables_set\" id=\"czMGbA5jT9~Y%krqk$[2\"><field name=\"VAR\" id=\"a6t+hA/0+tk}-H0D|PUd\">7pH_Voltage</field><value name=\"VALUE\"><block type=\"math_number\" id=\"*HNV6SMviS17.B{^;]!K\"><field name=\"NUM\">0.536</field></block></value><next><block type=\"variables_set\" id=\"jFl$8mc9iQw80~`KkG64\"><field name=\"VAR\" id=\"jnXn[.Dhm?*Qa[Cl/SeZ\">pH</field><value name=\"VALUE\"><block type=\"math_number\" id=\"PXrGC`Ktngkv5jvJxnI}\"><field name=\"NUM\">0</field></block></value><next><block type=\"variables_set\" id=\"NCp.BgFAqZDR8B={01Vg\"><field name=\"VAR\" id=\"m]5dUxJ+Y{F:F*vd=(0,\">gradient</field><value name=\"VALUE\"><block type=\"math_arithmetic\" id=\"oAPhW:cYNn}@q/wz2(OP\"><field name=\"OP\">DIVIDE</field><value name=\"A\"><block type=\"math_arithmetic\" id=\"vL].^e@suP/NT}~KY[jr\"><field name=\"OP\">MINUS</field><value name=\"A\"><block type=\"math_number\" id=\"{I%W/*r:ieIb{O~!-~}n\"><field name=\"NUM\">4</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"TPZ8$9fZr)PD0Wf}1kRy\"><field name=\"NUM\">7</field></block></value></block></value><value name=\"B\"><block type=\"math_arithmetic\" id=\"lqT7C]1e6fR#FAK[fG)s\"><field name=\"OP\">MINUS</field><value name=\"A\"><block type=\"variables_get\" id=\"lR0?:{Sw`;XDk^6e/HW*\"><field name=\"VAR\" id=\"D[LVOSyFVO!F3w0p%wD:\">4pH_voltage</field></block></value><value name=\"B\"><block type=\"variables_get\" id=\"o1HdZrbp@9,y!Dwfim$_\"><field name=\"VAR\" id=\"a6t+hA/0+tk}-H0D|PUd\">7pH_Voltage</field></block></value></block></value></block></value><next><block type=\"variables_set\" id=\"+a5A]tCH::V4+Up}Goq7\"><field name=\"VAR\" id=\"Ta[L5!0/5i@G9T3[SLmk\">yIntercept</field><value name=\"VALUE\"><block type=\"math_arithmetic\" id=\"fSVP,PiTx2:*B!WUg^G)\"><field name=\"OP\">MINUS</field><value name=\"A\"><block type=\"math_number\" id=\"0qFUXDA1T;l)BZwn%Sn4\"><field name=\"NUM\">7</field></block></value><value name=\"B\"><block type=\"math_arithmetic\" id=\"Oh,g5.3ss_fpF.zBu{{U\"><field name=\"OP\">MULTIPLY</field><value name=\"A\"><block type=\"variables_get\" id=\"^C{7bRcRUk{D7gT+MdP(\"><field name=\"VAR\" id=\"m]5dUxJ+Y{F:F*vd=(0,\">gradient</field></block></value><value name=\"B\"><block type=\"variables_get\" id=\"t%=Q^2Br1TcodMZ;WQWX\"><field name=\"VAR\" id=\"a6t+hA/0+tk}-H0D|PUd\">7pH_Voltage</field></block></value></block></value></block></value><next><block type=\"basic_on_loop\" id=\"6B}?8N8Dd6Mgt|+pIdmY\"><statement name=\"LOOP\"><block type=\"controls_whileUntil\" id=\"S$~b/`?_[IrHD]!PX;iT\"><field name=\"MODE\">UNTIL</field><value name=\"BOOL\"><block type=\"button_ispressed\" id=\"pdWM4;9Z/@%ohrj4?H._\"><field name=\"BUTTON\">B</field><field name=\"EVENT\">isPressed</field></block></value><statement name=\"DO\"><block type=\"controls_if\" id=\"pS9qQdT,PMFg/~*00xjx\"><mutation elseif=\"1\"></mutation><value name=\"IF0\"><block type=\"button_ispressed\" id=\"pM_oWCDcN]YGV{hvmW0D\"><field name=\"BUTTON\">A</field><field name=\"EVENT\">isPressed</field></block></value><statement name=\"DO0\"><block type=\"variables_set\" id=\"D(bN/~Qfd3;2e^91XnQ:\"><field name=\"VAR\" id=\"6GUZobtL8U;Vf4r(XMKt\">current_day</field><value name=\"VALUE\"><block type=\"math_arithmetic\" id=\"Q;y`}S:Fq$-o(70PpBUT\"><field name=\"OP\">ADD</field><value name=\"A\"><block type=\"variables_get\" id=\",E:b0Z=)jqF=*Th.9={g\"><field name=\"VAR\" id=\"6GUZobtL8U;Vf4r(XMKt\">current_day</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"Lkue(7|45T@e9(!HzpF9\"><field name=\"NUM\">1</field></block></value></block></value><next><block type=\"controls_if\" id=\"C3wX;ezo1tc2O*C.w|ah\"><value name=\"IF0\"><block type=\"logic_operation\" id=\"ZN[+3bPFH.O,L//4sOOn\"><field name=\"OP\">OR</field><value name=\"A\"><block type=\"logic_compare\" id=\"L,1HoBMd#+L}s1B}0zzS\"><field name=\"OP\">GTE</field><value name=\"A\"><block type=\"variables_get\" id=\"o}U~!?QD`qj(th~]xDPo\"><field name=\"VAR\" id=\"6GUZobtL8U;Vf4r(XMKt\">current_day</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"qePhC#dy^jP5PoGrLm;N\"><field name=\"NUM\">32</field></block></value></block></value><value name=\"B\"><block type=\"logic_operation\" id=\"SR[$,jg3v3j4@O(zpMZM\"><field name=\"OP\">AND</field><value name=\"A\"><block type=\"logic_compare\" id=\"^A:8xv}dTC;F-N(#S4Ft\"><field name=\"OP\">LT</field><value name=\"A\"><block type=\"variables_get\" id=\"e~pzN%+gZ8}yKx|?a4?N\"><field name=\"VAR\" id=\"6GUZobtL8U;Vf4r(XMKt\">current_day</field></block></value><value name=\"B\"><block type=\"variables_get\" id=\"+dJmVZwIs#Ax5Cy!A=;A\"><field name=\"VAR\" id=\"reut22T~Zmli@+XBPzH.\">first_day</field></block></value></block></value><value name=\"B\"><block type=\"logic_compare\" id=\"2E9A[mewbA4,HIA5Nt2+\"><field name=\"OP\">LTE</field><value name=\"A\"><block type=\"variables_get\" id=\"l,t2YFG%k`_y0qFOccdQ\"><field name=\"VAR\" id=\"_HeRH{o(:Dr]U7XX%`OD\">current_month</field></block></value><value name=\"B\"><block type=\"variables_get\" id=\"4Xp.7DW8tsKUMi),6036\"><field name=\"VAR\" id=\"_HeRH{o(:Dr]U7XX%`OD\">current_month</field></block></value></block></value></block></value></block></value><statement name=\"DO0\"><block type=\"variables_set\" id=\"/ib@*2E!f+ws4gEIMVkt\"><field name=\"VAR\" id=\"6GUZobtL8U;Vf4r(XMKt\">current_day</field><value name=\"VALUE\"><block type=\"variables_get\" id=\"H!FE[4x7J{s/PLTR0Mhg\"><field name=\"VAR\" id=\"reut22T~Zmli@+XBPzH.\">first_day</field></block></value></block></statement><next><block type=\"label_set_text\" id=\"T!zwpQk2Eix~Z.ypAt$A\"><field name=\"COMPONENT\">label1</field><value name=\"TEXT\"><shadow type=\"text\"><field name=\"TEXT\">Hello M5</field></shadow><block type=\"variables_get\" id=\"_,3+D0RPg%Nj/flxOVV#\"><field name=\"VAR\" id=\"6GUZobtL8U;Vf4r(XMKt\">current_day</field></block></value><next><block type=\"timer_delay\" id=\"2eKpMYWbQxqCKZ@C$pol\"><value name=\"DELAY\"><shadow type=\"math_number\" id=\"l#oSh$kcm__6_=bopvce\"><field name=\"NUM\">1</field></shadow></value></block></next></block></next></block></next></block></statement><value name=\"IF1\"><block type=\"button_ispressed\" id=\"i6D,Lsqs%MJ!.s;+La~U\"><field name=\"BUTTON\">C</field><field name=\"EVENT\">isPressed</field></block></value><statement name=\"DO1\"><block type=\"variables_set\" id=\"P6|A5zimS|Y+ONTLY4FN\"><field name=\"VAR\" id=\"_HeRH{o(:Dr]U7XX%`OD\">current_month</field><value name=\"VALUE\"><block type=\"math_arithmetic\" id=\"8{,7LXn1Kl]A_AwWCRcN\"><field name=\"OP\">ADD</field><value name=\"A\"><block type=\"variables_get\" id=\"C[DtQLLC;Rve)}P7P1;W\"><field name=\"VAR\" id=\"_HeRH{o(:Dr]U7XX%`OD\">current_month</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"]kzNeyXLuuM5(fUH+_#p\"><field name=\"NUM\">1</field></block></value></block></value><next><block type=\"controls_if\" id=\"WUdE#kJT7O^e-`#zE4GV\"><value name=\"IF0\"><block type=\"logic_operation\" id=\"yGs?*AW2lvjOf@ZPBj,7\"><field name=\"OP\">OR</field><value name=\"A\"><block type=\"logic_compare\" id=\"t$Bh$G6@z9n*Fb3R:4R0\"><field name=\"OP\">GTE</field><value name=\"A\"><block type=\"variables_get\" id=\"AU=KCd2vWy{hbW3k+HDM\"><field name=\"VAR\" id=\"_HeRH{o(:Dr]U7XX%`OD\">current_month</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"Qy,g[uCmWK[H{J3:LvPK\"><field name=\"NUM\">4</field></block></value></block></value><value name=\"B\"><block type=\"logic_operation\" id=\"e/Ar,-gG}hqZWh-M%e5`\"><field name=\"OP\">AND</field><value name=\"A\"><block type=\"logic_compare\" id=\"VCb)h]|JHEhHtev@R/D@\"><field name=\"OP\">LT</field><value name=\"A\"><block type=\"variables_get\" id=\"`SzG|9sYsF8~-g$wVHY4\"><field name=\"VAR\" id=\"6GUZobtL8U;Vf4r(XMKt\">current_day</field></block></value><value name=\"B\"><block type=\"variables_get\" id=\"jbMi?CnuF:1Tw6B/N/_D\"><field name=\"VAR\" id=\"reut22T~Zmli@+XBPzH.\">first_day</field></block></value></block></value><value name=\"B\"><block type=\"logic_compare\" id=\"gtU9:^|T(9?^)0gF2:3S\"><field name=\"OP\">LTE</field><value name=\"A\"><block type=\"variables_get\" id=\"|zKsB%]IA/*lxz}T{0vm\"><field name=\"VAR\" id=\"_HeRH{o(:Dr]U7XX%`OD\">current_month</field></block></value><value name=\"B\"><block type=\"variables_get\" id=\"Cq?$6G(r~.8uQyJw_e/*\"><field name=\"VAR\" id=\"_HeRH{o(:Dr]U7XX%`OD\">current_month</field></block></value></block></value></block></value></block></value><statement name=\"DO0\"><block type=\"variables_set\" id=\"S$N#Dy/Ey/VZENmLW(,?\"><field name=\"VAR\" id=\"_HeRH{o(:Dr]U7XX%`OD\">current_month</field><value name=\"VALUE\"><block type=\"variables_get\" id=\"%tN-C%pchyO80l:.FR*,\"><field name=\"VAR\" id=\"_HeRH{o(:Dr]U7XX%`OD\">current_month</field></block></value></block></statement><next><block type=\"label_set_text\" id=\"LwcEf$BToov/?4HLlL^6\"><field name=\"COMPONENT\">label4</field><value name=\"TEXT\"><shadow type=\"text\"><field name=\"TEXT\">Hello M5</field></shadow><block type=\"variables_get\" id=\"_!jJW8e+2TGHSC-iN5[7\"><field name=\"VAR\" id=\"_HeRH{o(:Dr]U7XX%`OD\">current_month</field></block></value><next><block type=\"timer_delay\" id=\"ZE;7Qa0(XXw+bx/d)+DL\"><value name=\"DELAY\"><shadow type=\"math_number\" id=\"b6wRE[aH8DoxSBqjDpiu\"><field name=\"NUM\">1</field></shadow></value></block></next></block></next></block></next></block></statement><next><block type=\"label_set_text\" id=\"c6RW8XR(QOFgkF?p9uxH\"><field name=\"COMPONENT\">label6</field><value name=\"TEXT\"><shadow type=\"text\" id=\"{th3S6tz|0:v;R])x{rA\"><field name=\"TEXT\">Hello M5</field></shadow><block type=\"text_add\" id=\"utpEM+.%6%!=hSi$t38*\"><value name=\"arg0\"><shadow type=\"text\" id=\"YGv001h./k52D!=z?`UV\"><field name=\"TEXT\">Current date of recording</field></shadow></value><value name=\"arg1\"><block type=\"text_add\" id=\";ei$MZ*`Bpi^{`yRB%CP\"><value name=\"arg0\"><shadow type=\"text\"><field name=\"TEXT\"></field></shadow><block type=\"variables_get\" id=\"U^/,}%=!,$NvFm^LkQXG\"><field name=\"VAR\" id=\"6GUZobtL8U;Vf4r(XMKt\">current_day</field></block></value><value name=\"arg1\"><block type=\"text_add\" id=\"{Qn|Y$;PlrAJ=5.DDfwd\"><value name=\"arg0\"><shadow type=\"text\" id=\"v]gVzgzzHb3J?uVaFzH|\"><field name=\"TEXT\">/</field></shadow></value><value name=\"arg1\"><block type=\"variables_get\" id=\"Iu6FigH2$%LnsRlsLOnS\"><field name=\"VAR\" id=\"_HeRH{o(:Dr]U7XX%`OD\">current_month</field></block></value></block></value></block></value></block></value></block></next></block></statement><next><block type=\"variables_set\" id=\"oio:D;a@4@A!$^Wh;CCV\"><field name=\"VAR\" id=\"LGGq^8)J-FF69@]s4iLH\">voltsReading</field><value name=\"VALUE\"><block type=\"math_number\" id=\"!~/QjdQmZMTMI05TV_aW\"><field name=\"NUM\">0</field></block></value><next><block type=\"controls_repeat\" id=\"SAAJrE]YlTS#cP2@/@K|\"><field name=\"TIMES\">6</field><statement name=\"DO\"><block type=\"variables_set\" id=\"nW4BoEbd]A|YVX?FQ~|i\"><field name=\"VAR\" id=\"LGGq^8)J-FF69@]s4iLH\">voltsReading</field><value name=\"VALUE\"><block type=\"math_arithmetic\" id=\"p(3igptK@$N[Yi}GLX/e\"><field name=\"OP\">ADD</field><value name=\"A\"><block type=\"math_arithmetic\" id=\"{npULO[ib1*=@l5=W#;$\"><field name=\"OP\">DIVIDE</field><value name=\"A\"><block type=\"pins_analog_read\" id=\"WcgH#}wUVnzss~S]:IzA\"><field name=\"PIN\">36</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"qa[!pI,=ttFf$dO.8q#4\"><field name=\"NUM\">1000</field></block></value></block></value><value name=\"B\"><block type=\"variables_get\" id=\"{Sjo`|CN[/}g=y}isOM2\"><field name=\"VAR\" id=\"LGGq^8)J-FF69@]s4iLH\">voltsReading</field></block></value></block></value></block></statement><next><block type=\"variables_set\" id=\"4]VZFg)]eCJ,@z$+-f1d\"><field name=\"VAR\" id=\"LGGq^8)J-FF69@]s4iLH\">voltsReading</field><value name=\"VALUE\"><block type=\"math_arithmetic\" id=\"uE2C;_]kAPr5|B0Y)S|)\"><field name=\"OP\">DIVIDE</field><value name=\"A\"><block type=\"variables_get\" id=\"{?,n;ssmw@@G)U$K2KM6\"><field name=\"VAR\" id=\"LGGq^8)J-FF69@]s4iLH\">voltsReading</field></block></value><value name=\"B\"><block type=\"math_number\" id=\",lDG^j#yFn7!$)XA}5Fe\"><field name=\"NUM\">6</field></block></value></block></value><next><block type=\"variables_set\" id=\"PEwq`Hru2`Y+Tq^^ofPu\"><field name=\"VAR\" id=\"jnXn[.Dhm?*Qa[Cl/SeZ\">pH</field><value name=\"VALUE\"><block type=\"math_arithmetic\" id=\"0e9Q~^@lS)x%[aN[MwTs\"><field name=\"OP\">ADD</field><value name=\"A\"><block type=\"math_arithmetic\" id=\"4TVOrjNFRX^RubakDbUR\"><field name=\"OP\">MULTIPLY</field><value name=\"A\"><block type=\"variables_get\" id=\"~#mi`+^:~sqrIO)J$@z~\"><field name=\"VAR\" id=\"m]5dUxJ+Y{F:F*vd=(0,\">gradient</field></block></value><value name=\"B\"><block type=\"variables_get\" id=\"rBEbWnf?w3PJaI?J3Lh#\"><field name=\"VAR\" id=\"LGGq^8)J-FF69@]s4iLH\">voltsReading</field></block></value></block></value><value name=\"B\"><block type=\"variables_get\" id=\"k+ssj0Jep{N()!d*{_DL\"><field name=\"VAR\" id=\"Ta[L5!0/5i@G9T3[SLmk\">yIntercept</field></block></value></block></value><next><block type=\"variables_set\" id=\"OqB/^I6M0Swanx{To7i:\"><field name=\"VAR\" id=\"CXCfadItPvi1[]:/FDN3\">data</field><value name=\"VALUE\"><block type=\"map_on_loop\" id=\"F6/A.~;@PeVFY-($4uwl\"><statement name=\"LOOP\"><block type=\"create_map_key\" id=\"A]{n9P/9;-4*n*vM9^D!\"><value name=\"key\"><block type=\"text\" id=\"3yPvG]:!mo#j|d}tzv#e\"><field name=\"TEXT\">pH</field></block></value><value name=\"value\"><block type=\"variables_get\" id=\"t))27r6TRcV+^06n};,K\"><field name=\"VAR\" id=\"jnXn[.Dhm?*Qa[Cl/SeZ\">pH</field></block></value><next><block type=\"create_map_key\" id=\"[7uuOcuCb}Ix-~$W!=A7\"><value name=\"key\"><block type=\"text\" id=\"=s;*?;=D}t=$p_E]riFh\"><field name=\"TEXT\">current_month</field></block></value><value name=\"value\"><block type=\"variables_get\" id=\"a1?aID8(!1?vKEH|!CsP\"><field name=\"VAR\" id=\"_HeRH{o(:Dr]U7XX%`OD\">current_month</field></block></value><next><block type=\"create_map_key\" id=\"1gi~;P99xB6{#GLWR{6^\"><value name=\"key\"><block type=\"text\" id=\"LuojCPxJJhNDPRxEw(l0\"><field name=\"TEXT\">current_day</field></block></value><value name=\"value\"><block type=\"variables_get\" id=\"Efa|m6x]b5IufkWPu]qC\"><field name=\"VAR\" id=\"6GUZobtL8U;Vf4r(XMKt\">current_day</field></block></value></block></next></block></next></block></statement></block></value><next><block type=\"label_set_text\" id=\".0CiZzF@@(0:t~/cVT3G\"><field name=\"COMPONENT\">label8</field><value name=\"TEXT\"><shadow type=\"text\" id=\"|}.Az.Ty8RUom9~2jWqB\"><field name=\"TEXT\">Hello M5</field></shadow><block type=\"variables_get\" id=\"ztbAWA+J1tF#f]?[HEzb\"><field name=\"VAR\" id=\"jnXn[.Dhm?*Qa[Cl/SeZ\">pH</field></block></value><next><block type=\"espnow_send\" id=\"Dqg;uYNH7^kEg[I62d;J\"><field name=\"ID\">1</field><value name=\"DATA\"><shadow type=\"text\" id=\"Ob]l%w9z2a.v`Q8ieQi0\"><field name=\"TEXT\"></field></shadow><block type=\"variables_get\" id=\")_B#`dk+0HSlyq_-]rRN\"><field name=\"VAR\" id=\"CXCfadItPvi1[]:/FDN3\">data</field></block></value><next><block type=\"timer_delay\" id=\"5+8(E^3Sm+jTyNe2xx5Q\"><value name=\"DELAY\"><shadow type=\"math_number\" id=\"fL8uo6#_Wp}(9`z3;Wa2\"><field name=\"NUM\">3</field></shadow></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block><block type=\"variables_get\" id=\"$g@l~``*U!=V_9T^f?hU\" disabled=\"true\" x=\"830\" y=\"570\"><field name=\"VAR\" id=\"m]5dUxJ+Y{F:F*vd=(0,\">gradient</field></block><block type=\"math_number\" id=\"4oko}=ZN}HbN2R-=_kJ@\" disabled=\"true\" x=\"850\" y=\"630\"><field name=\"NUM\">0.536</field></block><block type=\"math_number\" id=\"OM.Yr^MdW!gR9uXEY!Ze\" disabled=\"true\" x=\"885\" y=\"1233\"><field name=\"NUM\">31</field></block><block type=\"variables_set\" id=\"]=T~]GK^b!Q72/`A8+;E\" disabled=\"true\" x=\"382\" y=\"1371\"><field name=\"VAR\" id=\"?s0aU/_AF,:wPZJ^-59b\">counter</field><value name=\"VALUE\"><block type=\"math_number\" id=\"i3m``Qd5LoSV@yRyWJvd\" disabled=\"true\"><field name=\"NUM\">1</field></block></value></block><block type=\"math_number\" id=\"mKb;:l%%!/vg8WWQ}Duk\" disabled=\"true\" x=\"647\" y=\"1449\"><field name=\"NUM\">0</field></block><block type=\"math_number\" id=\"Tt$XqMX3?~yQFF^wDX#]\" disabled=\"true\" x=\"695\" y=\"1762\"><field name=\"NUM\">0</field></block><block type=\"variables_get\" id=\"t+%{v1jLHT#%5k,Kn#NQ\" disabled=\"true\" x=\"765\" y=\"2237\"><field name=\"VAR\" id=\"CXCfadItPvi1[]:/FDN3\">data</field></block><block type=\"get_map_key\" id=\";p=:jY5}!(v|w,BM)9j!\" disabled=\"true\" x=\"641\" y=\"2442\"><value name=\"key\"><block type=\"text\" id=\"27Gx9Sy`e$Z[/k`De+T5\" disabled=\"true\"><field name=\"TEXT\">pH</field></block></value></block>","Blockly.Remotes":[],"Blockly.RemotePlus":[{"id":"__title","blockId":"","createTime":1675940120696,"name":"M5RemoteTitle","dragAndDrop":false,"resizable":false,"options":{"minWidth":1,"minHeight":1,"maxWidth":6,"maxHeight":10,"defaultWidth":2,"defaultHeight":1},"w":2,"h":1,"bgColor":"#0080FF","color":"#fff","fontsize":"M","label":"M5Remote","interval":3000,"code":"","event":"","dataSource":"none","ezdataToken":"","topic":"","needShadow":false,"type":"title","x":0,"y":0}],"modules":[],"cbIdList_":[],"eventCBIdList_":[]}

M5Stack 3 Blocky Code (Earth&ENV sensor)

Python
Blocky code version
{"components":[{"id":"____screen","createTime":1675944164186,"name":"screen","x":0,"y":0,"width":320,"height":240,"backgroundColor":"#222222","backgroundImage":"","type":"screen"},{"id":"____buttonA","createTime":1675944164186,"name":"ButtonA","buttonIndex":0,"x":35,"y":216,"width":64,"height":24,"text":"ButtonA","visibility":false,"type":"button"},{"id":"____buttonB","createTime":1675944164186,"name":"ButtonB","buttonIndex":1,"x":125,"y":216,"width":64,"height":24,"text":"ButtonB","visibility":false,"type":"button"},{"id":"____buttonC","createTime":1675944164186,"name":"ButtonC","buttonIndex":2,"x":215,"y":216,"width":64,"height":24,"text":"ButtonC","visibility":false,"type":"button"},{"id":"x*1c8CPg^lqX#axe","createTime":1675944188496,"isCoreTwo":false,"isPaper":false,"name":"label0","x":126,"y":14,"color":"#000000","text":"Data Sent","font":"lcd.FONT_Default","rotation":0,"type":"label","layer":33},{"id":"Tav74Kmqz6e+O5m@","createTime":1675944191189,"name":"rectangle0","x":0,"y":0,"width":320,"height":45,"borderColor":"#FFFFFF","backgroundColor":"#FFFFFF","type":"rectangle","layer":3},{"id":"dN^Hp8jy`!FWAcTa","createTime":1675944239505,"isCoreTwo":false,"isPaper":false,"name":"label1","x":16,"y":59,"color":"#FFFFFF","text":"Mac Address:","font":"lcd.FONT_Default","rotation":0,"type":"label","layer":29},{"id":"7HW*1N1rcBdr5RAa","createTime":1675944251296,"isCoreTwo":false,"isPaper":false,"name":"label2","x":16,"y":88,"color":"#FFFFFF","text":"Text","font":"lcd.FONT_Default","rotation":0,"type":"label","layer":30},{"id":"6emX#jli4H#XclXH","createTime":1675944254671,"isCoreTwo":false,"isPaper":false,"name":"label3","x":12,"y":134,"color":"#FFFFFF","text":"Data Sent:","font":"lcd.FONT_Default","rotation":0,"type":"label","layer":31},{"id":"rVom6c^FFueuBKJn","createTime":1675944264331,"isCoreTwo":false,"isPaper":false,"name":"label4","x":12,"y":167,"color":"#FFFFFF","text":"Text","font":"lcd.FONT_Default","rotation":0,"type":"label","layer":32},{"id":"b&LD3MR0qe*U0#Vz","createTime":1675945253232,"isCoreTwo":false,"isPaper":false,"name":"label5","x":16,"y":224,"color":"#FFFFFF","text":"Text","font":"lcd.FONT_Default","rotation":0,"type":"label","layer":10,"width":null,"height":null,"radius":null}],"type":"fire","versions":"Beta","units":[{"id":"=RFM1VqaKptpZJV2","createTime":1675945563358,"hidden":false,"type":"env3","name":"env3_0","port":"A","default":["A","E","PAHUB","Custom"],"pb_port":[0,1,2,3,4,5],"new_pb_port":"0","user_port":["21","22"],"icon":"env3.png"},{"id":"veq6CADZM+*iN%vU","createTime":1675945567726,"stickType":"stick","type":"earth","name":"earth_0","port":"B","default":["B","D","Custom"],"user_port":["21","22"],"icon":"earth.png"}],"hats":[],"blockly":"<variables><variable id=\"3hxo7=7SV+G$h=N$SV[Z\">mac</variable><variable id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</variable><variable id=\"pbu4qg~+P9p5IVc;#qQo\">total_days</variable><variable id=\"@Nk/-/ZLstJ)o8vR_`UA\">current_month</variable><variable id=\"Jypy0kJz97lB;yT_Av(_\">current_day</variable><variable id=\"3E`?7_E89VCz]oKYD%YR\">first_day</variable><variable id=\"ItOMZ$1t=1=.q~6J-yW~\">months</variable><variable id=\"7Q0fV}nq3qEaeB]*P~H^\">first_month</variable></variables><block type=\"basic_on_setup\" id=\"setup_block\" deletable=\"false\" x=\"-10\" y=\"110\"><next><block type=\"espnow_add_peer\" id=\"(K2a{H[QG=WA!8^)Nl#D\"><field name=\"MAC\">f0:08:d1:c7:31:59</field><field name=\"ID\">1</field><next><block type=\"label_set_text\" id=\"YD__C4HW=!YG[=W{LASn\"><field name=\"COMPONENT\">label2</field><value name=\"TEXT\"><shadow type=\"text\" id=\"#vLO#OdH2bq?7s4g~`s-\"><field name=\"TEXT\">Hello M5</field></shadow><block type=\"espnow_get_mac_addr\" id=\"O)EWn/e~ku90#}?cmD{e\"></block></value><next><block type=\"variables_set\" id=\"s}b#~,FPO+,2R8cJUH{z\"><field name=\"VAR\" id=\"@Nk/-/ZLstJ)o8vR_`UA\">current_month</field><value name=\"VALUE\"><block type=\"math_number\" id=\"H]QKIxV#a3u$]]JTPWh3\"><field name=\"NUM\">0</field></block></value><next><block type=\"variables_set\" id=\".$Y=Asdj/npJ8|Bkn-3q\"><field name=\"VAR\" id=\"Jypy0kJz97lB;yT_Av(_\">current_day</field><value name=\"VALUE\"><block type=\"math_number\" id=\"1_Jw_h4v.A2^/Xn1SPDB\"><field name=\"NUM\">0</field></block></value><next><block type=\"variables_set\" id=\"tw|hOlfJR.pX@CjxD)MA\"><field name=\"VAR\" id=\"ItOMZ$1t=1=.q~6J-yW~\">months</field><value name=\"VALUE\"><block type=\"map_on_loop\" id=\"oW3s+jO@Q?mVYPPd:jt%\"><statement name=\"LOOP\"><block type=\"create_map_key\" id=\"SDxOakwszHF7di[]q6E[\"><value name=\"key\"><block type=\"math_number\" id=\"4OJ}YUEQVg:j67v$BMs1\"><field name=\"NUM\">1</field></block></value><value name=\"value\"><block type=\"math_number\" id=\"]=~2]{yiT)t?Qg%!6w9K\"><field name=\"NUM\">31</field></block></value><next><block type=\"create_map_key\" id=\"|Qp+@~==2#h|H`kxW7he\"><value name=\"key\"><block type=\"math_number\" id=\")m`XRF31jhSwTE`7ybtP\"><field name=\"NUM\">2</field></block></value><value name=\"value\"><block type=\"math_number\" id=\"uaiPB,7|Um;)w,$/P!i.\"><field name=\"NUM\">28</field></block></value><next><block type=\"create_map_key\" id=\"|/V=rm^{_?JKdA_/8Ev^\"><value name=\"key\"><block type=\"math_number\" id=\"59ri=-#Ad$0oC==%]Z%Y\"><field name=\"NUM\">3</field></block></value><value name=\"value\"><block type=\"math_number\" id=\"0_e#{H9,KdO;Y{RhU5I1\"><field name=\"NUM\">31</field></block></value><next><block type=\"create_map_key\" id=\"@G0fKH)@[Ro$at%~pnD5\"><value name=\"key\"><block type=\"math_number\" id=\"Y]gDd@FdT9)NLoboKNmE\"><field name=\"NUM\">0</field></block></value><value name=\"value\"><block type=\"math_number\" id=\"+A}*y=[5fKx4UI.[y5A4\"><field name=\"NUM\">0</field></block></value></block></next></block></next></block></next></block></statement></block></value></block></next></block></next></block></next></block></next></block></next></block><block type=\"espnow_recv_cb\" id=\",:U?FmGY_0+p3FB|M(Jg\" x=\"430\" y=\"150\"><value name=\"MAC_ADDR\"><block type=\"variables_get\" id=\"#(ZY*xFrdF(qf))LqGD~\"><field name=\"VAR\" id=\"3hxo7=7SV+G$h=N$SV[Z\">mac</field></block></value><value name=\"DATA\"><block type=\"variables_get\" id=\",Z=VWLlsUUw1I}G4wv`p\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field></block></value><statement name=\"FUNC\"><block type=\"variables_set\" id=\"Co_@o%~IrPVfNJ=Wxh(=\"><field name=\"VAR\" id=\"pbu4qg~+P9p5IVc;#qQo\">total_days</field><value name=\"VALUE\"><block type=\"math_number\" id=\"nD-IeeJDjb)XkYHcJ}cB\"><field name=\"NUM\">0</field></block></value><next><block type=\"variables_set\" id=\"xI4iMwv6h0@BZ)n5-]A}\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field><value name=\"VALUE\"><block type=\"text_replace\" id=\"+M/X^$;IfVaUAhG9sXEH\"><value name=\"FROM\"><block type=\"text\" id=\"CdAx0#ZN3#YTNLHD$p~S\"><field name=\"TEXT\">'</field></block></value><value name=\"TO\"><block type=\"text\" id=\"wg{`+}l=~Dd-*O4dA48j\"><field name=\"TEXT\">\"</field></block></value><value name=\"TEXT\"><block type=\"variables_get\" id=\"T,o@VpM%oMud-z|$wsmK\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field></block></value></block></value><next><block type=\"variables_set\" id=\"ZbAc=*u}S!8=rUm6z4FL\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field><value name=\"VALUE\"><block type=\"loads_json\" id=\"RVs*EATDtz0W%C2%{!.c\"><value name=\"JSON_VAR\"><block type=\"variables_get\" id=\"ClW@(QDI,{g)6B]);+j!\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field></block></value></block></value><next><block type=\"controls_if\" id=\"|s2o*hAaq`bi[BfrPjIZ\"><mutation else=\"1\"></mutation><value name=\"IF0\"><block type=\"logic_compare\" id=\"x}ysx?.|b!)BI@qg_Y*/\"><field name=\"OP\">LTE</field><value name=\"A\"><block type=\"lists_length\" id=\"TBTfQx67!g4a[Gr=c:^:\"><value name=\"VALUE\"><block type=\"variables_get\" id=\"5*a|gitWH?XlD/.hu0ZK\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field></block></value></block></value><value name=\"B\"><block type=\"math_number\" id=\"45wP:`kjbJquIRo-[D`{\"><field name=\"NUM\">2</field></block></value></block></value><statement name=\"DO0\"><block type=\"variables_set\" id=\"B?Az_nj2Ti)JW|u?B`{,\"><field name=\"VAR\" id=\"3E`?7_E89VCz]oKYD%YR\">first_day</field><value name=\"VALUE\"><block type=\"get_map_key\" id=\"b!A*-PhW2/7KEWg]uRz5\"><value name=\"key\"><block type=\"text\" id=\"J?Svkumz+@lpql:n)0Qs\"><field name=\"TEXT\">first_day</field></block></value><value name=\"map\"><block type=\"variables_get\" id=\".a[uT925_2k9z3yZy:@|\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field></block></value></block></value><next><block type=\"variables_set\" id=\"hrE%LU3,$]5jO#N.^FX:\"><field name=\"VAR\" id=\"7Q0fV}nq3qEaeB]*P~H^\">first_month</field><value name=\"VALUE\"><block type=\"get_map_key\" id=\"UFFl/:)5(^bf|nRSfjuP\"><value name=\"key\"><block type=\"text\" id=\"k+vqCYHhiJM_2q=}^#Qw\"><field name=\"TEXT\">first_month</field></block></value><value name=\"map\"><block type=\"variables_get\" id=\"?.iyx}jjCQHi7@cK5KhM\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field></block></value></block></value></block></next></block></statement><statement name=\"ELSE\"><block type=\"variables_set\" id=\"IQ?4J!U$V,5VD8!:I~f3\"><field name=\"VAR\" id=\"Jypy0kJz97lB;yT_Av(_\">current_day</field><value name=\"VALUE\"><block type=\"get_map_key\" id=\"5eOk3M6J16vr95G#dpj7\"><value name=\"key\"><block type=\"text\" id=\"pYo/?Dv[/Z7Ei1$uSY;D\"><field name=\"TEXT\">current_day</field></block></value><value name=\"map\"><block type=\"variables_get\" id=\"(X1u.uaGO/%18roZs?13\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field></block></value></block></value><next><block type=\"variables_set\" id=\"ir{fW4T(A!^oUV!WP.Aj\"><field name=\"VAR\" id=\"@Nk/-/ZLstJ)o8vR_`UA\">current_month</field><value name=\"VALUE\"><block type=\"get_map_key\" id=\"5+-hCG51_:T$5d+M(%4R\"><value name=\"key\"><block type=\"text\" id=\"OhlGUC9YO0nnJ0[u=X*l\"><field name=\"TEXT\">current_month</field></block></value><value name=\"map\"><block type=\"variables_get\" id=\"_0yrETU0=z]C)ST5eoW9\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field></block></value></block></value></block></next></block></statement><next><block type=\"label_set_text\" id=\"?[P!el`O|aOq=+)FbE9,\"><field name=\"COMPONENT\">label5</field><value name=\"TEXT\"><shadow type=\"text\" id=\"_M]qF3AvFre;E={?]2hS\"><field name=\"TEXT\">Hello M5</field></shadow><block type=\"variables_get\" id=\"*{D}EcUQ/y:EWN369dPM\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field></block></value><next><block type=\"controls_if\" id=\"Ni^$|?FD~~Fbo!i#z?~5\"><value name=\"IF0\"><block type=\"logic_compare\" id=\"dOm=TMx-+[~?Uk=Leg34\"><field name=\"OP\">NEQ</field><value name=\"A\"><block type=\"variables_get\" id=\",afX#)Cb1.S{1X5(h^p]\"><field name=\"VAR\" id=\"Jypy0kJz97lB;yT_Av(_\">current_day</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"qTh7e6i/gs7:1egC`[dO\"><field name=\"NUM\">0</field></block></value></block></value><statement name=\"DO0\"><block type=\"controls_if\" id=\"-;o!=_sThLkCqgv|#X{I\"><mutation elseif=\"1\"></mutation><value name=\"IF0\"><block type=\"logic_compare\" id=\"$gOsR_3NV,IxRLvYGa#B\"><field name=\"OP\">NEQ</field><value name=\"A\"><block type=\"variables_get\" id=\"dBF.YgU7:h8_|bQt}}v?\"><field name=\"VAR\" id=\"7Q0fV}nq3qEaeB]*P~H^\">first_month</field></block></value><value name=\"B\"><block type=\"variables_get\" id=\"lu7ExOR[-tL+0WEwg$ob\"><field name=\"VAR\" id=\"@Nk/-/ZLstJ)o8vR_`UA\">current_month</field></block></value></block></value><statement name=\"DO0\"><block type=\"controls_whileUntil\" id=\"/`^dpl41JbY}O{^syG6Z\"><field name=\"MODE\">UNTIL</field><value name=\"BOOL\"><block type=\"logic_compare\" id=\"F;W5zp8-K}mAQ%_Df)`@\"><field name=\"OP\">EQ</field><value name=\"A\"><block type=\"variables_get\" id=\"0FCB0SI9nHzl44-^*P%c\"><field name=\"VAR\" id=\"7Q0fV}nq3qEaeB]*P~H^\">first_month</field></block></value><value name=\"B\"><block type=\"variables_get\" id=\"/yIQgstV9+qHDrA-w[3_\"><field name=\"VAR\" id=\"@Nk/-/ZLstJ)o8vR_`UA\">current_month</field></block></value></block></value><statement name=\"DO\"><block type=\"variables_set\" id=\"57`X8q+,!G8Bzr;6a|Md\"><field name=\"VAR\" id=\"@Nk/-/ZLstJ)o8vR_`UA\">current_month</field><value name=\"VALUE\"><block type=\"math_arithmetic\" id=\"tj+Y`8$1N4om}Xl+j#V)\"><field name=\"OP\">MINUS</field><value name=\"A\"><block type=\"variables_get\" id=\"bNvKhHI8:MhIwt$n$QIA\"><field name=\"VAR\" id=\"@Nk/-/ZLstJ)o8vR_`UA\">current_month</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"Pe/IJzGatiWE;wxtV$97\"><field name=\"NUM\">1</field></block></value></block></value><next><block type=\"variables_set\" id=\"16sGWFDV2ejdJ{NEwApf\"><field name=\"VAR\" id=\"pbu4qg~+P9p5IVc;#qQo\">total_days</field><value name=\"VALUE\"><block type=\"math_arithmetic\" id=\"^QggkbFk[zB;TL$KV4Ji\"><field name=\"OP\">ADD</field><value name=\"A\"><block type=\"get_map_key\" id=\"VIpbFbCC!7/dprQTzvh@\"><value name=\"key\"><block type=\"variables_get\" id=\"Nj6b+hY0?2eC@M,iYR46\"><field name=\"VAR\" id=\"@Nk/-/ZLstJ)o8vR_`UA\">current_month</field></block></value><value name=\"map\"><block type=\"variables_get\" id=\"+U^`r2ZfgM(HVWQ)]bNn\"><field name=\"VAR\" id=\"ItOMZ$1t=1=.q~6J-yW~\">months</field></block></value></block></value><value name=\"B\"><block type=\"variables_get\" id=\"B.fm;p)x}?m;VQPBsqzs\"><field name=\"VAR\" id=\"pbu4qg~+P9p5IVc;#qQo\">total_days</field></block></value></block></value></block></next></block></statement><next><block type=\"variables_set\" id=\"fK;,j0?~JYezG/B%2E1$\"><field name=\"VAR\" id=\"pbu4qg~+P9p5IVc;#qQo\">total_days</field><value name=\"VALUE\"><block type=\"math_arithmetic\" id=\"^FRy{4Ek?$~M(iY~ktM3\"><field name=\"OP\">ADD</field><value name=\"A\"><block type=\"variables_get\" id=\".+j%h4,#/M@/j{MieZdO\"><field name=\"VAR\" id=\"Jypy0kJz97lB;yT_Av(_\">current_day</field></block></value><value name=\"B\"><block type=\"variables_get\" id=\".+y+AZALSAYctzs/,(DK\"><field name=\"VAR\" id=\"pbu4qg~+P9p5IVc;#qQo\">total_days</field></block></value></block></value></block></next></block></statement><value name=\"IF1\"><block type=\"logic_compare\" id=\"hZ!vO#=b*q07BaXU91V~\"><field name=\"OP\">EQ</field><value name=\"A\"><block type=\"variables_get\" id=\"7*Jj9lBi_G=g5J]FOs1V\"><field name=\"VAR\" id=\"7Q0fV}nq3qEaeB]*P~H^\">first_month</field></block></value><value name=\"B\"><block type=\"variables_get\" id=\"v.Z}-6(z9kV!shJ|DFdN\"><field name=\"VAR\" id=\"@Nk/-/ZLstJ)o8vR_`UA\">current_month</field></block></value></block></value><statement name=\"DO1\"><block type=\"variables_set\" id=\"hYOeNheF!RE#:G]FxscE\"><field name=\"VAR\" id=\"pbu4qg~+P9p5IVc;#qQo\">total_days</field><value name=\"VALUE\"><block type=\"variables_get\" id=\"pN$#trvZYt=H]Nz;Tbpa\"><field name=\"VAR\" id=\"Jypy0kJz97lB;yT_Av(_\">current_day</field></block></value></block></statement><next><block type=\"variables_set\" id=\"cm2Gb.H*~lFxA5W3z~.S\"><field name=\"VAR\" id=\"pbu4qg~+P9p5IVc;#qQo\">total_days</field><value name=\"VALUE\"><block type=\"math_arithmetic\" id=\"EM]ljyd2:vo,6T5%vz^D\"><field name=\"OP\">MINUS</field><value name=\"A\"><block type=\"variables_get\" id=\"CIilMiEueLxFWoPK@hwk\"><field name=\"VAR\" id=\"pbu4qg~+P9p5IVc;#qQo\">total_days</field></block></value><value name=\"B\"><block type=\"variables_get\" id=\"zVKvh-u*zRwBcNRX$[(-\"><field name=\"VAR\" id=\"3E`?7_E89VCz]oKYD%YR\">first_day</field></block></value></block></value><next><block type=\"variables_set\" id=\"yxpFp|pzFu/eh6N_Mp@a\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field><value name=\"VALUE\"><block type=\"map_on_loop\" id=\"}l_pJQ#{rc/3V,z9wf/6\"><statement name=\"LOOP\"><block type=\"create_map_key\" id=\"e8gk7SqVHt:1tBi#0p5m\"><value name=\"key\"><block type=\"text\" id=\"1jm5zD]%v/IbxV!mpr{(\"><field name=\"TEXT\">pH</field></block></value><value name=\"value\"><block type=\"get_map_key\" id=\"E@gYTm,?lnPX)cWuIuhU\"><value name=\"key\"><block type=\"text\" id=\"$_~zFqZfhCnAMfLLp39O\"><field name=\"TEXT\">pH</field></block></value><value name=\"map\"><block type=\"variables_get\" id=\"4W%g1qyup[kWe|@(7w@;\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field></block></value></block></value><next><block type=\"create_map_key\" id=\"zz4DT_oF7?G,pg~r/D/3\"><value name=\"key\"><block type=\"text\" id=\"L]}IlQT4EIRk~%N#M1Bs\"><field name=\"TEXT\">humid</field></block></value><value name=\"value\"><block type=\"dht12_get_humidity\" id=\".SH8)6p8w7!0Cz]+2a(D\"><field name=\"VARNAME\">env3_0</field></block></value><next><block type=\"create_map_key\" id=\"wc@fH4c^ilts!K96:o84\"><value name=\"key\"><block type=\"text\" id=\"DKy+}`:M6zzBE^#YU*hT\"><field name=\"TEXT\">temp</field></block></value><value name=\"value\"><block type=\"dht12_get_temperature\" id=\"_PXPY,BeZ~OO(c=qGE#!\"><field name=\"VARNAME\">env3_0</field></block></value><next><block type=\"create_map_key\" id=\"]$%BLaDeRc.LVpZ:c=dg\"><value name=\"key\"><block type=\"text\" id=\":UCKL.v+Z|!;hfA#zV4u\"><field name=\"TEXT\">moist</field></block></value><value name=\"value\"><block type=\"earth_a_read\" id=\"T~dyo$qLc4clg5v?x],v\"><field name=\"VARNAME\">earth_0</field></block></value><next><block type=\"create_map_key\" id=\"en8+Gq|pkQR)$3(/;p70\"><value name=\"key\"><block type=\"text\" id=\"?0F*v%Q=vY42j_mt92nL\"><field name=\"TEXT\">total time</field></block></value><value name=\"value\"><block type=\"variables_get\" id=\"r8sm/x/q6o5I/v*pF,Z_\"><field name=\"VAR\" id=\"pbu4qg~+P9p5IVc;#qQo\">total_days</field></block></value></block></next></block></next></block></next></block></next></block></statement></block></value><next><block type=\"espnow_send\" id=\":nsJH;wqNW6V+daf6P!G\"><field name=\"ID\">1</field><value name=\"DATA\"><shadow type=\"text\" id=\")!_X%S3T@0B[aYSXi-~l\"><field name=\"TEXT\"></field></shadow><block type=\"variables_get\" id=\"=duh)!@p~rM?6R*[Z-QN\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field></block></value><next><block type=\"label_set_text\" id=\"=[3TwR`Id}tuVi]hKYpE\"><field name=\"COMPONENT\">label4</field><value name=\"TEXT\"><shadow type=\"text\" id=\"AG@b@5ZANLXY=6NHtk:D\"><field name=\"TEXT\">Hello M5</field></shadow><block type=\"variables_get\" id=\"34-{ZI|lUo#:I+ErSW9-\"><field name=\"VAR\" id=\"BOCQUORM$f]`@xh|)lmd\">Data_send</field></block></value></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></next></block></next></block></next></block></statement></block>","Blockly.Remotes":[],"Blockly.RemotePlus":[{"id":"__title","blockId":"","createTime":1675945186480,"name":"M5RemoteTitle","dragAndDrop":false,"resizable":false,"options":{"minWidth":1,"minHeight":1,"maxWidth":6,"maxHeight":10,"defaultWidth":2,"defaultHeight":1},"w":2,"h":1,"bgColor":"#0080FF","color":"#fff","fontsize":"M","label":"M5Remote","interval":3000,"code":"","event":"","dataSource":"none","ezdataToken":"","topic":"","needShadow":false,"type":"title","x":0,"y":0}],"modules":[],"cbIdList_":[],"eventCBIdList_":[]}

Credits

Jadon Lim

Jadon Lim

1 project • 1 follower
Thanks to Damien, Armando, and Jian Hao.

Comments