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
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 ? ......
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
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
Statt "die" lieber "return" nehmen sonst ist Dein FHEM jedesmal down.