diff --git a/FHEM/00_Neuron.pm b/FHEM/00_Neuron.pm
index e72e7c5dc..e2f320773 100644
--- a/FHEM/00_Neuron.pm
+++ b/FHEM/00_Neuron.pm
@@ -1,17 +1,5 @@
##############################################
# $Id$
-# todo:
-# websocket automatischer restart -> fertsch über devio
-# DevIo_IsOpen() anstelle con hash helper websocket
-# $hash->{DeviceName} global verwenden und devio nutzen
-# ein httprequest? -> Neuron_GetVal in Neuron_SetVal integriert
-# NotifyFn sets/gets aus Readings -> fertsch
-# (polling auch mit rein?) -> nein
-# set:
-# websocket open/close -> fertsch
-# otype-port on/off slider -> fertsch
-# (wenn $hash{FD} dann über websocket?) -> fertsch
-# type-port -> conf (frei setzbar machen) -> fertsch (postjson)
#
# bug?: wenn man einen value setzt, dann wird im response der alte zurückgeschickt
#
@@ -133,7 +121,7 @@ sub Neuron_Set(@) {
} elsif ($cmd eq "testdispatch") {
Neuron_ParseWsResponse($hash, '{"dev":"temp","time":1527316294.23915,"temp":"23.4375","vis":"0.0002441","circuit":"2620531402000075","vad":"2.58","interval":15,"typ":"DS2438","humidity":51.9139754019274,"lost":false,"vdd":"5.34"}');
} else {
- return "Unknown argument $cmd, choose one of testdispatch clearreadings:noArg websocket:open,close " . ($hash->{HELPER}{SETS} ? $hash->{HELPER}{SETS} : '');
+ return "Unknown argument $cmd, choose one of clearreadings:noArg websocket:open,close " . ($hash->{HELPER}{SETS} ? $hash->{HELPER}{SETS} : '');
}
return undef;
}
@@ -421,13 +409,25 @@ sub Neuron_ParseAll(@){
my ($subdevs) = (ref $result eq 'HASH' ? $result->{data} : $result);
readingsBeginUpdate($hash);
my $i = 1;
+ my @circuits;
foreach (@{$subdevs}){
(my $subdev)=$_;
- if (defined $subdev->{model} && defined $subdev->{glob_dev_id}) {
+ if (defined $subdev->{model} && defined $subdev->{glob_dev_id} && $subdev->{glob_dev_id} == 1) {
foreach my $intrnl (keys %{$subdev}) {
next if $intrnl eq "glob_dev_id";
$hash->{uc($intrnl)} = $subdev->{$intrnl};
}
+ if ($subdev->{board_count}) {
+ for my $i (1..$subdev->{board_count}) {
+ push (@circuits,$i);
+ }
+ }
+ } elsif (defined $subdev->{model} && defined $subdev->{glob_dev_id}) {
+ foreach my $intrnl (keys %{$subdev}) {
+ next if $intrnl eq "glob_dev_id";
+ $hash->{$subdev->{glob_dev_id} . "_" . uc($intrnl)} = $subdev->{$intrnl};
+ }
+ push (@circuits, substr($subdev->{circuit}, -1));
} elsif (defined $subdev->{model}) {
foreach my $intrnl (keys %{$subdev}) {
next if $intrnl eq "glob_dev_id";
@@ -445,7 +445,15 @@ sub Neuron_ParseAll(@){
Log3 ($hash, 4, "$hash->{TYPE} ($hash->{NAME}) ".$subdev->{dev}."_".$subdev->{circuit} .": ". toJSON($subdev));
}
}
- readingsBulkUpdate($hash,"state",$result->{status}) if ref $result eq 'HASH';
+
+ @circuits = sort @circuits;
+ my $last;
+ for my $entry (@circuits) {
+ Log3 ($hash, 1, "$hash->{TYPE} ($hash->{NAME}) global_id $entry used twice this may cause malfuntions")
+ if defined $last && $entry eq $last;
+ $last = $entry;
+ }
+ readingsBulkUpdate($hash,"state",(ref $result eq 'HASH' ? $result->{status} : "success") );
readingsEndUpdate($hash,1);
Neuron_ReadingstoSets($hash);
#################################################################
@@ -972,11 +980,11 @@ sub Neuron_wsMasking($$) {
Verbindungsart zum EVOK Device
Standard: polling, gültige Werte: websockets, polling
-