Programmeren van Somfy motoren

Ik heb screens met een Somfy motor. Elke keer als ik er iets mee wil doen ben ik weer vergeten hoe het werkt. Vandaar dat ik het in deze blog opschrijf. Misschien heeft iemand anders er ook nog wat aan. Ik heb vier screens, een remote met 5 kanalen (Telis 4) en ik heb een RFXCom device (USB) waarmee ik vanaf een computer of Raspberry Pi de screens wil bedienen. Ik ga in deze blog alles resetten en vanaf ‘scratch’ instellen. Let op: het volgen van deze uitleg is op eigen risico.

De Basis

Belangrijk is het om een beetje te begrijpen hoe Somfy motoren werken. Elke motor heeft twaalf geheugenplaatsen voor bediening. In mijn geval wil ik elk screen apart kunnen bedienen met kanaal 1 t/m 4 en alle screens tegelijk met kanaal 5 (bij kanaal 5 staan alle vier de lampjes van de telis 4 aan). Hiervoor programmeer ik eerst alle screens één voor één op kanaal 1 t/m 4. Daarna selecteer ik kanaal 5 en programmeer alle screens tegelijk. Screens die je op een bepaald moment niet wilt programmeren, die haal je van de stroom af, bijvoorbeeld door de stekker uit het stopcontact te halen.

De bediening van de Telis 4 gebruikt dus twee geheugenplekken van de motor. Een voor de losse bediening en één voor de groep. Als ik later ook nog de RFXCom wil gebruiken komen daar nog geheugenplaatsen bij, zeker als ik verschillende combinaties van screens wil kunnen aansturen. Bijvoorbeeld screen apart bedienen, alle screens tegelijk, een groepje van twee screens, etc.

Fabrieksinstellingen terugzetten

Als je op een bepaald moment het geheugen van de Somfy motor leeg wilt maken dan volg je deze werkwijze. Let op: ook de richting van de motor en de limieten voor op en neer zijn hiermee gewist en moeten dus opnieuw worden ingesteld. Resetten gaat het handigste per motor, dus één voor één.

  1. Sluit de motor die je wilt resetten aan op de stroom, de rest niet.
  2. Koppel de stroom LOS voor 3 seconden
  3. Zet de stroom weer aan voor 8 seconden
  4. Koppel de stroom weer 3 seconden los
  5. Zet de stroom weer aan, de motor gaat bewegen, laat de motor die beweging afmaken! (behalve als hij te ver naar boven of beneden dreigt te gaan)
  6. Gebruik de punt van een pen en houd de programmeerknop op de achterkant van de telis 4 ingedrukt. Na een paar seconden reageert de motor (gaat kort op en neer). Houd de knop ingedrukt tot de motor weer reageert. Nu is het geheugen leeg.

De motor de eerste keer instellen (Draairichting, limieten en kanaal)

Na het terugzetten van de fabrieksinstellingen moeten verschillende zaken opnieuw worden ingesteld aan de motor. We gebruiken hierbij de Telis 4 remote. Stel dit één voor één in als je meerdere motoren hebt. Laat de motoren die je niet in stelt los van de stroom!

  1. Contact maken met de motor om deze te programmeren. Zet de remote op het kanaal dat de motor gaat bedienen en maak eerst contact met de motor door de Op en Neer knoppen tegelijk in te drukken. De motor reageert door kort op en neer te gaan.
  2. Draairichting motor.  Druk op de Op en Neer knoppen, draait de motor de verkeerde kant op? Houd de MY-knop (dat is de knop tussen Op en Neer in) ingedrukt tot de motor reageert. De richting is nu omgedraaid.
  3. Onderste positie instellen. Druk op de Neer-knop tot de screen onderaan is. De motor beweegt alleen als je de knop indrukt en stopt als je los laat. Pas op dat je niet te ver door gaat.
  4. Bovenste positie instellen. Lees dit stukje eerst helemaal, daarna pas uitvoeren! De motor staat nu in de onderste positie, dit moet je nog bevestigen door gelijktijdig op de MY-knop en de Op-knop te drukken. Als je dit doet wordt de positie vastgelegd en begint de motor direct naar boven te lopen. Als de motor bijna bovenaan is druk je op de MY-knop. De motor stopt. Je kunt nu met de Op-knop de motor voorzichtig verder omhoog doen tot hij bovenaan is. Steeds als je de knop los laat stopt de motor met bewegen. Vanuit de toppositie druk je nu op MY + Neer. De positie is vastgelegd en de motor loopt weer naar beneden. Druk op MY om dit te stoppen.
  5. Posities definitief maken. Houd de MY-knop ingedrukt tot de motor reageert (kort op en neer). De posities zijn nu vastgelegd.
  6. Programmeermodus van de motor stoppen. Druk met de punt van een pen de knop op de achterkant van de remote in. De motor reageert.
  7. Test de instelling. Controleer of de motor goed is ingesteld op dit kanaal.

