2011-06-28 два проекта от лаба

by Vasil Kolev

Преборвайки някаква част от мързела си, ето малко проекти, свършени в initlab:

1) Отваряне на врата

Има един технически проблем с влизането в лаба – долу на входа вратата няма дръжка от външната страна, на панела със звънците има 10 дупки, а апартаментите са 11 (по ред причини собственикът на апартамента не си е платил едно време, а лабът е под наем). Преди това начинът да се влезе беше да се звънне на някой, който е в лаба, той да иде и да натисне копчето, което отваря врата (т.е. кабели си има от долу до горе, просто няма начин за известяване).

Проблемите бяха два – трябваше да се звъни на някой на телефона и да бъде разкарван да отваря. Да мацнем още един звънец долу по някакъв хардуерен начин щеше да е крив естетически, за това мислите тръгнаха в посока да го направим пак с позвъняване. Най-лесният начин (който го каза Велин) беше да се намери една предплатена карта и стар gsm, който да има лампичка, която известява за позвъняване, и с нея да се задейства реле, което да “натиска” копчето за отваряне. Нямахме такъв телефон и не беше толкова интересно, за това решението в момента е следното:

Едни добри хора взимат телефония от spnet, и там са ми заделили един телефонен номер, +35924624356, който влиза на един asterisk. Към него е закачен asterisk, който работи на cassie.ludost.net (която се намира в initlab), която поема директно обажданията към тоя номер, затваря веднага, и пуска локално една програмка, която прави в общи линии следното:

sfd=open("/dev/ttyS1",O_RDWR | O_NOCTTY | O_NONBLOCK);
tcgetattr(sfd, &t);
t.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
t.c_cflag |= CLOCAL | CREAD;
tcsetattr(sfd, TCSANOW, &t);
ioctl(sfd,TIOCMGET,&flags);
flags= flags | TIOCM_RTS;
ioctl(sfd,TIOCMSET,&flags);
ioctl(sfd,TIOCMGET,&flags);
sleep(6);
close(sfd);

(или накратко, вдига RTS флага на втория сериен порт за 6 секунди и после го затваря)

На тоя сериен порт е закачена една проста схемичка на хората от НеоМонтана (която ми даде Мишо от Elwix), която като види, че и е вдигнат сигнал на тоя pin, закъсява едно реле, което от своя страна е вързано към бутона за отваряне на вратата. Самата схема се храни по 12 волта директно от сървърчето (и май е завързана за него със свинска опашка, не си спомням).
(и да, понеже ще ми го напомнят в коментарите, първоначалната идея беше да го правя с usb-to-serial, щото не бях сигурен, че машинката има изобщо (нямаше изведени), но го опуках, понеже обърках + и – на входа на захранването на платката)

2) Кой е в лаба
Това по принцип трябваше да го пише Стефан, ама го домързя. Идеята беше да може да се види кой в момента е в лаба, за да може (например) да му се обади да му отвори вратата (или просто да се види с него), като идеята е opt-in – който иска си казва кой му е mac адреса, и го дописваме в една база.

Адресите се вадят от локалния (гаден) router, един airport extreme, по snmp, със следната магическа команда:

snmpwalk -v 2c -c XXXXXXXX A.B.C.D iso.3.6.1.2.1.4.22.1.2|cut -d ' ' -f 4-|sed 's/ //g'|sort|uniq

от които данни един скрипт проверява дали в дадена директория има файлче, което се казва като mac адреса и ако да, го показва. Резултатът може да се види на http://vk.initlab.ludost.net/people.php, а от днес има и графика на броя чути адреси в лаба.
(целият source го има тук с малко данни, ама в него няма нищо особено интересно)

Tags:

