Hoe kan ik een send-command sturen naar de RFXtrx433E?

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 20:32
Goedemiddag,

Ik wil mijn lampen momenteel schakelen door middel van KaKu. Hiervoor heb ik een Raspberry Pi uit het stof gehaald en een pricewatch: Rfxcom RFXtrx433E USB 433.92MHz Transceiver gekocht. Nu kon ik de data al uitlezen, door middel van het RFXCMD programma.

Echter, nu wil ik ook commando's kunnen verzenden. Hiervoor zag ik het rfxsend.py bestand. Daar een functie met send. Daar moet je dan de variabelen "socket_server, socket_port en de message" in gebruiken. Nu is het probleem dat er over de message staat: "message = raw RFX message to be". Wat nu mijn vraag is: wat is de raw message?

Dit is wat ik uit het apparaat lees:
code:
1
2
3
4
5
6
7
Packettype    = Lighting2
subtype       = AC
Sequence nbr  = 9
ID            = 1348A5E decimal:20220510
Unit          = 1
Command       = On
Signal level  = 7  -64dBm


Ook krijg ik het volgende eruit:

code:
1
2
3
4
5
6
7
8
9
10
11
Received                = 0B 11 00 3A 01 34 8A 5E 01 01 0F 60
Date/Time       = 2016-11-19 17:03:12
Packet Length       = 0B
Packettype      = Lighting2
Subtype         = AC
Seqnbr          = 3A
Id                  = 01348A5E
Unitcode                = 1
Command     = On
Dim level               = 100%
Signal level        = 6


Ik heb de data op windows eruit gelezen, maar de receiver draait aan de raspberry pi.

Ik heb thinkpads' tweakblog al gevonden, maar die zegt hier niets over. Verder heeft RFXcmd helaas vrijwel geen documentatie.

Edit: Ik ben er inmiddels uit dat ik door middel van het volgende het programma moet aanroepen:
python /home/pi/rfxcmd/rfxsend.py -r message.