De motor toevoegen aan een ander kanaal

Stel je hebt nog een andere remote waaraan je de motor wilt toevoegen. Of je wilt de motor toevoegen aan een groepskanaal, een kanaal waarmee je meerdere motoren bedient. In beide gevallen kun je dit zo doen.

  1. Zet de bestaande (oude) remote op het kanaal van de motor. Druk met de punt van een pen de programmeerknop op de achterkant van de remote in tot de motor even op en neer gaat.
  2. Kies het kanaal waar deze motor naar toe moet. Dit kan een andere remote zijn of dezelfde, bijvoorbeeld kanaal 5 op een Telis 4. Druk de programmeerknop in het de pen tot de motor op en neer gaat.
  3. Door stappen 1 en 2 te herhalen kun je meerdere motoren overzetten naar een andere remote of meerdere motoren op één kanaal zetten.

RFXCom instellen op je motoren

Zie hiervoor een andere blog over Domoticz op de Raspberry Pi.

MySQL gebruiken met MySQL Workbench

Ik gebruik graag MySQL Workbench om queries uit te voeren op mijn server. Alleen standaard kan de MySQL server niet van buiten af worden benaderd om veiligheidsredenen. Ik denk dat ik het op deze manier toch redelijk veilig heb geregeld.

Open de juiste poort op de firewall

Hoe dit gaat lees je hier. Het gaat standaard om poort 3306.

Specifiek toegang verlenen per database

In DirectAdmin kun je heel makkelijk per database aangeven welke ipadressen van buitenaf toegang hebben. Ga naar de site waar het om gaat (de User in DirectAdmin dus).

