Autor Thema: Readings nach FHEM schicken  (Gelesen 2483 mal)

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 17958
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Readings nach FHEM schicken
« Antwort #15 am: 26 Januar 2021, 10:26:48 »
Ergänzung: Wie man mit dem csrf Token umgehen kann findest Du dir: https://wiki.fhem.de/wiki/CsrfToken-HowTo
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 159
Antw:Readings nach FHEM schicken
« Antwort #16 am: 26 Januar 2021, 10:49:15 »
Komisch, wenn man es richtig macht geht es sofort.  ;)

Besten Dank.

So stehen die Türen für ein neues tolles Modul offen.

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26386
Antw:Readings nach FHEM schicken
« Antwort #17 am: 26 Januar 2021, 10:52:50 »
Wenn Du eh ein Modul für FHEM machst wieso dann der Umweg über HTTP, wieso nicht über einen eigenen TCP Socket der vom Modul verwaltet wird?
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 159
Antw:Readings nach FHEM schicken
« Antwort #18 am: 26 Januar 2021, 10:56:06 »
Genau das war ja meine Frage. Ich fände das mit einem TCPServer eleganter. sonst muss das Modul ordentlicher Weise ja ein eigenes FHEMWEB anlegen.

Gibt es dafür ein überschaubares Beispiel?
« Letzte Änderung: 26 Januar 2021, 10:59:29 von timmib »

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17095
  • s/fhem\.cfg/configDB/g
Antw:Readings nach FHEM schicken
« Antwort #19 am: 26 Januar 2021, 10:58:07 »
ich mache schonmal Popcorn...  8)
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!
Gefällt mir Gefällt mir x 2 Liste anzeigen

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26386
Antw:Readings nach FHEM schicken
« Antwort #20 am: 26 Januar 2021, 11:03:37 »
Genau das war ja meine Frage. Ich fände das mit einem TCPServer eleganter. sonst muss das Modul ordentlicher Weise ja ein eigenes FHEMWEB anlegen.

Gibt es dafür ein überschaubares Beispiel?

Überschaubar ist relativ. Von meinen Modulen wüsste ich nur AMAD. Das AMADCommBridge Modul macht genau das was Du suchst.
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 159
Antw:Readings nach FHEM schicken
« Antwort #21 am: 26 Januar 2021, 11:23:54 »
Danke, schau ich mir an.

Offline M.Schulze

  • Commercial User
  • New Member
  • *
  • Beiträge: 42
  • Principal Strategist, Maker
Antw:Readings nach FHEM schicken
« Antwort #22 am: 26 Januar 2021, 12:07:04 »
Genau das war ja meine Frage. Ich fände das mit einem TCPServer eleganter. sonst muss das Modul ordentlicher Weise ja ein eigenes FHEMWEB anlegen.

Gibt es dafür ein überschaubares Beispiel?

Richtig,

FHEMWEB ist das Beispiel.

Genau so habe ich es auch gemacht:

Im define:
- TcpServer_Open

