COC am Raspberry Pi flashen

Begonnen von pp, 01 Juli 2017, 21:01:00

Vorheriges Thema - Nächstes Thema

pp

Guten Abend,

erst einmal "Hallo  :)". Ich bin neu im Forum. Seit etwa einem halben Jahr beschäftige ich mich mit FHEM. Nach meinen theoretischen Versuchen mit Dummies würde ich nun gern mit der Praxis beginnen. Für meinen Raspberry Pi 3 habe ich mir folgendes COC gekauft:

http://busware.de/tiki-index.php?page=COC

FHEM habe ich auf einem komplett neu aufgesetzten Raspbian Jessie Lite installiert (https://debian.fhem.de/) und anschließend gemäß Wiki das COC in Betrieb genommen (https://wiki.fhem.de/wiki/FHEM_auf_Raspberry_PI_mit_COC_betreiben#COC_in_Betrieb_nehmen). In FHEM erhalte ich anschließend folgende Ausgabe zum COC:

Zitat












Internals
CMDS
Clients:FS20:FHT.*:KS300:USF1000:BS:HMS: :CUL_EM:CUL_WS:CUL_FHTTK:CUL_HOERMANN: :ESA2000:CUL_IR:CUL_TX:Revolt:IT:UNIRoll:SOMFY: :STACKABLE_CC:TSSTACKED:STACKABLE:CUL_RFR::CUL_TCM97001:CUL_REDIRECT:
DEF/dev/ttyAMA0@38400 1234
DeviceName/dev/ttyAMA0@38400
FHTID1234
NAMECOC
NR21
PARTIAL
STATEopened
TYPECUL
initStringX21

Gebe ich in FHEM den Befehl "get COC raw V" ein, um die aktuelle Firmware zu ermitteln, erhalte ich folgende Ausgabe:

ZitatCOC raw => No answer

Ich gehe deshalb davon aus, dass keine Firmware vorhanden ist und ich sie deshalb flashen muss (https://wiki.fhem.de/wiki/COC_am_Raspberry_Pi_flashen). Leider bekomme ich hier beim letzten schritt eine Fehlermeldung:

Zitatroot@raspberrypi:/home/pi# avrdude -p atmega1284p -P /dev/ttyAMA0 -b 38400 -c avr109 -U flash:w:/tmp/COC.hex

Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding

Bislang ist mir nicht bewusst, was ich falsch gemacht habe. Gibt es hier irgendeinen Ansatz? Ein Punkt macht mich etwas stutzig in der Dokumentation:

ZitatDen COC zurücksetzen und folgendes (Zeile für Zeile!) ausführen:
if test ! -d /sys/class/gpio/gpio17; then echo 17 > /sys/class/gpio/export; fi
if test ! -d /sys/class/gpio/gpio18; then echo 18 > /sys/class/gpio/export; fi
echo out > /sys/class/gpio/gpio17/direction
echo out > /sys/class/gpio/gpio18/direction
echo 0 > /sys/class/gpio/gpio18/value
echo 0 > /sys/class/gpio/gpio17/value
sleep 1
echo 1 > /sys/class/gpio/gpio17/value
sleep 1
echo 1 > /sys/class/gpio/gpio18/value

Den Code führe ich Zeile für Zeile aus, aber was konkret bedeutet hier "den COC zurücksetzen"? Hätte ich vor dem Ausführen der Codezeilen noch etwas anderes machen müssen, um den COC zurückzusetzen?

Für jegliche Hilfe bedanke ich mich Voraus und wünsche einen schönen Samstagabend!

pp

Reinhart

#1
Hallo,

du musst diesen Code in der Startrotine ( /etc/init.d/fhem ) vor dem start von Fhem ausführen lassen. D.h. diese Startdatei editieren und den Code einbauen, so habe ich es gemacht.

#!/bin/sh
# description: Start or stop the fhem server
# Added by Alex Peuchert

### BEGIN INIT INFO
# Provides:             fhem.pl
# Required-Start:       $local_fs $remote_fs
# Required-Stop:        $local_fs $remote_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    FHEM server
### END INIT INFO

set -e
cd /opt/fhem
port=7072

case "$1" in
'start')
echo "resetting 868MHz extension..."
if test ! -d /sys/class/gpio/gpio17; then echo 17 > /sys/class/gpio/export; fi
if test ! -d /sys/class/gpio/gpio18; then echo 18 > /sys/class/gpio/export; fi
echo out > /sys/class/gpio/gpio17/direction
echo out > /sys/class/gpio/gpio18/direction
echo 1 > /sys/class/gpio/gpio18/value
echo 0 > /sys/class/gpio/gpio17/value
sleep 1
echo 1 > /sys/class/gpio/gpio17/value
sleep 1
        echo "Starting fhem..."
        perl fhem.pl fhem.cfg
        RETVAL=$?
        ;;
'stop')
        echo "Stopping fhem..."
        perl fhem.pl $port "shutdown"
        RETVAL=$?
        ;;
