Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten

Begonnen von Burny4600, 01 Mai 2016, 18:31:14

Vorheriges Thema - Nächstes Thema

Burny4600

Wie kann ich eingelesene Daten der Seriellen Schnittstelle in Readings verarbeiten, damit ich diese weiter verwenden kann?

Beim Neustart des Gerätes erfolgt diese Ausgabe:
mightyohm.com Geiger Counter 1.00
http://mightyohm.com/geiger


An der Seriellen Schnittstelle werden die Daten in der Form ausgegeben:
CPS, #####, CPM, #####, uSv/hr, ###.##, <Modus>

Die Config sieht so aus:
define gmz ECMD serial /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0@9600
attr gmz verbose 1

define FileLog_gmz FileLog /media/hdd/fhem/log04/gmz/gmz-%Y-%m.log gmz:.*
attr FileLog_gmz logtype :,text
attr FileLog_gmz room _LOG


Nun fehlt mir hier eine passende Konfiguration damit die Daten richtig verarbeitet werden können.
Im Log sehen die Daten so aus:
2016-05-01_17:54:27 gmz UNKNOWNCODE CP
2016-05-01_17:54:27 gmz UNKNOWNCODE S, 1, CP
2016-05-01_17:54:27 gmz UNKNOWNCODE M, 15, u
2016-05-01_17:54:27 gmz UNKNOWNCODE Sv/hr, 0.
2016-05-01_17:54:27 gmz UNKNOWNCODE 08, SLOW
2016-05-01_17:54:27 gmz UNKNOWNCODE


Ich benötige die Daten aber in der Form:
2016-05-01_17:54:27 gmz CPS: 1
2016-05-01_17:54:27 gmz CPM: 15
2016-05-01_17:54:27 gmz uSv/hr: 0.08
2016-05-01_17:54:27 gmz SLOW


Wie und was muss ich noch anpassen um Readings?
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Crawler

Da brauchst wohl ein eigenes Modul für.

Schaue dir mal im Easymeter Modul den OBIS_Read teil an.
wenn du fragen hast wie das Modul funktioniert kannst mir schreiben.
Vielleicht kann ich es bis nächste Woche soweit abändern das es für dich funktioniert.

Gruß Crawler
FHEM auf Raspi + HMLan + 14 Aktoren + OBIS(Strom) über GPIO

Burny4600

@Crawler
ZitatSchaue dir mal im Easymeter Modul den OBIS_Read teil an.
Finde in dieser PM Datei nichts über OBIS.
Mit meinem Programmierkenntnissen stehe ich hier leider an.
Wäre super wenn du mir dabei behilflich sein könntest.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Crawler

schuldigung bin bin durcheinander geraten meine den Easymeter_Read
Die Unterbereiche Read Init usw müssen alle wie die Datei heißen
FHEM auf Raspi + HMLan + 14 Aktoren + OBIS(Strom) über GPIO

Prof. Dr. Peter Henning

Andere Module mit ähnlich einfachem Aufbau liegen im contrib-Ordner: 70_NT5000.pm, 70_PT8005.pm

LG

pah

justme1968

falls du das format das geschickt wird beeinflussen kannst schau dir mal das KeyValueProtokoll modul an.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Burny4600

Zitat70_NT5000.pm, 70_PT8005.pm
ZitatKeyValueProtokoll modul

Nur was soll ich in diesen Dateien ändern, und wie kann ich diese Dateien dann nutzen damit das Gerät GMZ auch darauf zugreift?
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

CoolTux

Das hast Du falsch verstanden. Du sollst diese Dateien nicht ändern. Ausser bei justme wollen alle anderen Dir sagen das Du eine eigene Datei/Modul schreiben sollst.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Burny4600

ZitatDu eine eigene Datei/Modul schreiben sollst.

Das ist ja das Problem!
Ich weis nur nicht wie ich das machen soll.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Icinger

Der Ansatz mit ECMD war eh schon gut, du musst dir halt eine eigene Classdef dafür zurechtschneidern.

Da muss nicht unbedingt ein eigenes Modul dafür her. Das kann man später immer noch machen.

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho


Burny4600

Sorry aber ich benötige Hilfe um das Ganze zu verstehen.
Ich weiß nicht wo genau ich ansetzten muß.
Dafür habe ich noch zu wenig Kenntnisse.
Wenn ich das Nachvollziehen kann sieht es sicherlich schon anders aus.

Dies ist eine Vorlage die nicht für FHEM passt.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import serial
import datetime
import time

