Autor Thema: Device sendet ständig ohne Aufforderung & "CFGFN" ist leer in der Übersicht  (Gelesen 4482 mal)

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 579
Hallo Zusammen,

ich arbeite derzeit an einem Modul für einen EHZ Zähler.

Dieser sendet ständig seine Pakete ohne das ich eine Anfrage mache.

Von anderen System kenne ich das so, das ich dann einen Interrupt-Routine definieren kann,
wo ich die eingehenden Zeichen der seriellen Schnittstelle verarbeiten kann.

Gibt es sowas auch für FHEM.
Derzeit lese ich halt die Zeichen solange einzulesen, bis ich eine Startkennung erkannt habe und beginne dann mit dem eigentlichen Einlesen.

In meiner Modul Definition sehe ich derzeit bei "CFGFN" nichts, was fehlt hier noch


Gruss R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16025
  • s/fhem\.cfg/configDB/g
Zitat von: ritchie schrieb am So, 21 Juli 2013 20:31
In meiner Modul Definition sehe ich derzeit bei "CFGFN" nichts, was fehlt hier noch


vermutlich nix. Ich habe das Ding bei den meisten Geräten gar nicht. Ich glaube, da habe ich nur ein einziges Mal einen Inhalt gesehen, als ich die Konfiguration auf mehrere Dateien verteilt hatte und die mit include verknüpft waren. Wenn ich mich recht erinnere, stand dann der Name der eingefügten Datei da drin.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 579
Hallo Betateilchen,

ich konnte bis jetzt auch keine Infos hierzu finden. Auch haben die Module,
welche ich verwende, diesen Eintrag auch nicht.

Kann ja auch einen Eintrag zuviel erzeugt sein von mir.


Gibt es eigentlich ein Modul, welches "forken" verwendet.

Das Einlesen der seriellen Schnittstelle und das Warten auf das Startzeichen dauert dann doch sehr lange.

Gruss R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16025
  • s/fhem\.cfg/configDB/g
   my $cfgfile = $h->{CFGFN} ? $h->{CFGFN} : "configfile";
    my $fh = $fh{$cfgfile};
    if(!$fh) {
      if(!open($fh, ">$cfgfile")) {
        $ret .= "Cannot open $cfgfile: $!, ignoring its content\n";
        $fh{$cfgfile} = 1;
        $skip{$cfgfile} = 1;
      } else {
        $fh{$cfgfile} = $fh;
      }


Hat definitiv was mit dem Konfigurationsfile zu tun, also mach Dir keinen Streß deswegen.

Zu Deinem Fork-Problem kann ich Dir leider nix sagen.

Viele Grüße
Udo
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 579
Witzig.

in meinem Modul taucht der Text "CFGFN" nicht auf ...

Dank für die Infos...

Gruss R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19287
wenn du wirklich forken musst geht das per BlockinCall.pm. ein beispiel wie das geht findest du z.b. im speedtest modul. dazu gibt es auch einen wiki artikel von markus bloch.

wenn es nur darum geht beim lesen nicht zu blockieren kannst du das aber viel einfacher in dem du deinen filedescriptor per selectlist in die fhem event loop einhängst. du wirst dann automatisch aufgerufen wenn daten für dich da sind. ein beispiel dafür ist das telnet modul in fhem.

gruss
  nadre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 579
Hallo nadre,

Forken muss ich nicht wirklich. Dein Hinweis scheint wohl die Lösung zu sein.
Das schaue ich mit mal an, danke für die Info.

Gruss R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16025
  • s/fhem\.cfg/configDB/g
Zitat von: ritchie schrieb am So, 21 Juli 2013 21:53
in meinem Modul taucht der Text "CFGFN" nicht auf


in meinem auch nicht. Aber wenn Du mal was suchst, was Du nirgends anders findest, dann schau in die fhem.pl *g*
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20776
fork() bzw. BlockingCall ist in meinem Augen nur eine Notloesung. Wenn man nicht aktiv viel Rechenzeit braucht, dann sollte man das Problem moeglichst mit select loesen, auch wenn das manchmal aufwendiger zu programmieren ist.
Vlt. brauchen wir fuer das Einlesen von externen Programm-Output per select Hilfsroutinen, damit Modulautoren es einfacher haben.

Die Funktionen in DevIO.pm erledigen das meiste, was mit oeffnen/eintragen/etc zu tun hat, das Zusammenbauen der Nachrichten muss man selbst erledigen, aber dazu gibt es zahlreiche Beispiele.

fhem.pl setzt CFGFN fuer ein Geraet, falls "define" nicht aus fhem.cfg direkt stammt, sondern aus einem per include angegebenen Dateien. Wird benoetigt, damit save die Definition auch dahin wieder zurueckgeschreibt.
Die Module sollten mit diesem Eintrag nichts anfangen.