Startseite » QR-Code für diese Seite

Temperatur – Chicken Pi

5 September 2023, 866x angezeigt, Kein Kommentar
Tags: , , , , , ,

Weiter geht es im Hobby-Bau! Nach dem Basis-Konzept und der Integration des Lichts wurden nun zwei Temperatur-Sensoren montiert. Dabei habe ich mich an zwei Tutorials entlanggehangelt. Details zu den Tutorials findet ihr hier und hier. Dennoch kurz ein paar Eindrücke, was wichtig bei der Schaltung und Einrichtung ist.

Aufbau

Gekauft habe ich damals zwei digitale Temperatur-Sensoren, welche auf dem DS18B20 IC aufbauen (Beispiel). Je nach Version können die Kabel unterschiedliche Farben haben. Somit darauf achten, wo GND, DATA und 3V liegen. In meinem Fall siehst du unten im Schaubild die “Schwarz, Gelb, Rot”-Variante. Dabei ist Schwarz GND, Gelb der digitale Data Channel und Rot die Spannung. Darüber hinaus befindet sich ein 4.7 kΩ Pull-up-Widerstand in der Schaltung. Aufgrund des digitalen Eingangs können mehrere Sensoren einfach in Reihe geschaltet werden. Als Daten-Pin wurde der PIN4 vorgesehen (Erklärung). Schaltplan anbei.

Somit steht auch nicht viel auf dem Einkaufzettel:

  • 2x DS18B20 1-Wire Temperatur Sensor
  • 1x Widerstand – Widerstand 4.7 kΩ
  • Ein wenig Schrumpfschlauch und Klingeldraht
Schaltplan für die Installation zweier Temperatur-Sensoren

Software

Natürlich habe ich das ganze auch wieder in Python integriert, sodass ich die Temperaturen auch im openHAB auslesen kann. Der komplette Stand des Chicken Pi Projektes ist hier zu finden:: https://github.com/lochmueller/chicken-pi. Anbei wieder die entscheidenden Zeilen, sodass die Temperatur via Flask/HTTP ausgelesen werden kann. ACHTUNG: Im Code Beispiel ist kein GPIO-PIN zu sehen, da der Data GPIO außerhalb konfiguriert ist (siehe Tutorials oben). Es gibt einen “GET /info” Endpunkt, welcher die Temperatur von der CPU und der beiden angeschlossenen Sensoren ausgibt. Dafür muss nur die passende device-ID im Code hinterlegt werden.

from flask import Flask, jsonify
import subprocess
import os
import re

app = Flask(__name__)

def getTemperature(device: str) -> float:
    filePath = "/sys/bus/w1/devices/"+device+"/w1_slave"
    if os.path.isfile(filePath) == False:
        return 0.0
    file = open(filePath)
    filecontent = file.read()
    file.close()
    return float(re.search('t=(\d*)', filecontent).group(1)) / 1000

@app.route('/info', methods=['GET'])
def get_info():
    output = subprocess.check_output("vcgencmd measure_temp | grep  -o -E '[[:digit:].]*'", shell=True)
    result = {
        'temperature_cpu': float(output),
        'temperature_1': getTemperature('28-xxxx'),
        'temperature_2': getTemperature('28-yyyy')
    }
    return jsonify(result)

openHAB

Nebenbei habe ich nun auch schon angefangen, den Chicken Pi in das openHAB zu integrieren. Hier schon die passende Thing Konfiguration, welche auf den oben definierten Endpunkt zugreift und die drei Temperaturen als Channels zur Verfügung stellt.

UID: http:url:chickenpi
label: Chicken Pi
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://DEINE-INTERNE-IP-HIER:5000/
  delay: 0
  stateMethod: GET
  refresh: 300
  commandMethod: POST
  timeout: 3000
  bufferSize: 2048
channels:
  - id: temperature_cpu
    channelTypeUID: http:number
    label: Temperature CPU
    description: ""
    configuration:
      mode: READONLY
      stateExtension: info
      stateTransformation: JSONPATH:$.temperature_cpu
  - id: temperature_1
    channelTypeUID: http:number
    label: Temperature 1
    description: null
    configuration:
      mode: READONLY
      stateExtension: info
      stateTransformation: JSONPATH:$.temperature_1
  - id: temperature_2
    channelTypeUID: http:number
    label: Temperature 2
    description: null
    configuration:
      mode: READONLY
      stateExtension: info
      stateTransformation: JSONPATH:$.temperature_2

Fazit

Langsam, aber sicher geht es voran. Licht und Temperatur sind schon verbaut und im openHAB zu sehen bzw. zu steuern. Als Nächstes kommt der Motor für die Türklappe. Seit gespannt :-)

Tim Lochmüller Autor
Name: Tim Lochmüller
Webseite: http://360friends.de
Posts: 272 Posts

Hinterlasse einen Kommentar/Leserbrief!

Füge deinen Kommentar hinzu oder sende einen Trackback von deiner Webseite aus.
Du kannst zudem die Kommentare via RSS abonnieren .

Sei freundlich! Halt dich ans Thema! Kein Spam!

Mit dem Absenden bestätigst du, dass es sich um keinen Spam handelt.