FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Rudolpho am 15 Februar 2019, 18:24:21

Titel: Werte von Wasserzähler per UDP weitergeben
Beitrag von: Rudolpho am 15 Februar 2019, 18:24:21
Hallo
Ich habe es schon hinbekommen mit einem CUL die Werte von meinem Diehl Hydrus Wasserzähler auszulesen.
Im Event Monitor sieht das so aus:
Zitat2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 2_storage_no: 0
2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 2_type: VIF_VOLUME
2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 2_value: 306.583
2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 2_unit: m³
2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 2_value_type: Instantaneous value
2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 3_storage_no: 1
2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 3_type: VIF_VOLUME
2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 3_value: 184.073
2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 3_unit: m³
2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 3_value_type: Instantaneous value
2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 4_storage_no: 1
2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 4_type: VIF_VOLUME
2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 4_value: 0
2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 4_unit: m³
2019-02-15 18:05:45 WMBUS WMBUS_DME_56064082_112_7 4_value_type: Instantaneous value

sehr hilfreich beim Einbinden der CUL war die Vorarbeit hier:  https://forum.fhem.de/index.php/topic,33068.msg737335.html#msg737335

Mein Notify (Versuch) soweit:    define WMBUS_DME_56064082_112_7_notify_1 notify WMBUS_DME_56064082_112_7:2_value:..* {WasserToLoxone("$NAME")}

Die Funktion habe ich https://ownsmarthome.de/2017/06/fhem-mit-loxone-erweitern/#Ok_los_geht8217s_Ich_will_Loxone
hier entnommen und versucht anzupassen....
##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

# Enter you functions below _this_ line.
#UDP Befehle senden
sub UDP_Msg($$)
{
my ($dest,$port,$cmd) = @_;
my $sock = IO::Socket::INET->new(
Proto => 'udp',
PeerPort => $port,
PeerAddr => $dest
) or die "Could not create socket: $!\n";
$sock->send($cmd) or die "Send error: $!\n";
return "send $cmd";
}
sub WasserToLoxone($)
{
my ($device) = @_;
my $wasserGes=ReadingsVal("$device","2_value","-1");

UDP_Msg("192.168.178.xxx" , "7600" , "$device: $wasserGes");
}
1;



Also schön wäre es wenn der Wert von 2_value an die UDP Adresse gesendet wird..... funktiniert so leider noch nicht
Titel: Antw:Werte von Wasserzähler per UDP weitergeben
Beitrag von: KölnSolar am 15 Februar 2019, 18:49:50
Du willst auch an einen Loxone-Server(-Client ?) senden ? Bei IP und Port bist Du sicher, dass die richtig sind ? Evtl. eine SSL-Verbindung notwendig ? ......
Titel: Antw:Werte von Wasserzähler per UDP weitergeben
Beitrag von: Rudolpho am 15 Februar 2019, 19:27:05
auf einem anderen Pi bei mir funktioniert die Kommunikation mit Loxone wie in ownsmarthome beschrieben hervorragend. Dort ist ein Fenstersensor im Einsatz.
Adresse und Port sollten passen - nur mit meinem selbstverunstalteten Code bin ich mir nicht ganz sicher
besonders der Notify und das Reading ist befürchte ich murks
Titel: Antw:Werte von Wasserzähler per UDP weitergeben
Beitrag von: KölnSolar am 15 Februar 2019, 22:34:10
define WMBUS_DME_56064082_112_7_notify_1 notify WMBUS_DME_56064082_112_7:2_value.* {WasserToLoxone("$NAME")}
my $wasserGes=ReadingsVal($device,"2_value","-1");
sub UDP_Msg($$$)

Tipp1: Besserer Betreff und klarer Formulierung, was Dein Ziel/Problem ist(also auf Deinen Eingangsthread bezogen).
Tipp2: Sprechendere device-Bezeichnungen
Tipp3: Bau Dir ggfs. in die Sub Logs ein. sub wird aufgerufen -> notify funktioniert; Richtiger Value ausgegeben ?
Log3 $device, 1, "[WasserToLoxone] device: $device with value:  $wasserGes";
Tipp4: Das "die" führt meines Wissens zum Absturz. Das müsstest Du in ein eval kleiden. Besser eigentlich zu loggen anstatt "die".

Have fun
Titel: Antw:Werte von Wasserzähler per UDP weitergeben
Beitrag von: CoolTux am 15 Februar 2019, 22:50:37
Statt "die" lieber "return" nehmen sonst ist Dein FHEM jedesmal down.