Neue 1-Wire-Module für Raspberry Pi u.a.

Begonnen von Dr. Boris Neubert, 23 Dezember 2012, 17:26:08

Vorheriges Thema - Nächstes Thema

Tobias

Hi,
ist soetwas wie die VFUNCTION in OWAD/OWMULTI verfügbar?
Der DS2450 liefert zb. nur Volt zurück und daraus muss ich zb. einen Prozentwert (Bodenfeuchte) ausrechnen

zZ setze ich ausschließlich die Module von pah ein, ich würde aber gerne mal diese Module hier testen....
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

dougie



Ich glaube mir ist noch was aufgefallen: wenn bei laufendem fhem ein OWServer abhanden kommt, hängt sich fhem auf. Ich musste heute noch etwas Software auf meinem Remote OWServer nachinstallieren und dabei ein paar mal neu booten.

Sowohl fhem auf der FritzBox als auch auf dem RPi hingen danach fest. Der RPi konnte auch nicht mehr mit sudo reboot gestartet werden, weil sich der fhem Prozess nicht stoppen lassen wollte.
Auf der FritzBox hab ich den fhem Prozess gekillt und neu gestartet.

Meinst du man kann da was dran machen?

VG
Ralf

dougie



Zusatz:

(1) In der commandref taucht die folgende Zeile bei OWDevice zwei mal auf:

2413 1-Wire Dual Channel Addressable Switch

(2) Irgendwie bekomme ich keine Readings von den Ports des 2413.

OWFS sagt mir, das es zum Lesen das sensed.A und sensed.B property gäbe.

ZitatPio.a Pio.b Pio.all Pio.byte

read-write, yes-no
State of the open-drain output ( PIO ) pin. 0 = non-conducting (off), 1 = conducting (on) .
Writing zero will turn off the switch, non-zero will turn on the switch. Reading the PIO state will return the switch setting. To determine the actual logic level at the switch, refer to the sensed property.
ALL references both channels simultaneously, comma separated.
BYTE references both channels simultaneously as a single byte, with channel A in bit 0.
sensed.A sensed.B sensed.ALL sensed.BYTE

read-only, yes-no
Logic level at the PIO pin. 0 = ground. 1 = high (~2.4V - 5V ). Really makes sense only if the PIO state is set to zero (off), else will read zero.
ALL references both channels simultaneously, comma separated.
BYTE references both channels simultaneously as a single byte, with channel A in bit 0.


Aber mein RPi sagt mir

ZitatUnknown argument sensed.A, choose one of PIO.A PIO.B address alias family id power type


Oder hab ich was übersehen?

VG
Ralf

Martin Fischer

Zitat von: Tobias schrieb am Do, 10 Januar 2013 13:04Hi,
ist soetwas wie die VFUNCTION in OWAD/OWMULTI verfügbar?
Der DS2450 liefert zb. nur Volt zurück und daraus muss ich zb. einen Prozentwert (Bodenfeuchte) ausrechnen

noch nicht.. kommt aber noch..

gruss martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Martin Fischer

Zitat von: dougie schrieb am Do, 10 Januar 2013 14:49Unknown argument sensed.A, choose one of PIO.A PIO.B address alias family id power type

sensed.[A|B] fehlt.. ich trags nach... morgen dann via update..

gruss
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Dr. Boris Neubert

Zitat von: dougie schrieb am Do, 10 Januar 2013 14:49(1) In der commandref taucht die folgende Zeile bei OWDevice zwei mal auf:

2413 1-Wire Dual Channel Addressable Switch


gefixt.

BN
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dr. Boris Neubert

Zitat von: dougie schrieb am Do, 10 Januar 2013 07:53Benötigt man ein IODev für 1-Wire Devices, wenn es mehrere OWServer in der Konfiguration gibt?
Aktuell suchen sich alle Devices "ihren" Server laut LogFile ganz automatisch und legen das IODev selber an, aber im PullDownMenu des Devices fehlt IODev als Option.

Man benötigt es nicht, weil sich das OWDevice dem zuletzt definierten OWServer anschließt. Habe das Attribut aber der Vollständigkeit ergänzt.

Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dr. Boris Neubert

Zitat von: dougie schrieb am Do, 10 Januar 2013 13:25Ich glaube mir ist noch was aufgefallen: wenn bei laufendem fhem ein OWServer abhanden kommt, hängt sich fhem auf.

Ich habe mir den Code in OWNet.pm angesehen und ich kann nicht ausschließen, daß es bei einem Verbindungsabbruch zu einem Hänger in einem System Call kommt. Hier auf die Suche zu gehen mag ich mir nicht antun.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

dougie

Zitat von: Dr. Boris Neubert schrieb am Do, 10 Januar 2013 20:54Ich habe mir den Code in OWNet.pm angesehen und ich kann nicht ausschließen, daß es bei einem Verbindungsabbruch zu einem Hänger in einem System Call kommt. Hier auf die Suche zu gehen mag ich mir nicht antun.

