Autor Thema: Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge u. Fragen  (Gelesen 4889 mal)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 14551
  • s/fhem\.cfg/configDB/g
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #45 am: 26 Januar 2018, 22:31:06 »
Ich probiere mich soeben an dem RegEx für das JSON

Wieso um alles in der Welt will man JSON per regexp auswerten?
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 01.06.2018

Offline HomeAuto_User

  • Developer
  • Full Member
  • ****
  • Beiträge: 234
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #46 am: 26 Januar 2018, 22:36:14 »
Wieso um alles in der Welt will man JSON per regexp auswerten?

Das verstehst du ggf. falsch.
Es ging darum, sich mit dem Regexp zu beschäftigen zwecks Übergabe an das andere Modul bzw. um allgemein das komplete Thema diesbezüglich.
Das JSON wird nicht via Regexp ausgewertet, es wird decoded.
- FHEM v5.8 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) als Vergleichsempfänger
- Sensoren: 3x FHT 80b | 5x FHT 80 TF-2 | 2x S300TH | 1x WS7000-20 | 5x "Hideki" | THR128

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3457
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #47 am: 28 Januar 2018, 11:41:25 »
EDIT: desweiteren, wie bekomme ich Autocreate dazu, das ein Sensor nicht mit den "Tasten" on/off versehen wird.

Definiere "Tasten". Was genau meinst Du konkret?

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Offline HomeAuto_User

  • Developer
  • Full Member
  • ****
  • Beiträge: 234
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #48 am: 28 Januar 2018, 16:27:18 »
Hallo,

Zitat
Definiere "Tasten". Was genau meinst Du konkret?
Sobald ein Sensor angelgt wird sieht es im WEB ja wie folgt aus

--------------------------------------------------
Name Sensor                  | T: 13.6 H: 53
-------------------------------------------------

bei mir sieht es so wie bei einem Schalter aus

--------------------------------------------------------------
Name Sensor                  | T: 13.6 H: 53 | on | off |
--------------------------------------------------------------

MfG
- FHEM v5.8 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) als Vergleichsempfänger
- Sensoren: 3x FHT 80b | 5x FHT 80 TF-2 | 2x S300TH | 1x WS7000-20 | 5x "Hideki" | THR128

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3457
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #49 am: 28 Januar 2018, 20:15:30 »
So sieht es nur aus, wenn du auch ein on/off als Set-Befehl anbietest. Was kommt denn, wenn du folgenden FHEM-Befehl ausführst?

set <Name Sensor> ?
Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Offline HomeAuto_User

  • Developer
  • Full Member
  • ****
  • Beiträge: 234
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #50 am: 28 Januar 2018, 21:14:39 »
Hallo Markus,

danke für den Hinweis.
Ich denke zu wissen was du meinst und wo ich ansetzen muss. In der Tat, "Name Sensor" hat Befehle wie on off.
Da muss ich nun eine Unterscheidung herbeiführen und dies dann testen.

Schade das man da schwierig oder nichts in der Wiki findet.  :o

MfG Marco

EDIT: Wie könnte ich es am einfachsten gestalten wenn ich es einmal mit und ohne cmdlist haben möchte?
Ich habe nun den Fall, entweder ich habe on off oder ich habe garnichts  ;D Eine Unterscheidung in der SET sollte die Lösung herbeiführen. Einfach IF Abfrage dort positioniert löst das problem nicht.
« Letzte Änderung: 28 Januar 2018, 21:39:30 von HomeAuto_User »
- FHEM v5.8 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) als Vergleichsempfänger
- Sensoren: 3x FHT 80b | 5x FHT 80 TF-2 | 2x S300TH | 1x WS7000-20 | 5x "Hideki" | THR128

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3457
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #51 am: 28 Januar 2018, 21:51:22 »
Hallo Marco,