'status')
        cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
        if [ "$cnt" -eq "0" ] ; then
                echo "fhem is not running"
        else
                echo "fhem is running"
        fi
        ;;
*)
        echo "Usage: $0 { start | stop | status }"
        RETVAL=1
        ;;
esac
exit $RETVAL


Dann Fhem neu starten.
cd /etc/init.d
sudo ./fhem stop
sudo ./fhem start


Nun sollst du sehen, "resetting 868MHz extension..."

pi@raspberrypi:~ $ cd /etc/init.d
pi@raspberrypi:/etc/init.d $ sudo ./fhem start
resetting 868MHz extension...
Starting fhem...
pi@raspberrypi:/etc/init.d $


LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

pp

Hallo Reinhart,

das hatte ich bereits so in der Startroutine, wie in der Doku beschrieben.

Leider liegt es also nicht daran.

Reinhart

#3
was sagt den das Log wenn du Fhem neu startest?

2017.07.02 09:41:43 3: Opening COC device /dev/ttyAMA0
2017.07.02 09:41:43 3: Setting COC serial parameters to 38400,8,N,1
2017.07.02 09:41:43 3: COC: Possible commands: mBbCFiAZGMYRTVWXef*ltux
2017.07.02 09:41:43 3: COC device opened


läuft die Initialisierung so wie hier ohne Fehler durch?

und hast du diese Einstellungen bei dir so durchgeführt, speziell was die serielle Schnittstelle ( ttyAMA0.service ) betrifft?
RPI3 + JESSIE:

add to:
/boot/config.txt
dtoverlay=pi3-miniuart-bt

change:
/boot/cmdline.txt
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

commands to issue:
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service
sudo reboot


This modules uses Low-Level? RESET pin. To enable those you must pull RESET HIGH by doing:
sudo echo 22 > /sys/class/gpio/export
sudo echo out > /sys/class/gpio/gpio22/direction
sudo echo 1 > /sys/class/gpio/gpio22/value

einmal ausführen!

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

pp

Hallo Reinhart,

alle Einstellungen habe ich so gemacht, eben auch noch einmal überprüft.

Mein Log sieht leider anders aus:

Zitat2017.07.02 10:03:16 3: Opening COC device /dev/ttyAMA0
2017.07.02 10:03:16 3: Setting COC serial parameters to 38400,8,N,1
2017.07.02 10:03:25 1: Cannot init /dev/ttyAMA0, ignoring it (COC)

Reinhart

ja, da hast du ein Problem mit der seriellen Schnittstelle, scheint anderwärtig belegt zu sein.

sicher, dass die /boot/cmdline.txt entsprechend modifiziert wurde?
Nicht das so was ähnliches drinnen steht:
console=ttyAMA0,115200

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

pp

Meine /boot/cmdline.txt:

Zitatdwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

Kann ich irgendwie rausfinden, durch was die Schnittstelle belegt ist?

Reinhart

wenn der Service wie oben beschrieben gestoppt wurde sollte das passen, auch deine cmdline.txt passt so.
sudo systemctl disable serial-getty@ttyAMA0.service

Ich habe zwar den Raspi2 aber so wie bei dir mit Jessie. Ebenso habe ich noch das Vorgängermodell vom COC.
Aber dein Log sagt eindeutig, das er die Schnittstelle nicht initialisieren kann und somit geht alles weitere nicht.
Cannot init /dev/ttyAMA0, ignoring it (COC)

Kannst ja sonst per Mail bei Busware noch einmal nachfragen oder befragst noch Google intensiv.

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Reinhart

#8
meine cmdline.txt war ursprünglich so:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=3a20a0ff-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

und da habe ich "console=serial0,115200" gelöscht.

dwc_otg.lpm_enable=0 console=tty1 root=PARTUUID=7a8e99cb-01 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait rootdelay=5

sieht dann so aus, außerdem habe ich die root auf SSD ausgelagert.

Schau vielleicht noch mal in die /etc/inittab ob hier noch wo die Console auf die serielle definiert wird.
#Spawn a getty on Raspberry Pi serial line
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100


LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

master_reset29a

Hallo pp, Hallo Reinhart,

konnte das Problem gelöst werden? Ich währe sehr dankbar einen Lösungweg zu finden, habe das selbe Problem  :(

Wollte eigentlich über die Weihnachtsferien gemütlich FHEM auf neuem RasPi 3 Model B Rev 1.2 installieren.
Habe mich selbst beschenkt und bei busware den 2017er COC (PIM-CC1101 an PIGATOR Modul) bestellt, da ich die USB Ports noch freihalten wollte. So der Plan ... :)

