problem mit perl ?

Begonnen von juppzupp, 17 Juli 2013, 09:46:57

Vorheriges Thema - Nächstes Thema

juppzupp

Guten Morgen zusammen,

im Anfängerforum wurde mir ja "geraten" die ersten spielereien vielleicht nicht mit der Sirene eines Rauchmelders zu üben, da zu laut. Da dachte ich mir, warum nicht einen Piezo Summer an den gpio zu benutzen ? Das stellt sich aber schon schwieriger raus als erwartet :) Ich hoffe, das die Frage hier besser aufgehoben ist als im Anfängerforum, da ja sehr spezifisch. Sonst möge ein Mod bitte verschieben.

Ich bin laut wiki Raspberry_Pi:_GPIOs_schalten vorgegangen, und habe mir folgende config gebastelt :

define gpio_piezo FS20 7777 00
attr gpio_piezo dummy 1
attr gpio_piezo icon icoPfeil
define act_on_gpio_piezo notify gpio_piezo {\
 if ("%" ne "off") {\
  system("ton_an &")\
 } else {\
  system("ton_aus &")\
 }\
}


Wenn ich nun per Web das Kommando set gpio_piezo on oder set gpio_piezo off absetze, wird der summer auch ein/respektive aus geschaltet.
Was nicht funktioniert, ist set gpio_piezo on-for timer 10. Der Summer geht an, aber niemals aus.

Von dort bin auch telnet gewechselt, und kann folgendes sehen :
fhem> set gpio_piezo off
fhem>

normal, ok, denke ich. aber bei on / on-for-timer wirds "komisch" :

fhem> set gpio_piezo on        
fhem> perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
sleep: invalid time interval `'
Try `sleep --help' for more information.

fhem> set gpio_piezo on-for-timer 10
fhem> perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
sleep: invalid time interval `'
Try `sleep --help' for more information.

Neben der perl-meckerei, die ich irgendwie nicht weg bekomme, wundert mich halt der output sleep: invalid time interval `'
Try `sleep --help' for more information.

Hat jemand ne Lösung parat ?

Danke
Jupp

betateilchen

Versuche mal, Deinen FS20-dummy explizit als Schalter zu definieren, ich bin mir nicht sicher, ob on-for-timer grundsätzlich bereitgestellt wird.

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

juppzupp

danke aber das ist es leider nicht.
die sleep fehlermeldung lässt mich vermuten, das die "10"  nicht übergeben wird.
sleep: invalid time interval `'
warum allerdings, dafür steck ich noch nicht tief genug drin

betateilchen

Tritt der Fehler auch auf, wenn Du das Kommando in fhem in die Befehlszeile eintippst oder nur direkt auf der Konsole?

Wenn Du auf der Konsole arbeitest, kannst Du mal set gpio_piezo "on-for-timer 10" probieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

juppzupp

egal ob telnet oder web Unknown argument "on-for-timer, choose one of off off-for-timer on on-for-timer on-till reset timer toggle blink intervals off-till
dito mit '

betateilchen

Ok, das Anführungszeichen mag er gar nicht.

Mach mal bitte ein "list gpio_piezo"

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

juppzupp

fhem> list gpio_piezo
Internals:
   BTN        00
   DEF        7777 00
   NAME       gpio_piezo
   NR         30
   STATE      off
   TRIGGERTIME 2013-07-17 10:40:24
   TYPE       FS20
   XMIT       7777
   Code:
     1          7777 00
   Readings:
     2013-07-17 10:40:24   state           off
Attributes:
   dummy      1
   icon       icoPfeil
   model      fs20st

fhem>

betateilchen

Ich weiß, dass Dir das nicht viel weiterhilft, aber ich habe das jetzt einfach mal nachgebaut. Und da funktioniert es mit minimalster Konfiguration:


Internals:
   BTN        00
   CFGFN      
   DEF        7777 00
   NAME       gpio_piezo
   NR         33
   STATE      on-for-timer 10
   TYPE       FS20
   XMIT       7777
   Code:
     1          7777 00
   Readings:
     2013-07-17 11:21:23   state           on-for-timer 10
Attributes:
   dummy      1


Selbst ohne die Angabe des models. Hast Du die aktuelle Version von FHEM installiert? Welches Perl?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

juppzupp

den "state" bekomm ich auch hin, aber er der summer bleibt an. wenn du nach 10 sekunden schaust, ändert sich der state ?

fhem> set gpio_piezo on-for-timer 10
fhem> perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
sleep: invalid time interval `'
Try `sleep --help' for more information.
list gpio_piezo
Internals:
   BTN        00
   DEF        7777 00
   NAME       gpio_piezo
   NR         30
   STATE      on-for-timer 10
   TRIGGERTIME 2013-07-17 12:51:46
   TYPE       FS20
   XMIT       7777
   Code:
     1          7777 00
   Readings:
     2013-07-17 12:51:46   state           on-for-timer 10
Attributes:
   dummy      1
   icon       icoPfeil
   model      fs20st

fhem>


fhem : Fhem 5.4 (DEVELOPMENT), $Id: fhem.pl 3008 2013-04-01 11:19:27Z rudolfkoenig $
perl : This is perl 5, version 14, subversion 2 (v5.14.2) built for arm-linux-gnueabihf-thread-multi-64int

betateilchen

Also ich würde Dir zumindest bei FHEM zu einem Update raten.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

juppzupp

das ist die version von der homepage ? welche meinst du ?


*edit*
habe per cli geupdatet : Fhem 5.4 (DEVELOPMENT), $Id: fhem.pl 3430 2013-07-15 20:34:58Z rudolfkoenig $

gleiches bild wie vorher.

betateilchen

Zitat von: juppzupp schrieb am Mi, 17 Juli 2013 12:55den "state" bekomm ich auch hin, aber er der summer bleibt an. wenn du nach 10 sekunden schaust, ändert sich der state ?

Setze mal das Attribut: attr gpio_piezo follow-on-for-timer 1 damit sehe ich die korrekte Änderung des state auch in der Weboberfläche.

Übrigens tauchen bei mir nirgends perl-Fehlermeldungen auf.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

juppzupp

ist ja nur die locale die nicht stimmt.
noch wer ne idee ?

betateilchen

Zitat von: juppzupp schrieb am Mi, 17 Juli 2013 14:58ist ja nur die locale die nicht stimmt.

Hab ich irgendwas verpaßt?

sleep: invalid time interval `'

Das ist doch keine Fehlermeldung, die auf LOCALE basiert, sondern ein Syntaxfehler. Oder hattest Du schon irgendwo geschrieben, dass der nicht mehr auftritt? Ich hatte mich die ganze Zeit schon gewundert, wie Du den state hinbekommst, wenn perl Dir diesen Fehler meldet.

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

juppzupp

sleep: invalid time interval `'

sieht für mich wie eine coreutils fehlermeldung aus (nicht übergebener parameter)
und nicht wie eine perl meldung.
mag mich aber gerne irren.

wie dem auch sei, der stand ist der gleiche. on-for-timer funktioniert nicht. der ausgang wird geschaltet, legt sich aber nie schlafen.