das liegt daran, dass es das Standardverhalten von FHEMWEB (Front-End-Modul) ist. Der Nutzer kann das ja über das Attribut webCmd verändern. FHEMWEB prüft dabei die zur Verfügung stehenden Set-Befehle für die jeweilige Definition. Sollte der User das Attribut webCmd nicht gesetzt haben, so gibt es folgende Reihenfolge:

1. falls es "desired-temp" gibt => webCmd = "desired-temp"
2. falls es "desiredTemp" gibt => webCmd = "desiredTemp"
3. falls es on/off gibt => webCmd = "on:off"

Hier obliegt es deinem Modul zu entscheiden, welche Set-Befehle für die aktuelle Definition zur Verfügung stehen sollten.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3457
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #52 am: 28 Januar 2018, 21:57:27 »
Wie könnte ich es am einfachsten gestalten wenn ich es einmal mit und ohne cmdlist haben möchte?

Du musst in deiner SetFn entscheiden ob on/off verfügbar sein soll oder nicht. Beispielsweise so (Auszug aus FB_CALLMONITOR):


    my @sets = ();
   
    push @sets, "rereadPhonebook" if(defined($hash->{helper}{PHONEBOOK}) or AttrVal($name, "reverse-search" , "") =~ /(all|phonebook|internal)/);
    push @sets, "rereadCache" if(defined(AttrVal($name, "reverse-search-cache-file" , undef)));
    push @sets, "rereadTextfile" if(defined(AttrVal($name, "reverse-search-text-file" , undef)));
    push @sets, "password" if($hash->{helper}{PWD_NEEDED});
    push @sets, "reopen" if($hash->{FD});

    ....

    return "Unknown argument $cmd, choose one of ".join(" ", @sets);

Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Offline HomeAuto_User

  • Developer
  • Full Member
  • ****
  • Beiträge: 234
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #53 am: 28 Januar 2018, 23:27:56 »
Hi,

ich habe das Ganze nun so vorerst gelöst
Zitat
my $usage;
   my @sets = ();
   
    push @sets, "on" if($xs1_typ eq "switch");
   push @sets, "off" if($xs1_typ eq "switch");
   push @sets, "blink" if($xs1_typ eq "switch");
    push @sets, "" if($xs1_typ eq "temperature");
   push @sets, "" if($xs1_typ eq "hygrometer");
   
   $usage = "Unknown argument ".$cmd.", choose one of ".join(" ", @sets) if(scalar @sets > 0);
   
   if($cmd eq "on")
    {
        Log3 $name, 3, "$name: Set | cmd=$cmd";
      readingsSingleUpdate($hash, "state", $cmd, 1);
      return undef;
    }
    elsif($cmd eq "off")
    {
      Log3 $name, 3, "$name: Set | cmd=$cmd";
      readingsSingleUpdate($hash, "state", $cmd, 1);
        return undef;
    }
   else
    {
      return $usage;
    }

Nun resultiert daraus meine nächste Frage.