16 Responses to “2011-06-28 два проекта от лаба”

  1. _c_ Says:

    Крокодиле хубаво е да кажеш и парчето код за управление на COM от къде е видяно,
    както е важно и идеята за релето и начина му на контрол през COM от къде са.
    Етично е някак си :)

  2. zhilin Says:

    ма’ни т’ва, дай къмюнити стринга.. :)

  3. Vasil Kolev Says:

    @_c_, от втори до пети ред кода е твой, останалото го бях написал преди това :)

  4. _c_ Says:

    Крокосиле, не си ли леко нахален с този отговор.
    1. Тази идея за управление на релета и друг сигнализационен хардуер е
    моя и я реализирам от доста години. Лично аз ти казах как се прави.
    2. Освен идеята и хардуера имаше и съпорт, пратих ти и код за COM-а
    3. Тази платка не е пригодена за работа с PC директно. Закача се към TinyIP или PicoIP платки пак дело на NeoMontana.

    Хубаво е като някой ти даде идеята за нещо поне да го споменеш и да питаш дали да я пуснеш в Интернет или където и да е другаде.
    Бесен сам че не само ти казах как си правя аз решенията за контрол над релета и датчици директно от компютър ами и ти оказах съпорт и ти казах кой хардуер да ползваш и ти го продадох. А ти дори не пита дали да я публикуваш.

  5. Vasil Kolev Says:

    @_c_, http://www.linuxjournal.com/article/6693?page=0,1 , не че нещо, ама идеята е стара, тривиална и ако е нещото, с което се гордееш, значи ти е наистина скучен живота. Има я на хиляди места…

  6. _c_ Says:

    По този начин работим от 1999г и се продават решения на това базирани от над 10г.
    Тук става въпрос за идеята която ти я дадох и ти казах как да я реализираш.
    Доволен ли си че вземаш нещо което някой хора продават и го публикуваш без да ги питаш след като си говорил с тях и си я взел от тях текущата идея.
    Пък те са били достатъчно глупави да ти помогнат определено не си виновен ти, аз сам си виновен явно.

  7. _c_ Says:

    П.П. Щом е тривиална защо питаше?

  8. tonywoolf Says:

    Решението за моята входна врата изпълних с PIC628A на Microchip. Програмката, която написах е доста по-дълга от тук публикуваната, но пък има смяна на кодове, блокиране на клавиатури и т.н. Бях предвидим дори и дисплей, но се отказах, чак толкова… Схемата управлява механизъм за заключване на вратата, който също аз си направих. Към бутона за отваряне, намиращ се от вътрешната страна, сложих един стар GSM Siemens C-нещо си, не помня точно, който обаче има вграден филтър на входящите обаждания и смс-и. Така само пределени номера могат да отварят с позвъняване. Цялата тая простотия се захранва от 2 стари акумулатора от UPS, които са вързани към мрежата на постоянно дозареждане с малък ток. Идеята ми се въртеше от много време, но ме мързеше да я осъществя. Накрая ми писна да намирам входната врата отключена, писнаха ми и обясненията, от рода на: ама аз заключих, като излязох… И я осъществих. Работи повече от 2 години без грешка.

  9. Vasil Kolev Says:

    @_c_, щото разказах какво искам да направя и ти веднага се намеси да ми обясниш как да го направя, докато пиехме. Стига се държа като ощипана госпожица, ти с това се хвалиш постоянно и на всички, слушал съм го поне 3-4 пъти.

    Баси, все едно съм ти блогнал сексуалния живот.

  10. _c_ Says:

    До колкото помня ти питаше но явно сам стар и ми изневерява паметта. :):):)
    А точно това не е разказвано освен по твоя случай. Пита ни и Чарвото ти предложи Atmel AVR схема а аз ти обясних че има много по лесен начин да стане.
    Това не включва побликуването на решението еи така. Просто се пита преди това и щях да ти кажа какво да премълчиш от него.
    Защото ако беше разказвано а то не е, което е хубаво, щеше да изплющиш в нета и как се управляват на същия COM заедно и четци, датчици, термометри, двигатели на камери заедно с релета и т.н.
    Хубаво е да се пита може би човек има какво да не иска да се публикува.

  11. zhilin Says:

    …aaand this concludes our initlab broadcasting day. :)

    (кирилица)

  12. пропаднал физик Says:

    Никой друг досега не се е сетил да изпозва DTS и RTS сигналите нито за захранване (конкретно се сещам за програматори), нито за управление на релета и други схеми, никой!

  13. Ostral-B heretic Says:

    _c_, дал си идея, продал си хардуер и сега какво – паметник ли или оферта за работа от правния отдел на епъл?

    [преди няколко десетилетия един продавач ми даде идея (да нося маратонки) и ми продаде хардуер (маратонки)]

  14. ss7 Says:

    @_c_

    Абе ти кат че ли совалка си измислил ? Що не си патентоваш “тайния” начин за управление през СОМ порт, да не заправиш и през паралелния. Айде не пиши глупости как “платката не била пригодена” да работи с СОМ порт, щот мноо сложно да сложиш един резистор.

  15. gog Says:

    Абе и аз чета тука и се чудя, големи хора, пък такива разправии и то за нещо дребно, което без проблем се прави (макар и не точно по този начин) от човек със средни познания в произволен език за програмиране и минимални в астериск

    изглежда голям глад има в бизнеса :-D

  16. _c_ Says:

    Мисля че всички които се изказахте под тази тема не разбрахте смисала на коментарите.
    Задачата е тривиална, задачата има много решения, задачата е не е нещо особенно.
    И никой от вас не вниква в простичкия факт какво е работеща идея и колко струва като скрити разходи.
    Решението не е как се управлява COM порт (това е погрешното мислене на коментиращите).
    Решението е набор от много компоненти.
    1) Идеята как да се реши нещо
    2) Колко ще ми струва да го направя (пари/време) и колко ще струва ако намеря нещо на пазара да ползвам
    3) Ако съм намерил нещо на пазара то е минало дълго време тестване преди да се вкарва в продукт/изделие. (Това струва доста пари в повечето случай докато намериш работещ вариант. Т.е. в един лаб има много конкурентни продукти които някой ги е купил тествал и не би ги продал защото не работят както се очаква. Т.е. скрити разходи доста големи ако се говори за бордове,dsp-та и т.н.) ИЗВОД: Знанието за работещо изделие струва пари! (*винаги*)
    4) Идеите когато ти трябват по малко от 4 IN/OUT линии че може да се ползва нещо много ефтино работещо винаги като rs232 и то по даден начин(и) вместо GPIO или още по професионалните PCI Digital I/O карти с по 16 и нагоре вход/изхода. (Подобни карти пак е хубаво да се върне човек да прочете точка 3 за избора на хардуер)
    5) И т.н. и т.н. както и да е повече не ми се пише по тази тема смятам че сам изразил мнението си доста обширно с последния пост така че да няма грешно разбрали. :)

Leave a Reply