Im Read:
- TcpServer_Accept, neue Verbindungen akzeptieren
- Daten empfangen, Header trennen, Body (ggf. nach und nach)
- Header-Felder extrahieren
- Request / Response unterscheiden, 1st Line teilen
- URI parsen:

    $URI =~ /^([a-z][a-z0-9+.-]*):(?:\/\/((?:(?=((?:[a-z0-9-._~!${\}&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9-._~!${\}&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!${\}&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!${\}&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!${\}&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!${\}&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i;


MfG
Home Control (HCtrl.de) - Operating Home-Automation as a Service (HAaaS)

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26386
Antw:Readings nach FHEM schicken
« Antwort #23 am: 26 Januar 2021, 12:14:29 »
Hier mal etwas Code von meinem alten Lehrmeister zum Thema Headerdaten extrahieren.
Danke Andre

##### bleibt zu Anschauungszwecken erhalten
#sub Header2Hash($) {
#
#    my $string  = shift;
#    my %hash    = ();
#
#    foreach my $line (split("\r\n", $string)) {
#        my ($key,$value) = split( ": ", $line );
#        next if( !$value );
#
#        $value =~ s/^ //;
#        $hash{$key} = $value;
#    }
#
#    return \%hash;
#}
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 159
Antw:Readings nach FHEM schicken
« Antwort #24 am: 26 Januar 2021, 12:19:33 »
Merci, aber Header gibt es hierbei nicht. Der schickt dann einfach JSON.

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 159
Antw:Readings nach FHEM schicken
« Antwort #25 am: 26 Januar 2021, 21:16:28 »
So, Prototyp läuft.

Kann sein, das ich mich nochmal melde wegen Close usw.

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 159
Antw:Readings nach FHEM schicken
« Antwort #26 am: 27 Januar 2021, 00:04:04 »
Beta ist fertig und kann auf die Menschheit losgelassen werden.

https://forum.fhem.de/index.php?topic=118208.0

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 159
Antw:Readings nach FHEM schicken
« Antwort #27 am: 29 Januar 2021, 16:45:20 »
Hi,

hat jemand einen Tipp ob und wie man diese Kollegen hier wegbekommt.

kapacitor_192.168.178.65_60492_MSGCNT
1
kapacitor_192.168.178.65_60492_TIME
2021-01-29 16:34:55
kapacitor_192.168.178.65_60500_MSGCNT
1
kapacitor_192.168.178.65_60500_TIME
2021-01-29 16:35:55
kapacitor_192.168.178.65_60572_MSGCNT
1
kapacitor_192.168.178.65_60572_TIME
2021-01-29 16:36:55
kapacitor_192.168.178.65_60648_MSGCNT
1
kapacitor_192.168.178.65_60648_TIME
2021-01-29 16:37:55
kapacitor_192.168.178.65_60658_MSGCNT
1
kapacitor_192.168.178.65_60658_TIME
2021-01-29 16:38:55
kapacitor_192.168.178.65_60662_MSGCNT
1
kapacitor_192.168.178.65_60662_TIME
2021-01-29 16:39:55
kapacitor_192.168.178.65_60668_MSGCNT
1
kapacitor_192.168.178.65_60668_TIME
2021-01-29 16:40:55
kapacitor_192.168.178.65_60678_MSGCNT
1
kapacitor_192.168.178.65_60678_TIME
2021-01-29 16:41:55

Kann es sein, dass beim Read was fehlt?

sub Kapacitor_Read($) {

    my $hash = shift;
    my $name = $hash->{NAME};

    if ( $hash->{SERVERSOCKET} ) {    # Accept and create a child
        TcpServer_Accept( $hash, 'Kapacitor' );
        return;
    }

    my $buf;
    my $ret = sysread( $hash->{CD}, $buf, 2048 );

    # When there is an error in connection return
    if ( !defined($ret) or $ret <= 0 ) {
        # Log3( $name, 3, "Kapacitor ($name) - Connection closed for $name" );
        return;
    }

    my $found = Dispatch($hash, $buf);
}

Vielen Dank

Tim

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 23667
Antw:Readings nach FHEM schicken
« Antwort #28 am: 29 Januar 2021, 17:44:14 »
Es gibt auch eine TcpServer_Close Funktion, diese sollte man ab und zu auch aufrufen.

Offline M.Schulze

  • Commercial User
  • New Member
  • *
  • Beiträge: 42
  • Principal Strategist, Maker
Antw:Readings nach FHEM schicken
« Antwort #29 am: 29 Januar 2021, 17:49:35 »
Hi,

hat jemand einen Tipp ob und wie man diese Kollegen hier wegbekommt.


Fhem.pl verändern.  Ich habe die Stelle auch entfernt. Ist wohl ein Überbleibsel aus alten Zeiten ...
Home Control (HCtrl.de) - Operating Home-Automation as a Service (HAaaS)