juergen-rocks / raumklima

Die berühmte Raumklimastation RS 500 von ELV Elektronik unter Linux mit einem Raspberry Pi auslesen.
MIT License
17 stars 12 forks source link

MQTT statt Redis #64

Closed Narsskrarc closed 1 year ago

Narsskrarc commented 2 years ago

Hallo,

vielen Dank für dieses Projekt. Es hat mich dazu animiert, einen Roomlogg PRO zu kaufen. Allerdings läuft mein SmartHome u.a. über FHEM und MQTT. Zuerst hatte ich mir überlegt, ein Modul für FHEM zu machen; aber da ich sowieso mehr über MQTT machen will, habe ich folgendes kleines Python-Script gebaut:


from rs500reader.reader import Rs500Reader
import paho.mqtt.publish as mqtt

topics = (
        '',
        'Temperatur/EG/Garage',
        'Temperatur/EG/Buero',
        'Temperatur/OG/Kueche',
        'Temperatur/DG/Schlafzimmer',
        'Temperatur/DG/Kinderzimmer',
        '',
        '',
        '')

def readRs500():
    reader = Rs500Reader()
    return reader.get_data()

def writemqtt(data):
    msgs = []
    for i in range(1, 9):
        if len(topics[i]) > 0:
            if data is None:
                msgs.append({'topic':topics[i]+"/status", 'payload': "stale"})
            else:
                chan_data = data.get_channel_data(i)
                if chan_data is None:
                    msgs.append({'topic':topics[i]+"/status", 'payload': "stale"})
                else:
                    msgs.append({'topic':topics[i]+"/temperature", 'payload': chan_data.temperature})
                    msgs.append({'topic':topics[i]+"/humidity", 'payload': chan_data.humidity})
                    msgs.append({'topic':topics[i]+"/status", 'payload': "ok"})
    if len(msgs) > 0:
        mqtt.multiple(msgs, hostname="mqtt.example.org", client_id="RoomLogg", auth={'username': "roomlogg", 'password': "xxx"})

if __name__ == "__main__":
    writemqtt(readRs500())

Man braucht noch paho-mqtt dazu, aber das wars dann auch. Dieses Script rufe ich alle 2min per cron auf; die Auswertung macht dann FHEM. Geht aber natürlich auch mit Node Red oder was auch immer. Es ist natürlich noch verbesserbar, z.B. durch ein externes Config-File o.ä. Aber so tut es das erst mal für mich.

Gruß Helmut

MaStr commented 2 years ago

Hi @Narsskrarc , hattest du die MQTT Implementierung gesehen? Die pusht zwar nicht auf semantische Topics, aber mappt die Channel-Nummer rüber ins MQTT.

Liebe Grüße Matthias

MaStr commented 2 years ago

Hi, Leider hat die es noch nicht auf den Master branch geschafft 🙄…

LG Matthias Am 2. Juli 2022, 17:13 +0200 schrieb Narsskrarc @.***>:

Hallo @MaStr, nein... wo ist da eine MQTT-Implementierung? PS: läuft bisher zuverlässig. — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

edelbluth commented 1 year ago

Ist nach nur wenigen Jahren im Develop-Zweig fest verdrahtet und geht mit dem nächsten Release raus.