Wenn ich EIN set-Kommando absetze und es wird im Hauptlogfile von FHEM nur einmal registriert weil ich dies als Bestätigung dort verankere, so bekommt das Logfile vom Schalter Mehrfach Einträge bis zu 60 Stück  :-[ :-[ zur selbigen Zeit und jeweils das LETZE ist der Zustand der gesetzt wurde.

Zitat
2018-01-28_23:18:26 xs1Dev_Aktor_03 off
.... bis zu 60x das selbige
2018-01-28_23:18:26 xs1Dev_Aktor_03 off
2018-01-28_23:18:26 xs1Dev_Aktor_03 on
- FHEM v5.8 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) als Vergleichsempfänger
- Sensoren: 3x FHT 80b | 5x FHT 80 TF-2 | 2x S300TH | 1x WS7000-20 | 5x "Hideki" | THR128

Offline herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4647
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #54 am: 29 Januar 2018, 00:50:33 »
ich habe das jetzt 3 mal gelesen ... und nicht verstanden.

Strukturiert bitte!

Ich vermute das Du mit "Hauptlog registriert" meinst das Du in Deinem modul eine Zeile (Log3 ... ) eingebaut hast um zu sehen ob "set" mehrfach aufgerufen wird. Richtig ?
Liege ich ebenfalls richtig wenn ich annehme das mit den 60 Logeinträgen ein filelog gemeint ist ?

Was steht im eventmonitor wenn die 60 Einträge im log landen und wie ist das log definiert ?

smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3457
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #55 am: 29 Januar 2018, 10:42:08 »
Bitte poste mal das gesamte Modul als Datei. Nur mit diesen kleinen Code-Häppchen ist das reine Wahrsagerei.

Wenn ich EIN set-Kommando absetze und es wird im Hauptlogfile von FHEM nur einmal registriert weil ich dies als Bestätigung dort verankere, so bekommt das Logfile vom Schalter Mehrfach Einträge bis zu 60 Stück  :-[ :-[ zur selbigen Zeit und jeweils das LETZE ist der Zustand der gesetzt wurde.

Das ist kein Feature von FHEM. Da läuft irgendwas in deinem Modul schief.
« Letzte Änderung: 29 Januar 2018, 10:43:42 von Markus Bloch »
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Offline HomeAuto_User

  • Developer
  • Full Member
  • ****
  • Beiträge: 234
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #56 am: 13 Februar 2018, 13:46:34 »
Hallo, ich brächte mal bitte eure Hilfe.

Das ist kein Feature von FHEM. Da läuft irgendwas in deinem Modul schief.
Ja das war mein Fehler und ich habe dies gefunden.


Nun habe ich sporadisch diese Meldung, woran ich schon knobel aber bisher kein Erfolg sah.
PERL WARNING: Use of uninitialized value in pattern match (m//) at ./FHEM/88_xs1Bridge.pm line 298.
Zeile dazu vom Code:
($json) = get( $adress ) =~ /[^(]*[}]/g; ## cut cname( + ) am Ende von Ausgabe -> ARRAY Struktur als Antwort
Tritt dies nun auf wenn der RegEx nicht zutrifft? $adress ist vorher fest definiert.
Besten Dank im Vorraus.
« Letzte Änderung: 13 Februar 2018, 13:49:18 von HomeAuto_User »
- FHEM v5.8 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) als Vergleichsempfänger
- Sensoren: 3x FHT 80b | 5x FHT 80 TF-2 | 2x S300TH | 1x WS7000-20 | 5x "Hideki" | THR128

Offline Phill

  • Developer
  • Full Member
  • ****
  • Beiträge: 374
  • Langsam wird'n Schuh d'raus.
    • iVDR
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #57 am: 13 Februar 2018, 14:48:53 »
$adress ist vielleicht definiert, aber get($adress) scheint undef zurück zugeben.
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3457
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #58 am: 13 Februar 2018, 14:59:12 »
Dieser Fall tritt nur auf, wenn get($address) undef zurückliefert. Das bedeutet, der Aufruf der URL in $address ist fehlgeschlagen. Ich nehme mal an get() stammt aus LWP::Simple.

Du solltest vorher immer prüfen, ob ein HTTP-Request erfolgreich war und Daten zurückliefert, bevor Du diese blind weiterverarbeitest.

Gruß
Markus

PS: Für HTTP-Anfragen solltest du bei der Modulprogrammierung generell https://wiki.fhem.de/wiki/HttpUtils#HttpUtils_NonblockingGet verwenden
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)
Zustimmung Zustimmung x 1 Liste anzeigen

Offline herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4647
Antw:Newbie - Modulkommunikation | Match | JSON | diverse Zusammenhänge
« Antwort #59 am: 13 Februar 2018, 15:09:55 »
Unbedingt! Lwp ist blockierend, use httputils!!!,
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse