Changes for page 2 Script

Last modified by Devin Chen on 2025/06/06 14:03

From version 28.1
edited by Hunter
on 2022/11/21 17:01
Change comment: There is no comment for this version
To version 33.1
edited by Hunter
on 2022/11/22 15:38
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -349,6 +349,104 @@
349 349  end
350 350  {{/code}}
351 351  
352 +== **1.8 How to parse value from HTTP response body** ==
353 +
354 +This example use [[https:~~/~~/www.weatherapi.com/>>https://www.weatherapi.com/]] as example, to show how to parse value from HTTP response body. When we input the city name into address "@HDW5050":
355 +
356 +(% style="text-align:center" %)
357 +[[image:InputHTTPparameter.png]]
358 +
359 +Then the response body would be like as following:
360 +
361 +{{code language="json"}}
362 +{
363 + "location": {
364 + "name": "Madrid",
365 + "region": "Madrid",
366 + "country": "Spain",
367 + "lat": 40.4,
368 + "lon": -3.68,
369 + "tz_id": "Europe/Madrid",
370 + "localtime_epoch": 1669022636,
371 + "localtime": "2022-11-21 10:23"
372 + },
373 + "current": {
374 + "last_updated_epoch": 1669022100,
375 + "last_updated": "2022-11-21 10:15",
376 + "temp_c": 13.0,
377 + "temp_f": 55.4,
378 + "is_day": 1,
379 + "condition": {
380 + "text": "Partly cloudy",
381 + "icon": "//cdn.weatherapi.com/weather/64x64/day/116.png",
382 + "code": 1003
383 + },
384 + "wind_mph": 11.9,
385 + "wind_kph": 19.1,
386 + "wind_degree": 210,
387 + "wind_dir": "SSW",
388 + "pressure_mb": 1015.0,
389 + "pressure_in": 29.97,
390 + "precip_mm": 0.0,
391 + "precip_in": 0.0,
392 + "humidity": 88,
393 + "cloud": 75,
394 + "feelslike_c": 10.8,
395 + "feelslike_f": 51.4,
396 + "vis_km": 10.0,
397 + "vis_miles": 6.0,
398 + "uv": 3.0,
399 + "gust_mph": 22.1,
400 + "gust_kph": 35.6
401 + }
402 +}
403 +{{/code}}
404 +
405 +(% class="wikigeneratedid" %)
406 +So we decode json into lua object to assign the value into addresses HDW6060(temperature), HDW7070(humidity), the code example like follows:
407 +
408 +{{code language="lua"}}
409 +local APIkey = '70faaecf926b4341b1974006221711'
410 +
411 +
412 +local http = require("socket.http")
413 +local json = require("json")
414 +
415 +-- Send http.get request and return response result
416 +function getHttpsUrl(url)
417 + local result_table, code, headers, status = http.request(url)
418 + print("code:"..code)
419 + if code~= 200 then
420 + return
421 + else
422 + return result_table
423 + end
424 +end
425 +
426 +function sendAPI(key, city)
427 + local url = "http://api.weatherapi.com/v1/current.json?key="..key.."&q="..city.."&aqi=no"
428 + --local url = 'http://v-box.net'
429 + --local url = 'https://www.google.com/'
430 + --http://api.weatherapi.com/v1/current.json?key=70faaecf926b4341b1974006221711&q=Barcelona&aqi=no
431 + print("Get the link:"..url)
432 + local body = getHttpsUrl(url)
433 + --print(body)
434 + local jsonBody = json.decode(body)
435 + --print(jsonBody["current"]["temp_c"])
436 + --print(type(jsonBody["current"]["temp_c"]))
437 + --print(type(jsonBody["current"]["humidity"]))
438 + addr_setfloat("@HDW6060", jsonBody["current"]["temp_c"])
439 + addr_setword("@HDW7070", jsonBody["current"]["humidity"])
440 +end
441 +
442 +
443 +function Weather.main()
444 + local cityName = addr_getstring("@HDW5050",6)
445 + print("cityName: "..cityName)
446 + sendAPI(APIkey, cityName)
447 +end
448 +{{/code}}
449 +
352 352  = **2 V-Box connect with third part server** =
353 353  
354 354  V-Box have two mode.One is for V-Net,User need to use WECON server to store data.We call this V-NET platform.
... ... @@ -1058,35 +1058,20 @@
1058 1058  
1059 1059  {{code language="java"}}
1060 1060  {
1061 -
1062 1062    "Version": "2012-10-17",
1063 -
1064 1064    "Statement": [
1065 -
1066 1066      {
1067 -
1068 1068        "Effect": "Allow",
1069 -
1070 1070        "Action": [
1071 -
1072 1072          "iot:Connect",
1073 -
1074 1074          "iot:Publish",
1075 -
1076 1076          "iot:Subscribe",
1077 -
1078 1078          "iot:Receive",
1079 -
1080 1080          "greengrass:Discover"
1081 -
1082 1082        ],
1083 -
1084 1084        "Resource": "*"
1085 -
1086 1086      }
1087 -
1088 1088    ]
1089 -
1090 1090  }
1091 1091  {{/code}}
1092 1092  
... ... @@ -1151,185 +1151,186 @@
1151 1151  
1152 1152  [[image:image-20220709165402-20.png]]
1153 1153  
1237 +{{code language="lua"}}
1154 1154  sprint = print
1155 1155  
1156 -~-~-Cloud mode interface to obtain the MQTT information configured by the cloud platform: (5 returns, namely the server address, client ID, connection table, last word table, certificate table)
1240 +--Cloud mode interface to obtain the MQTT information configured by the cloud platform: (5 returns, namely the server address, client ID, connection table, last word table, certificate table)
1157 1157  
1158 1158  local MQTT_URL, MQTT_CLIENTID, MQTT_CFG, MQTT_LWT, MQTT_CART = mqtt.setup_cfg()
1159 1159  
1160 -~-~-publish to topics
1244 +--publish to topics
1161 1161  
1162 1162  local pub_RE_TOPIC = string.format('TEST')
1163 1163  
1164 -~-~-Subscribe topics
1248 +--Subscribe topics
1165 1165  
1166 1166  local Subscribe_RE_TOPIC1 = string.format('TEST')
1167 1167  
1168 -~-~-variable
1252 +--variable
1169 1169  
1170 1170  local last_time = 0
1171 1171  
1172 -~-~-Timing main function
1256 +--Timing main function
1173 1173  
1174 1174  function aws.main()
1175 1175  
1176 - sprint(os.date("%Y-%m-%d %H:%M %S", os.time()) .. " aws.main start")
1260 + sprint(os.date("%Y-%m-%d %H:%M %S", os.time()) .. " aws.main start")
1177 1177  
1178 - if g_mq then
1262 + if g_mq then
1179 1179  
1180 - if g_mq:isconnected() then
1264 + if g_mq:isconnected() then
1181 1181  
1182 - send_Data()
1266 + send_Data()
1183 1183  
1184 - else
1268 + else
1185 1185  
1186 - if os.time() - last_time > 5 then
1270 + if os.time() - last_time > 5 then
1187 1187  
1188 - last_time = os.time()
1272 + last_time = os.time()
1189 1189  
1190 - mymqtt_connect()
1274 + mymqtt_connect()
1191 1191  
1276 + end
1277 +
1192 1192   end
1193 1193  
1194 - end
1280 + else
1195 1195  
1196 - else
1282 + mymqtt_init()
1197 1197  
1198 - mymqtt_init()
1284 + end
1199 1199  
1200 - end
1286 + sprint(os.date("%Y-%m-%d %H:%M %S", os.time()) .. " aws.main end")
1201 1201  
1202 - sprint(os.date("%Y-%m-%d %H:%M %S", os.time()) .. " aws.main end")
1203 -
1204 1204  end
1205 1205  
1206 1206  
1207 -~-~- Initialize MQTT
1208 1208  
1292 +-- Initialize MQTT
1293 +
1209 1209  function mymqtt_init()
1210 1210  
1211 - sprint(string.format("mqtt init mqtt_url:%s mqtt_clientid:%s", MQTT_URL, MQTT_CLIENTID))
1296 + sprint(string.format("mqtt init mqtt_url:%s mqtt_clientid:%s", MQTT_URL, MQTT_CLIENTID))
1212 1212  
1213 - g_mq, err = mqtt.create(MQTT_URL, MQTT_CLIENTID) ~-~- Create the object and declare it as a global variable
1298 + g_mq, err = mqtt.create(MQTT_URL, MQTT_CLIENTID) -- Create the object and declare it as a global variable
1214 1214  
1215 - if g_mq then
1300 + if g_mq then
1216 1216  
1217 - g_mq:on("message", mymqtt_msg_callback) ~-~- Register to receive message callbacks
1302 + g_mq:on("message", mymqtt_msg_callback) -- Register to receive message callbacks
1218 1218  
1219 - sprint("mqtt init success")
1304 + sprint("mqtt init success")
1220 1220  
1221 - else
1306 + else
1222 1222  
1223 - sprint("mqtt init failed:", err)
1308 + sprint("mqtt init failed:", err)
1224 1224  
1225 - end
1310 + end
1226 1226  
1227 1227  end
1228 1228  
1229 -~-~- Connect to MQTT server
1314 +-- Connect to MQTT server
1230 1230  
1231 1231  function mymqtt_connect()
1232 1232  
1233 - sprint("mqtt connecting...")
1318 + sprint("mqtt connecting...")
1234 1234  
1235 - local stat, err = g_mq:connect(MQTT_CFG,MQTT_LWT, MQTT_CART)
1320 + local stat, err = g_mq:connect(MQTT_CFG,MQTT_LWT, MQTT_CART)
1236 1236  
1237 - if stat == nil then
1322 + if stat == nil then
1238 1238  
1239 - sprint("mqtt connect failed:", err)
1324 + sprint("mqtt connect failed:", err)
1240 1240  
1241 - return
1326 + return
1242 1242  
1243 - else
1328 + else
1244 1244  
1245 - sprint("mqtt connected")
1330 + sprint("mqtt connected")
1246 1246  
1247 - end
1332 + end
1248 1248  
1249 - g_mq:subscribe(TEST, 0)
1334 + g_mq:subscribe(TEST, 0)
1250 1250  
1251 1251  end
1252 1252  
1253 -~-~- Receive MQTT message callback function
1338 +-- Receive MQTT message callback function
1254 1254  
1255 1255  function mymqtt_msg_callback(topic, msg)
1256 1256  
1257 - print("topic:",topic)
1342 + print("topic:",topic)
1258 1258  
1259 - print("revdata:",msg)
1344 + print("revdata:",msg)
1260 1260  
1261 - local revData = json.decode(msg)
1346 + local revData = json.decode(msg)
1262 1262  
1263 - print (revData)
1348 + print (revData)
1264 1264  
1265 - if topic == Subscribe_RE_TOPIC1 then ~-~-Process topic information subscribed from the cloud
1350 + if topic == Subscribe_RE_TOPIC1 then --Process topic information subscribed from the cloud
1266 1266  
1267 -if string.match(topic,Subscribe_RE_TOPIC1) then
1352 + if string.match(topic,Subscribe_RE_TOPIC1) then
1268 1268  
1269 - ~-~-if revData ~~= nil then
1354 + --if revData ~= nil then
1270 1270  
1271 - for k,v in pairs (revData) do
1356 + for k,v in pairs (revData) do
1272 1272  
1273 - print("printing revdata after kv here")
1358 + print("printing revdata after kv here")
1274 1274  
1275 - print (k,v)
1360 + print (k,v)
1276 1276  
1277 - end
1362 + end
1278 1278  
1279 - print ("current state is",fanstate)
1364 + print ("current state is",fanstate)
1280 1280  
1281 - ~-~-end
1366 + --end
1282 1282  
1283 -end
1368 + end
1284 1284  
1285 -end
1370 + end
1286 1286  
1287 1287  end
1288 1288  
1289 1289  
1290 -~-~-Get real-time data
1291 1291  
1376 +--Get real-time data
1377 +
1292 1292  function getData()
1293 1293  
1294 - local jdata = {}
1380 + local jdata = {}
1295 1295  
1296 - local addr = bns_get_alldata()
1382 + local addr = bns_get_alldata()
1297 1297  
1298 - print(json.encode(addr))
1384 + print(json.encode(addr))
1299 1299  
1300 - for i,v in pairs(addr) do
1386 + for i,v in pairs(addr) do
1301 1301  
1302 - if v[2] == 1 then
1388 + if v[2] == 1 then
1303 1303  
1304 - jdata[v[3]] = v[4]
1390 + jdata[v[3]] = v[4]
1305 1305  
1306 - end
1392 + end
1307 1307  
1308 - end
1394 + end
1309 1309  
1310 - return jdata
1396 + return jdata
1311 1311  
1312 1312  end
1313 1313  
1314 -~-~-send data
1400 +--send data
1315 1315  
1316 1316  function send_Data()
1317 1317  
1318 - local pub_data =
1404 + local pub_data =
1405 + {
1406 + 123
1407 + }
1319 1319  
1320 - {
1321 -
1322 -123
1323 -
1324 -}
1325 -
1326 1326  sprint(json.encode(pub_data))
1327 1327  
1328 1328  print("..........",pub_RE_TOPIC)
1329 1329  
1330 - return g_mq:publish(pub_RE_TOPIC, json.encode(pub_data), 0, 0)
1413 + return g_mq:publish(pub_RE_TOPIC, json.encode(pub_data), 0, 0)
1331 1331  
1332 1332  end
1416 +{{/code}}
1333 1333  
1334 1334  Get message in AWS
1335 1335  
InputHTTPparameter.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +17.9 KB
Content