(Erledigt) neues reading bei einem Standard Wert...? Problem mit CallList

Begonnen von misux, 21 August 2019, 20:19:14

Vorheriges Thema - Nächstes Thema

misux

HI!

Ich nutze das Modul CallList. Dieses hat 7 Standard Readings und 4 Readings die nur auftauchen wenn ein Anruf kommt/geht... diese kann man auch durch "set clear" wieder löschen, die Standard readings werden dann auf 0 gesetzt.

Mir fehlt allerdings ein Anrufbeantworter Reading als standard welcher einen Wert anzeigt wenn der AB drangegangen ist. Dieser soll mit dem "set clear" auch wieder auf 0 gesetzt werden...

Die Info welchen Wert das neue Reading haben soll, müsste es sich aus dem 1-state ziehen welcher aber beim nächsten Anruf 2-state und beim nächsten 3-state usw heißt und der Wertwelcher anzeigt das der AB drangegangen ist ist: "=> O_O"

Kann mir jemand helfen wie ich ein userreading erstelle der das bewerkstelligt?

misux

Könnte man es in der Art machen?

attr CallList userReadings Anrufbeantworter {if(ReadingsVal("CallList","1-state","") eq ""=> O_O") {return 1} else {return -1}}

Aber wie soll aus return 1 eine 2 werden bei weiterem AB zugriff oder eine 3 bei einem dritten usw... da bin ich absolut überfragt... vor allem weil jeder weitere Anruf einen neuen state Namen hat und zwar 2-state, 3-state 4-state usw....

Hilfe... :-[

Byte09

#2
Zitat von: misux am 21 August 2019, 20:19:14
HI!

Ich nutze das Modul CallList. Dieses hat 7 Standard Readings und 4 Readings die nur auftauchen wenn ein Anruf kommt/geht... diese kann man auch durch "set clear" wieder löschen, die Standard readings werden dann auf 0 gesetzt.

Mir fehlt allerdings ein Anrufbeantworter Reading als standard welcher einen Wert anzeigt wenn der AB drangegangen ist. Dieser soll mit dem "set clear" auch wieder auf 0 gesetzt werden...

Die Info welchen Wert das neue Reading haben soll, müsste es sich aus dem 1-state ziehen welcher aber beim nächsten Anruf 2-state und beim nächsten 3-state usw heißt und der Wertwelcher anzeigt das der AB drangegangen ist ist: "=> O_O"

Kann mir jemand helfen wie ich ein userreading erstelle der das bewerkstelligt?

wäre eine Idee die mir als erstes in den Kopf kommt, gibt bestimmt bessere.
ohne gewähr :
   


attr CallList userReadings Anrufbeantworter {
my $delays = $hash->{READINGS};
my $name = $hash->{NAME};
my $x      = 0;
foreach my $seq ( keys %{$delays} )
{
my $i = ReadingsVal( $name, $seq, "" );
$x++ if $i eq "=> O_O";
}
return $x;
}



gruss Byte09


misux

ja da fällt mir doch glatt n Ei aus der Hose... ??? ;D ;D ;D

Mann da tüddel ich mir meinen für mich nachvollziehbaren code mühevoll zusammen und dann kommt sowas brutales mal eben aus deinem Kopf... ::) 8) Respekt!

Verstehe zwar kein Wort werde das aber mal testen! Vielen DANK!!!

Byte09

#4
Zitat von: misux am 22 August 2019, 08:23:59


Verstehe zwar kein Wort werde das aber mal testen! Vielen DANK!!!

# 'keys delays' enthält eine Liste aller im device verfügbaren readings
# jedes reading wird auf vorhandensein von dem suchbegriff geprüft und x wird hochgezält , wenn vorhanden.

gruss Byte09




Byte09

Zitat von: misux am 22 August 2019, 08:23:59
ja da fällt mir doch glatt n Ei aus der Hose... ??? ;D ;D ;D

Mann da tüddel ich mir meinen für mich nachvollziehbaren code mühevoll zusammen und dann kommt sowas brutales mal eben aus deinem Kopf... ::) 8) Respekt!

Verstehe zwar kein Wort werde das aber mal testen! Vielen DANK!!!

hast du es denn mal getestet ?

gruss Byte09

misux

Hi, sorry hatte keine Zeit... Heute abend ist es soweit. Melde mich.

misux

So, habe es versucht... aber leider Fehlermeldungen...

ZitatError evaluating CallList userReading Anrufbeantworter: Missing right curly or square bracket at (eval 1115043) line 1, at end of line
syntax error at (eval 1115043) line 1, at EOF

und im Screenshot sieht man wie es angelegt ist...

Habe zuerst versucht über die FhemWeb deinen Code einzufügen, aber da hat er komplett gestreikt und viele unknown commands rausgehauen...

Byte09

Zitat von: misux am 23 August 2019, 12:17:21
So, habe es versucht... aber leider Fehlermeldungen...

und im Screenshot sieht man wie es angelegt ist...

Habe zuerst versucht über die FhemWeb deinen Code einzufügen, aber da hat er komplett gestreikt und viele unknown commands rausgehauen...

da fehlt der name des Userreadings !

gruss Byte09

misux

Jawoll!

Mann da habe ich etwas panik bei dem Error bekommen und den Namen rausgelöscht... Schande über mein Haupt!

Wie auch immer!

Es funktioniert! Hammer! ;D ;D ;D

Vielen Dank!

hier nochmal der Code für die die es nachmachen möchten:


attr userReadings

Anrufbeantworter {
my $delays = $hash->{READINGS};
my $name = $hash->{NAME};
my $x      = 0;
foreach my $seq ( keys %{$delays} )
{
my $i = ReadingsVal( $name, $seq, "" );
$x++ if $i eq "=> O_O";
}
return $x;
}


misux

Ich finde es immernoch bewundernswert was eigentlich hinter dem ganzen steckt... ich/wir als user sehen doch nur was an der Oberfläche kratzt... aber die "verrückten" ;D Programmierer müssen sich echt wie in der Matrix fühlen.

Fetten Respekt!

Vielen Dank nochmal!