Our group members are Armando, Damien, Jadon, and Jian Hao. Our project aims to allow easy maintenance of the sourdough for the user.
Things used in this project
Hardware components
Story
Project Introduction
Our Project, Smart Sourdough Starter, aims to develop a solution to allow users to maintain their sourdough more easily by applying what we have learnt in this module. By using this Smart Sourdough Starter, we can reduce the workload required when people ferment sourdough since it will monitor the sourdough for them.
Problem Statement
How can we design a device to monitor the status of the sourdough when it is fermenting?
Background Information
Sourdough is used to make a type of bread. Some people want to grow sourdough at home but they may not know how to do it properly or they are not able to keep track of it daily. Therefore we made this project to assist them in checking their sourdough to ensure it ferments correctly and safely. Sourdough is used to make sour bread and requires specific conditions to ferment properly. How it ferments will affect the quality of the bread and if not fermented properly, it can be wasted. Some people want to ferment sourdough at home but they may not know how to do it properly or they are not able to keep check of it daily. Therefore we made this project to assist them in checking their sourdough to ensure it ferments correctly and safely.
What happens when a sourdough starter is not taken care of:
Moldy sourdough starter
Background Research
Optimal conditions for the sourdough starter to ferment are as follows:
Temperature: 21.1°C to 26.7°C, Humidity: 60% to 80%, Moisture: 60% to 80%, pH value: 3.5 to 5
A rough summary on the process of sourdough:
Sourdough is a mix of one part flour and one part water. Sourdough needs to be “fed” daily with flour and water when fermentin Once it is done fermenting, it can be used to make bread by adding part of the sourdough starter to strongflour, water, and salt. The dough needs to be proved (left aside) in a container twice for about 3 hours before being baked.
Some common issues and mistakes when growing sourdough:
Wrong temperature
- Excessive heat will kill the yeast. Insufficient heat will slow the fermentation.
Sourdough neglected for too long
- Mold and harmful bacteria will develop if not maintained.
Too acidic
- Baking soda can help neutralise the sour flavour of the sourdough
Wrong humidity
- Humidity affect the moisture of the dough and change its consistency. Excessive humidity can cause mold to grow on the dough.
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 (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 3 (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 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 2 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_":[]}