1wire auf Raspberry direkt auf GPIO4 mit w1-gpio-Modul

Begonnen von Punkt, 15 Februar 2013, 22:51:04

Vorheriges Thema - Nächstes Thema

Patrick

ja, "sollte" es eigentlich sein (sollte ist ein ANfänger sollte)

OK, hab jetzt noch nen Neustart des Raspberry gemacht, jetzt scheint es wieder zu gehen, sorry zu voreilig gewesen...

ajoreis

Hallo,

ich habe ad Modul auch bei mir eingebaut und bekomme folgene Fehler:

2013.03.03 20:31:30 1: reload: Error:Modul 58_GPIO4 deactivated:
 Global symbol "$readingFnAttributes" requires explicit package name at ./FHEM/58_GPIO4.pm line 42, <$fh> line 55.

2013.03.03 20:31:30 0: Global symbol "$readingFnAttributes" requires explicit package name at ./FHEM/58_GPIO4.pm line 42, <$fh> line 55.

2013.03.03 20:31:30 1: configfile: Cannot load module GPIO4

Kann mir jemand einen Tip geben was falsch ist.

Ich habe das aktuelle Modul genomen und auch das Patch ausgeführt, der Sensor läuft, wenn ich testhalber heraus nehmen bleibt der fhem beim starten stehen.

Hier mein Eintag in der fhem.cfg:
#Raspbarry-pi GPio4 Busmaster
define Wohnzimmer GPIO4 BUSMASTER

Danke für eine kleine Info

Olaf

fladdy

Das hört sich für mich danach an, als sei FHEM nicht auf dem letzten Stand.
Hast Du mal ein update durchgeführt?

ajoreis

version Fhem 5.3 (DEVELOPMENT), $Id: fhem.pl 1996 2012-10-20 07:11:56Z rudolfkoenig $

Sollte das nicht der aktuelle stand sein ?

fladdy

Nee, ich glaube, da musst Du nochmal 'ran :-)


version Fhem 5.3 (DEVELOPMENT), $Id: fhem.pl 2835 2013-03-01 11:09:18Z rudolfkoenig


Zitat von: ajoreis schrieb am So, 03 März 2013 20:50version Fhem 5.3 (DEVELOPMENT), $Id: fhem.pl 1996 2012-10-20 07:11:56Z rudolfkoenig $

Sollte das nicht der aktuelle stand sein ?

fladdy

So geht's: (Ich habe nur "telnet localhost 7072" und "update" eingegeben)


pi@raspberrypi ~ $ telnet localhost 7072
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.


SecurityCheck:

WEB,WEBphone,WEBtablet has no basicAuth attribute.
telnetPort has no password/globalpassword attribute.

Restart fhem for a new check if the problem is fixed,
or set the global attribute motd to none to supress this message.

fhem> update

Saving statefile: done

Backup:

backup done: FHEM-20130303_205835.tar.gz (11333692 Bytes)

7 file(s) have been updated:
==> 2013-03-03 07:45:22 FHEM/00_FBAHA.pm
==> 2013-03-03 07:45:22 FHEM/10_ZWave.pm
==> 2013-03-02 07:45:16 FHEM/30_HUEBridge.pm
==> 2013-03-02 07:45:16 FHEM/31_HUEDevice.pm
==> 2013-03-03 07:45:22 FHEM/73_PRESENCE.pm
==> 2013-03-03 07:45:23 docs/commandref.html
==> 2013-03-03 07:45:23 docs/commandref_DE.html

Update completed!
fhem>



ajoreis

Super Besten Dank

jetzt klappt es, so jetzt mache ich Feierabend

Nochmals DANK

RoBue

Hi fladdy u.a.

auch ich bin mit dem GPIO4-Modul und RPi eingestiegen,
um meine u.a. 1-Wire-Slaves (Clones) zu testen.

-> Link

Die Sache läuft ganz gut. Danke für das Modul, fladdy!

Mir ist es inzwischen gelungen, neben meinen Clones
auch noch den DS2423 in das Modul einzubinden.


(siehe Anhang / see attachement)


Besteht Interesse an dem Code?

Könntest Du mal drübergehen?