Operating System: Raspbian GNU/Linux 9 (stretch)
Kernel: Linux 4.9.78-v7+

FHEM: fhem.pl 16017 2018-01-27 22:06:08Z rudolfkoenig
   fhemweb.js  15850 2018-01-11 22:04:01Z rudolfkoenig

Diverse Neuinstallationen und gefühlte 3000 mögliche Wege später taucht der COC leider immer noch in FHEM so auf:
2018.02.01 23:37:44 3: Opening CSM device /dev/ttyAMA0
2018.02.01 23:37:44 3: Setting CSM serial parameters to 38400,8,N,1
2018.02.01 23:37:53 1: Cannot init /dev/ttyAMA0, ignoring it (CSM)

Das Thema COC ist sehr schlecht zu googlen, es bestehen jede Menge Anleitungen, die sich auf Raspi 1 und 2 oder eine alte Distribution beziehen ohne das zu erwähnen.  >:(

Selbst busware hat zum Thema Installation auch nur weiter Verwirrung gestiftet.
Kann mir jemand sagen, ob ich nun mit GPIO22 und 27 flashen muss oder mit GPIO 17 und 18?
Und was mit der Aussage aus der FhemWiki gemeint ist: "Zuerst den COC zurücksetzen und dann ... ausführen"?
Muss ich GPIO22 auf 1 schalten? Soll dieser dann als Ausgang permanent 1 bleiben oder bedeutet hier Reset kurzzeitig auf 0 setzen? Dachte, der CC1101 ist aktiv bei GPIO22=1 da Low-Level-Reset?

Bin für alle Ratschläge dankbar und werde nach erfolgreicher Lösung einen FhemWiki Eintrag darüber verfassen.

Hätte nie gedacht, dass mich dieses Thema so lange beschäftigt ...

Gruß

Michael

Reinhart

Hallo,

habe in der Zwischenzeit ja auch den COC auf einen Raspi3 übersiedelt und habe folgende Konfiguration.

#!/bin/sh
# description: Start or stop the fhem server
# Added by Alex Peuchert

### BEGIN INIT INFO
# Provides:             fhem.pl
# Required-Start:       $local_fs $remote_fs
# Required-Stop:        $local_fs $remote_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    FHEM server
### END INIT INFO

set -e
cd /opt/fhem
port=7072

case "$1" in
'start')
echo "resetting 868MHz extension..."
if test ! -d /sys/class/gpio/gpio17; then echo 17 > /sys/class/gpio/export; fi
if test ! -d /sys/class/gpio/gpio18; then echo 18 > /sys/class/gpio/export; fi
echo out > /sys/class/gpio/gpio17/direction
echo out > /sys/class/gpio/gpio18/direction
echo 1 > /sys/class/gpio/gpio18/value
echo 0 > /sys/class/gpio/gpio17/value
sleep 1
echo 1 > /sys/class/gpio/gpio17/value
sleep 1
        echo "Starting fhem..."
        perl fhem.pl fhem.cfg
        RETVAL=$?
        ;;
'stop')
        echo "Stopping fhem..."
        perl fhem.pl $port "shutdown"
        RETVAL=$?
        ;;
'status')
        cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
        if [ "$cnt" -eq "0" ] ; then
                echo "fhem is not running"
        else
                echo "fhem is running"
        fi
        ;;
*)
        echo "Usage: $0 { start | stop | status }"
        RETVAL=1
        ;;
esac
exit $RETVAL

so starte ich FHEM in /etc/init.d/FHEM, also nur gpio17 + 18 exportieren.

dtparam=audio=on
enable_uart=1
program_usb_boot_mode=1
dtoverlay=pi3-miniuart-bt

so sieht mein config.txt aus

dwc_otg.lpm_enable=0 console=tty1 root=PARTUUID=b2fd9059-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

und das ist meine cmdline.txt (ignoriere die PARTUUID, das ist meine SSD)

Ich habe aber allerdings noch einen älteren COC.

LG
Reinhart

FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

master_reset29a

Hallo Reinhart,

Danke für deine Antwort auf den 2674. sten Post eines Newbies zum Thema "busware & CUL"! ::) ::)

2, 3 Zeilen mehr Input von Seiten busware würden einige Threads hier erübrigen.
Schade, da es ja Leute aus Deutschland sind und wir Ihre Anleitung in Muttersprache eigentlich vertsehen sollten.
Hab mich jetzt nur die letzten Wochen schwer getan, da ich sowohl in FHEM (hab zwar schon vor nem halben Jahr das Einsteiger pdf gelesen) wie auch im Umgang mit dem RaspberryPi ein Neuling bin.
Aber Hey, ich habs noch nicht aufgegeben*  ;D

