NetAtmo Programming

Read NetAtmo weather station data via Script

Based on the feedback for my previous blog post Export NetAtmo weather station data to CSV / Excel I created a small script to get the module, device ID, temperature, humidity and also all sensor data from your NetAtmo weather station and modules.


This scripts also uses curl to login to the web page and then download the device data using the NetAtmo Web API. This script will return all the information in JSON format.


listDevices() {
	# ------------------------------------------------------
	# Help
	# ------------------------------------------------------
	# usage: listdevices <USER> <PASSWORD>
	# USER + PASSWORD -> your NetAtmo Website login

	# ------------------------------------------------------
	# Parsing Arguments
	# ------------------------------------------------------

	# ------------------------------------------------------
	# Define some constants
	# ------------------------------------------------------

	# ------------------------------------------------------
	# URL encode the user entered parameters
	# ------------------------------------------------------
	USER="$(urlencode $USER)"
	PASS="$(urlencode $PASS)"

	# ------------------------------------------------------
	# Now let's fetch the data
	# ------------------------------------------------------

	# first we need to get a valid session cookie
	curl --silent -c $AUTH_COOKIE $URL_LOGIN  > /dev/null

	# then extract the ID from the authentication cookie
	SESS_ID="$(cat $AUTH_COOKIE | grep netatmocomci_csrf_cookie_na | cut -f7)"

	# and now we can login using cookie, id, user and password
	curl --silent -d "ci_csrf_netatmo=$SESS_ID&mail=$USER&pass=$PASS&log_submit=LOGIN" -b $AUTH_COOKIE -c $SESSION_COOKIE  $URL_LOGIN > /dev/null

	# next we extract the access_token from the session cookie
	ACCESS_TOKEN="$(cat $SESSION_COOKIE | grep netatmocomaccess_token | cut -f7)"

	# build the POST data

	# now download json data

	# clean up


urlencode() {
	# ------------------------------------------------------
	# urlencode function from mrubin
	# usage: urlencode <string>
	# ------------------------------------------------------
	local length="${#1}"

	for (( i = 0; i < length; i++ )); do
		local c="${1:i:1}"

		case $c in [a-zA-Z0-9.~_-])
			printf "$c" ;;
			*) printf '%%%02X' "'$c"


listDevices "" "mySecretPassword"

When you execute the script above you should see all your NetAtmo module details in a JSON format – unfortunately this is not easy to read:


Therefore I used JQ – which is a great JSON parser to make it human-readable. I just piped the output of my script straight into JQ:

./  | ./jq

… and viola I got a proper formatted JSON file containing all data:


This JSON output contains the module_id (referred as _ID), and all other sensor data, such as temperature, humidity, battery level, etc.

You may also like
Update environment variables in current process
SCCM 2012 Extension: Remove a Computer from all Collections
Evernote Backup using Apple Script
  • Luca
    2018-06-20T10:16:47+00:000000004730201806 at 10:16

    You need to replace API_GETMEASURECSV=””



  • Luca
    2018-06-20T09:59:15+00:000000001530201806 at 09:59

    The script not work anymore… return
    An Error Was Encountered
    The action you have requested is not allowed.

  • John
    2017-11-10T14:00:48+00:000000004830201711 at 14:00

    Does this approach still work with HttpOnly cookies?

  • 2016-07-21T10:22:12+00:000000001231201607 at 10:22

    […] it should be used for that task. I was lucky to find two really cool bash scripts using curl to query base information about one’s devices and download the weather data. I modified them, especially for postprocessing (=grouping) the rain […]

  • 2016-06-09T12:26:38+00:000000003830201606 at 12:26

    Very nice and helpful script. Thanks a lot, with this I was able to establish with little effort my data download for all my netatmo devices!

  • Markus
    2016-01-03T22:02:29+00:000000002931201501 at 22:02

    Hallo Michael,

    ich bin auf deine Webseite gestoßen, da ich eine Verbindung von Netatmo zu einer RRD Datenbank suche. Hast du hiermit auch Erfahrung? Ich würde gerne die Raumtemperaturen auslesen und in eine bestehende RRDChart einfügen, nur leider weiß ich gar nicht wo und wie ich anfangen soll an die Temperaturdaten zukommen.
    Als Server habe ich einen Raspberry pi, wo auch schon die rrd Datenbank drauf liegt und die RRDTool Chart erstellt wird.
    Ich hoffe du kannst mir weiterhelfen.
    Vielen Dank,

    • 2016-01-04T14:11:06+00:000000000631201601 at 14:11

      Hallo Markus,

      zu RRD kann ich dir leider nichts sagen – aber ich denke du solltest bei Google sicher fündig werden, wie vorhandene CSV Dateien mit dem RRDTool in ein entsprechendes Chart gewandelt werden. Dann könntest du zuerst mit dem Script von meinem Blog die Daten in einer CSV Datei herunterladen und dann eine entsprechende RRD Datei erstellen lassen.


      • Markus
        2016-01-04T14:26:07+00:000000000731201601 at 14:26

        Hallo Michael,
        mit deinem Script (dieser Eintrag) brauch ich dein erstes Script auch noch dazu oder löst dieses das erste ab?
        Das konnte ich noch nicht nachvollziehen. Weil bei diesem Script muss ich keine Adressen der Module und Zeiträume der Daten angeben.
        Oder muss ich beide kombinieren?

        • 2016-01-04T14:35:18+00:000000001831201601 at 14:35

          Dieses Script liest die Daten im JSON Format – das ist in einem entsprechenden Script besser zu verwenden. Aber hierzu wirst du das Script entsprechend anpassen müssen, dass die Daten aus dem JSON Format irgendwie in eine RRD-Datei gewandelt / geschrieben werden.
          Bei meinem anderen Script kannst du alle Daten einer bestimmten Station / eines bestimmten Moduls als CSV Datei downloaden – ich nutze dies um die Daten auf meinem NAS zu archivieren.

Leave Your Comment

Your Comment*

Your Name*
Your Webpage