Echter geeft hij dan aan "Command not sent, invalid format" |:( . Dus hoe ga ik nu verder?

Er werd gevraagd wat ik wilde doen met het systeem:.
Ik ben bezig met een python programma die me verstaat als ik commando's geef. De speech recognition is inmiddels werkend en nu wilde ik ook lampen schakelen met de raspberry pi en met de stem.

Is de homey dan geen optie?
Nee, want ik wil het zelf doen, omdat ik mijn programmeerkennis in de praktijk wil brengen. Bovendien is dit waarschijnlijk een stuk goedkoper dan de Homey, Google Home, of Amazon Echo.

[ Voor 32% gewijzigd door Jantje2000 op 21-11-2016 16:03 . Reden: Even een paar dingen waar om werd gevraagd toegevoegd ]

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.

Beste antwoord (via Jantje2000 op 21-11-2016 15:58)


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22:17
Als ik het bericht '0B11003A01348A5E01010F60' test op http://pythonfiddle.com/ wordt het door test_message goedgekeurd.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Alle reacties


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22:17
Misschien staat hier iets waar je wat mee kunt.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 20:32
farlane schreef op zaterdag 19 november 2016 @ 23:46:
Misschien staat hier iets waar je wat mee kunt.
Daar had ik inderdaad ook al naar gekeken, maar daar stond hier niets over in.

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • +1 Henk 'm!

  • BasilFX
  • Registratie: Mei 2004
  • Laatst online: 20:35

BasilFX

BasilFX

Ik heb geen ervaring met RFX, maar als je in het script kijkt, dan zie je de functie test_message. Deze valideert de input. In de comments staat waar het aan moet voldoen. Zo kun je in ieder geval zien dat het een hexadecimale string moet zijn.

[ Voor 12% gewijzigd door BasilFX op 21-11-2016 07:40 ]

http://www.basilfx.net


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 20:32
BasilFX schreef op maandag 21 november 2016 @ 07:34:
Ik heb geen ervaring met RFX, maar als je in het script kijkt, dan zie je de functie test_message. Deze valideert de input. In de comments staat waar het aan moet voldoen. Zo kun je in ieder geval zien dat het een hexadecimale string moet zijn.
Dat klopt inderdaad, maar 01348A5E is bijvoorbeeld hex, terwijl dat niet wordt goedgekeurd. 0B 11 00 3A 01 34 8A 5E 01 01 0F 60 is ook hex, maar dat wordt ook niet goedgekeurd door het programma.

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • expor
  • Registratie: Juni 2005
  • Laatst online: 19:18
Je eerste byte moet de grootte van de message bevatten als ik het goed zie. In je beide voorbeelden klopt dat niet.

code:
1
2
3
4
# Check if string is the length that it reports to be
cmd_len = int( ByteToHex( message.decode('hex')[0]),16 )
if not len(message.decode('hex')) == (cmd_len + 1):
    return False

AMD 5800X3D | 16gb DDR 4 @ 3800/14 | 4070 Ti | 1TB Samsung Evo 970, 1TB Samsung Evo 860, 512MB Crucial


Acties:
  • 0 Henk 'm!

  • MikeOO
  • Registratie: Augustus 2007
  • Laatst online: 22-09 07:13
Misschien handig om te vermelden wat je wilt bereiken. Als het puur is om kaku etc te kunnen aansturen waarom dit niet via Domoticz of andere Domotica programma doen.

Die werkt prima met de RFXCom en met een paar minuten heb je dit geïnstalleerd en kun je ermee aan de slag. Draait uitstekend op een Rasp.

Domoticz - open source domotica systeem - deel 2

Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 20:32
expor schreef op maandag 21 november 2016 @ 08:09:
Je eerste byte moet de grootte van de message bevatten als ik het goed zie. In je beide voorbeelden klopt dat niet.

code:
1
2
3
4
# Check if string is the length that it reports to be
cmd_len = int( ByteToHex( message.decode('hex')[0]),16 )
if not len(message.decode('hex')) == (cmd_len + 1):
    return False
Dus welke message moet ik dan versturen? En 0B is toch de lengte van het pakket?
MikeOO schreef op maandag 21 november 2016 @ 08:16:
Misschien handig om te vermelden wat je wilt bereiken. Als het puur is om kaku etc te kunnen aansturen waarom dit niet via Domoticz of andere Domotica programma doen.

Die werkt prima met de RFXCom en met een paar minuten heb je dit geïnstalleerd en kun je ermee aan de slag. Draait uitstekend op een Rasp.

Domoticz - open source domotica systeem - deel 2
Je hebt gelijk. Ik zal het er in de Topic start bijzetten. Domoticz is echter geen optie :p

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • MikeOO
  • Registratie: Augustus 2007
  • Laatst online: 22-09 07:13
Duidelijk nu wat je er mee wilt.

Misschien heb je hier nog iets aan.
ThinkPad's Tweakblog: RFXCOM uitlezen met RFXcmd

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22:17
Als ik het bericht '0B11003A01348A5E01010F60' test op http://pythonfiddle.com/ wordt het door test_message goedgekeurd.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 20:32
farlane schreef op maandag 21 november 2016 @ 14:34:
Als ik het bericht '0B11003A01348A5E01010F60' test op http://pythonfiddle.com/ wordt het door test_message goedgekeurd.
Je hebt gelijk. Ik had per ongeluk de spaties er tussen gelaten en dat was het probleem. :D |:( :-(

Nu alleen nog even zoeken waar de socket.error 111 vandaan komt, maar dat lukt hopelijk wel.

Hartelijk dank!

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.


Acties:
  • 0 Henk 'm!

  • expor
  • Registratie: Juni 2005
  • Laatst online: 19:18
Excuus je hebt gelijk, de lengte was correct bij 0B. Overigens verwijdert de functie zelf spaties (enkele spaties, geen tabs of meerdere) dus vreemd dat het eerst niet werkte :o Maar top dat het nu werkt :)

AMD 5800X3D | 16gb DDR 4 @ 3800/14 | 4070 Ti | 1TB Samsung Evo 970, 1TB Samsung Evo 860, 512MB Crucial


Acties:
  • 0 Henk 'm!

  • Jantje2000
  • Registratie: Februari 2016
  • Laatst online: 20:32
Ja inderdaad. Ik vond het ook vreemd, maar inmiddels kan ik als ik intyp: turn on livingroom dan schakelt de lamp aan. Morgen krijg ik een USB naar 3,5 mm waarna ik kan maken dat hij dat doet als ik turn on livingroom zeg.

De wet van Murphy: Alles wat fout kan gaan zal fout gaan.

Pagina: 1