Viele Grüße
Boris

Damn it... muss ich versuchen anders abzufangen. Aber danke für's Nachsehen anyway!!!

VG
Ralf

erwin

Hi Martin, Boris,...

das Problem mit den doppelten Logeinträgen hab ich auch....
Noch komischer ist's nach dem gestrigen update, seither sind die Values unterschiedlich...


DEF 10.67C6697351FF 120
IODev my_OWServer
NAME my_OWDevice
NR 39
STATE temperature: 79.5141
TYPE OWDevice

Readings
state temperature: 79.5141 2013-01-12 15:33:06
temperature 99.61 2013-01-12 15:33:06


Was ich bisher gefunden habe:
1) Das Problem ist nicht auf OWDevice beschränkt. Es tritt auch bei OWTERM und auch bei FHT auf
2) Es tritt nur bei reading temperature auf ???
3) besser: es tritt nur auf wenn ein reading name / value exakt gleich nach reading state kopiert wird.
   das ist bei OWTERM, OWDevice und FHT (measured-temp) der Fall.
   Wenn ich den code richtig verstehe, wird dann auch für reading state ein event getriggered,
   der völlig gleich aussieht wie der event für das reading temperatue.
   damit funktionieren die filelog regex <device>:temperature.* natürlich nicht !
   da hab ich zumindest soo interpretiert (mit hilfe des event-monitors)...
l.g. erwin


 

FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Martin Fischer

hallo erwin,

> das Problem mit den doppelten Logeinträgen hab ich auch....

komischweise konnte ich das bei mir während der entwicklung gestern nicht nachstellen. aber
boris hat sich das schon auf die todo genommen.

mein verdacht war gestern:
es fehlte in OWDevice eine routine, die beim löschen eines device selbiges aus der liste der
definierten devices austrägt und vorallem auch die internen timer löscht.

mir ist das nämlich aufgefallen als ich gestern ein testdevice gelöscht hatte und trotzdem
weiterhin fleissig logeinträge im definierten intervall eingingen. die fehlene routine habe
ich aber gestern hinzugefügt und boris meinen "verdacht" mal weitergegeben.

> Noch komischer ist's nach dem gestrigen update, seither sind die Values unterschiedlich...

auch das ist komisch und trat (zumindest gestern) nicht auf. da jedoch die funktion für die
event in einer zentralen funktion innerhalb von fhem liegen und du schreibst, das es auch
bei anderen "nicht" OWDevice modulen auftritt, müssen wir uns das mal mit rudi gemeinsam ansehen.
vielleicht hat das auch was mit der umstellung des "state" zu tun.

> Wenn ich den code richtig verstehe, wird dann auch für reading state ein event getriggered,
> der völlig gleich aussieht wie der event für das reading temperatue.
> damit funktionieren die filelog regex <device>:temperature.* natürlich nicht !

ja, ist mir gestern auch aufgefallen. das hängt mit der neuen behandlung von state zusammen.
da sollte rudi nochmal ran, da ich das auch etwas "unglücklich" zu parsen finde.

gruss martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

rudolfkoenig

> ... Es tritt auch bei OWTERM und auch bei FHT auf

Da mich Martin auf diese Diskussion aufmerksam gemacht hat: stimmt, FHTs loggen neuerdings measured-temp zweimal.
Ursache war der Aufruf von:

readingsBulkUpdate($def, "state", "measured-temp: $val");

in FHT.pm, nachdem vorher fuer "measured-temp" auch ein readingsBulkUpdate aufgerufen wurde. Meine Loesung (getestet & eingecheckt):

readingsBulkUpdate($def, "state", "measured-temp: $val", 0);

damit wird fuer diesen zweiten Aufruf kein Event generiert. Vmtl. muss sowas auch in den anderen betroffenen Modulen eingebaut werden.

Dr. Boris Neubert

Zitat von: rudolfkoenig schrieb am So, 13 Januar 2013 10:46>

readingsBulkUpdate($def, "state", "measured-temp: $val", 0);

damit wird fuer diesen zweiten Aufruf kein Event generiert. Vmtl. muss sowas auch in den anderen betroffenen Modulen eingebaut werden.

Ich schlage vor, in readingsBulkUpdate ein
$changed= 0 unless defined($changed);
an den Anfang zu setzen. Dadurch braucht man keine drei Zustände (undef, 0, 1) im restlichen Code zu berücksichtigen

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

erwin

Hi Rudolf,

danke für den Fix, funktioniert perfekt!

Für die anderen Module verwende ich als temp. fix :

attr <device> event-on-update-reading temperature


damit wird nur für temperature ein event generiert/geloggt - und nicht für state...

Danke auch an Boris und Martin für die großartigen Module!

l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

dougie

Frage:

Ist IODev jetzt eigentlich ein Setting oder ein Attribut? :-)


(siehe Anhang / see attachement)