61
General Discussion / Re: RPI Zero Portable
« Last post by John Spikowski on March 08, 2021, 04:58:49 AM »This is an example of using the OpenWeather API with Curl and the ScriptBasic LIKE function to parse the returned JSON response.
Note: I dislike the ScriptBasic function name JOKER().
pi@raspberrypi:~/sb/examples $ time scriba curlweather.sb Anacortes,US
{"coord":{"lon":-122.6127,"lat":48.5126},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}],"base":"stations","main":{"temp":45.27,"feels_like":34.83,"temp_min":42.01,"temp_max":48.2,"pressure":1016,"humidity":53},"visibility":10000,"wind":{"speed":11.5,"deg":60},"clouds":{"all":1},"dt":1615229908,"sys":{"type":1,"id":3524,"country":"US","sunrise":1615214245,"sunset":1615255505},"timezone":-28800,"id":5785657,"name":"Anacortes","cod":200}
Country: US
City: Anacortes
Longitude: -122.6127
Latitude: 48.5126
Date/Time: 3/8/2021 10:58:28
Tempreture: 45.27 F
Pressure: 1016 hPa
Humidity: 53 %
real 0m0.437s
user 0m0.091s
sys 0m0.073s
pi@raspberrypi:~/sb/examples $ time scriba curlweather.sb New York,US
{"coord":{"lon":-74.006,"lat":40.7143},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}],"base":"stations","main":{"temp":40.05,"feels_like":30.9,"temp_min":37.4,"temp_max":42.8,"pressure":1030,"humidity":26},"visibility":10000,"wind":{"speed":5.75,"deg":0},"clouds":{"all":1},"dt":1615229912,"sys":{"type":1,"id":4610,"country":"US","sunrise":1615202327,"sunset":1615244097},"timezone":-18000,"id":5128581,"name":"New York","cod":200}
Country: US
City: New York
Longitude: -74.006
Latitude: 40.7143
Date/Time: 3/8/2021 13:58:32
Tempreture: 40.05 F
Pressure: 1030 hPa
Humidity: 26 %
real 0m0.332s
user 0m0.120s
sys 0m0.049s
pi@raspberrypi:~/sb/examples $ time scriba curlweather.sb London,GB
{"coord":{"lon":-0.1257,"lat":51.5085},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"base":"stations","main":{"temp":46.92,"feels_like":42.51,"temp_min":45,"temp_max":48.2,"pressure":1022,"humidity":53},"visibility":10000,"wind":{"speed":1.14,"deg":0},"clouds":{"all":100},"dt":1615230315,"sys":{"type":1,"id":1414,"country":"GB","sunrise":1615185018,"sunset":1615225950},"timezone":0,"id":2643743,"name":"London","cod":200}
Country: GB
City: London
Longitude: -0.1257
Latitude: 51.5085
Date/Time: 3/8/2021 19:05:15
Tempreture: 46.92 F
Pressure: 1022 hPa
Humidity: 53 %
real 0m0.333s
user 0m0.111s
sys 0m0.053s
pi@raspberrypi:~/sb/examples $
Note: I dislike the ScriptBasic function name JOKER().
Code: Script BASIC
- ' OpenWeather - Curl Example
- IMPORT curl.bas
- FUNCTION MATCH(segment)
- MATCH = JOKER(segment)
- END FUNCTION
- place = COMMAND()
- ch = curl::init()
- curl::option(ch, "URL", "http://api.openweathermap.org/data/2.5/weather?q=" & place & "&units=imperial&appid=MY_API_ID")
- curl::option(ch, "CUSTOMREQUEST", "GET")
- response = curl::perform(ch)
- curl::finish(ch)
- PRINT "\n", response,"\n\n"
- IF response LIKE "*lon\":*,\"lat\":*}*temp\":*,*pressure\":*,*humidity\":*}*dt\":*,*country\":\"*\"*timezone\":*,*name\":\"*\"*" THEN
- PRINT "Country: ", MATCH(13), "\n"
- PRINT "City: ", MATCH(17), "\n"
- PRINT "Longitude: ", MATCH(2), "\n"
- PRINT "Latitude: ", MATCH(3), "\n"
- PRINT "Date/Time: ", FORMATDATE("MM/DD/YEAR 0H:0m:0s", MATCH(11) + MATCH(15)), "\n"
- PRINT "Tempreture: ", MATCH(5), " F\n"
- PRINT "Pressure: ", MATCH(7), " hPa\n"
- PRINT "Humidity: ", MATCH(9), " %\n"
- END IF
pi@raspberrypi:~/sb/examples $ time scriba curlweather.sb Anacortes,US
{"coord":{"lon":-122.6127,"lat":48.5126},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}],"base":"stations","main":{"temp":45.27,"feels_like":34.83,"temp_min":42.01,"temp_max":48.2,"pressure":1016,"humidity":53},"visibility":10000,"wind":{"speed":11.5,"deg":60},"clouds":{"all":1},"dt":1615229908,"sys":{"type":1,"id":3524,"country":"US","sunrise":1615214245,"sunset":1615255505},"timezone":-28800,"id":5785657,"name":"Anacortes","cod":200}
Country: US
City: Anacortes
Longitude: -122.6127
Latitude: 48.5126
Date/Time: 3/8/2021 10:58:28
Tempreture: 45.27 F
Pressure: 1016 hPa
Humidity: 53 %
real 0m0.437s
user 0m0.091s
sys 0m0.073s
pi@raspberrypi:~/sb/examples $ time scriba curlweather.sb New York,US
{"coord":{"lon":-74.006,"lat":40.7143},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}],"base":"stations","main":{"temp":40.05,"feels_like":30.9,"temp_min":37.4,"temp_max":42.8,"pressure":1030,"humidity":26},"visibility":10000,"wind":{"speed":5.75,"deg":0},"clouds":{"all":1},"dt":1615229912,"sys":{"type":1,"id":4610,"country":"US","sunrise":1615202327,"sunset":1615244097},"timezone":-18000,"id":5128581,"name":"New York","cod":200}
Country: US
City: New York
Longitude: -74.006
Latitude: 40.7143
Date/Time: 3/8/2021 13:58:32
Tempreture: 40.05 F
Pressure: 1030 hPa
Humidity: 26 %
real 0m0.332s
user 0m0.120s
sys 0m0.049s
pi@raspberrypi:~/sb/examples $ time scriba curlweather.sb London,GB
{"coord":{"lon":-0.1257,"lat":51.5085},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"base":"stations","main":{"temp":46.92,"feels_like":42.51,"temp_min":45,"temp_max":48.2,"pressure":1022,"humidity":53},"visibility":10000,"wind":{"speed":1.14,"deg":0},"clouds":{"all":100},"dt":1615230315,"sys":{"type":1,"id":1414,"country":"GB","sunrise":1615185018,"sunset":1615225950},"timezone":0,"id":2643743,"name":"London","cod":200}
Country: GB
City: London
Longitude: -0.1257
Latitude: 51.5085
Date/Time: 3/8/2021 19:05:15
Tempreture: 46.92 F
Pressure: 1022 hPa
Humidity: 53 %
real 0m0.333s
user 0m0.111s
sys 0m0.053s
pi@raspberrypi:~/sb/examples $