Ich könnte mir vorstellen, auch noch den DS2408 einzubinden.
(Leider fehlen den Kernel-Modulen z.B. der DS2450, DS2413, ...
Hätte da jemand Lust, mit mir das zu ändern?
C-Kenntnisse wären wichtig.

Liebe Grüße,
RoBue

fladdy

Cool!

Leider habe ich momentan und auch in naher Zukunft keine Zeit, mich um das Modul zu kümmern. Daher habe ich auch nie versucht, das von contrib in die Produktion zu überführen. Möchtest Du Deine Änderungen nicht einfach selber einchecken und die Wartung des Moduls übernehmen?

Grüße
Fladdy

RoBue

Hi fladdy und co,

jetzt bin ich einen großen Schritt weiter!
Der DS2408 ist nun drin ...


(siehe Anhang / see attachement)


... aber bisher nur "passiv,
d.h. ich kann die Werte auslesen.
Hier der Code für den Sensor:


sub GPIO4_Get($)
...        
# DS2408-Sensor, ID: 0x29
elsif ($family eq "29") {
my $datastring="";
my $ds2408_datafile="/sys/bus/w1/devices/$hash->{DEF}/output";
open(DS2408_READ,"dd if=$ds2408_datafile bs=1 count=1 2> /dev/null | hexdump |");
$datastring=<DS2408_READ>;
close DS2408_READ;
$datastring=substr($datastring, 10, 2);
my $data_bin=sprintf "%008b", hex ($datastring);
my @pio=split("",$data_bin);
readingsBeginUpdate($hash);
readingsBulkUpdate($hash,"state","8xPIO: $data_bin");
my $j = 7;
for (my $i=0; $i<8; $i++) {
$j=7-$i;
readingsBulkUpdate($hash,"pios.$i",$pio[$j]);
}
readingsEndUpdate($hash,1);
}
...


Kann mir nun jemand auf die Sprünge helfen,
das Ganze aktiv zu steuern,
also die Dinger (PIOs) auch zu schalten?
Was muss dafür in den Code noch rein?
Es gibt darin bisher keine "set"-Routine, die ich als Vorlage nutzen kann.
Die PIOs selbst kann ich ansprechen (bash), aber wie läuft das unter FHEM?

Liebe Grüße,
RoBue

PS: Es reicht evtl. auch ein Link/Hinweis auf ein ähnliches Perl-Modul etc.

RoBue

Hi Leute,

in diesem Thread läuft eine Diskussion zum gleichen oder ähnlichen Thema (RPi und GPIO4):

-> Link

(nur zur Info)

RoBue

KölnSolar

#26
Ich habe das Modul auf BlockingCall angepasst, so dass es jetzt keine Probleme mehr als FHEM-Bremse macht. Ich hatte Freezes von bald 10 Sek. und nun schnurrt FHEM wie ein Kätzchen.

Basis war (glaub) ich die Version von RoBue aus dem hiesigen Thread.
Grüße Markus
Edit: habs erst einmal wieder rausgenommen, weil es wohl Probleme mit der Aktualisierung gibt  :-\
Edit2: Sorry an denjenigen, der bereits runtergeladen hat, bevor mir der Fehler aufgefallen war  :-[ Mir war nicht klar, dass im BlockingCall keine events geschrieben werden, wohl aber die Logeinträge generiert werden  ???
Ist nun korrigiert. Aber bitte ausgiebig testen, bevor ihr eure Heizung oder sonstige lebenswichtige Dinge produktiv steuert ! Ich musste dann doch ne ganze Menge am Code ändern, so dass sich leicht Tippfehler eingeschlichen haben können.
Edit3: Anhang wg. neuer Version gelöscht
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

KölnSolar

#27
zwischenzeitlich war mir aufgefallen, dass beim Wechsel zum Detailsview ein get ausgeführt wird, welches immer noch blockierte. Ich hab daher die mit dem Wechsel zur Detailsview einhergehende Aktualisierung entfernt.

Außerdem einen set-Befehl precision eingeführt. Damit lässt sich eben die precision verändern:
ZitatThe resolution of the DS18B20 is configurable (9, 10, 11, or 12 bits), with 12-bit readings the factory default state.  This equates to a temperature resolution of 0.5°C, 0.25°C, 0.125°C, or 0.0625°C.

Für die performance hat das dank meiner Umstellung auf blockingcall keine besondere Bedeutung mehr(je höher die resolution, desto länger dauert die Aktualisierung). Es kann aber hilfreich sein, wenn man events reduzieren oder keine kleinen Temp.schwankungen gelogged haben möchte.
Vorgehensweise:
Schreibberechtigung für jedermann für die entsprechende Systemdatei /sys/devices/w1_bus_master1/IDdesSensors/w1_slave setzen z.B.
sudo chmod 777 /sys/devices/w1_bus_master1/IDdesSensors/w1_slave
set sensor-device precision 9/10/11/12
um es dauerhaft zu speichern noch ein
set sensor-device precision 0
(nur für ds18b20, also family-id=28 bzw. sensor-id 28-........)
Have fun
Markus

Edit: Attachement wg. neuer Version entfernt.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

KölnSolar

Da immer wieder fehlerhafte Temperaturen(0, 85, 127) in den readings landen, habe ich ein neues Attribut faultvalues eingebaut. Dort kann man space-separiert die Werte eintragen, die dann weder ein event, noch ein reading auslösen. Hier war die Diskussion.
Tritt ein faultvalue auf, wird er bei verbose=4 gelogged.

attr mySensor faultvalues 0 85 127
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

bismosa

Hallo!

Auch wenn ich einen alten Thread ausgrabe...

Ich bin derzeit auf Fehlersuche bei meinem neuen Raspberry. Freezemon hat bei mir die meisten Einträge bei gpio4 gezeigt. Nach ein wenig Googlen bin ich auf diesen Beitrag gestoßen.
Danke! Endlich keine freezes mehr bei GPIO4.

Ich musste nach dem kopieren der Datei neben einem "shutdown restart" einmal mein "Busmaster" Device einmal neu aufrufen (einmal die DEF bestätigen).
Erst dann fing es an zu funktionieren. Vorher gab es ein paar Log-Fehlermeldungen...aber so ist es nicht schlimm.

Schön wäre es, wenn die Datei unter "contrib" ausgetauscht werden würde. Oder besser gleich mit ins Update wandern würde.  :)

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...