Verbesserungvorschlag WBS Modul

Begonnen von swifty, 10 März 2014, 21:34:26

Vorheriges Thema - Nächstes Thema

swifty

Ich nutze das WBS modul, um von meinem Arduino via Ethernet Daten an FHEM zu schicken. Das funktioniert auch wunderbar. Allerdings war ich mit den LOGeinträgen des WBS nicht ganz zufrieden.

aktueller Logeintrag
2014-03-10_21:22:27 KWL_Press1 Pressure1:982.58

besser ist
2014-03-10_21:22:27 KWL_Press1 Pressure1: 982.58
man  beachte das Leerzeichen vor dem Wert. So kann viel einfacher eine Grafik angezeigt werden, oder irre ich mich?

ich habe das gelöst im WBS Code ab Zeile 135 :
  # Changed
  $wbs->{CHANGED}[0] = "$reading: $value";
  return $wbs_name;

(ein Leerzeichen vor $value)


Das WBS Modul füllt bei jedem FHEM start das fhem.log mit allen Definitionen. Kann man das irgendwie abschalten?
2014.03.10 21:17:46 0: WBS|DEFINE: $VAR1 = {
          'NAME' => 'KWL_Press2',
          'NR' => 32,
          'DEF' => 'Pressure2 2002',
          'STATE' => '???',
          'TYPE' => 'WBS'
        };


Gruß
Jan


betateilchen

#1
kannst Du mal bitte den vollständigen Modulnamen nennen?

edit.. habs gefunden.

Dein Vorschlag mit dem Leerzeichen ist ok,

Dein zweites Problem kannst Du lösen, wenn Du diese Zeile

  Log 0, "WBS|DEFINE: " . Dumper(@_);

auskommentierst. Bei mir ist das in Zeile 70.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!


betateilchen

siehe oben - da hab ich die Antwort reingeschrieben, während Du geantwortet hast :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

swifty

prima.

Wer kann das für alle ändern?

betateilchen

#5
Das ist ein contrib-Modul. Da gibt es keine reguläre Wartung und diese Module werden auch nicht per update verteilt.

An dem Modul gab es auch seit 4 Jahren keine Änderung, ich weiß nicht, ob sich darum überhaupt noch jemand kümmert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

swifty

ich habe es mal abgegeben. Wer triggert den merge?

betateilchen

Ich hab die zwei Änderungen mal eingebaut. Sollte per SVN bereits verfügbar sein.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

swifty

Ich hätte da noch was.

Das modul ist ja mit Arduino unglaublich praktisch, aber etwas unhandlich. Denn, die Werte der WBS definitionen sehen z.B. so aus:
T: 12.8 | 2014-04-08 19:14:14

Damit lässt sich sehr schlecht rechnen, jede Aktion muss den String wieder auseinander pflücken, mir gefällt besser das hier:
12.8

dazu muss im WBS die Zeile 134:
$wbs->{STATE} = "$fc: $value | " . TimeNow();

geändert werden in:
$wbs->{STATE} = "$value";

Gibt es wichtige Gründe, den großen String abzulegen?

swifty

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

swifty

Nun, das Problem ist jede at sieht dann so aus:
my @P1 = split(/ /, Value("WBS_Variable"));
my $var = $P1[1]


noch schlimmer ist es im notify, arrays kann FHEM in notify nicht verarbeiten.

Damit alte Skripte weiterlaufen kann man das schlecht ändern. Aber warum wird so viel (unnützer?) Text abgelegt?

swifty

swifty

Die Änderung ist wirklich nicht nötig.

Um auf den Wert zuzugreifen ist Value() der falsche Ansatz. Um auf ein WBS Signal definiert mit
define KWL_Press1 WBS Pressure1 2001
zuzugreifen

sollte ReadingsVal verwendet werden, hier:
ReadingsVal("KWL_Press1", "Pressure1","");

man lernt nie aus...


tresa

Hallo,

ich möchte das WBS Modul auch gerne nutzen um Daten an Fhem zu schicken. Ich habe in meinem Arduino Code folgendes stehen:

client.println("GET /fhem/rawmsg?WBS:1235:xx");

xx ist der Wert, der übertragen wird. Kann ich hier irgendwie eine Variable einfügen?

Viele Grüße
Tresa

Samsi

Hallo,

du kannst das zb. so machen:
als erstes kein println:

client.print("GET /fhem/rawmsg?WBS:1235:");
und dann deine Varibale
client.println(value);
FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM