FB Betty in FHEM einbinden

Begonnen von KölnSolar, 16 März 2017, 09:06:18

Vorheriges Thema - Nächstes Thema

retikulum

Hey, ich hab auch noch eine irgendwo. Bin dabei [emoji111]

Gesendet mit Tapatalk


Telekatz

Zitat von: KölnSolar am 17 März 2017, 13:39:08
Nur weil ich dachte, dass die meisten "Bastler" einen Rpi besitzen, dann also möglichst viele von einer einheitlichen und funktionsfähigen Lösung profitieren würden.
Unter welchem Betriebssystem entwickelst Du ?
Ich verwende Windows. Und ich denke auch die meisten "Bastler" haben einen Windows und/oder Linux PC. Dafür gibt es die fertigen Toolchain auf Launchpad. Mit ein paar Änderungen im Makefile kompiliert auch Boop damit.


KölnSolar

Ok, dann probier ich es mal damit. Verräts Du noch die notwendigen Änderungen am Makefile.

Dann macht es sicherlich auch Sinn betty-heaven zum flashen zu nehmen, oder ? Verfügbar hier http://colibri.bplaced.net/Betty.htm

Zwischenzeitlich hab ich meinen USB-TTL-Konverter als Flashinterface hervorgekramt. Der sollte funktionieren. :)

Immer noch keiner, er ein paar Bettys loswerden möchte ?
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

Telekatz

Folgende Änderung habe ich vorgenommen:

Index: boop/trunk/Makefile
===================================================================
--- boop/trunk/Makefile (revision 60)
+++ boop/trunk/Makefile (working copy)
@@ -18,14 +18,15 @@
#####
###############################################################

-ARMBASE = /opt/toolchains/gcc-arm-none-eabi-4_9-2014q4
-INCLUDEPATH = $(ARMBASE)/include
-#LIBGCCPATH = $(ARMBASE)/lib/gcc/arm-none-eabi/4.7.3/thumb/arm7tdmi-s
-#LIBCPATH = $(ARMBASE)/arm-none-eabi/lib/thumb/arm7tdmi-s
+
+ARMBASE = F:/Tools/GNU_Tools_ARM_Embedded/5.4
+INCLUDEPATH = $(ARMBASE)/arm-none-eabi/include
+LIBPATH = $(ARMBASE)/arm-none-eabi/lib
ARMPATH = $(ARMBASE)/bin
TOOLPREFIX = arm-none-eabi-
LPCTOOL = lpctool
-OPENOCD = openocd -f betty.cfg -f interface/parport.cfg
+OPENOCDPATH = F:\Tools\OpenOCD-20160901
+OPENOCD = $(OPENOCDPATH)\bin\openocd.exe -f $(OPENOCDPATH)\share\openocd\scripts\interface\jlink.cfg -f betty.cfg

###############################################################
#####
@@ -34,17 +35,17 @@
###############################################################

CC = $(ARMPATH)/$(TOOLPREFIX)gcc
-AS = $(ARMPATH)/$(TOOLPREFIX)as
-#LD = $(ARMPATH)/$(TOOLPREFIX)ld
+AS = $(ARMPATH)/$(TOOLPREFIX)gcc
LD = $(ARMPATH)/$(TOOLPREFIX)gcc
OC = $(ARMPATH)/$(TOOLPREFIX)objcopy
OD = $(ARMPATH)/$(TOOLPREFIX)objdump
+SIZE = $(ARMPATH)/$(TOOLPREFIX)size

CPUFLAGS = -mcpu=arm7tdmi-s
OPTFLAGS = -Os
-CFLAGS = -Wall -mthumb-interwork -msoft-float
+CFLAGS = -Wall -mthumb-interwork
INC = -I$(INCLUDEPATH) -I. -Iinterrupt -Idisplay -Ikeyboard -Iaudio -Iinfrared -Iserial -Iflash -Icc1100 -Igui -Itimer -Igames -Iadc -Irtc  -Itools
-ASFLAGS = -D --gstabs -mthumb-interwork -mfpu=softfpa
+ASFLAGS = -g -I. -mthumb-interwork
#LDFLAGS = -Tlpc2220_rom.ld -Map boop.map
#LIBS = -lc -lgcc
LDFLAGS = -mthumb-interwork -nostartfiles -Xlinker -Map -Xlinker boop.map -Tlpc2220_rom.ld
@@ -122,7 +123,7 @@
$(LD) $(LDFLAGS) -L$(LIBGCCPATH) -L$(LIBCPATH) -o $@ $^ $(LIBS)

%.o: %.s
- $(AS) $(CPUFLAGS) $(ASFLAGS) -o $@ $<
+ $(CC) $(ASFLAGS) -c -o $@ $<

%.o: %.c
$(COMPILE) $(OPTFLAGS) -c -MMD -MF $(dir $<).deps/$(notdir $@) -o $@ $<
Index: boop/trunk/keyboard/keyboard.c
===================================================================
--- boop/trunk/keyboard/keyboard.c (revision 60)
+++ boop/trunk/keyboard/keyboard.c (working copy)
@@ -52,7 +52,7 @@
setBacklight(BL_AUTO); // pwm value
}

-inline char isKeyPressed (void)
+char isKeyPressed (void)
{
    return ((keys[0] != 0) || (keys[1] != 0));
}
Index: boop/trunk/keyboard/keyboard.h
===================================================================
--- boop/trunk/keyboard/keyboard.h (revision 60)
+++ boop/trunk/keyboard/keyboard.h (working copy)
@@ -188,7 +188,7 @@
void waitKeyUp(void);
void waitKeyDown(void);
/// Return 1 if any key is pressed.
-inline char isKeyPressed (void);
+char isKeyPressed (void);
signed char getNumKeyValue(void);
unsigned char getKeynum(void);


KölnSolar

#19
Danke für die Anpassungen am makefile. Wenngleich die Form als diff mir insofern Problemchen bereitete, dass ich die Zeilen einzeln per cut&paste ändern musste. Ich hoffe, ich hab da jetzt keine Fehler eingebaut  :-[ Als Dateianhang wäre das für mich und andere Amateure sicherlich einfacher zu handeln. Aber der Reihe nach ...

Erster Schritt war die Installation der Toolchain. Eigentlich ja recht einfach. Da ich bisher außer mit Arduino-IDE nicht unter Windows entwickelt habe, habe ich dann aber gleich 2mal installiert. Denn irgendwann fiel mir auf und ein, dass Win zwar Verzeichnisse vorschlägt, leider aber mit Leerzeichen, die ich dann später nicht zu maskieren wusste  :-[ Also für Nachahmer: lasst einfach die Leerzeichen weg und wählt kurze Verzeichnisnamen, denn mit dem Tablet auf der Couch wird die Tipperei in einer Konsole recht unamüsant :(

Nun noch die Boop-Sourcen auf WinDoof gebracht, makefile angepasst  und los geht's. Denkste ! Ein make kennt mein WinDoof (noch) nicht  :( Spätestens zu diesem Zeitpunkt kommt mir mein Bauchgefühl, besser auf dem Rpi zu entwickeln, wieder in den Sinn  :-\ Aber die Entscheidung ist ja gefallen. Also im Inet nach einer Lösung gesucht. Ich bin dann auf Eclipse gestoßen. Ebenfalls installiert und... Voila, ich kann ein make aufrufen, das sich aber mit Händen und Füßen gegen mich wehrt  :( Das im makefile von boops verborgene "svnversion" kennt WinDoof nun auch nicht. Außerdem fällt mir ein "include makefile.local" im makefile ins Auge, welches ich gar nicht hab.  :o Bei einem Blick ins Betty-Wiki ist mir dann aufgefallen, dass dort beschrieben ist, man solle dafür die "Musterdatei" makefile.local.WinArm kopieren. Ja, aber was steht denn da drin ? Definitionen, die ich bereits im makefile stehen hab, außer, dass dort noch auf Verzeichnisse von WinArm verwiesen wird, was ich ja bewusst nicht als Toolchain installiert habe. :o

Mit diesem Konflikt hab ich dann die Arbeiten eingestellt und mir vorgenommen Euch heute Morgen ein paar Zeilen und Fragen zu schreiben.

1. Braucht es dieses makefile.local/include überhaupt und wenn ja, was schreibe ich da für die gewählte Toolchain rein. Oder muss ich zusätzlich WinArm installieren ?
2. Woher kriege ich dieses svnversion ? Muss ich evtl. so etwas wie TortoiseSVN installieren ?

Ich bin da immer etwas vorsichtig alles Mögliche zu installieren, was sich vielleicht später rächen, weil beissen könnte  :-[

Danke&einen schönen Sonntag
Markus
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

RaspiLED

Moin,
Erstmal ne kurze Möglichkeit Lange Verzeichnisse zu kürzen:

subst z: "c:\langer Ordnername\sogar mit Leerzeichen"

Und schon gibt es z:\ ;-)
Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

KölnSolar

Das Leben kann manchmal so einfach sein, wenn man sich auskennt  :-[
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

Telekatz

1. makefile.lokal braucht man nicht unbedingt. Ist dafür gedacht, dass man lokal bestimmte Dinge wie z.B. den Pfad zur Toolchain anpassen kann, ohne das Makefile aus dem SVN Repo anpassen zu müssen.

2. Nimm das angehängte makefile und version.h, dann funktioniert es auch ohne SVN.

KölnSolar

Danke, wir nähern uns nun fast dem Ziel Aber nur fast  :(
mkdir -p $@
macht 2 Probleme. Irgendwie scheint $(1) wohl mit einem whitespace befüllt zu werden, was das make mit mkdir -p adc/ .deps abbrechen lässt. Hab da leider keinen Plan zu  :-[
Das 2. Prob. ist weniger wild aber um so überraschender. Parameter -p macht nicht, was er soll, sondern es wird ein Verzeichnis -p angelegt  :o Sowohl auf dem Laufwerk, als auch in der Registry nach dem "falschen" mkdir gesucht: negativ Rufe ich das EINZIGE mkdir aus dem eclipse-verzeichnis auf, funktioniert es richtig. Wo hat sich da welcher Geist versteckt ?

Ach so, und beim anpassen der Pfade kam mir in den Sinn nach openocd zu suchen. Ergebnis: ich musste es erst noch installieren.
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

Telekatz

Mach mal mit cmd eine Eingabeaufforderung auf und suche mit "where mkdir", ob nicht vieleicht doch irgendwo ein zweites mkdir in PATH versteckt ist.

Openocd brauchst du nur, wenn du ein JTAG zum Flashen verwendest.

RaspiLED

#25
Hihi,
auf ner Windose where? Evtl. unter cygwin, oder geht das echt?

Test:
Spannend wieder was gelernt:

C:\Windows\system32>where mkdir
C:\Program Files\WinAVR\utils\bin\mkdir.exe

C:\Windows\system32>where MKDIR
C:\Program Files\WinAVR\utils\bin\mkdir.exe

Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

Wichtel

#26
Zitat von: Bapt. Reverend Magersuppe am 17 März 2017, 08:55:06
Dieses Siemens oder auch Nokia-Kabel wurde damals (tm) verwendet als serielle Schnittstelle. Heutzutage macht man das wohl einfach über einen CH340-USB-RX-TX usw.
Wozu war eigentlich der Scart-Connector da? Im Zeitalter von HDMI ist das Ding natürlich etwas aus der Zeit gefallen, aber vielleicht ist interessante Elektronik drin.

Ganz genau das war damals meine Motivation den Text über das Siemens-Datenkabel ins Betty-wiki zu hacken.
Funktional entspricht dieses Kabel mit abgeschnittenem Stecker genau dem was man heute mit einem USB-RS232-TTL-Wandler aus Übersee bekommt, nur dass damals die echten Comports noch verbreiteter, die Handykabel öfter herumliegend und die USB-Seriell-Wandler noch etwas problematischer in der Anwendung gewesen sind.
Dazu habe ich eine kleine Platine gehäkelt, welche die Reset- und BLEN-Leitungen auf jeweils einem Dip-Schalter mit Masse brückbar macht.

P.S.: Hier der Wayback-Link zum Interface-Artikel, 10 Jahre ist es her..

http://web.archive.org/web/20121212070403/http://www.bettyhacks.com/wiki/index.php/Interfaces_PC_zu_Betty

KölnSolar

es konnten keine Dateien mit dem angegebenen muster gefunden werden  :o

also hab ich den eclipse-pfad in die path-variable eingetragen. where antwortet nun richtig, und mkdir funktioniert jetzt auch richtig :o  ;D warum auch immer.

Und make ? Nach ein paar kleineren Problemchen, die selbst durch mich behebbar waren.... läuft durch  ;D ;D ;D

Entwicklungsumgebung steht also erst einmal, Betty kann kommen  ;D

DANKE Telekatz  :-* :-* :-*
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

RaspiLED

Hi,
also heute war Weihnachten für KölnSolar und mich ;-) Soll heißen Bapt. Reverend Magersuppe hat uns aus seinem Fundus Betty FB überlassen! Vielen Dank dafür in Deine Richtung!!! Die Postfrau war übrigens super nett ;-)

Da die Entwicklungsumgebung bei KölnSolar schön eingerichtet ist, gilt es nun die richtige Flashtechnik zu entwickeln...
Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

KölnSolar

#29
Hurra, Betty mit Boop ist da  ;D  ;D ;D

Aber von Anfang an. Vielen lieben Dank an Bapt. Reverend Magersuppe , der mir 2 OVP Bettys spendiert hat. Und vielen Dank an Arnd, der mir dann die Bettys ohne Boop gebracht hat.  :-* :-* :-* Möglich, weil wir 3 in der selben Region leben.

Die Betty sieht erst mal ganz hübsch aus. Zugegeben, durch das Display etwas lang, aber wir wollen ja auch viel  ;)

Ohne Boop(wer hat nur diesen Namen erfunden  8)) kann die Betty gar nix. Man müsste erst das Scart-Funkteil mit Netzstecker anschließen. Und dann das Modem mit Funk, welches dann nach Hause telefonieren würde. Mangels eigener Stromversorgung und, dass es das zu Hause ja nicht mehr gibt, die Idee verworfen, erst einmal die Betty im Standard auszuprobieren.

Also meinen USB-TTL-Adapter an den PC gestöpselt und, man will ja nix kaputt machen, mit Betty-Heaven die Flashs als Backup auslesen. Nach kleineren Schwierigkeiten hat es dann geklappt: Schnittstelle am PC auf 9600,8,N,1 Rx an Tx, Tx an Rx, GND an GND und ein Steckkabel an Reset und eins an EINT1. Eint1 auf GND, Reset auf GND, nun geht Bettys Display aus, Reset weg von GND, EINT1 weg von GND, Backup in Betty-Heaven gewählt und schon befindet sich Bettys Original-Firmware auf dem PC.

Das gleiche nochmal und für Flash1 die bereits erstellte Boop-Firmware ausgewählt im Restore-Modus. Restore-Button und die Verlaufsanzeige von Betty-Heaven läuft. Schnell ist der Flashvorgang fertig. Batterie raus und wieder rein und schon strahlt einen Betty, nun mit Boop, an.  ;D

Schnell versteht man das Menu von Betty. Auf Kanal A ist DBOX2 voreingestellt. Nix wie ab ins Schlafzimmer und meine Alte Box eingeschaltet. Priiiima, funktioniert. Nun für den freien Kanal C den Code über lirc von Samsung für meinen TV ausgewählt. Geht auch.

In nullkommanix hab ich also schon einmal eine nette Uni-IR-FB.

Nun die nächste Stufe. Anlernen von IR-Codes. Vom TV(38kHz) völlig problemlos, ja fast idiotensicher. Jetzt wird es spannend. Wird Betty auch meine B&O(exotische 455kHz) verstehen ???? Neeeeiiiin. Fehler. Zu kurz gedrückt, zu lang gedrückt, nicht erkannt. Nur gut, dass Betty, im Gegensatz zu Alexa, (noch) nicht reden kann  :D

Bis hierhin aber trotzdem schon mal eine nette Uni-IR-Fb.

Aber das Ziel ist ja meine B&O. Ich werde mich mal mit der Frequenz bzw. lirc auseinandersetzen, um mein Ziel zu erreichen. Hoffentlich ohne einlöten neuer IR-Dioden.

Fazit: Ziel die B&O einzubinden vorerst verfehlt und mit FHEM hat das bisherige nu auch nicht wirklich etwas zu tun.

Deshalb habe ich da einen Wunsch, und bevor ich den äußere, nochmal eine Aufzählung, was Betty an Hardware mit sich bringt: IR-Sende-/Empfang-Diode, 433MHz-CC1100, s/w-Display mit Hintergrundbeleuchtung, Lautsprecher, serielles Interface, JTAG-interface, 2*NiMh-1,2V-1.000mAh Akkus und natürlich eine Tastatur.

Nun der Wunsch: wenn sich je Hardwarebaustein mindestens einer von Euch detailllierter mit dem Hardwarebaustein und Boob auseinandersetzt, hätten wir ein Entwicklungsteam, welches relativ schnell noch einiges mehr aus Betty herausholen kann, als es jetzt schon vorhanden ist:

Alarmierung/Info per 433MHz aus FHEM an Betty: blinkend, anzeigend, tönend

Steuerung von 433MHz-devices per Tastatur über FHEM

Sicherung von Datum/Uhrzeit bei Batterie leer/stromparender Betrieb/leistungsfähigere Hardware
(Betty hat die negative Angewohnheit, Datum und Uhrzeit bei Batteriewechsel zu vergessen)

Anbindung von was auch immer über die beiden einfach zugänglichen Interfaces seriell und JTAG

Und die ganz große Vision: dem CC1100 ein quasi CUL-Verhalten einzuhauchen, so dass Betty auch noch als repeater nutzbar ist

Ich beginne mit der 455kHz Funktionalität für IR und Anbindung von IT-devices, wer mag sich eines anderen Themas annehmen ?

Grüße Markus

PS: Wäre sicherlich auch nicht schlecht, wenn sich jemand in der rechtlichen Ecke umschauen würde. Wie weit dürfen wir gehen ? Code von Boop öffentlich zugänglich machen, etc...
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