# serial port interface e.g. /dev/serial/by-id/*usb* or /dev/cu.usbserial
SERIAL_PORT = '/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0'

# interval between readings in seconds (default: 10 sec)
INTERVAL = 10

# open serial port using 9600 baud, 8 data bit, 1 stop bit, no parity, no flow control
ser = serial.Serial(SERIAL_PORT, baudrate=9600, timeout=2, xonxoff=False, rtscts=False, dsrdtr=False)
ser.flushInput()
ser.flushOutput()

while True:
  # read values from serial interface
  data_raw = ser.readline()
  # print(data_raw)

  # split csv formated string e.g. CPS, 0, CPM, 21, uSv/hr, 0.11, SLOW
  array = data_raw.split(",")
  cps = array[1].strip()
  cpm = array[3].strip()
  radiation = array[5].strip()
  mode = array[6].strip()

  # get current timestamp
  now = datetime.datetime.utcnow()

  # output current radiation measurements
  print("Time:      %s" % now.strftime('%Y-%m-%d %H:%M:%S'))
  print("Radiation: %s uSv/h" % radiation)
  print("CPM:       %s" % cpm)
  print("CPS:       %s" % cps)
  print("Mode:      %s" % mode)

  # wait and loop
  time.sleep(INTERVAL)


Was muss ich für FHEM anpassen?
Wie muß die Datei benannt werden?
Wo muss ich diese ablegen?
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Prof. Dr. Peter Henning

Anleitung:

1. Ablauf von FHEM verstehen => Anfängerdoku lesen

2. Unterschiede in den Programmiersprachen Perl und Python verstehen. Guter Überblick im "Taschenbuch Programmiersprachen" oder "Handbuch Programmiersprachen" - sind beide gebraucht günstig zu bekommen.

3. Struktur von FHEM-Modulen verstehen

Dann können wir gerne helfen.

LG

pah


Burny4600

Danke Prof. Dr. für die Unterstützung und den weisen Rat.

Sorry, aber ich bin anscheinend nicht Deinem Niveau entsprechend und verdiene keine Unterstützung.

Die Grundkenntnisse habe ich. Ebenso Literatur. Dennoch hätte ich mir Hilfe erwartet wo ich bei einem Problem anstehe.
Bin halt leider kein Superwuzi.

Eventuell kann mir dabei dennoch jemand anderer vielleicht behilflich sein, damit ich nicht mehr auf der Leitung stehe.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

CoolTux

Ich glaube Du verkennst hier ein wenig die Situation mein Lieber.

Zitat
Was muss ich für FHEM anpassen?
Wie muß die Datei benannt werden?
Wo muss ich diese ablegen?

Diese Fragen von Dir zeigen uns das Du Dich nicht mal Ansatzweise mit dem Thema beschäftigt hast. Wir sind hier nicht dafür da Deine Probleme zu lösen, bestenfalls Dir einen Weg zu geben. Und genau das haben bisher alle hier gemacht die geantwortet haben.

Also entweder schaust Du ins Wiki im Developer Bereich, danach schaust Du wie viel Perl Du noch lernen musst (da Du ja schon so einiges kannst) und dann, wenn Dein angefangenes Modul Fehler bringt, kannst Du gerne noch mal anfragen.
Aber nicht auf die Art und Weise wie Du Pah angemacht hast. Er ist mit einer derjenigen die zwar menschlich Direkt und somit nicht jedermans Sache sind, aber auch einer der Dir viel beibringen könnte wenn Du nur wolltest. Genau wie so einige mehr hier.

FHEM development lernt man nicht über Nacht und auch nicht in einem Monat. Was Du willst ist einer der Dir ne fertige Lösung auf den Tisch knallt. Auch das ist möglich. Ich glaube Andre(justme1968) nimmt 240 Stunde. Kannst ihm einfach ne PM schreiben.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Burny4600

Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Crawler

Kannst ja mal testen ob es geht.
Bin auch nicht wirklich gut drin  ::)
FHEM auf Raspi + HMLan + 14 Aktoren + OBIS(Strom) über GPIO

Burny4600

@Crawler
Habe mich mit deiner Datei und anderen Möglichkeiten die Daten der Seriellen Schnittstelle zu lesen.
Leider passte deine Anpassung nicht damit zusammen.

Auch mit einer Classdef hatte ich keinen Erfolg wirklich den Dateneingang entsprechend in ein brauchbares Format um zu setzten.
Meins ist halt leider nur die Hardware.
Ich werde es woll bleiben lassen da ich hier nicht mehr weiter komme.

Danke nochmals für die Hilfe dennoch.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT