Explore
Groups
No topics yet. Start the conversation.
Summary
User supplied summary for the plot
Current weather conditions and forecast for Oslo, Norway.
Description
The below description is supplied in free-text by the user
Hello World Novem Tutorial
A complete guide to building your first Novem job that fetches live weather data and updates a custom visualization.
What You'll Build
A job that:
- Fetches current Oslo weather from wttr.in API
- Updates a custom plot with weather description and temperature
- Runs automatically or on-demand
Prerequisites
- Novem account
- Git configured with SSH keys
- Visual Studio Code with Novem add-in installed
Step 1: Initialize Git Repository
mkdir hello-world
cd hello-world
git init -b main
Step 2: Create Python Script
Create hello_world.py:
#!/usr/bin/env python3
"""
Hello World Novem Job
Fetches Oslo weather and updates a custom plot
"""
import requests
import pandas as pd
from novem import Plot
def get_oslo_weather():
"""Fetch current weather for Oslo from wttr.in API"""
url = "https://wttr.in/Oslo?format=j1"
response = requests.get(url, timeout=10)
data = response.json()
# Extract temperature and description
current = data['current_condition'][0]
temp = float(current['temp_C'])
description = current['weatherDesc'][0]['value']
return temp, description
def update_plot(temp, description):
"""Update the hello_oslo plot"""
# Create DataFrame
df = pd.DataFrame({
'description': [description],
'temperature': [temp]
})
# Update plot data
plt = Plot('hello_oslo')
plt.data = df
def main():
# Fetch weather data
temp, description = get_oslo_weather()
# Update Novem plot
update_plot(temp, description)
if __name__ == "__main__":
main()
Create requirements.txt:
requests
pandas
novem
Set up environment and execute script locally :
# On Unix/Mac
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python hello_world.py
# On Windows
py -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txt
py hello_world.py
Step 3: Create Custom Plot
The Python script references a plot called hello_oslo. Create this using the Visual Studio Code Novem add-in:
- Open the Novem add-in in VS Code
- Open the plot we created named
hello_oslo - Set
config/typetocustom - Open
config/custom/custom.jsand paste the code below:
// Extract data (skip header row)
const [description, temp] = info.data[1];
// Set colors
const coldColor = '#3498db'; // Blue
const warmColor = '#e74c3c'; // Red
const descColor = render.dark ? '#bdc3c7' : '#7f8c8d';
const backgroundColor = render.dark ? '#1e1e1e' : '#ffffff';
// Choose temperature color based on 0°C
const tempColor = temp >= 0 ? warmColor : coldColor;
// Style the container
node.innerHTML = '';
node.style.display = 'flex';
node.style.flexDirection = 'column';
node.style.justifyContent = 'center';
node.style.alignItems = 'center';
node.style.background = backgroundColor;
node.style.padding = '40px';
node.style.fontFamily = 'Arial, sans-serif';
// Add description
const desc = document.createElement('div');
desc.textContent = description;
desc.style.fontSize = '28px';
desc.style.color = descColor;
desc.style.marginBottom = '30px';
node.appendChild(desc);
// Add temperature
const tempDiv = document.createElement('div');
tempDiv.textContent = `${temp.toFixed(1)}°C`;
tempDiv.style.fontSize = '72px';
tempDiv.style.fontWeight = 'bold';
tempDiv.style.color = tempColor;
node.appendChild(tempDiv);
Step 4: Push to Novem Repository
Create the repo, which you can do from novem.io.
# Add Novem remote (replace '[username]' with your username, '[repo]' with your repo name
git remote add origin git@novem.io:[username]/[repo]
# Commit and push
git add hello_world.py requirements.txt
git commit -m "Initial commit: Oslo weather job"
git push -u origin main
Step 5: Create the Job
Create the job using the Visual Studio Code Novem add-in:
- Open the Novem add-in in VS Code
- Create a new job named
hello-world-oslo - Set
config/typetodata - Set the
extracttohello-world - Set
config/env/novem_tokento your Novem API token that you can generate from your Novem account settings
Step 6: Run the Job
Trigger the job through from novem.io. See the output plot under your plots. There is a log endpoint for the job, here you can see messages to standard out including any error messages. You can see this in VS Code.