23 Commits

Author SHA1 Message Date
fauno dae670f2b5 v0.5.12 2025-06-14 12:58:52 -03:00
fauno 413a4746cd feat: upgrade average intensity to 0.16.8 2025-06-14 12:58:33 -03:00
fauno 11cb80cf7c v0.5.11 2025-01-20 10:02:05 -03:00
fauno f984f6d47c feat: upgrade average intensity to 0.16.5 2025-01-20 10:01:24 -03:00
fauno d2f4907fcd v0.5.10 2024-12-10 10:19:17 -03:00
fauno c1ec450c33 feat: upgrade intensity data to v0.16.4 2024-12-10 10:18:42 -03:00
fauno 85dd3a58fd v0.5.9 2024-11-12 09:44:28 -03:00
fauno 83b3357e7b feat: 0.16.2 intensity data 2024-11-12 09:44:08 -03:00
fauno 6cc63614ea fix: don't fail if the intensity is integer 2024-11-12 09:43:09 -03:00
fauno befa954635 doc: how to update the data 2024-11-12 09:42:59 -03:00
fauno ebbae56efa v0.5.8 2024-03-21 12:03:16 -03:00
fauno 8e7053d756 fix: update average intensity data to match co2.js v0.14.4 2024-03-21 12:00:09 -03:00
fauno ec2f1eb4b5 v0.5.7 2024-02-21 10:30:48 -03:00
fauno d751f6da0e fix: update average intensity data to match co2.js v0.14.3 2024-02-21 10:30:14 -03:00
fauno 9438f93a19 test: forgot about these... 2024-02-13 13:15:30 -03:00
fauno 149d5f2404 fix: forgot the spaces 2024-02-13 13:09:49 -03:00
fauno c7cc6279e6 v0.5.6 2024-02-13 13:00:35 -03:00
fauno ef6d8241e8 fix: co2.js uses 3-letter iso codes now 2024-02-13 12:57:47 -03:00
fauno d73624514c feat: update world intensity 2024-02-13 12:56:40 -03:00
fauno bebc4a61a0 feat: upgrade average intensity data 2024-02-13 12:53:01 -03:00
fauno 14e5a402a1 fix: preparing to update data 2024-02-13 12:51:31 -03:00
fauno 840fcdd8ff v0.5.5 2023-05-04 11:29:16 -03:00
fauno c5b30aa0db fix: split log message by the first bracket 2023-05-04 11:28:11 -03:00
7 changed files with 262 additions and 14 deletions
+16
View File
@@ -43,6 +43,22 @@ most countries.
`access_log` uses marginal data by default.
### Update the data
1. Go to the `data/output` directory on [co2.js
repository](https://github.com/thegreenwebfoundation/co2.js/tree/v0.16.2/data/output)
for the latest version released (in this example 0.16.2)
2. Download the `average-intensities.json` file.
3. Run `src/average_intensities_by_country.cr` with this file as stdin.
```
crystal run src/average_intensities_by_country.cr < average-intensities.json >> src/swd/average_intensity.cr
```
4. Modify `src/swd/average_intensity.cr` to fix the data.
## Create database
```bash
+1 -1
View File
@@ -1,5 +1,5 @@
name: "access_log"
version: "0.5.3"
version: "0.5.12"
authors:
- "f <f@sutty.nl>"
targets:
+5 -5
View File
@@ -111,31 +111,31 @@ describe SWD do
describe "#consumer_device_co2" do
it "should extract the consumer device co2 emissions" do
swd.consumer_device_co2.should(eq 0.6406335995061729)
swd.consumer_device_co2.should(eq 0.6343432152938272)
end
end
describe "#production_co2" do
it "should extract the production co2 emissions" do
swd.production_co2.should(eq 0.23407766135802469)
swd.production_co2.should(eq 0.2317792517419753)
end
end
describe "#network_co2" do
it "should extract the network co2 emissions" do
swd.network_co2.should(eq 0.17247827679012348)
swd.network_co2.should(eq 0.1707847118098766)
end
end
describe "#datacenter_co2" do
it "should extract the datacenter co2 emissions" do
swd.datacenter_co2.should(eq 0.1847981537037037)
swd.datacenter_co2.should(eq 0.1829836197962963)
end
end
describe "#total_co2" do
it "should extract the total co2 emissions" do
swd.total_co2.should(eq 1.2319876913580248)
swd.total_co2.should(eq 1.2198907986419754)
end
end
end
+3 -2
View File
@@ -11,7 +11,7 @@ require "./models/access_log"
require "./models/crawler"
require "./swd"
VERSION = "0.5.4"
VERSION = "0.5.8"
Log.setup_from_env
@@ -130,7 +130,8 @@ db = DB.open database do |db|
while true
begin
msg, _ = server.receive(1024 * 64) # 64K
_, _, _, _, json = msg.split(" ", 5)
_, json = msg.split("{", 2)
json = "{#{json}"
# Parse input
access_log = AccessLog.from_json(json || "{}")
+23 -3
View File
@@ -1,14 +1,34 @@
require "json"
require "csv"
average_intensities = Hash(String, Float32).new
csv = CSV.new(File.open("./countries_codes_and_coordinates.csv"), headers: true)
countries = Hash(String, String).new
while csv.next
countries[csv["Alpha-3 code"]] = csv["Alpha-2 code"]
end
average_intensities = Hash(String, Float64).new
JSON.parse(ARGF.gets_to_end).as_h.each do |country, data|
if data["country_code_iso_2"].as_s.empty?
if data["country_code"].as_s.empty?
STDERR.puts "not ok - Skipping #{country} because of missing ISO code"
next
end
average_intensities[data["country_code_iso_2"].as_s] = data["emissions_intensity_gco2_per_kwh"].as_s.to_f32
unless countries.has_key? data["country_code"].as_s
STDERR.puts "not ok - Skipping #{country} because of missing ISO2 code"
next
end
STDERR.puts "ok - #{country}"
average_intensities[countries[data["country_code"].as_s]] =
begin
data["emissions_intensity_gco2_per_kwh"].as_f
rescue TypeCastError
data["emissions_intensity_gco2_per_kwh"].as_i.to_f
end
end
puts average_intensities.to_json
+2 -1
View File
@@ -20,13 +20,14 @@ class SWD
getter consumer_device_iso_code : String?
getter intensity_calculator : Symbol
# @see {co2.js/blob/main/src/constants/index.js}
GIGABYTE = 1000.0 * 1000.0 * 1000.0
KWH_PER_GB = 0.81
END_USER_DEVICE_ENERGY = 0.52
NETWORK_ENERGY = 0.14
DATACENTER_ENERGY = 0.15
PRODUCTION_ENERGY = 0.19
GLOBAL_GRID_INTENSITY = 442.0
GLOBAL_GRID_INTENSITY = 437.66
RENEWABLES_GRID_INTENSITY = 50.0
@transfered_bytes_to_gb : Float32? | Float64? = nil
+212 -2
View File
@@ -1,7 +1,217 @@
class SWD
module IntensityData
# @see {co2.js/data/output/average-intensities-2021.json}
AVERAGE_INTENSITY_BY_ISO_CODE = {"AR": 365.292, "AM": 206.522, "AU": 526.876, "AT": 145.083, "AZ": 536.585, "BD": 559.606, "BY": 472.727, "BE": 156.063, "BO": 311.475, "BA": 470.982, "BR": 144.677, "BG": 364.136, "BI": 275.862, "CA": 123.859, "CL": 395.565, "CN": 549.288, "CR": 30.903, "HR": 212.161, "CY": 601.19, "CZ": 401.272, "DK": 240.419, "EC": 132.964, "EG": 470.879, "SV": 180.87, "EE": 488.529, "FI": 152.651, "FR": 67.781, "GE": 105.685, "DE": 363.982, "GR": 363.388, "HU": 236.271, "IN": 632.656, "IE": 361.274, "IT": 340.937, "JP": 460.647, "KZ": 656.097, "KE": 104.0, "LV": 226.351, "LT": 247.475, "LU": 183.824, "MT": 452.055, "MX": 391.582, "MD": 642.512, "MN": 725.26, "ME": 335.958, "NL": 386.189, "MK": 444.191, "NO": 26.131, "PK": 363.065, "PE": 241.492, "PH": 579.689, "PL": 657.138, "PT": 222.632, "RO": 255.718, "RU": 355.431, "SA": 568.967, "SN": 540.098, "RS": 549.083, "SG": 488.21, "SK": 173.854, "SI": 241.956, "ZA": 706.991, "KR": 442.389, "ES": 193.737, "SE": 43.9, "CH": 58.952, "TW": 565.629, "TJ": 72.823, "TH": 503.034, "TN": 470.848, "TR": 432.293, "UA": 240.28, "GB": 268.255, "US": 378.625, "VN": 491.192}
# @see {co2.js/data/output/average-intensities.json}
AVERAGE_INTENSITY_BY_ISO_CODE = {
"AF": 123.71,
"AE": 492.7,
"AG": 611.11,
"AL": 24.42,
"AM": 244.34,
"AO": 167.22,
"AR": 358.95,
"AS": 647.06,
"AT": 102.62,
"AU": 551.59,
"AW": 550.0,
"AZ": 633.07,
"BA": 637.76,
"BB": 600.0,
"BD": 694.63,
"BE": 117.58,
"BF": 554.91,
"BG": 264.21,
"BH": 902.41,
"BI": 230.77,
"BJ": 590.0,
"BN": 892.67,
"BO": 468.02,
"BR": 103.21,
"BS": 653.66,
"BT": 24.19,
"BW": 849.42,
"BY": 313.62,
"BZ": 155.56,
"CA": 174.81,
"CD": 27.04,
"CF": 0.0,
"CG": 713.73,
"CH": 36.6,
"CI": 393.53,
"CK": 250.0,
"CL": 265.52,
"CM": 285.71,
"CN": 559.55,
"CO": 285.8,
"CR": 63.01,
"CU": 638.98,
"CV": 480.0,
"CY": 512.24,
"CZ": 413.86,
"DE": 344.14,
"DJ": 450.0,
"DK": 143.3,
"DM": 600.0,
"DO": 566.05,
"DZ": 633.65,
"EC": 209.7,
"EE": 341.02,
"EG": 571.92,
"ER": 590.91,
"ES": 146.15,
"ET": 23.55,
"FI": 72.25,
"FJ": 278.26,
"FK": 1000.0,
"FO": 354.17,
"FR": 44.18,
"GA": 429.47,
"GB": 210.89,
"GD": 666.67,
"GE": 143.06,
"GF": 204.08,
"GH": 452.86,
"GL": 111.11,
"GM": 666.67,
"GN": 182.72,
"GP": 493.9,
"GQ": 605.1,
"GR": 319.76,
"GT": 272.66,
"GU": 611.11,
"GW": 625.0,
"GY": 634.33,
"HK": 681.99,
"HN": 289.5,
"HR": 174.48,
"HT": 534.65,
"HU": 182.82,
"ID": 682.43,
"IE": 279.7,
"IL": 567.26,
"IN": 708.32,
"IQ": 689.4,
"IR": 641.94,
"IS": 28.33,
"IT": 287.53,
"JM": 561.25,
"JO": 539.21,
"JP": 482.32,
"KE": 88.79,
"KG": 162.71,
"KH": 497.46,
"KI": 500.0,
"KM": 642.86,
"KN": 636.36,
"KP": 344.26,
"KR": 414.27,
"KW": 637.24,
"KY": 642.86,
"KZ": 801.95,
"LA": 232.12,
"LB": 369.47,
"LC": 650.0,
"LK": 509.78,
"LR": 435.9,
"LS": 20.83,
"LT": 139.34,
"LU": 134.62,
"LV": 136.22,
"LY": 830.53,
"MA": 577.65,
"MD": 631.68,
"ME": 413.51,
"MG": 477.27,
"MK": 568.97,
"ML": 394.5,
"MM": 578.82,
"MN": 784.01,
"MO": 448.98,
"MQ": 516.78,
"MR": 481.71,
"MS": 1000.0,
"MT": 484.16,
"MU": 633.03,
"MV": 611.77,
"MW": 54.65,
"MX": 484.83,
"MY": 609.85,
"MZ": 127.81,
"NA": 47.62,
"NC": 585.76,
"NE": 687.5,
"NG": 507.85,
"NI": 288.33,
"NL": 253.31,
"NO": 30.75,
"NP": 23.36,
"NR": 750.0,
"NZ": 120.11,
"OM": 545.25,
"PA": 258.74,
"PE": 263.27,
"PF": 436.62,
"PG": 513.74,
"PH": 613.38,
"PK": 398.61,
"PL": 614.98,
"PM": 600.0,
"PR": 664.53,
"PS": 460.78,
"PT": 112.29,
"PY": 24.86,
"QA": 602.83,
"RE": 525.22,
"RO": 245.55,
"RS": 673.16,
"RU": 449.2,
"RW": 301.89,
"SA": 696.31,
"SB": 636.36,
"SC": 571.43,
"SD": 214.33,
"SE": 35.82,
"SG": 498.74,
"SI": 227.65,
"SK": 96.49,
"SL": 47.62,
"SN": 535.4,
"SO": 523.81,
"SR": 383.18,
"SS": 610.17,
"ST": 555.56,
"SV": 103.13,
"SY": 682.27,
"SZ": 142.86,
"TC": 653.85,
"TD": 615.39,
"TG": 478.26,
"TH": 554.5,
"TJ": 112.79,
"TM": 1306.3,
"TN": 560.25,
"TO": 571.43,
"TR": 469.7,
"TT": 682.11,
"TW": 635.65,
"TZ": 371.59,
"UA": 256.21,
"UG": 57.39,
"US": 383.55,
"UY": 96.7,
"UZ": 1121.18,
"VC": 600.0,
"VE": 180.25,
"VG": 647.06,
"VI": 641.79,
"VN": 471.16,
"VU": 500.0,
"WS": 400.0,
"XK": 958.72,
"YE": 586.32,
"ZA": 708.88,
"ZM": 111.0,
"ZW": 298.44
}
# @see {co2.js/data/output/marginal-intensities-2021.json}
MARGINAL_INTENSITY_BY_ISO_CODE = {"AF": 414.0, "AL": 0.0, "DZ": 528.0, "AS": 753.0, "AD": 188.0, "AO": 1476.0, "AI": 753.0, "AG": 753.0, "AR": 478.0, "AM": 390.0, "AW": 753.0, "AU": 808.0, "AT": 242.0, "AZ": 534.0, "BS": 753.0, "BH": 726.0, "BD": 528.0, "BB": 749.0, "BY": 400.0, "BE": 252.0, "BZ": 403.0, "BJ": 745.0, "BM": 753.0, "BT": 0.0, "BO": 604.0, "BQ": 753.0, "BA": 1197.0, "BW": 1486.0, "BR": 284.0, "VG": 753.0, "BN": 681.0, "BG": 911.0, "BF": 753.0, "BI": 414.0, "KH": 1046.0, "CM": 659.0, "CA": 372.0, "KY": 753.0, "CV": 753.0, "CY": 751.0, "CF": 188.0, "TD": 753.0, "CL": 657.0, "CN": 899.0, "CO": 410.0, "KM": 753.0, "CD": 0.0, "CG": 659.0, "CK": 753.0, "CR": 108.0, "CI": 466.0, "HR": 294.0, "CU": 559.0, "CW": 876.0, "CZ": 902.0, "DK": 362.0, "DJ": 753.0, "DM": 753.0, "DO": 601.0, "EC": 560.0, "EG": 554.0, "SV": 547.0, "GQ": 632.0, "ER": 915.0, "EE": 1057.0, "SZ": 0.0, "ET": 0.0, "FK": 753.0, "FO": 753.0, "FJ": 640.0, "FI": 267.0, "FR": 158.0, "GF": 423.0, "PF": 753.0, "GA": 946.0, "GM": 753.0, "GE": 289.0, "DE": 650.0, "GH": 495.0, "GI": 779.0, "GR": 507.0, "GL": 264.0, "GD": 753.0, "GP": 753.0, "GU": 753.0, "GT": 798.0, "GN": 753.0, "GW": 753.0, "GY": 847.0, "HT": 1048.0, "HN": 662.0, "HU": 296.0, "IS": 0.0, "IN": 951.0, "ID": 783.0, "IR": 592.0, "IQ": 1080.0, "IE": 380.0, "IM": 436.0, "IL": 394.0, "IT": 414.0, "JM": 711.0, "JP": 471.0, "JO": 529.0, "KZ": 797.0, "KE": 574.0, "KI": 753.0, "KP": 754.0, "KR": 555.0, "XK": 1145.0, "KW": 675.0, "KG": 217.0, "LA": 1069.0, "LV": 240.0, "LB": 794.0, "LS": 0.0, "LR": 677.0, "LY": 668.0, "LI": 151.0, "LT": 211.0, "LU": 220.0, "MG": 876.0, "MW": 489.0, "MY": 551.0, "MV": 753.0, "ML": 1076.0, "MT": 520.0, "MH": 753.0, "MQ": 753.0, "MR": 753.0, "MU": 700.0, "YT": 753.0, "MX": 531.0, "FM": 753.0, "MD": 541.0, "MC": 158.0, "MN": 1366.0, "ME": 899.0, "MS": 753.0, "MA": 729.0, "MZ": 234.0, "MM": 719.0, "NA": 355.0, "NR": 753.0, "NP": 0.0, "NL": 326.0, "NC": 779.0, "NZ": 246.0, "NI": 675.0, "NE": 772.0, "NG": 526.0, "NU": 753.0, "MK": 851.0, "MP": 753.0, "NO": 47.0, "OM": 479.0, "PK": 592.0, "PW": 753.0, "PS": 719.0, "PA": 477.0, "PG": 597.0, "PY": 0.0, "PE": 473.0, "PH": 672.0, "PL": 828.0, "PT": 389.0, "PR": 596.0, "QA": 503.0, "RE": 772.0, "RO": 489.0, "RU": 476.0, "RW": 712.0, "SH": 753.0, "KN": 753.0, "LC": 753.0, "MF": 753.0, "PM": 753.0, "VC": 753.0, "WS": 753.0, "SM": 414.0, "ST": 753.0, "SA": 592.0, "SN": 870.0, "RS": 1086.0, "SC": 753.0, "SL": 489.0, "SG": 379.0, "SX": 753.0, "SK": 332.0, "SI": 620.0, "SB": 753.0, "SO": 753.0, "ZA": 1070.0, "SS": 890.0, "ES": 402.0, "LK": 731.0, "SD": 736.0, "SR": 1029.0, "SE": 68.0, "CH": 48.0, "SY": 713.0, "TW": 484.0, "TJ": 255.0, "TZ": 531.0, "TH": 450.0, "TL": 753.0, "TG": 859.0, "TO": 753.0, "TT": 559.0, "TN": 468.0, "TR": 376.0, "TM": 927.0, "TC": 753.0, "TV": 753.0, "UG": 279.0, "UA": 768.0, "AE": 556.0, "GB": 380.0, "US": 416.0, "UY": 174.0, "UZ": 612.0, "VU": 753.0, "VE": 711.0, "VN": 560.0, "VI": 650.0, "YE": 807.0, "ZM": 416.0, "ZW": 1575.0}