diff --git a/content/docs/getting-started/first-app.md b/content/docs/getting-started/first-app.md
index afce6f6..449b8a4 100644
--- a/content/docs/getting-started/first-app.md
+++ b/content/docs/getting-started/first-app.md
@@ -10,10 +10,10 @@ Let us take a step-by-step approach in putting together your first Zenoh applica
As the first step, let us see how we get some data from a temperature sensor in our kitchen.
Then we see how we can route this data to store and perform some analytics.
-Before cranking some code, let's define some terminology.
+Before cranking some code, let's define some terminology.
Zenoh deals with keys/values where each key is a path and is associated to a value. A key looks like just a Unix file system path, such as ```myhome/kitchen/temp```. The value can be defined with different
-encodings (string, JSON, raw bytes buffer...).
+encodings (string, JSON, raw bytes buffer...).
Let's get started!
@@ -37,15 +37,15 @@ def read_temp():
return random.randint(15, 30)
if __name__ == "__main__":
- session = zenoh.open(zenoh.Config())
- key = 'myhome/kitchen/temp'
- pub = session.declare_publisher(key)
- while True:
- t = read_temp()
- buf = f"{t}"
- print(f"Putting Data ('{key}': '{buf}')...")
- pub.put(buf)
- time.sleep(1)
+ with zenoh.open(zenoh.Config()) as session:
+ key = 'myhome/kitchen/temp'
+ pub = session.declare_publisher(key)
+ while True:
+ t = read_temp()
+ buf = f"{t}"
+ print(f"Putting Data ('{key}': '{buf}')...")
+ pub.put(buf)
+ time.sleep(1)
```
Now we need a subscriber, `z_subscriber.py` that can receive the measurements:
@@ -55,11 +55,11 @@ import zenoh, time
def listener(sample):
print(f"Received {sample.kind} ('{sample.key_expr}': '{sample.payload.to_string()}')")
-
+
if __name__ == "__main__":
- session = zenoh.open(zenoh.Config())
- sub = session.declare_subscriber('myhome/kitchen/temp', listener)
- time.sleep(60)
+ with zenoh.open(zenoh.Config()) as session:
+ sub = session.declare_subscriber('myhome/kitchen/temp', listener)
+ time.sleep(60)
```
Start the subscriber:
@@ -67,7 +67,7 @@ Start the subscriber:
python3 z_subscriber.py
```
The subscriber waits for an update on `myhome/kitchen/temp`.
-
+
Now start `z_sensor.py` as follows
```bash
python3 z_sensor.py
@@ -78,7 +78,7 @@ You can see the values produced by the sensor being consumed by the subscriber.
## Store and Query in Zenoh
As the next step, let's see how the value generated by a publisher can be stored in Zenoh.
-For this, we use [Zenoh router](../installation) (`zenohd`).
+For this, we use [Zenoh router](../installation) (`zenohd`).
By default, a Zenoh router starts without any storage. In order to store the temperature, we need to configure one.
Create a `zenoh-myhome.json5` configuration file for Zenoh with this content:
```json5
@@ -107,24 +107,23 @@ Create a `zenoh-myhome.json5` configuration file for Zenoh with this content:
zenohd -c zenoh-myhome.json5
```
-Now the data generated by our temperature sensor is stored in memory.
+Now the data generated by our temperature sensor is stored in memory.
We can retrieve the latest temperature value stored in Zenoh:
```python
import zenoh
if __name__ == "__main__":
- session = zenoh.open()
- replies = session.get('myhome/kitchen/temp')
- for reply in replies:
- try:
- print("Received ('{}': '{}')"
- .format(reply.ok.key_expr, reply.ok.payload.to_string()))
- except:
- print("Received (ERROR: '{}')"
- .format(reply.err.payload.to_string()))
-
-session.close()
+ with zenoh.open(zenoh.Config()) as session:
+ replies = session.get('myhome/kitchen/temp')
+ for reply in replies:
+ try:
+ print("Received ('{}': '{}')"
+ .format(reply.ok.key_expr, reply.ok.payload.to_string()))
+ except:
+ print("Received (ERROR: '{}')"
+ .format(reply.err.payload.to_string()))
+
```
## Other examples