FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Burny4600 am 01 Mai 2016, 18:31:14

Titel: Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Burny4600 am 01 Mai 2016, 18:31:14
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?
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Crawler am 01 Mai 2016, 23:10:47
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
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Burny4600 am 02 Mai 2016, 12:32:56
@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.
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Crawler am 02 Mai 2016, 19:17:02
schuldigung bin bin durcheinander geraten meine den Easymeter_Read
Die Unterbereiche Read Init usw müssen alle wie die Datei heißen
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Prof. Dr. Peter Henning am 02 Mai 2016, 19:59:19
Andere Module mit ähnlich einfachem Aufbau liegen im contrib-Ordner: 70_NT5000.pm, 70_PT8005.pm

LG

pah
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: justme1968 am 02 Mai 2016, 20:10:16
falls du das format das geschickt wird beeinflussen kannst schau dir mal das KeyValueProtokoll modul an.

gruss
  andre
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Burny4600 am 03 Mai 2016, 09:53:29
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?
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: CoolTux am 03 Mai 2016, 10:02:39
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
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Burny4600 am 03 Mai 2016, 10:24:08
ZitatDu eine eigene Datei/Modul schreiben sollst.

Das ist ja das Problem!
Ich weis nur nicht wie ich das machen soll.
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Icinger am 03 Mai 2016, 10:32:05
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
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Prof. Dr. Peter Henning am 03 Mai 2016, 11:27:32
https://wiki.selfhtml.org/wiki/Perl

LG

pah
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Burny4600 am 03 Mai 2016, 13:48:01
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?
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Prof. Dr. Peter Henning am 03 Mai 2016, 14:13:29
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

Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Burny4600 am 04 Mai 2016, 09:00:52
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.
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: CoolTux am 04 Mai 2016, 11:05:54
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.
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Burny4600 am 04 Mai 2016, 15:59:17
Ja so kann man sich täuschen.
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Crawler am 17 Mai 2016, 23:36:40
Kannst ja mal testen ob es geht.
Bin auch nicht wirklich gut drin  ::)
Titel: Antw:Wie kann ich eingelesene Daten der Seriellen Schnittstelle verarbeiten
Beitrag von: Burny4600 am 05 Juni 2016, 18:13:34
@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.