Hab mal alles bisher versuchte so stehen lassen, und probiert dir zu folgen.
Folgende Unterschiede haben sich ergeben da ich das 2017er Model des COCs (PIM-CC1101 auf PIGATOR) habe:
Da FHEM bei mir als Dienst fhem.service läuft, habe ich den Reset in /etc/rc.local gesetzt:
if test ! -d /sys/class/gpio/gpio22; then sudo echo 22 > /sys/class/gpio/export; fi
sudo echo out > /sys/class/gpio/gpio22/direction
sudo echo 1 > /sys/class/gpio/gpio22/value


die /boot/config.txt haben wir dann ja beide wieder gleich:
dtparam=audio=on
enable_uart=1
# program_usb_boot_mode=1
dtoverlay=pi3-miniuart-bt


ich habe nur program usb auskommentiert, da ich nicht weiss, wofür du das gesetzt hast.
Wegen usb scan in Fhem?

Die cmdline.txt habe ich gleich nur auf das Standardverzeichnis mmk... verweisend.

Reboot

Und mal am Telnet Port gelauscht:
echo "list" | nc localhost 7072

Type list <name> for detailed info.

Global:
  global               (no definition)

CUL:
  COC                  (Initialized)

FHEMWEB:
  WEB                  (Initialized)
  WEB_192.168.178.31_55287 (Connected)
  WEBphone             (Initialized)
  WEBtablet            (Initialized)

eventTypes:
  eventTypes           (active)

notify:
  initialUsbCheck      (2018-02-03 02:21:44)

FileLog:
  Logfile              (active)

allowed:
  allowed_WEB          (validFor:WEB)
  allowed_WEBphone     (validFor:WEBphone)
  allowed_WEBtablet    (validFor:WEBtablet)
  allowed_telnetPort   (validFor:telnetPort)

autocreate:
  autocreate           (active)

telnet:
  telnetPort           (Initialized)
  telnetPort_127.0.0.1_32852 (Connected)


Initialized! Ich werd wahnsinnig!!!

echo "list COC" | nc localhost 7072
Internals:
   CMDS       mbCFiAZOGMKbRTVWXefltux
   Clients    :FS20:FHT.*:KS300:USF1000:BS:HMS: :CUL_EM:CUL_WS:CUL_FHTTK:CUL_HOERMANN: :ESA2000:CUL_IR:CUL_TX:Revolt:IT:UNIRoll:SOMFY: :STACKABLE_CC:TSSTACKED:STACKABLE:CUL_RFR::CUL_TCM97001:CUL_REDIRECT:
   DEF        /dev/ttyAMA0@38400 4624
   DeviceName /dev/ttyAMA0@38400
   FD         10
   FHTID      4624
   NAME       COC
   NR         92
   PARTIAL
   STATE      Initialized
   TYPE       CUL
   VERSION    V 1.67 CSM868
   initString X21
   MatchList:
     1:USF1000  ^81..(04|0c)..0101a001a5ceaa00....
     2:BS       ^81..(04|0c)..0101a001a5cf
     3:FS20     ^81..(04|0c)..0101a001
     4:FHT      ^81..(04|09|0d)..(0909a001|83098301|c409c401)..
     5:KS300    ^810d04..4027a001
     6:CUL_WS   ^K.....
     7:CUL_EM   ^E0.................$
     8:HMS      ^810e04......a001
     9:CUL_FHTTK ^T[A-F0-9]{8}
     A:CUL_RFR  ^[0-9A-F]{4}U.
     B:CUL_HOERMANN ^R..........
     C:ESA2000  ^S................................$
     D:CUL_IR   ^I............
     E:CUL_TX   ^TX[A-F0-9]{10}
     F:Revolt   ^r......................$
     G:IT       ^i......
     H:STACKABLE_CC ^\*
     I:UNIRoll  ^[0-9A-F]{5}(B|D|E)
     J:SOMFY    ^Y[r|t|s]:?[A-F0-9]+
     K:CUL_TCM97001 ^s[A-F0-9]+
     L:CUL_REDIRECT ^o+
     M:TSSTACKED ^\*
     N:STACKABLE ^\*
   READINGS:
     2018-02-03 02:21:44   cmds             m b C F i A Z O G M K b R T V W X e f l t u x
     2018-02-03 02:21:44   state           Initialized
Attributes:


Ist das denn jetzt nun die culfw oder noch die busware FW?

Morgen wird geflasht ...

Vielen Dank für dein Input, Reinhart!

MfG

Michael