Klik op MySQL Management en klik op de database waar het om gaat.
Bij Access Hosts voeg je het ipadres toe van jouw locatie (dus wat je ziet bij https://www.whatismyip.com/).

Of voeg het toe als domeinnaam. Ga daarvoor naar een dos-box op je eigen pc en typ:

tracert 111.222.333.444 <– Het ipadres van jouw locatie

Je krijgt dan zoiets als GFTYG5434.blabla.provider.nl.

Binding

Bij mij werkte het toen nog niet.
Ik kwam er achter dat in een configuratiebestand van MySQL staat aan welk ip-adres het is gebonden.

Het gaat om het bestand /etc/my.cnf
In dit bestand staat vlak onder [mysqld]
bind-address = 127.0.0.1

Bij mij stond dit dus op Localhost en daarom lukte het me blijkbaar niet om van buitenaf op de database te komen. Ik heb daar het primaire ipadres ingevuld van mijn server.
Daarna heb ik via DA de MySQL-server gestopt en gestart. (Log in als admin, klik op service monitor en drup bij mysqld op stop en even later op start).

 

 

 

Firewall op CentOS 7

Bij mijn vorige webserver stond de firewall standaard uit. dat is natuurlijk niet zo verstandig, dus probeer ik het bij mijn huidige server aan te laten staan. Maar dat levert wel wat extra uitzoekwerk op, hier en daar. In deze blog verzamel ik de dingen die ik er over heb ontdekt. deze gaan dus specifiek over CentOS 7 en let op: maak een backup voordat je dingen probeert die ik hier opschrijf.

Status en aan/uitzetten

Om te zien of de firewall aan staat, gebruik:
systemctl status firewalld

De firewall helemaal uitzetten:
systemctl disable firewalld
systemctl stop firewalld

De firewall weer aanzetten:
systemctl enable firewalld
systemctl start firewalld

Zones

De firewall in CentOS maakt gebruik van Zones. De zone die voor mij interessant is is de Public zone. Dat is de zone waarop alle regels zijn ingesteld die voor de buitenwereld gelden. Om te zien welke poorten open staan van buitenaf:

firewall-cmd --zone=public --list-all

Poort toevoegen

  • Om een poort (bijvoorbeeld 1234) open te stellen van buitenaf:
    firewall-cmd --permanent --zone=public --add-port=1234/tcp
  • Daarna moet de firewall deze instelling ook gaan gebruiken:
    firewall-cmd --reload

Port verwijderen

  • Een poort afsluiten (bijvoorbeeld 1234) van buitenaf gaat zo:
    firewall-cmd --permanent --zone=public --remove-port=2222/tcp
  • Daarna moet de firewall deze instelling nog gaan gebruiken:
    firewall-cmd --reload

Een poort openstellen alleen voor een bepaald ipadres

Als je bijvoorbeeld MySQL wilt kunnen bereiken vanaf je thuisadres, dan moet je al in DirectAdmin je eigen ipadres toevoegen aan adressen die bij de database mogen. maar als je een firewall hebt dan ben je er dan nog niet. Een nette methode is een speciale zone aanmaken voor de locatie waar je toegang toe wilt verlenen. Je hebt dus Public, maar nu voeg je bijvoorbeeld twee zones toe: Work en Home.

  • Voeg een zone toe:
    firewall-cmd --permanent --new-zone=home
  • Reload de firewall om deze zone actief te maken:
    firewall-cmd --reload
  • Koppel een ipadres (bijvoorbeeld 1.2.3.4) aan deze zone:
    firewall-cmd --permanent --zone=home --add-source=1.2.3.4/32
  • Open nu een poort (bijvoorbeeld 1234):
    firewall-cmd --permanent --zone=home --add-port=1234/tcp

Beveiligen van DirectAdmin

DirectAdmin (DA) is een veelgebruikt beheersysteem op Linux-systemen. En terecht, want het is zeer gebruikersvriendelijk en compleet. Zeker in combinatie met Installatron. Maar in de bekendheid van DirectAdmin schuilt ook een gevaar. Eventuele kwaadwillenden (zijn die er dan?) weten hoe het systeem werkt. Daarom heb ik enkele maatregelen genomen en een paar daarvan wil ik met jullie delen. Voor alle aanpassingen geldt uiteraard dat je eerst een snapshot moet maken als extra backup.

Schakel root-access uit

Standaard wordt CentOS al geleverd zonder directe root access. Je kunt dus niet zondemeer via SSH inloggen van buitenaf, alleen via een ander account. Dus log in met een bestaand account (met weinig rechten) en gebruik het ‘su’ commando samen met een degelijk root-wachtwoord om root-access te verkrijgen. Zo vaak hoef je dankzij DirectAdmin nou ook weer niet als root in te loggen.

Gebruik sowieso nooit algemene accountnamen zoals info, mail, server oid. Maak de accountnaam al lang en specifiek en gebruik altijd een degelijk wachtwoord.

Suspend het Admin account

In DirectAdmin is er altijd een gebruiker Admin, lekker makkelijk voor hackers dat ze de naam alvast weten. Je kunt die naam niet eenvoudig wijzigen, althans ik niet. Wat ik heb gedaan is een nieuwe admin aanmaken met een naam die al bijna een wachtwoord is, met natuurlijk ook een sterk wachtwoord. Daarna heb ik de Admin van DA op suspended gezet, zorg wel dat je dit doet voordat je websites aanmaakt, of draag je websites eerst over aan de nieuwe Admin.

Schakel SSH uit voor websites die het niet nodig hebben

Of beter nog, schakel het aan voor sites die het wel nodig hebben. Ik heb dat gedaan door dat in te stellen in de standaard Reseller package. Nieuwe sites erven die package-instellingen.

Zorg dat je DirectAdmin enkel gebruikt via SSL

DirectAdmin gebruiken via SSL is erg belangrijk. Zonder SSL is het verkeer van jouw browser naar je server leesbaar door eventuele men-in-the-middle. Daarom is het slim om DirectAdmin alleen via SSL te gebruiken. Onderstaande werkwijze zorgt er ook voor dat apache, dovecot, exim en ftp via SSL gaan werken (bron).

  • maak verbinding als root (via Putty)
  • Zorg dat je voor server.domain.com jouw server-url neemt die DirectAdmin gebruikt!
  • Voer de volgende commando’s uit:
    cd /usr/local/directadmin/scripts
    ./letsencrypt.sh request server.domain.com 4096
    cd /usr/local/directadmin/conf
    perl -pi -e 's/SSL=0/SSL=1/' directadmin.conf
    echo "carootcert=/usr/local/directadmin/conf/carootcert.pem" >> directadmin.conf
    echo "force_hostname=server.domain.com" >> directadmin.conf
    echo "ssl_redirect_host=server.domain.com" >> directadmin.conf
    cd /usr/local/directadmin
    ./directadmin restart

Je kunt nu naar je server door voor het adres https:// te typen.

Zorg dat je DirectAdmin via een andere poort gebruikt dan de standaard poort

Standaard bereik je DirectAdmin via poort 2222. Het is een goed idee om een andere poort te gebruiken. Kwaadwillenden kunnen natuurlijk eenvoudig een poortscan uitvoeren en zo jouw alternatieve poort vinden, maar alle kleine beetjes helpen.

Als je net als ik CentOS 7 hebt en er is een firewall geïnstalleerd, dan is de poort aanpassen in DirectAdmin onvoldoende; de nieuwe poort zal wordt tegengehouden door de firewall. Je moet dus de nieuwe poort openzetten en later de standaard poort 2222 dichtzetten. De eerste stap gaat zo:

  • Maak contact als root (met Putty)
  • Bekijk welke poorten open staan vanaf buiten:
    firewall-cmd --zone=public --list-all
  • Voeg de nieuwe poort toe:
    firewall-cmd --permanent --zone=public --add-port=1234/tcp
    (1234 mag een andere poort zijn, die jij kiest)
  • Zorg dat de firewall deze nieuwe instellingen gaat gebruiken:
    firewall-cmd --reload

Instellen van een andere poort in DirectAdmin gaat (vreemd genoeg) het makkelijkst via DirectAdmin zelf.

  • Log in op DirectAdmin als (een) admin
  • Klik in het menu op File Editor
  • Open in het dropdownmenu ‘/usr/local/directadmin/conf/directadmin.conf’
  • Klik op Open File
  • Vul het root wachtwoord van je VPS onderaan het scherm in.
  • Zoek naar de regel ‘port=2222’, verander het portnummer, bijvoorbeeld in ‘1234’
  • Klik op Save
  • Het werkt pas wanneer DirectAdmin is herstart; klik op Home
  • Klik op Service Monitor
  • Klik op Restart op de regel van DirectAdmin
  • Binnen 1 minuut zal DirectAdmin beschikbaar zijn via de ingestelde poort.

Als je dit niet wilt doen met DirectAdmin, het kan ook met WinSCP. Bijvoorbeeld omdat je na bovenstaande actie niet meer bij je DirectAdmin kunt, bijvoorbeeld vanwege een firewall. (been there…)

  • Maak contact met je server als root met WinSCP
  • Zoek naar het bestand ‘/usr/local/directadmin/conf/directadmin.conf’
  • Pas de poort aan en sla op
  • Ga nu naar Putty en log in als root
  • Stop en start DirectAdmin:
    killall -9 directadmin
    cd /usr/local/directadmin
    ./directadmin d

Als je bij de eerste stap de nieuwe poort hebt opengezet en je hebt nu getest dat de nieuwe poort werkt, dan wil je misschien de oude poort (2222) weer netjes dichtzetten in de firewall. Dat gaat zo:

  • Sluit de oude poort:
    firewall-cmd --permanent --zone=public --remove-port=2222/tcp
  • Zorg dat de firewall deze nieuwe instellingen gaat gebruiken:
    firewall-cmd --reload
  • Test of het is gelukt:
    firewall-cmd --zone=public --list-all
    Als het goed is zie je nu de nieuwe poort wèl en de oude poort nièt in het rijtje.
  • Log in op DirectAdmin via de nieuwe poort voor een laatste controle.

PHP 7 met DirectAdmin

Als je DirectAdmin hebt, heb je wat meer mogelijkheden om zaken aan te passen door de Custom Build 2.0 versie te gebruiken. Je kunt dan bijvoorbeeld PHP 7.0 als standaard PHP installeren, maar op het moment van schrijven werkt nog lang niet alles met deze versie is mijn ervaring. Bijvoorbeeld Installatron overleeft de upgrade niet.

Welke versie van CustomBuild heb je?

  • Check dit zo:

    cd /usr/local/directadmin/custombuild
    ./build version

CustomBuild updaten/installeren

  • Maak vooraf een backup of snapshot van je server!
  • Omdat ik CentOS 7 heb, heb ik eerst deze update gedraaid:

    yum install psmisc net-tools systemd-devel libdb-devel perl-DBI xfsprogs

    Dit ging ondanks dat ik nu een verse VPS heb, toch een aantal zaken updaten.

  • Vervolgens voer je onderstaande regels uit:

    cd /usr/local/directadmin
    mv custombuild custombuild_1.x
    wget -O custombuild.tar.gz http://files.directadmin.com/services/custombuild/2.0/custombuild.tar.gz
    tar xvzf custombuild.tar.gz
    cd custombuild
    ./build

Het updaten van PHP naar 7.0

  • Als je CustomBuild 2.0 hebt (zie boven) dan kun je uitvoeren:

    ./build set php1_release 7.0

    Daarmee wordt een aanpassing gedaan in het bestand options.conf. De variabele php1_release wordt daarmee ingesteld op 7.0

  • Daarna voer je uit:

    ./build all d
    ./build rewrite_confs

    Dit duurt ongeveer een kwartiertje. DirectAdmin is nu gecompileerd met PHP 7.0.

  • Controleer of alles op je server nog naar wens werkt. Denk aan Installatron (deze doet het bij mij niet meer waardoor ik nu weer op PHP 5.5 zit), websites etc.

Installatron bij Transip

Ik wilde graag Installatron gebruiken op mijn DirectAdmin account bij Transip. Helaas kunnen zij dat nog niet leveren, dus heb ik het zelf geïnstalleerd.

Heel simpel:

  • Eerst via ssh toegang tot root account verkrijgen. Omdat je bij een behoorlijk beveiligde server nooit rechtstreeks in kunt loggen met root-credentials, doe je dat via een omweg. Dat kan door met een ander ssh-account in te loggen met bv putty, dan met ‘su’ root access verwerven (je hebt daarvoor uiteraard het root-wachtwoord nodig).
  • Dan deze drie regels uitvoeren

    wget https://data.installatron.com/installatron-plugin.sh
    chmod +x installatron-plugin.sh
    ./installatron-plugin.sh -f

    Dat is alles, Installatron zit in je DirectAdmin dashboard. Eén website aanmaken is gratis (geen licentie nodig), dus dat is al leuk.
    Voor licenties zie: https://secure.installatron.com/account/licenses

  • Als je een licentie hebt aangeschaft en op de Installatron-site je ip-adres hebt ingevoerd, zal Installatron zelf de licentie ontdekken.


Verwijderen van Installatron

Mocht het nodig zijn Installatron weer te verwijderen, dat gaat zo:

  • Verwijderen uit de GUI:

    rm -fr /usr/local/directadmin/plugins/installatron

  • Delete de kern van Installatron:

    rm -fr /usr/local/installatron
    rm -fr /var/installatron
    rm -f /etc/cron.d/installatron

  • Delete alle installatiedata (van de users, dus pas op):

    rm -fr /home/*/.installatron

Domoticz project

Ik heb een Raspberry Pi omgetoverd tot een domotica-systeem met Domoticz. De aanleiding was dat ik screens heb van het merk Somfy die met een remote dicht en open kunnen. Maar niet met mij z-wave systeem. Tenminste niet zonder de boel te verbouwen. Met Domoticz kan ik ze nu wel bedienen. Deze pagina geeft een samenvatting van wat ik heb gedaan om het werkend te krijgen.

Domotics installeren op Raspberry Pi (B)

  • Download via https://sourceforge.net/projects/domoticz/files/ de meest recente sdkaart-image en pak uit (gebruik evt 7-zip)
  • Zet deze image met Rufus op een SD-kaart, ik gebruikte een 8 GB Class 10 kaartje.
  • SD kaart daarna in Pi, netwerk-kabel aansluiten, HDMI-kabel aan monitor of TV koppelen en spanning aansluiten. Pi start op. Op monitor zie je ook ergens voorbij komen welk ipadres hij heeft gekregen op je netwerk. Als alternatief kun je na een tijdje via je Ziggo router (of andere router) achterhalen welk ipadres is toegekend door DHCP aan je Pi.

Eerste instellingen

  • Via Putty maak je verbinding met de Pi.
  • Log in met naam “pi” en wachtwoord “raspberry“.
  • Typ: ‘sudo raspi-config’
  • Kies optie 1 “Expand filesystem” om vrije ruimte op de SD kaart toe te voegen aan Domoticz
  • Stel een ander wachtwoord in (Optie 2)
  • Stel je tijdzone in (Optie 4).
    • Kies voor Change Locale (Optie 1), ik liet engels aan staan en vinkte ook nl_NL.UTF-8 UTF-8 aan. Stel de Nederlandse locale ook als standaard in.
    • Kies voor Change timezone (Optie 2), kies Europe en Amsterdam.
  • Kies Finish en reboot: Yes, mocht je in het os komen, gebruik ‘sudo reboot’.
  • Na reboot surf op PC naar het ingestelde ipadres, maar dan met https:// ervoor.
  • Kies Instellingen -> Instellingen en stel de taal in op Dutch, ik heb ook het thema op elemental gezet en de locatie ingesteld (anders kun je niet opslaan met Bewaar instellingen).

Domotics een vast ipadres geven

  • Log in op Domotics met Putty.
  • Typ: ‘sudo nano /etc/dhcpcd.conf’
  • Typ ergens aan het begin:
    interface eth0
    static ip_address=192.168.1.4 # << change to an ip address in your network
    static routers=192.168.1.1 # << change to your gateway
    static domain_name_servers=8.8.8.8   # << or change to your DNS

Operating System updaten

Log in met Putty en typ: ‘sudo apt-get update’
Daarna: ‘sudo apt-get upgrade’

RFXCom (RFXtrx433E) installeren op Domoticz

Wat je moet weten is dat de RFXCom verschillende protocollen kan uitzenden, bijvoorbeeld voor Klik-aan-klik-uit en dus ook Somfy (RFY protocol). De module kan ook verschillende protocollen ontvangen, maar daarvoor moet het naar al die protocollen ‘luisteren’. Dat kost tijd dus kun je aangeven welke protocollen je wilt gaan ontvangen. Hoe minder je er aanklikt, hoe sneller en beter ze werken. Instellen welke protocollen je wilt beluisteren kan met het programma RFXmgr, zie http://www.rfxcom.com/Downloads, maar kan ook via Domoticz.

Ik heb een en ander eerst ingesteld via de PC. Ik heb bijvoorbeeld de firmware geupdated en een aantal commando’s ingesteld om de screens te bedienen. Daarna heb ik de RFXCom aan de Pi gekoppeld en op Domoticz ingesteld.

Firmware RFXtrx433E updaten

  • Op de PC heb ik daarvoor het programma RFXFlash.exe gedownload via deze pagina.
  • In de Domoticz UserGuide hoofdstuk 2 staat een tabel welke protocollen met welke firmwares werken. Je hebt Type 1, type 2, ext en ext2. Voor de 433E versie van RFXCom heb je Ext of Ext2 nodig.
  • De RFXCom was gekoppeld aan een USB-poort, de software heeft het over COM 3. Maar het werkt.

Somfy screens instellen op RFXCom

Zie pagina 35 van de manual. Het principe is:

  • Stel de software in op een vrije ID en unitcode.
  • Koppel alle screens los van de stroom behalve die je wilt bedienen.
  • Druk op de originele afstandsbediening ongeveer 2 seconden op de Program-knop
  • De screens die nog aan staan reageren door even op en neer te gaan. Deze screens zijn nu ontvankelijk voor een nieuwe “Baas”.
  • Stuur nu een Program-commando met de RFXcom software. De gekozen combinatie die je nu uitzendt wordt in het geheugen van de screen toegevoegd. Maximaal 12 per screen.
  • Nu kan dus de remote èn de RFXcom de screen bedienen.
  • Als je meerdere screens met één commando wilt bedienen, bv allemaal tegelijk op of neer, dan kan dat ook. Zie voor een uitleg dit verhaal.

RFXCom koppelen aan Domoticz

  • Ga met je browser naar je Domoticz (ipadres in browser)
  • Kies Instellingen en Hardware.
  • Kies RFXCOM – RFXtrx433 USB 433.92MHz Transceiver, stel een naam in (bv RFXCom) en kies een USB poort bij seriele poort.
  • De RFXCom staat nu in de hardwarelijst. Met modus instellen kun je bovengenoemde protocollen beperken. Zorg dat alles wat je niet gaat gebruiken (ontvangstmodus) uitgevinkt staat.
  • Klik op Schakelaars en klik op Handmatig. Voeg een apparaat toe van het schakelaar-type ‘Blinds’, protocol RFY, ID instellen zoals eerder gekoppeld. Mocht je hier niet uitkomen, gebruik dan de RFXmgr (op je pc) om een List remotes commando te geven (tabblad RFY).

Werkt de home-knop van je iPhone slecht? Probeer dit!

Ik had een home-knop die bijna niet meer naar me luisterde. HAD, want na onderstaande ’therapie’ doet hij het weer uitmuntend. Deze therapie is geheel op eigen risico!

Je hebt nodig:

  • Alcohol (98%)
  • Een wattenstaafje
  • Een oplaadsnoertje
  • Een tissue of stukje keukenrolpapier

Met wattenstaafje alcohol deppen (met tissue gaat ook), knopje flink indrukken en draaiende beweging maken met je vinger alsof je het knopje wilt ronddraaien. Daarna snel achter elkaar drukken (zo’n 40x). Dan omgekeerd een aantal keren op een vlakke tafel laten ‘vallen’ (zie foto).

Op deze manier op een vlakke tafel laten vallen.
Op deze manier op een vlakke tafel laten vallen.

Flink rondom het knopje wrijven met een tissue om overtollig huidvet en vuil verwijderen rond de home-knop. Soms helpt centreren van de knop door te ‘liften’ met de connector van het oplaadsnoer (zie foto).

Op deze manier druk je het uiteinde van de connector licht omhoog.
Op deze manier druk je het uiteinde van de connector licht omhoog.

Bij onvoldoende resultaat eventueel herhalen.

Regex

Altijd lastig: Regular Expressions, of kortweg RegEx. Voor mezelf in dit stukje met een paar voorbeelden met bijbehorende uitleg.

Youtube
^(.+)([/]watch[?]v=)(?<key>(.+))$|^(http)(s)?[:][/]{2}youtu[.]be[/](?<key>(.+))$
Allereerst staat ergens middenin een pipe-teken (|). dat geeft aan dat deze RegEx zoekt naar twee verschillende patronen. Anders gezegd zijn er twee patronen toegestaan:
^(.+)([/]watch[?]v=)(?<key>(.+))$   en  ^(http)(s)?[:][/]{2}youtu[.]be[/](?<key>(.+))$
Ik begin bij de linker. Deze zoekt naar een patroon zoals http://www.youtube.com/watch?v=m5fNKbNuCBI
.   zoekt één willekeurig teken.
.+ zoekt tenminste één willekeurig teken
^(bla) zoekt een tekst dat begint met “bla”.
^(.+)  is dus een tekst die begint met een willekeurig aantal willekeurige tekens.
daarna staat ([/]watch[?]v=). Dus na ^(.+) wordt naar “/watch?v=” gezocht. Het maakt dus niet uit wat er voor /watch?v= staat. De slash en het vraagteken kunnen iets anders betekenen en staan dus expliciet tussen rechte haken.
(bla)$ zoekt naar bla op het einde van een tekst. Dus (.+)$ zoekt naar willekeurige tekens op het eind. De (?<key>(.+)) geeft aan dat we dit deel ‘opvangen’ in variabele ‘key’.

Dan het rechter deel. Deze zoekt naar een patroon zoals http://youtu.be/m5fNKbNuCBI
^(http)(s)?[:][/]{2}youtu[.]be[/](?<key>(.+))$
Zoekt naar tekst dat begint met ‘http’. (s)? betekent 0 of één keer ‘s’. dan moet er een dubbele punt staan, dan 2 x een slash en daarna ‘youtu.be/’ (de punt en slash moeten expliciet). Het einde komt overeen met het einde van het eerste deel.

Gebruik in PHP
In PHP ziet RegEx er iets anders uit. verschillen:
^ aan het begin wordt / en $ op het einde wordt ook /
Tekens die iets anders kunnen betekenen worden ge-escaped met \
Dus [/] wordt \/
Variabelen gaan niet zo ?<key> maar zo ?P<key>

Voorbeeld:
<?php
$str = ‘http://youtu.be/hAlLoDaAr’;
preg_match(‘/(.+)youtu.be\/(?P<key>(.+))/’, $str, $matches);
print($matches[key]);
?>
Dit geeft ‘hAlLoDaAr‘ in beeld.

Modifier Description
i Perform case-insensitive matching
g Perform a global match (find all matches rather than stopping after the first match)
m Perform multiline matching

Expression Description
[abc] Find any character between the brackets
[^abc] Find any character not between the brackets
[0-9] Find any digit from 0 to 9
[A-Z] Find any character from uppercase A to uppercase Z
[a-z] Find any character from lowercase a to lowercase z
[A-z] Find any character from uppercase A to lowercase z
[adgk] Find any character in the given set
[^adgk] Find any character outside the given set
(red|blue|green) Find any of the alternatives specified

Metacharacter Description
. Find a single character, except newline or line terminator
\w Find a word character
\W Find a non-word character
\d Find a digit
\D Find a non-digit character
\s Find a whitespace character
\S Find a non-whitespace character
\b Find a match at the beginning/end of a word
\B Find a match not at the beginning/end of a word
\0 Find a NUL character
\n Find a new line character
\f Find a form feed character
\r Find a carriage return character
\t Find a tab character
\v Find a vertical tab character
\xxx Find the character specified by an octal number xxx
\xdd Find the character specified by a hexadecimal number dd
\uxxxx Find the Unicode character specified by a hexadecimal number xxxx

Quantifiers

Quantifier Description
n+ Matches any string that contains at least one n
n* Matches any string that contains zero or more occurrences of n
n? Matches any string that contains zero or one occurrences of n
n{X} Matches any string that contains a sequence of X n’s
n{X,Y} Matches any string that contains a sequence of X to Y n’s
n{X,} Matches any string that contains a sequence of at least X n’s
n$ Matches any string with n at the end of it
^n Matches any string with n at the beginning of it
?=n Matches any string that is followed by a specific string n
?!n Matches any string that is not followed by a specific string n

RegExp Object Properties

Property Description
global Specifies if the “g” modifier is set
ignoreCase Specifies if the “i” modifier is set
lastIndex The index at which to start the next match
multiline Specifies if the “m” modifier is set
source The text of the RegExp pattern

RegExp Object Methods

Method Description
compile() Compiles a regular expression
exec() Tests for a match in a string. Returns the first match
test() Tests for a match in a string. Returns true or false